在激动人心的多人游戏《Histera》中融合世界 | Unity

了解 DOTS 性能提升如何帮助 StickyLock 在这款全新的多人FPS游戏中传送玩家穿越时空
一个小型开发团队如何将创新的游戏机制融入快节奏的第一人称射击游戏?StickyLock 团队知道,他们需要新颖的思路才能在拥挤的FPS市场中获胜。它最初是不同时期之间的门户,后来演变成 Glitch——一种将玩家传送到不同时代的游戏机制,并配有一张新地图。但实现这一大胆的愿景需要惊人的性能、坚如磐石的多人游戏基础设施、创新的图形组件以及强大的合作伙伴来帮助实现这一切。
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
将FPS类型带入新维度
技术艺术家和程序员出身的制作人 Jamel Ziaty 知道,当他和 StickyLock 团队开始致力于后来成为 Histera 的项目时,他手上有一个雄心勃勃的项目。这款高速 8x8 第一人称射击游戏可让玩家实时穿越重叠的地图和时间线,且不会牺牲性能。
作为一名经验丰富的Unity开发人员,Jamel 知道他们需要可扩展的处理和后端功能,以便能够动态交换地图和角色组件。为此,团队选择了 Unity 的数据导向技术堆栈 (DOTS) 和实体组件系统 (ECS) 来提高性能,同时利用Unity Gaming Services(UGS) 来处理多人后端基础设施。
结果:
• 高效且性能卓越的后端框架,可以处理数十万个实体和组件(仅一个级别就有超过 230K 个
• 使用UGS可节省数百到数千个开发小时

通过 Glitch 将玩家带入平行时代
Histera的标志性功能是 Glitch 游戏机制,其中关卡中的某个部分会过渡到完全不同的时代,拥有自己的游戏场地、行为和武器组合。这种突然的设置转变激发了游戏的极大兴趣,但也给 StickyLock 团队带来了挑战。
This content is hosted by a third party provider that does not allow video views without acceptance of Targeting Cookies. Please set your cookie preferences for Targeting Cookies to yes if you wish to view videos from these providers.
Glitch 分为三个不同的阶段。第一阶段,预期,既向玩家发出视觉信号,告知故障即将发生,又在幕后准备管理资产转换。接下来是解构阶段,当前时代的视觉效果开始为下一组图形让路。在此转变过程中,原有时代的碰撞被消除,新时代的地形开始形成。
随着游戏进入新时代,它让玩家一睹新的视觉效果和碰撞区域,采用独特的纹理图来划定可航行区域和即将发生的碰撞区域,引导玩家远离危险点。如果玩家发现自己身处这些区域,游戏就会通过造成伤害来鼓励玩家移动,如果玩家在转换后仍留在那里,伤害就会升级为致命伤害。最后形成了戏剧性的冲击波效果,巩固了新时代的视觉效果和碰撞,完成了 Glitch 序列。
构建 Glitch 需要先进的转换、玩家移动和碰撞管理系统。Unity 的灵活性使团队能够开发自定义工具和脚本来实现这些操作的自动化,即使整个地图在游戏过程中发生变化,也能确保游戏的流畅进行。“这是一个独特的战场,”贾梅尔解释道,“我们非常专注于做好这件事。”

使用子场景简化工作流程
Glitch 是一个巨大的挑战,不仅因为其技术实现,而且因为要想发挥作用,它必须融入一个关卡而不会破坏视觉连贯性或游戏流程。该团队使用 Unity 的 SubScene 组件实现了这种平衡。
子场景是引用另一个场景的 GameObject MonoBehaviour 。它被转换成一个实体表示,称为 EntityScene。子场景可以存在于不同的状态:打开、关闭或卸载,并且此状态会影响内存和可见性负载。开放子场景允许实时修改和转换GameObjects,而封闭子场景则将实体表示加载到内存中。此设置有助于管理复杂场景并通过有效处理实体数据来优化性能。
“这是一个看似很小的细节,但却能带来很大的影响,”贾梅尔分享道。“它使我们能够处理单个场景内的多个地图部分。这种方法不仅简化了我们的艺术家的工作流程,使他们能够专注于没有重叠的单个子场景,而且还最大限度地减少了冲突。它提供了在任何给定时间哪些子场景处于活动状态的清晰概述。”

解决延迟问题并优化更高的频率
“提供全球多人游戏体验无疑是UGS帮助我们应对的最大挑战,”Jamel 说。“它解决了建立和管理车队的烦恼,同时还确保您能够为世界各地的不同地区提供适当质量的服务。”
StickyLock 团队努力平衡不同 ping 级别的玩家的体验。高 ping 值的玩家可以从延迟补偿中受益,因为游戏可以通过考虑他们的延迟来实现更公平的命中判定。然而,这可能会对低 ping 值的玩家产生负面影响,因为他们可能会因为服务器“倒带”而被掩体击中。Multiplay Hosting 仪表板中的放置和性能洞察以及Netcode for Entities 包中的开箱即用的预测、回滚和延迟补偿功能是确保所有玩家获得更流畅、更公平的多人游戏体验的关键。
Jamel 强调,在不增加成本的情况下,需要做大量工作来调整服务器,使其以更高的运行速率运行。Unity团队的经验使他们能够发现优化机会,同时可以配置服务器,使团队能够快速进行实时调整。最后,Unity 基于规则的 Matchmaking 让 StickyLock 团队能够平衡游戏设计与等待时间和延迟。
Jamel 说:“了解服务器 RAM 和 CPU 的使用情况、维护不同地区的高质量服务、管理服务器功能以及匹配规则的灵活性对我们来说都至关重要。”“我们一直在寻找提高性能的方法,以便我们能够避免在改善游戏玩法和管理成本之间产生不利的权衡。”

利用 DOTS 提高绩效上限
跨越时间的游戏玩法所带来的挑战远不止平滑的过渡——在多人游戏框架中创建重叠的平行世界意味着要达到令人难以置信的高性能标准。为了实现这一目标,StickyLock 团队采用了 Unity 的数据导向技术堆栈 (DOTS),它由实体组件系统 (ECS) 包、物理、C# 作业系统和Burst编译器组成。
2020 年初采用 DOTS 和 ECS 也带来了一些风险——他们是这项技术的早期采用者,团队必须投入资金来提升技能并不断适应新的工作流程,但在深入研究样本后,Jamel 和团队认为回报大于风险,所以他们决定加入进来。
“Burst和 ECS 的更高性能上限对我们来说至关重要,”Jamel 说,“尤其是面临管理五个不同时代的挑战。由于我们无法在不同的风格间重复使用网格或材质,因此会导致更多的破损批次。借助 ECS,尽管存在这些限制,我们仍获得了维持高质量视觉效果所需的性能。”
C# 作业系统允许高效并行处理任务,而Burst将 C# 代码编译为高度优化的本机机器代码,从而绕过了传统 .NET 运行时的开销。此本机代码专门针对目标平台量身定制,从而具有更佳的性能。谈到 DOTS 为他的团队带来的好处,Jamel 说道:“如果我们在系统上花费了大量性能预算,我们就无法将五个不同时代的游戏渲染到现在的质量水平。”

利用UGS争取时间
除了连接性之外,Jamel 还需要通过其他方式来减少开发时间来为团队争取提升技能的时间。他转向UGS来让开发人员专注于游戏玩法,他估计此举“将节省数百到数千个开发小时”。
该团队使用了Multiplay Hosting、Matchmaker、 Authentication和Cloud Content Delivery(CCD)。StickyLock 从一开始就清楚地认识到使用多项第一方服务的好处。Jamel 表示:“第一方服务更容易集成和维护,而且当我们想要移植到控制台时, UGS服务是跨平台的。”
Multiplay Hosting 旨在实现一夜成功后快速扩大规模。“如今一款游戏一夜之间爆红的情况已经很常见了。拥有一家拥有推出多款成功游戏经验的服务公司让我们感到很轻松,”Jamel 说道。此外,Authentication 的跨平台功能可帮助 Histera 在适当的时候进行多平台扩展,而 CCD 将使团队能够轻松管理其内容和发布渠道,以便他们能够提供正确的内容和功能,让玩家在游戏发展过程中保持参与度。
凭借强大且可扩展的多人游戏后端基础设施以及适用于多平台的身份验证和玩家通信,Jamel 可以满怀信心地投入发布,因为他知道Multiplay和UGS团队会为他提供支持。