您想找什么?
Hero background image
如何设计规模化的多人游戏
构建和设计具有弹性和可扩展性的多人游戏的关键因素。
掌握多人游戏发布

掌握多人游戏发布

在我们的点播网络研讨会中,首席合作伙伴工程师 Aaron Moon 讨论了如何掌握多人游戏发布——从服务器架构到规模测试。

或者,继续阅读以下内容以了解:

  • 设计可扩展的游戏架构
  • 设计游戏循环以实现规模化
  • 为什么后端很重要

如何设计可扩展的游戏架构

简化您的架构
1.简化您的架构

设计游戏架构的关键是从一开始就考虑效率。过早关注指标、日志记录、遥测和货币化可能会导致游戏架构过度膨胀。在运行时将所有这些打包到您的游戏服务器中实际上会降低投资回报率 (ROI) 并增加总体拥有成本。

相反,尽早从最小可行产品(MVP)开始。让服务器运行起来,让客户端工作起来,锁定您的网络代码和 匹配 系统,然后从那里开始构建。您还应该考虑尽早锁定您的 托管服务提供商 ——他们可能会提供预先构建的解决方案和基础设施,从而节省您的开发时间。

避免复杂的游戏服务器设计
2.避免复杂的游戏服务器设计

说到您的游戏设计,简单是什么样的?上图展示了一个复杂的设计,不仅有一个游戏服务器实例,而且同一台机器上还有许多辅助进程,包括匹配器、日志记录和指标可执行文件。

这种复杂性直到你开始进行规模测试时才会显现出来,那时你才会开始意识到当有成千上万的玩家时,这些东西无法很好地协同工作。此外,辅助服务可能没有任何资源防护,因此它们可能会开始蚕食机器上的资源并影响玩家的表现。保持简单可以帮助缓解这些问题。

采用简单的游戏服务器设计
3.采用简单的游戏服务器设计

在游戏服务器设计方面,简单就是将东西打包到单个服务器实例中,比如单个可执行文件和有弹性的匹配器(可能托管在后端服务上而不是机器上)。这样,当其中一个游戏服务器丢失时,它不会带走其他玩家,并且受影响的区域也会很小。从规模上看,如果您的游戏服务器采用这种设计但出现故障,也不会影响玩家体验。

让您的游戏服务器运行时成为父进程
4.让您的游戏服务器运行时成为父进程

为了帮助最大限度地降低成本风险,请不要将调试、观察者和匹配等辅助流程放在同一台机器上。如果你遇到游戏服务器崩溃的情况,并且你拥有将其扩展到的云机器,那么辅助进程就会陷入“僵尸”状态。它们仍在消耗资源,这会花费你的工作室的金钱,而且你无法关闭它们。

相反,考虑制作辅助流程,例如游戏服务器的匹配和调试子流程 - 保持简单。然后,如果您失去游戏服务器,它会带走子进程,而不是让它们在后台运行。在这种情况下,如果服务器停止工作,您可以启动另一个服务器,而无需与“僵尸”进程相关的额外资源和成本。

设计游戏循环以实现规模化

最好记住你的游戏循环如何与基础设施交互,以及基础设施如何支持你的游戏。例如,如果您的游戏有大厅和匹配器,那么应​​该有理由在大厅内外以及这些大厅的会话中进行匹配。

想想您拥有什么样的会话设计——您是在构建像 MMO 这样的持久性游戏,还是每次运行时都会重新启动的短会话游戏?每个游戏循环设计都会有风险和回报。在设计短游戏、长游戏和持久游戏时,需要考虑以下一些关键因素。

长时间游戏会话的注意事项

在具有长时间运行会话的多人游戏中,可能会出现内存泄漏、RAM 使用率不断上升等问题,这些问题可能在您大规模运行游戏时才会出现。

以下是与长时间游戏相关的一些风险:

  • DDoS 攻击:由于游戏实例的 IP 不会随着持久游戏会话模型而改变,因此存在遭受 DDos 攻击的可能性。
  • 云成本高昂:维护一款始终或几乎始终活跃的游戏需要花费大量昂贵的资源——即使玩家没有玩游戏。
  • 修补导致的中断:修补可能难以管理,因为可能需要结束正在进行的比赛才能修补游戏,从而导致玩家体验不佳。
短时间游戏的注意事项

短时间的游戏过程仍然存在风险,并且需要考虑玩家的体验。即使您的双人游戏只有两分钟,促进数十万场(或更多)同时进行的比赛也可能成本高昂且存在风险。

以下是短时间游戏环节的一些注意事项:

  • 后端负载高:为了促进短暂的游戏会话而不断对后端进行 API 调用可能会造成巨大的负载,因此它需要具有弹性。
  • 基础设施建设难度大:当服务器在短暂的会话之间重新启动时,您可能会看到在开始加载进程时 CPU 和 RAM 出现峰值 - 这可能会很昂贵。
  • 需要强大的媒人:对于短暂的会话,您需要一个有效的媒人来处理新会话、重新连接等的配对票。
  • 服务质量 (QOS):您需要一个提供商,让您向游戏客户端发送实时 IP 地址列表,以便根据实际遥测和数据(而不是物理位置)确定服务器区域。
  • 需要指标和遥测数据:如果出现问题,玩家更有可能退出并开始另一个会话,而不是报告错误。如果您没有从这些短暂的会话中获得指标和遥测数据,您可能会错过游戏中出现的问题。

以下是短会话游戏的优缺点:。

优点

  • 无需长时间稳定运行
  • 实现更快的修补
  • 易于缩小规模
  • 无空闲状态
  • 每个会话的日志文件可以更轻松地进行故障排除

缺点

  • 回调次数越多,意味着负载越大
  • 大规模重启的云计算成本并不低
  • 竞争条件
  • 启动时 MEM/CPU 出现峰值
  • 匹配机制更加复杂
  • 机器性能问题可能隐藏
持久游戏会话的注意事项

在持久性的多人游戏(如 MMO)中,可能会存在某些问题和风险。例如,支持服务器之间的玩家迁移等情况意味着您需要更强大的后端系统 - 包括昂贵的服务器和强大的硬盘。

以下是持久游戏会话设计的一些注意事项:

  • 预算可能是一个问题:需要更强大的后端系统来使持久会话发挥作用,因此您需要根据用户计算维护成本,以了解这是否是适合您的会话设计。
  • 云可能不可行:由于对持续游戏会话的要求很高,云对于您的项目来说可能成本太高。
  • 网络质量极其重要:延迟和延迟管理将决定玩家持久游戏会话的成败,因此尽早严格地测试网络对于良好的玩家体验至关重要。
  • 修补既困难又有风险:与维护相关的停机时间对于玩家来说绝不是一个好的体验——即使它对于改善整体体验是必要的。与社区沟通维护时间是关键。您可能还想考虑同时运行多个游戏版本,并随着时间的推移不断更新补丁。

以下是基于持久会话的游戏的优缺点:

优点

  • 服务器始终正常运行
  • 可以缩短游戏循环
  • 减少后端负载

缺点

  • 设计更困难
  • 随着时间的推移不稳定
  • 会话清理
  • 空闲状态设计必不可少
  • 需要了解媒人
  • A/B 修补可能需要更长时间
情境测试或混乱恢复力

大规模地为潜在的玩家体验问题做好准备是一个好主意。启动、运行和更新多人游戏可能会很混乱,因此进行“混乱恢复力”情境测试并确保游戏的后端能够处理这种混乱非常重要。

举例来说,如果游戏中的每个人都崩溃了,并同时尝试重新进行配对,会发生什么情况?弄清楚后端对该情况的反应并设置它来处理该问题可以从长远来看为您省去麻烦(并有助于保护您的声誉)。

准备修补你的游戏
准备修补你的游戏

您很可能需要在发布期间修补您的游戏。这就是为什么构建具有在生产和发布期间修补能力的基础设施非常重要。这可以帮助更快、更顺畅地解决发布日和即时修补的混乱情况,并限制对玩家的影响。

解决此问题的一种方法是同时运行游戏的多个版本。但是,您还必须确保您的基础设施可以处理多个版本。此外,您还需要一个包含所有不同版本的沙箱。

如果您已经内置了同时运行多个版本的功能,那么修补时不会对玩家造成停机或中断。

规模测试助力多人游戏成功发布

频繁的规模测试至关重要,因此在选择服务时,找到可以帮助您进行规模测试的提供商应该是主要考虑因素。

扩展测试的一项主要内容是服务器细分和碎片整理。服务器镶嵌是一个重要的成本考虑因素。本质上,您首先要使用廉价的金属机器进行托管。随着玩家群的波动,您还需要快速移除更昂贵的云机器,以更具成本效益。

Game Server Hosting (Multiplay) 避免分配给更昂贵的机器,这使我们能够在玩家数量减少时更快地将其移除。

我们的系统能否做到这一点取决于您的比赛的寿命。较短的匹配持续时间使我们能够更快地结束昂贵的机器上的分配。比赛时间越长,我们就不能关闭机器,直到比赛结束为止。

如何构建和设计Multiplayer游戏标注
为你的下一款多人游戏做规划

准备好构建你的下一款多人游戏了吗?这里有一些资源可以帮助您入门——了解有关 使用Game Server Hosting进行扩展的更多信息,查看我们关于Game Server Hosting和 Matchmaker 的点播网络研讨会 ,并探索我们在下面提供的多人游戏解决方案。