您想找什么?
E-Book

让您的所有游戏脱颖而出的四项基本 DevOps 实践

Oct 31, 2023
一幅线描插图,描绘一名工人坐在办公桌前,面前有一个大大的数字 4
为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。

从快速修复转向快速迭代和发布。

简介

每周工作 60 小时,几个月后才上映?通宵达旦地编写代码,每周数次提供奇迹般的漏洞修复?在发布前的最后一刻才增加新功能?

这个行业因其 "嘎吱嘎吱 "的节奏而臭名昭著。而你可能就是一个在这种疯狂中茁壮成长的人。但是,如果在财政年度结束时没有得到回报,你就会问自己,为什么

也许是发布时间太紧,你的一位主要开发人员无法承受,因此辞职并推迟了发布时间。也许是某个彻夜不归的人引发了后续彻夜不归的连锁反应。也许在最后一刻,一个未经充分测试的功能可能会让整个项目崩溃。无论具体情况如何,有一点是明确的:你来过这里太多次了。

如果这些策略让人觉得不值得,那是因为尽管你很英勇,但你并没有给顾客他们想要的东西。编写着色器脚本、制作水的动画、想象关卡或配置 CDN 的能力只是成功为游戏社区创造价值的一部分。要想跨越鸿沟,实现盈利生产,你需要的更关键的技能是应用系统和流程,将你的精力引向一个方向:为粉丝们提供优秀的游戏。

要将工作室从紧张的混乱状态转变为富有成效的工作流程,需要明智的 DevOps 实践。这样做的目的是将您团队最宝贵的资源--时间--还给他们,让他们能够从事真正重要的工作。

但是,消除 "嘎吱嘎吱 "的声音究竟能让你恢复多少时间呢?电子艺术公司的技术总监乔希-尼克斯多夫(Josh Nixdorf)说,这已经是好几年前的事了:"从我团队的角度来看,我们跟踪的最重要指标之一就是节省的工作年限。这也是随着我们在 DevOps 之旅的进展而成倍增加的,从我们第一次尝试 DevOps 时的大约 20 年努力,到今天已经超过了 1000 年。"

通过采用更精简、更有意识的开发流程,您可以让团队为玩家提供更好的体验,并获得更频繁交付的能力。本电子书介绍了一些针对游戏开发环境的基本 DevOps 原则和流程,并重点介绍了一些基本的 DevOps 工具,以便工作室顺利运行技术栈。

为什么选择 DevOps?

每一代游戏机的发布都会使游戏开发变得更加复杂。玩家越来越期待更好的画面、更频繁的更新和更出色的支持。如果您的游戏在推出时就充满了错误,那么要恢复就会非常困难,甚至是不可能的。正如 Xsolla 总裁克里斯-休伊什Chris Hewish)在接受 GamesIndustry.biz采访时所说:"你总是可以在成功的基础上再接再厉,但你不可能真正从发布失败的灰烬中成长起来。

要想最大限度地发挥玩家的价值,就必须对流程和工具进行检查,然后找出优化的机会。您目前的工作流程是否能够支持您的游戏长期发展?未来的项目如何?

工作室团队往往将注意力集中在开发人员和美工人员如何完成难度越来越高的任务上。但这种关注很容易让人完全忽略对过程的理解。例如,如果程序员更经常地停下来检查他们的工作(DevOps 流程),他们就会花更少的时间来修复错误。

没有对过程的这种理解,工作室就必然会长期存在:

  • 开发人员工作过度,长期处于紧张状态
  • 错误和负面反馈频发的版本
  • 混乱的发展计划造成普遍的挫折感
  • 全面浪费精力

解决方案是采用 DevOps 实践和工具,优化并缩短开发周期,从而产出性能稳定的游戏。好处太多,无法一一列举,这里仅举几例:

  • 流程自动化,将开发人员从重复性工作中解放出来
  • 主动而非被动的决策
  • 持续集成和部署,为玩家提供更高质量的内容
  • 工作过度、压力和倦怠感大大减少

财政年度结束时的回报呢?超乎想象:更快乐的员工、更快乐的客户和更快乐的会计。

四项基本做法

您不需要 DevOps 工程师,就能在开发环境中开始获得更类似于 DevOps 的方法所带来的好处。即使是单枪匹马的开发人员,只需了解这四种基本 DevOps 实践,也能提高他们的工作效率。

强大的 Version Control:对于几乎所有程序员来说,备份代码更改就像眨眼一样自动。简单的提交可确保工作安全,不会被覆盖或丢失。但是,游戏开发需要管理和跟踪分布式艺术家和其他人员生成的种类更多的有时甚至是巨大的资产。这就需要一个功能强大的全功能版本控制系统

Build Automation(CI/CD)持续集成(CI)是指自动将一个或多个来源的工作合并到一个中央存储库中。持续交付(CD)是在开发过程中自动创建新的构建。实施自动化 CI/CD 管道是敏捷方法论中的既定最佳实践,它提供了一种一致的自动化方式来构建、打包和测试游戏。

人工制品管理:除了由 Version Control 系统管理的代码和资产外,人工制品还包括各种各样的依赖项,如基础图像、软件包、Helm 图表、元数据以及其他切题但关键的资源。工件管理器是对版本控制的补充,它为构建或部署应用程序或游戏所需的一切维护一个中央存储库。

频繁的自动测试:DevOps 方法打破了传统的开发人员/质量保证孤岛。例如,开发人员在将代码推送到主代码库进行构建之前,会将代码分成小块编写并执行自己的测试。理想情况下,这种测试是持续和自动化的。候选版本更加完善,质量保证团队对游戏性能的挖掘也更加深入。

一名男子提着大箱子穿过一个大房间

1:强大的版本控制

最大限度地减少合并冲突和工作损失

当艺术家和程序员经常争吵,或者当合并冲突导致工作冗余或丢失时,版本控制通常是罪魁祸首。要在游戏开发环境中应用版本控制最佳实践,您需要一个具有独特功能的系统。

实际上,代码文件无论多长都很小。然而,下一代游戏机和 PC 游戏的图形可能相对巨大,因此网络带宽是一个关键因素。从中央资源库调用和推送这些资产必须像调用其他开发资产一样方便快捷。

大多数版本控制解决方案的最大问题是什么?可用性--面向所有人。

程序员通常善于使用命令行界面和复杂的版本控制分支技术,而艺术家可能会发现,只需经常点击 "保存 "就足够了。但是,他们的绘图和动画与代码库一样,对最终软件包至关重要。

版本控制系统截图

游戏开发版本控制系统既要为开发人员提供复杂、详细的选项,又要让技术水平较低的用户也能非常容易地使用。否则,工程师们就会把时间花在一遍又一遍地解释系统如何工作上。

直观、图形化的用户界面可以使复杂的分支和合并变得更加容易,便于程序员、美工和设计师同时处理不同级别和不同平台版本的工作。

可追溯性意味着能够准确了解资产修改的时间和地点,以及在哪些分支上使用,这对质量保证团队来说也是一项重要能力。此外,确保所有版本库、分支、标签和路径的充分安全是最起码的要求。

中世纪的密室

2:Build Automation(CI/CD)

将更多时间用于创建,减少管理复杂管道和工具的时间

所有 DevOps 实践的一个一致主题就是将工作分解成更小的块。较小的单元更容易处理,测试更简单,优化也更快。如果遇到困难或决定改变方向,也能最大限度地减少努力的浪费。

在游戏开发中,这相当于经常将自己正在进行的修改与他人的修改合并,并创建新的版本。手动创建构建并不复杂,但会中断其他工作,而且所花费的时间会很快增加。同样,与许多其他 DevOps 实践一样,自动化是关键。

Automation 构建管道与版本控制系统相连,可监控变更,并在每次提交或变更数量超过特定阈值时创建新的构建。这意味着开发人员可以及早发现并纠正缺陷,避免事态失控。它使代码和资产处于更可靠、更适合发布的状态。无论出于何种原因,如果需要回滚更改,上次成功构建的版本都已准备就绪。此外,其他团队也可以轻松访问构建以获取更新,并及时提供反馈。

从文化上讲,DevOps 的 Build Automation 方法会将团队的工作重点转移到确保他们的工作正确无误,然后再跳转到新功能上。他们循序渐进,积小胜为大胜,而不是长时间冲刺,精疲力竭地倒下。这不仅能建立信心,还能大大降低因为自己的代码尚未完成而影响他人工作的可能性。

远眺未来派大城市

3:工件管理

让您的游戏如虎添翼

CI/CD 系统创建新的构建后,通常会将构建推送到工件库,由工件管理器将其与所有依赖项和其他必要组件一起注册。协调这些 "其他必要组件 "正是工件管理成为游戏开发 DevOps 中重要实践的原因。

人工制品可以来自各种来源,例如公司内部的开发人员、签约艺术家以及任意数量的公开源代码库。工件管理器可以确保所有这些关键内容的上传和存档,同时检查版本和审批,扫描安全问题等。有许多可能的故障点。

当然,任何有用的人工制品管理系统都有最低要求。它必须能够管理元数据,以支持版本管理和基于许可的过滤。它需要让开发人员设定哪些内容会被保留以及保留多长时间。更重要的是,它必须作为一个高可用性系统来构建,以避免停机。

与简单地指定某个 S3 存储桶作为项目存储库相比,实施一个真正的工件管理器有相当大的好处。这意味着为所有项目资源维护一个共同的资料库可以加强合作,尤其是艺术家和工程师之间的合作。所有资源都已注册并可追溯,从而实现了可预测和可重复的构建。它还能将团队中的每个人从管理部署中解放出来,让他们可以编写代码、制作动画、设计或做任何他们最擅长的事情。

一个人穿过巨大的门,光线倾泻而入

4:频繁的自动测试

回应反馈,灵活工作

为质量保证制定有效的 DevOps 实践有两个原则:

开发初期频繁测试

自动化质量保证工作流程

木匠测量两次才能切割一次。换句话说,他们先求解长度变量,然后测试他们的工作,再进入下一个生产步骤。开发人员可以通过编写更短的代码块,并在编写更多代码块之前反复检查代码块,来实现完全相同的目标。开发人员和质量保证人员之间的界限越来越模糊。

当 Build Automation 经过自动化测试时,开发人员频繁的代码检查就会得到回报。每当编译器向版本库推送新版本时,都会对其进行测试。有了持续的自动化测试,错误在开发过程中存活下来并在生产代码中造成问题的可能性就会大大降低。而那些幸存下来的人也不会那么凶残。

话虽如此,但我们都知道,错误是会发生的。与自动化质量保证测试相配套的是自动化报告,既包括来自测试协议的报告,也包括游戏上市后来自其运行设备的报告。一旦质量保证或用户安装遇到异常情况,系统就会报告具体的崩溃和异常数据,以便更快地解决问题。通常情况下,终端用户尚未发现问题,在出现明显故障之前是可以解决的。

在游戏开发环境的所有 DevOps 实践中,频繁的自动化测试可能是最关键的。玩家希望定期获得新内容,而工作室则面临着巨大的压力,必须在推出日期前推出突破性的新功能。但是,如果一个重要的有影响力的人在糟糕的一天中再有一次糟糕的经历,其后果可能是毁灭性的。做好质量保证工作势在必行。

游戏工作室使其发挥作用

DevOps 和敏捷实践在很大程度上只是常识性的工作习惯。但是,当它们应用于涉及复杂代码、成千上万资产和苛刻性能限制的游戏时,工作室需要专用的 DevOps 工具来确保细致的源控制、持续集成和交付、安全可靠的工件管理以及频繁的自动测试。

使用与开发平台紧密集成的 DevOps 工具,可以提高其效率。以下是数以千计的 Unity 创作者使用我们不断增长的 DevOps 工具库改进工作流程并制作出令人惊叹的游戏的部分案例。

工作室Alta

在 Unity Twitch 频道的 "创作者聚焦 "中,Alta 分享了他们如何使用 Unity 版本控制(前身为 Plastic SCM)来加快发布周期,并定期向其庞大且不断增长的粉丝群提供内容更新。"我们使用 Plastic SCM 进行源控制。Alta 公司的游戏总监 Boramy Unn 说:"它可以让我们拥有不同版本的项目分支。"我们为每个功能创建一个新的分支,然后为每个功能中的任何风险工作创建子分支"。

古村落中的一男一女卡通形象
阿尔塔的乡镇故事

工作室KO_OP

KO_OP 是一家合作经营的游戏工作室,总部设在蒙特利尔。他们正在寻找一个版本控制解决方案,以消除艺术家和工程师在最新项目 "再见火山高 "中的障碍。"KO_OP开发人员 Jacob Blommestein 在一份Unity 案例研究中说:"Gluon(Unity 版本控制的艺术家工作流程)是一个令人愉快的惊喜。"艺术家们不需要了解任何关于分支或合并的知识。他们只是添加了自己的 .PSD 文件,版本管理是透明的"。

抱着吉他的雌性鸟类
Goodbye Volcano High by KO_OP

工作室Sycoforge

Unity 博客的一次访谈中,首席执行官 Michela Rimensberger 分享了 Unity Version Control 如何帮助 Sycoforge 及其社区共同努力,将他们雄心勃勃的游戏《重返南格林》变为现实。"她说:"从技术角度来看,Unity Version Control 是协作的救星。"我们尝试了许多不同的版本管理工具,但很快就意识到,它们都无法真正满足游戏开发公司的需求。虽然有些对程序员来说是可用的,但艺术家在使用它们时却出了一身汗。通过 Version Control,我们发现真正改变了游戏规则。非程序员和程序员都能轻松使用"。

一个中世纪的大房间
返回南格里姆 by Sycoforge

工作室隐秘工作室

完美世界的子公司 Cryptic Studios 使用 Backtrace 自动跟踪错误。"Backtrace改变了我们探索和使用碰撞数据的方式,"Cryptic工作室高级制作人布伦特-兰姆(Brent Lamb)在今年发布的Unity电子书中说道。"每个人都能自如地运行查询并了解我们游戏的健康状况"。

一名女选手手持枪支,摆出三种姿势
量子联盟》由 Nimble Giant Entertainment 制作

现在就开始

利用 Unity 的 DevOps 解决方案加快工作流程并构建 DevOps 工具链。更高效地进行创作,以您所期望的质量按时推向市场。在此探索解决方案。