浅聊程序化世界构建流程

原创 作者:FrankZhou 2019-10-09 2.2k

游戏开发中的过程化生成技术(Procedural Generation)让开发者能使用少量的代码,生成一个无限可能的空间,随着目前大世界沙盒生存游戏的发展,PCG相关的技术刚开始在国内大公司引起重视没几年,尽管这种理念已经在国外作为游戏工业化生产的标准,以前国内传统的场景制作流程一般还是先出个layout白模,然后由场景地编将游戏世界中的一草一木都是手工精心调整,需要大量的人力来维护和更新,一旦遇到整个场景的迭代,所有时间与过程将浪费,大量成本人力会急剧的上升。不同这些的是PCG的理念是通过配置一些生成的规则,然后由生成算法自动去生成游戏世界,运用得当可以进行快速迭代,节省大量的美术的工作量和成本。它的完整的设计的目的就是为了允许在项目的任何阶段都可以进行快速的迭代。

对于技术的使用通常需要在游戏的原型设计阶段开始介入,从游戏大世界内容制作到游戏批量内容迭代一直贯穿,在制作流程上,需要拆分成不同的模块进行制作,这样不同模块之间可以根据需要相互协同,并且有可以进行复用。从介入时间和模块化划分的好处是可以保证整个流程的制作是与项目所需的美术风格是一致的,同时可以根据必要的美术需求进行定制化工具的开发,而作为整个工具链的目标产出是帮助美术可以使得所有内容通过极少的参数和输入进行控制并以这种方式来加速美术内容的制作。希望使得在相同的参数的输入下,输出的内容一定是完全一致的。

我们在实际的操作中可以把所有的美术制作内容都可以归类到几个不同的抽象层,按照不同抽象层之间的依赖关系,制作每一个抽象层本身的生成规则,当每一层的规则足够复杂时,就可以一定程度上去仿造美术的制作流程,综合所有抽象层的输出,完成对一个完整游戏关卡世界的按照规则参数的输出。

抽象流程

而在实际的操作时候不同的分层之间其实是有依赖关系的,必须需要按照依赖关系来处理。生成的时候需要要遵循一定的顺序进行比如道路的生成是需要地形相关的数据,而后道路的生成又为村庄的分布提供了基本数据;再比如需要根据地理环境的数据例如草地、土壤、岩石、房屋等分布,来布置整个世界上的草地、树林和沙滩的位置。

下面说说我们在游戏项目中实践的Pipeline,基本可以归纳为五步走:

1.游戏概念设定:为了保证整个场景风格一致,需要统一的概念设定和参考,通常由原画和文案一起给出相应的概念稿给KFZ全员,统一大家对于游戏的认识

2.分析建立规则:其实对于大部分的设计都可以转换成一系列规则,关卡美术或者关卡策划用自然语言提炼出相应想做的世界的规则,这些规则比如:高纬度的树应该比低纬度树矮,道路两边草应该比较稀疏,并且有大量裸露地面。有了这些自然的规则TA或者程序才能去分析,然后根据这些规则去构建程序化的分层规则,从而构建出规则引擎。

3.模块化划分:第二条的规则既然已经可以被程序所表达出来,那么通过这些规则就可以制作对应的模块了,我们的规则越丰富则效果越接近预期,模块的建立辅助引擎搞定从美术的DCC到正式可用资源之间的桥梁。比如公路这个模块就可以拆分为:直线公路组件,弯曲公路组件,十字路口和三岔路口模型组件,已到达生存公路的目的。

4.关卡布置与参数调整:完成的模块组件可以通过mask图或者曲线划定区域在场景里大量布置,并通过对应的参数进行调整。

5.最终效果调整:最后必然会存在需要美术或者关卡策划特别关注和表现的区域,这里就需要人工进行干预了,由人来对最后的效果进行细化来提升,保证最终的交付效果。这样的区域也可以提前就MASK图层建立,防止在自动化生成结果冲掉这些需要特殊表现的区域。

最后以我们熟悉的FPS大世界类游戏为例来说说实际开发中的阶段的划分:

1.游戏开发初期:这个时期我们需要快速验证游戏的原型,确认游戏的风格,前期就可以快速的自动生成整个包括植被、道路和村庄布局的8km*8km的地图,这样就可以帮助策划就可以对玩法和地图进行快速想法的验证。

2.堆量和细化中期:这个时期主要是量的产出问题,由于规则建立的靠谱那么全地图的树木、灌木和各种掩体以及所有刷新点的密度和分布都是通过几个参数快速调整的,还可以快速填充野外非建筑区域的资源量。

3.全地图效果后期:这个时期主要是配合测试反馈进行各种细节的调整阶段,内容包括了根据反馈调整障碍物、掩体密度,根据优化反馈调整全地图过于密集的物体,在上线前快速大量添加延期的外包美术物件,根据已有场景物件大量布置三级物件,如果有需要还可以做对全地图的所有树木密度和分布进行了大规模重新分布。

技术本身看似美好,但是想要做好也是蛮有挑战的一件事情,下面几篇是近几年来在GDC上分享的很有价值的文章,大家可以一看:

囧囧囧囧:浅析游戏《无人深空(No Man's Sky)》中使用的程序化生成技术

去冒险的猪:GDC2017-幽灵行动:荒野技术展示

TraceYang:Houdini技术体系过程化地形系统(一):Far Cry5的植被系统分析

从上面那些大作中可以获知模块化工具的技术积累是非常有必要的,这就要包括积累日常美术制作流程相关的工具,以提高制作效率,积累复杂关卡的生成逻辑来实现更高质量关卡的制作。所有的工具都需要考虑以减少美术制作人员的学习成本为目的,最好能帮助美术在制作时加快预览效果与实际效果对比和最终资源的生产效率,而做好所有这些真的不是靠一两个项目就能够一蹴而就的,它需要一个长期探索与摸索的阶段,还需要一直稳定且互信的团队。

最后说点题外话,如何在游戏项目中推进一个新的事物,那么你就需要把基本的道理说透彻,且让团队成员都能明白这个道理是对的,如果团队成员不理解靠强压推进的方式也是不行的,到后来只会出现相互的抱怨,每个人的角度和立足点毕竟是不同的,还有就是有成功项目去支撑你的观点肯定能事半功倍,当然你如果有足够的个人影响力那是另外回事情,那么事情就能好办的多。

作者:FrankZhou
专栏地址:https://zhuanlan.zhihu.com/p/51368919

相关推荐