部署和优化 MetaQuest 的 UG

对于 Continuum XR来说,为 Meta Quest 构建UG意味着将生物收集、社交互动和物理驱动的VR游戏玩法结合起来,为独立头显打造可扩展的多人游戏体验。受生物收集游戏和机甲驾驶游戏的启发, UG让玩家通过任务、交易和购买来收集恐龙,然后像大猩猩一样骑乘它们。
要实现这种体验,需要在 Meta Quest 硬件上平衡多人网络、部署工作流程和性能优化。该团队还需要支持实时更新、网络系统和VR游戏互动,同时保持移动硬件的稳定性能。
我们与VR开发人员 Mark Minehan 和 Conrad Dugger 以及副制片人 Hala Louviere 进行了交谈,讨论了如何使用Unity构建和部署UG 、优化独立VR 的网络和性能,以及如何在 Meta Quest 设备上扩展实时多人VR游戏。
你们的主要技术目标是什么?
马克·米内汉:对于 Meta Quest 来说,尽管UG的规模很大,但游戏仍需要流畅运行。我们测试过其他引擎,但Unity提供了最好的支持和性能。Photon Fusion 2 共享模式具有良好的可扩展性,因为大部分网络操作都在客户端运行,从而保持了开发成本低廉且可扩展。
Unity提供了我们需要的集成和支持,因此我们利用现有工具进行构建,而不是从头开始创建网络堆栈或游戏引擎。
在Unity中,你是如何构建构建流程以支持高效的VR部署的?
毫米:团队使用UnityVersion Control,以便成员可以同时在多个分支上工作并管理自己的更改。我们使用主分支、正式分支、开发分支、测试分支和功能分支。UnityVersion Control使团队保持同步,并简化了推送和拉取更改的过程。
对于构建和部署,我们使用Unity Hub构建Android软件包 (APK),并使用 MetaQuest 개발자 Hub 在几分钟内完成部署。然后,我们会对版本进行升级或降级,并将其发布给玩家或内测玩家。
康拉德·杜格尔:在产品发布初期,尤其是在UG获得市场认可之后,我们需要了解大规模应用的运行情况。编辑器无法模拟所有场景,因此我们上传了调试符号并使用 Mixpanel后台持续监控错误。我们仍然每天检查,并在每次补丁更新后进行检查,以确保问题不会再次出现。这有助于我们在问题影响玩家之前解决问题。
毫米:我们可以通过 Meta 直接访问崩溃符号,因此我们不需要自定义解决方案。Unity允许我们在同一步骤或单独的步骤中构建并上传它们到 Meta。对于崩溃符号无法捕获的错误和异常,我们构建了自定义工具,限制每个播放器的上传速率并包含完整的堆栈跟踪。
我们会结合用户历史记录来审查这些报告,以准确了解用户在事件发生前正在做什么。Mixpanel 聚合事件,以便团队可以构建查询、流程和可视化,帮助我们快速发现和解决问题。

在面向VR设备进行部署时,您遇到的最大部署限制是什么?
光盘:对于构建而言,我们的设置很简单。我们使用 Unity 内置的构建系统,并将项目目标平台保持在Android上。我们构建 APK,将其上传到 Meta Quest개발자中心,并通过 Meta Quest 平台进行分发。有时我们需要重新构建 APK,并且我们发现少量上传错误。
毫米:在抢先体验阶段,这款游戏吸引了恶意用户、修改者和黑客。分发 APK 文件会带来安全风险,因此我们通过定制解决方案和Unity Asset Store插件加强了VR构建的安全性。
光盘:我们还使用混淆软件包来保护文件和后端。我们的自助部署流程通过 Meta 认证进行检查,PlayFab 帮助验证帐户活动并防止未经授权的访问。我们还强制执行最低版本要求,以防止玩家使用过时的 APK 文件登录。
哈拉·卢维埃:VR硬件在每一代之间都发展迅速,许多玩家仍然在使用 MetaQuest 2。每一项新功能都需要考虑性能因素。我们会定期评估各种想法对绩效的影响。这种权衡在VR中是一个独特的挑战,因为硬件差异会显著影响玩家体验。

从Unity 2021.1 升级到Unity 6 对您的部署工作流程有何影响?
毫米:我们最初使用Unity 2021.1 是因为团队已经将其作为标准版本,但该版本存在构建和工作流程问题,包括VR焦点和跟踪不一致。
当我们迁移到Unity 6 时,我们选择了一个更适合我们工作流程的稳定版本。此次升级需要对已弃用的 API 进行代码更新,耗时数天才完成。我们升级是为了提高稳定性。
光盘:我们切换到Unity 6 的另一个原因是它与 Fusion 的兼容性更好。Unity 6 还支持PlayMode 工具,帮助我们在开发初期测试多人游戏场景。在加强安保措施后,我们最终停止使用它。我们大约在一周内解决了大部分迁移问题。
毫米:动画溢出行为带来了主要挑战,但我们开发了一种解决方法。
Unity 6 没有引入新的漏洞。Unity 6 暴露了一个与动画计数器达到最大值相关的现有问题。我们没有忽视这个问题,而是构建了自定义的编辑器工具和系统,以识别受影响的动画,并在它们溢出之前重置它们。

在VR硬件部署过程中,您是如何定义和验证性能目标的?
毫米:我们追踪多个绩效指标。一个关键指标是帧率(fps),我们设备的目标帧率为 72 fps。我们会监测低于该阈值的跌幅及其发生的频率。我们使用Unity Profiler和 Meta后台,它们提供特定于设备的细分数据。
由于使用了低多边形素材资源和可重用着色器,内存一直不是主要问题,因此我们很少看到与内存相关的崩溃。网络是重点,因为UG有许多对象和网络交互。我们与 Photon 团队直接合作,解决性能问题和崩溃问题,并利用感兴趣区域等技术来提高可扩展性。
我们还会跟踪崩溃情况,并调查是否是新的变化或性能问题导致了崩溃。
您是如何利用Unity Profiler 在部署前优化特定平台的构建版本的?
毫米:Unity Profiler 可以帮助我们跟踪延迟峰值和监控帧率下降。我们可以检查渲染过程、内存使用情况和帧活动来查找原因。我们用它来调查 DinoDex 的一个问题。每个玩家都有自己的恐龙图鉴,因此我们使用场景搜索API在运行时查找相关组件。
在编辑器中运行正常,但在实际测试中,打开 DinoDex 时会导致严重的卡顿。分析器显示,在物体较多的场景中, API调用会触发峰值。我们确定了确切的脚本和函数,并发现了相同模式的其他用途,从而减少了整个项目中的延迟峰值。
光盘:它对调试性能问题至关重要。DinoDex 问题可能会导致大厅在打开时卡顿几秒钟。
另一个例子是玩家展示架,上面摆放着一排排恐龙。原先的实现方式是在单个帧中生成多个网络对象,导致性能峰值。
分析器显示,这些峰值来自 Fusion 生成调用以及具有 NetworkObject 和 NetworkTransform 组件的大型对象层次结构。它帮助我们精确定位了导致游戏中断的帧和原因,并解决了重复生成和崩溃等问题。

哪些部署决策或优化措施对提供稳定、高性能的VR体验影响最大?
毫米:质量保证是我们的强项之一。Unity允许我们创建具有可配置设置的定向版本,用于 beta 模式和其他测试环境。我们可以在几分钟内(通常不到 10 分钟)向较小的玩家群体发布版本、修复问题并将更新推送至 alpha 版本。
这种工作流程使我们能够在更改正式上线之前快速进行测试。频繁推送更新并保持这种反馈循环的能力是稳定性的关键。
光盘:自 2025 年 1 月开始开发以来,优化工作一直在持续进行。我们迅速行动,在 9 月份向测试人员发布并正式上线,然后在上线后每周发布更新。
从一开始,我们就专注于网络、性能和代码质量。质量保证流程支持了这一速度,使得新系统能够快速测试。我们也避免采用那些性能或开发成本得不偿失的功能。

对于有志成为VR开发者的年轻人,你有什么最重要的建议?
毫米:哪怕只是个小型原型,也要动手做出来。它不需要打磨。通过游戏创作大赛、itch.io、SideQuest 或 Meta Horizon 商店分享你的作品,即可获得直接反馈。不要把批评放在心上,要利用反馈来改进自己。许多VR开发者在学习过程中避免分享,但闭门造车会减缓成长。
HL:Beta 测试至关重要。UG在发布前进行了 4 到 6 周的封闭 alpha 和 beta 测试,这有助于塑造最终体验。玩家的行为并不总是符合开发者的预期,因此外部测试人员可以揭示游戏的实际玩法。这种反馈有助于开发者缩小预期玩家体验与实际玩家体验之间的差距,即使游戏感觉已经准备就绪,团队也不应该忽略它。
要了解更多使用Unity制作的项目,请访问资源页面。
