您想找什么?
Case studies

六人团队如何在短短三个月内将《乐高®建造者之旅》移植到 Apple Vision Pro

Mar 13, 2024
Light Brick Studio 出品的《乐高®建造者之旅》
为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。

从 Apple Arcade 开始,Light Brick Studio 的沉浸式多平台益智游戏 《乐高建造者之旅》一直发展势头强劲。以下是团队在拥抱空间计算新时代并将这一称号带给 Apple Vision Pro 时学到的东西。

挑战:
三个月内解决移植到 Apple Vision Pro 的渲染和优化障碍
项目人员:
20,由 6 人组成的团队负责 Apple Vision Pro 端口
平台:
Apple Arcade、PC、Xbox One、Xbox X|S、 PlayStation®4、 PlayStation®5、Nintendo Switch™、Apple Vision Pro
地点:
丹麦哥本哈根

刚刚涉足混合现实领域的工作室如何打造 Apple Vision Pro 的沉浸感,同时保留其他平台上的游戏体验?

由于乐高®积木是真实的物理产品,Light Brick Studio 意识到创造一种让玩家与房间中的游戏元素互动的体验所面临的挑战。对于该游戏的 Apple Vision Pro 版本来说,时间也是一个限制因素。虽然该团队已经在一两个月内完成了具有 2D 界面的其他平台端口的开发,但对于这一空间计算领域的新项目来说,三个月的时间表却十分紧迫。

探索新维度

“一旦你了解了游戏平台的界限和玩法设计,你几乎可以创造任何你想要的体验,”Light Brick Studios 的技术主管 Mikkel Fredborg 解释道。

对于团队来说,将游戏引入 visionOS“主要是一项技术挑战,要让其顺利运行,然后充分利用完整的体验。”这意味着要实施多项技术改造,包括彻底重新设计用户界面(UI),将曾经平面的 UI 元素放置在房间中。该团队还必须更新他们的渲染工具和方法,以确保最终产品的视觉质量和沉浸感。并行平衡Unity和 RealityKit 系统给性能优化增加了进一步的障碍。

“我们做过很多不同的移植,这个是最复杂的,因为 Apple Vision Pro 与其他平台非常不同,”Light Brick Studio 的总经理 Karsten Lund 说。“我们的期望是看看我们能将这种体验推向多远,结果确实很好。”

结果

  • 在不到 100 天的时间内为 Apple Vision Pro 打造了该游戏的 80 个关卡和 60,353 块乐高积木
  • 在Unity PolySpatial 团队的支持下,节省了数周的开发延迟
  • 保持所有游戏区域完整,仅进行特定的性能优化,但不改变游戏的整体流程
  • 采用开放式混合现实风格实现平滑过渡,随着玩家的进步,沉浸感会越来越强

Nintendo Switch 是 Nintendo 的注册商标。

乐高建造者之旅游戏元素的实际操作 GIF
Light Brick Studio 的《乐高建造者之旅》

重新设计用户界面和游戏玩法

《乐高建造者之旅》 拥有极简的用户界面,最多包含 20 个按钮,用于执行诸如加载保存的游戏和重新开始关卡等操作,因此重新设计它的难度比许多游戏要小。他们在Unity中重新设计了 UI,采用 GameObjects 并将碰撞器附加到它们上以使输入正常工作,同时模仿 visionOS 的设计语言。

该团队还必须考虑身体运动的灵活性。除了 UI 之外,游戏中的一切都是使用名为 LEGO Digital Designer 的工具用乐高积木构建的。该团队一直尝试在 2D 表面模拟3D空间,但对于 Apple Vision Pro,他们必须考虑到玩家可以在任何地方移动的事实。为了提供完整的 360 度体验,团队重新设计了现有的模型,使其只能从特定角度观看,以确保模型几何形状中没有任何孔洞。为了减少绘制调用,多个网格也被组合成单个GameObjects)。

Fredborg 说道:“我们能够考虑到玩家可以走来走去,然后对模型进行 360 度的全方位优化。当我们将砖块导入游戏时,我们去掉了砖块内部的所有几何图形,因此我们删除了所有内部细节,因为您永远看不到它们。我们能够利用现有的自动化工具并对其进行调整,以适应完整的模拟体验。”

Light Brick Studio 团队在编辑器中为 PolySpatial VolumeCamera 组件设置 UI 和事件的截图
Light Brick Studio 团队在编辑器中为 PolySpatial VolumeCamera 组件设置 UI 和事件的截图

在“有界”模式下管理布局

早期,团队决定采用有界模式进行设计,即必须在定义的范围内进行操作。如果他们试图在该范围之外工作,元素就会被剪切并变得不可见。他们决定接受“有界”模式的局限性,除非进行交互,否则不会有关于玩家的头部、眼睛或手的位置/方向的信息。一旦玩家做出捏合手势,游戏就会知道手在哪里以及正在与哪个物体进行交互。当捏合结束时,信息也结束。从这个意义上来说,它类似于触摸屏,你只知道玩家在触摸屏幕时在做什么。

“我们不知道人们在看什么,这是一个很大的变化,特别是因为我们的游戏玩法需要玩家看着砖块来选择它,”Fredborg 说。“一旦我们突破了所有这些界限,它就会运行得非常好,并且可以很好地融入系统。最终,以这种方式运营确实非常好,因为一切都朝着同一种用户体验的方向发展。”

为 MaterialX 着色器提供帮助

《乐高建造者之旅》的最早版本中,团队使用了 Unity 轻量级渲染管线 (LWRP) 的自定义版本,然后针对 Xbox 和PlayStation端口转向高清渲染管线 (HDRP)。对于 Apple Vision Pro,他们必须首先将所有内容转换为基于通用渲染管道 (URP) 和 Shader Graph,然后转移到 Apple 的 RealityKit。

为此,他们将在 Shader Graph 中编写的着色器转换为可以加载到 RealityKit 中的 MaterialX 着色器。但团队遇到了障碍,发现结果并没有得到很好的优化,并且需要做比预期更多的工作。

他们原本计划进行手动优化,但发现需要实现流程自动化才能扩大规模。他们会对着色器进行手动修补,找到重复的代码,然后替换该部分代码以确保它只执行一次。“让一切顺利进行是一项挑战,”Fredborg 承认,“但我认为 PolySpatial 团队在优化一切方面做得很好。”

乐高建造者之旅不同关卡的游戏元素
Light Brick Studio 的《乐高建造者之旅》

寻找最佳光线

由于游戏的周转时间很短,他们需要即时寻找解决方案。“我们必须找到解决方案来提高游戏的真实感,并且仍然支持 实时灯光 和阴影,”Freborg 说。“这是较大的变化之一。”

首先,他们从 Apple Vision Pro 中获取基于图像的照明,目的是将其正确地添加到他们想要包含的材料上,例如塑料和不同的变化。他们必须解决诸如砖块上的指纹和划痕等棘手的问题。

由于该游戏最初是为早期的 iPhone 开发的,因此它的灯光非常简单。该团队使用了体积纹理(一种融入了环境光遮蔽的3D纹理),以便他们可以从场景中的任何位置进行采样。他们会对点进行采样并分析发生了多少环境光遮蔽。由于 Apple Vision Pro 不支持3D纹理,他们必须将体积纹理转换为 2D 纹理并从中进行手动采样。这现在是 PolySpatial中的自动化流程,但在 Light Brick Studio 团队开始时尚不可用。

编辑器中 Light Brick Studio 团队布置夜间场景的镜头
编辑器中 Light Brick Studio 团队布置夜间场景的镜头

该团队首先使用塑料砖着色和体积纹理采样系统。然后他们加入了实时灯光,并且由于体积纹理包围了整个场景,所以他们需要修改外部照明。当他们开始开发时,无法覆盖基于图像的照明,因此他们必须对不同的立方体贴图进行采样,然后从 RealityKit 中淡出基于图像的照明中的光线。

“我们做的事情实际上是不可能的,但我们找到了一种解决方法,即在将其发送到 RealityKit 照明之前降低砖块的光滑度并提高不同的值,”Freborg 解释道。“由于现在可以在 PolySpatial 和 RealityKit 中覆盖基于图像的照明,因此开发人员将可以更轻松地完成工作。”

乐高建造者之旅不同关卡的游戏元素
Light Brick Studio 的《乐高建造者之旅》

创建柔和阴影

Light Brick Studio 团队还必须找到解决阴影问题的方案。虽然可以为 Apple Vision Pro 中的某些元素添加阴影,但这不是标准。为此,团队将Unity中的阴影渲染为高度图或深度图,将其发送到 RealityKit,并在那里重新采样。他们将场景作为阴影贴图在Unity的Metal后端进行渲染,然后将其传递到 RealityKit 渲染端。

“如果您仍然需要达到每秒 90 帧,那么您通过渲染所能实现的速度是有限的。我们制作了一个非常小的阴影图,64 x 64 像素,然后将 mipmap 级别组合到单个纹理的RGBA通道中,然后可以使用 RealityKit 中的单个样本进行采样,以产生看起来像软阴影的东西,”Fredborg 解释道。“因此,当砖块非常靠近表面时,阴影会非常清晰,但当砖块向上时,阴影会变得更柔和。我们用一个纹理样本做到了这一点。”

在家玩《乐高建造者之旅》的沉浸式体验
Light Brick Studio 的《乐高建造者之旅》

对于Unity中的实时灯光,他们使用了 Shader Graph 中的 PolySpatial Lighting Node,一旦转换为 RealityKit,它就会扩展为多个 Shader Graph 节点。

“对于 RealityKit,改变着色器的唯一方法是通过类似 Shader Graph 的界面,”Freborg 说。在Unity方面,团队发现可以在 Shader Graph 中创建自定义代码函数,并且只要遵循某些特定规则,就可以将其转换为 MaterialX 节点图。“这确实帮了我们大忙,”他继续说道,“否则它就会成为 Shader Graphs 中意大利面条怪兽内的意大利面条怪兽。”

乐高建造者之旅不同关卡的游戏元素
Light Brick Studio 的《乐高建造者之旅》

以 90 fps 进行优化

当团队将视觉效果推向新的维度时,他们遇到了一些阻碍平台平稳运行的障碍。开发由两部分系统组成,将所有内容从Unity传递到具有不同渲染技术的 RealityKit。这意味着Unity负责处理游戏逻辑,而 RealityKit 负责渲染视觉效果,并且需要进行优化才能以每秒 90 帧的速度流畅运行。主要挑战之一是确定瓶颈是来自Unity还是 RealityKit 方面,团队需要多次尝试才能找到解决方案。

“一开始,PolySpatial 包会将我们在Unity中所做的一切反映到 RealityKit 上,因此每个游戏对象或变换都会在那里,而且当时我们无法关闭特定图层的传输或反射。它反映了从 UI 渲染、画布渲染到动画粒子系统的一切,”Freborg 解释道。“现在,有一个过滤器,你可以将其设置为不跟踪特定的图层,但那时,我们必须想办法清除我们在 RealityKit 端看不到的所有内容。”

由 Light Brick Studio 制作的《乐高建造者之旅》中的一关
Light Brick Studio 的《乐高建造者之旅》

团队需要优化 GameObject 层次结构。在其他平台上,砖块是三个或更多链接的GameObjects),但对于 visionOS,他们为每个砖块设置最多两个GameObjects) ,以限制Unity和 RealityKit 之间的来回。效果确实很好,对于团队来说是一个巨大的胜利。

增强定格动画也是一大亮点。游戏包含在砖块上交换网格的动画瀑布。它们由数百个不同的GameObjects)组成,运行速度非常慢。“我们最终以交错的方式解决这个问题,而不是为每个游戏对象(GameObject)逐帧进行处理,”Fredborg 说。“我们会在不同的瀑布流之间每隔几帧等待并执行此操作。这很有帮助。”

寻找最佳解决方案和合作伙伴

在打造 Apple Vision Pro 的整个过程中,Light Brick Studio 团队必须保持灵活,快速解决问题,并不断迭代以保证正确完成任务。

“我认为你必须戴上眼镜才能明白它,”弗雷堡说。“我们建议进行多次构建,并尽可能多地使用该设备来专注于触摸和移动。您可以运行在 Mac 上的模拟器来了解事物的工作原理,但输入不同。它是一个更加实体的平台。”

最后,团队对于游戏的结果非常满意,部分原因在于与强大的支持合作伙伴的合作。“PolySpatial 团队在 Slack 和讨论论坛上反应非常迅速,”他继续说道。“当我们遇到困难时,他们会迅速给我们提供解决方案,这真的很有帮助。他们非常支持并希望尽可能地打造出最好的 PolySpatial 版本。”

由 Light Brick Studio 制作的《乐高建造者之旅》中的一关
Light Brick Studio 的《乐高建造者之旅》
“只要Unity支持某个平台,我们就可以让它在该平台运行。”
MIKKEL FREDBORG / LIGHT BRICK STUDIOTechnical Lead

立即使用Unity 2022 LTS 为 Apple Vision Pro 构建

与我们的团队交谈,了解我们如何帮助您利用 Unity 强大的 工具和工作流程 来构建引人注目的空间体验。

探索案例研究

填写此表单即可了解最新的客户成功案例