Survival Kids 中的关卡布局和地形工作流程

DANIEL REIDLER AND STEVEN CANNAVAN / UNITY TECHNOLOGIESSurvival Kids team
Sep 3, 2025|4 Min
Survival Kids 中的游戏玩法
为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。

Survival Kids》是Unity第一个与KONAMI合作开发的端到端项目。这个小团队在开发游戏上积累了数十年的经验,本博客系列将深入介绍他们是如何完成这个雄心勃勃的项目的。第一期探讨了团队的帧和渲染工作,而本期则探讨了关卡和环境设计

虽然我们大部分时候都在谈论如何实现屏幕上的外观,但我们想深入了解下我们是如何改进工作流程的,让他们变得更快,以便我们能够按时交付项目的。

由于团队的规模和项目范围,我们考虑了很多关卡布局和地形工作流程。我们需要让关卡设计师能够轻松迭代想法,但我们的方法也必须在将关卡交给美术团队后将返工减少到最少甚至没有。在制作最终的游戏素材资源时,我们选择了让关卡设计师有非常类似于白盒的工作流程。

Survival Kids 使用一组可重复使用的构建块来创建关卡的主布局。这是一组带有悬崖岩石侧面和顶部网格地形补丁的预制件,配置了不同的大小和形状。

《Survival Kids》关卡创建的地形组成模块
Survival Kids关卡创建的地形组成模块

悬崖边由八个单独的网格、边和角组成,每个面都有一个简化的网格碰撞体。它们共享相同的材质,从而加快了渲染速度。

一张展示悬崖网格的图形展示了这些环境元素的创建方式
悬崖的外露网格

这种设置允许关卡设计师使用这些组成模块使用最终的游戏素材资源创建大多数关卡,但具有非常接近白盒建模的快速工作流程,以便快速迭代想法。

这种“积木式”地形模块方法由于关卡形状有机,导致许多模块重叠。这也导致了大部分悬崖边都位于其他模块内部或后面,而游戏摄像机却从未看到过。为了解决这个问题,我们创建了一个编辑器工具,逐个检查每个模块,检查是否有任何部分可以从游戏摄像机的角度被看到,并剔除所有看不见的部分。


关卡美术师移除游戏地形中不可见网格前后的两张图片
移除地形下方的不可见网格

我们使用Houdini Engine工具根据地形模块的不同部分创建连续的地形网格。

两张并排图片展示了美术师如何使用五个单独的补丁构建连续的地形网格
从五个单独的补丁创建连续的地形网格

Unity的Polybrush软件包的修改版被用于绘制地形网格上的不同材质。修改后的方法是 Polybrush 绘制控制纹理,类似于 Unity 的地形系统,而不是将值绘制到网格的顶点。

一名美术师使用 Polybrush 在游戏环境中的地形网格上绘制材质
使用 Polybrush 在地形网格上绘制材质

环境光遮挡(Ambient Occlusion)会被烘焙成网格的顶点颜色,让物体能更好地在视觉上接地。

两张并排图片展示了游戏地形环境光遮挡下的烘焙效果
环境光遮挡下的烘焙

然后使用自定义工具将草地、花朵和小岩石等小对象分配到地形网格上。对象的分布可以通过密度、底层材质、地形曲率或距离大型对象的远近等参数单独控制。在整个项目期间,我们尽量保持较低的密度,以尽量减少小植被的性能影响。

编辑器内的截图展示了Mesh Scatter Tool怎样在游戏里分布低密度的小植被
用Mesh Scatter Tool(网格散射工具)将低密度的小植被散布到环境中

然后我们使用另一个自定义工具来拆分不同地形的网格碰撞体。为此,我们采取了两种方式:

- 作为网格,用于减少每个网格碰撞体的三角形数量和体积,提高游戏的物理性能

- 按材质,让游戏能根据角色的行走材质(草地、沙地、雪地、冰块等)生成不同的声音和脚步VFX

编辑器内的截图展示了一名美术师如何使用名为Terrain Mesh Splitter的Unity工具为游戏中的不同地形分发网格碰撞体
使用Terrain Mesh Splitter来分配不同地形的网格碰撞体

本文将简单介绍怎样用风格化、高性能的图形和渲染来达成Survival Kids的目标 。请阅读系列第一篇博文"Graphics and rendering tips fromSurvival Kids", 请继续关注Unity博客来了解更多关于该游戏的底层文章,包括对Multiplayer联网的两部分深入探讨。你也可以在我们的资源页面上找到更多技术 ⁇ ��발자的故事。