平稳上线不是运气:24 年游戏在线服务经验谈压测、监控与主动排障

AI3D 发表于 10-10 浏览 1 分类 创作分享

Stuart Muckley
Stuart Muckley

我花了 24 年时间构建玩家永远看不到的那些游戏部分。服务器、后端,以及让一个世界在数百万人同时登录时保持运转的各类系统。在这整段时间里,有一条经验始终成立。那些成功上线的工作室,是那些不再被动应对、而是开始提前解决问题的团队。

有两个问题反复出现:第一个是上线前的准备;第二个是上线之后会发生什么。团队承受着真实的压力,往往没有时间写一份上线计划,更不用说在高负载下测试游戏了。玩家再也不会原谅一次糟糕的上线。发布只有一次机会,一旦出错,整个互联网都会记住。

上线之后,我看到工作室试图通过阅读 Reddit 和 Discord 来了解他们的玩家。这确实能告诉你一些东西,但它只能告诉你玩家选择报告的内容,而且只能在事情已经发生之后。到那时,损害已经造成。

在 Code Wizards,我们经常使用“主动”(proactive)这个词,我知道它听起来可能像个流行语。用大白话说,它的意思是:你不要等到某个东西出故障;你要假设问题正潜伏在你的系统里,并在任何一个玩家感受到痛苦之前就去寻找它们。

一次干净利落的上线究竟需要什么

当我规划一次上线时,我会考虑 5 件事。它们没有一件是光鲜亮丽的,但合在一起,它们就是一次平稳发布与凌晨 3 点灾难之间的区别。

  1. 肌肉记忆。我称之为“重复与组数”。你的团队需要技术过硬,还需要反复演练发布以及之后的一切。写下你的操作手册,并狠狠演练,直到每个人都清楚自己的职责。练习能让你在还有时间弥补的时候,发现计划与现实之间的差距。
  2. 负载与浸泡测试。这是工作室最常偷工减料的地方。按预期玩家数量跑一两分钟快速负载测试然后就宣布完成,这很诱人。但那太温和了。你需要施加更大的压力,并让它持续保持在那里。
  3. 测试到预期峰值同时在线玩家的 120%,并在预算允许的范围内尽可能长时间地保持运行。这样你才能看到系统在真实压力下的表现。这样你才能发现数小时内悄然累积的缓慢内存泄漏,或者你原本不知道即将撞上的硬性上限。
  4. 监控。你的遥测必须足够全面,既能向你展示数据,也能展示反数据——我指的是你预期看到却缺失的信号。有时,缺失的数字比存在的数字更能说明问题。
  5. 主动的心态。不要等警报;主动寻找任何感觉不对劲的地方,并把每一个异常读数都当作值得追查的线索。
  6. 沟通。要有一份涵盖工程师、游戏团队和社区的计划。玩家知道世界并不完美。他们不会原谅的是沉默。让他们持续了解正在发生什么以及可以预期什么。

让游戏保持在线的人性一面

全天候为数百万玩家运行一项在线服务,是软件与人的迷人结合。软件非常擅长识别常规模式,但人的部分才最为关键。我们最优秀的工程师,正是那些能察觉到异常的人。玩家数量出现小幅下滑,或者行为出现奇怪变化,他们就会开始对正在发生什么形成一套推断;然后他们会召集合适的人来采取行动。

威胁也发生了变化。20 年前,严重的拒绝服务攻击是由国家行为体或大型黑客团体实施的。如今我看到的是,个别玩家自己搭建僵尸网络来制造麻烦。有时他们这么做,只是为了让服务器整夜保持运行,好让自己角色不死。保持警觉还不够。当真的出问题时,你必须找到根本原因,并确保它永远不会以同样的方式再次发生。

Proactive, Not Reactive:

AI 的利与弊

AI 是我们领域里最具争议的话题之一,而什么算作可接受,每家工作室的标准都不尽相同。让我坦诚地说说它在哪些地方真正有价值。对于需要扩展到海量规模的系统而言,AI 代码生成目前还帮不上太多忙。封闭的主机平台也是如此。

它真正有帮助的地方在于实验的速度。我们使用 AI 工具帮助工作室更快地测试想法,比如生成粗略的美术素材或角色的占位对话。这些资产大多后来会被人工工作替换掉,这也没问题。

最不令人兴奋的一点,却是最重要的一点:治理。与我合作的每一家工作室都需要知道使用了哪些工具和模型,以及用于什么目的。我看到真正发生变化的地方在于开发流水线本身。AI 检查代码提交、自动化测试代理,以及文本一有改动就立即进行本地化。这些东西正在悄然重塑团队协作的方式。

为什么合作胜过人头数

工作室与外部技术伙伴的合作方式,可能成就也可能毁掉整个项目。我们的模式围绕成果,而非人力。我们提供小型团队,精准匹配客户的实际需求。一群拥有共同协作“肌肉记忆”的工程师,其价值远超一份标价的个人技能清单。

最好的关系是诚实的伙伴关系。每个人都分享哪些有效、哪些无效,而这一切都建立在信任之上。习惯了“采购人力”的工作室,往往不习惯分享太多信息,这限制了我们能提供的帮助。要求二十名开发者来调优主机移植版,与请我们帮你为那台主机优化游戏,两者有着本质区别。我们喜欢从你需要的成果出发,然后找出实现路径。

我最喜欢的一个例子:我们曾与一家才华横溢的英国工作室合作开发一款梦幻体育游戏。他们对于玩家如何解锁卡牌有一个很棒的想法。我们建议对顺序做一个小改动,为他们节省了数周的工程工作。这之所以能发生,只是因为他们让我们足够深入地参与,才看到了这一点。

Proactive, Not Reactive:

未来 3-5 年

整个行业都在追逐一个决定一切的问题:“我该如何按时、按预算把这款游戏发行出去?”

我预计工作室会更多地倚仗灵活的专业团队来负责游戏的不同部分。这意味着当这些团队在开发过程中不断进出时,我们都需要更好的协调方式。做得出色的服务提供商会以他们交付的成果来衡量,而不是他们派出了多少人。而且我们将会看到一些备受喜爱的老游戏需要进行重大的后端改造,因为它们所构建于其上的系统无法支撑它们走向未来。

如果我想让你从这一切中带走一件事,那就是:一次好的上线不是靠运气。它是发行日很久之前就完成的、安静而细致的工作的结果。尽早打下坚实的基础。它并不像听起来那么难,而你之后所构建的一切都建立在它之上。

坚实的基础正是那种至关重要的骨干工作,能让你的游戏成为焦点。这正是像 Xsolla 这样的合作伙伴的用武之地——它的工具潜藏在表面之下,让你的团队能够专注于游戏本身。

当你准备好发行、增长并让玩家满意时,Xsolla 拥有 你所需要的全部 来运营一项成功的游戏业务。

相关链接

原文链接:https://80.lv/articles/proactive-not-reactive-24-years-of-keeping-games-online

喜欢这篇内容吗?