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

《Survival Kids》是Unity第一个与KONAMI合作开发的端到端项目。这个小团队在开发游戏上积累了数十年的经验,本博客系列将深入介绍他们是如何完成这个雄心勃勃的项目的。第一期探讨了团队的帧和渲染工作,而本期则探讨了关卡和环境设计。
虽然我们大部分时候都在谈论如何实现屏幕上的外观,但我们想深入了解下我们是如何改进工作流程的,让他们变得更快,以便我们能够按时交付项目的。
由于团队的规模和项目范围,我们考虑了很多关卡布局和地形工作流程。我们需要让关卡设计师能够轻松迭代想法,但我们的方法也必须在将关卡交给美术团队后将返工减少到最少甚至没有。在制作最终的游戏素材资源时,我们选择了让关卡设计师有非常类似于白盒的工作流程。
Survival Kids 使用一组可重复使用的构建块来创建关卡的主布局。这是一组带有悬崖岩石侧面和顶部网格地形补丁的预制件,配置了不同的大小和形状。

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

这种设置允许关卡设计师使用这些组成模块使用最终的游戏素材资源创建大多数关卡,但具有非常接近白盒建模的快速工作流程,以便快速迭代想法。
这种“积木式”地形模块方法由于关卡形状有机,导致许多模块重叠。这也导致了大部分悬崖边都位于其他模块内部或后面,而游戏摄像机却从未看到过。为了解决这个问题,我们创建了一个编辑器工具,逐个检查每个模块,检查是否有任何部分可以从游戏摄像机的角度被看到,并剔除所有看不见的部分。

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

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

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

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

然后我们使用另一个自定义工具来拆分不同地形的网格碰撞体。为此,我们采取了两种方式:
- 作为网格,用于减少每个网格碰撞体的三角形数量和体积,提高游戏的物理性能
- 按材质,让游戏能根据角色的行走材质(草地、沙地、雪地、冰块等)生成不同的声音和脚步VFX

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



