分享

过程化技术:打造「开放世界」的秘密

 勤奋不止 2019-10-09
 如果你经常接触开放世界游戏,应该不难发现在这些作品中,并不是每个角落都经过了精雕细琢。一张硕大的地图里,往往充斥着诸多相同的物件、地形和建筑。某种程度上,这些都是使用过“过程化技术”的痕迹,背后也蕴藏了相当多的学问。

近几年来,不同品类的开放世界内容频频推出,支撑这种游戏场景开发的过程化技术,被越来越多的国内开发者所了解。腾讯互娱天美工作室的技术美术师杨拓,从 2016 年就开始致力于游戏关卡设计,以及场景与玩法交互等技术的研究。在今年的 TGDC(腾讯游戏开发者大会)上,他也就过程化技术进行了非常深入的讨论。



为什么要用过程化技术

何谓过程化技术?说得简单点,就是用程序算法自动生成内容的方式,来替代纯粹的人工制作。这个“内容”囊括了美术资源和音乐音效,也多见于大场景的制作。当然,它并不是一个特别新鲜的东西,早几年《无人深空》吹嘘自己有 1840 亿亿颗星球可供探索,其实就用到了这种方式。

在 TGDC 的演讲中,杨拓针对过程化技术的作用,给出了这样的定义:

“美术提供一些元素,包括基础的图形或轮廓元件,以及一些可以调整的数值,最后加上一个可以抽象出来的公式,就能够到你最后想要的结果。”

一个过程化技术的应用案例

通常情况下,基础的开放世界地图,涵盖了非常丰富的地形地貌,比如对应不同季节的草地、雪地。以往的 MMO 也会去塑造这些东西,但很少做到无缝连接,有时候需要切换大地图才会具体替换到新的地貌效果。但时至如今,将所有的地形、地貌集中显示在几公里的范围内,可以说成了一种最基本的要求。

在此基础上,植被和生态系统的引入又将制作难度提高了一个层次。比如绿地要长绿草,越靠近沙土的地方草的密度越少,美术对植被的生长有严格的控制和规则。如果用传统的笔刷工具,一次、两次还能借助人力来完成,一旦场景发生改动,便要频繁根据地形的改变来重新修改植被分布,制作的难度相当高。

若是想进一步增加场景活力,到头来还得牵扯到城市规划。从最初的道路规划到由此划分出的区块,再到区块中的房屋、花园、停车场、通道,这些是一层层规则的叠加,背后是一整套规则的树状结构。一旦处于规则顶层的道路发生了变化,同样也会引起道路周围每个要素的变化。

如果细化到城市里的建筑或者某个房间,美术和原画还需要对建筑风格和效果做把控。除此之外,关卡策划还会将掩体、跑酷攀爬等场景交互一并加入,这实际上都依赖于建筑之间摆放的触发器来控制。试想一下,一旦缺少标准的制作流程和方案,带来的结果便是美术工作量的堆积,游戏包体的膨胀和巨大的沟通成本。


不妨以《刺客信条:起源》为例,按照官方的说法,他们塑造了一个 120 平方公里的埃及场景。其中的城镇数量少说几十,每座城又有几十栋建筑,每个建筑里还包含家具、攀爬跑酷的触发器,以及各种不同的墙面材质。在这样工作量下,杨拓认为过程化技术将成为一个团队的救命稻草:

“大世界的制作技术其实已经成型很久了,最近逐渐被人重视起来的原因,一是国外 3A 大厂游戏品质不断提升,使得在背后推进场景制作的技术,特别是 Houdini 技术逐渐被国内的各个工作室了解和接受,IEG(腾讯互动娱乐)内部每个工作室都有自己的一套 Houdini 管线(流水线),而且大家都在推进过程化的方案。

如果每个建筑物件都要人工配,一个大世界有上千的部件,而且会经常有调整。全靠人力是不可行的。我们需要把这些物件进行模块化,通过模块的方式来管理每个物件的触发器。另外一个是要有自动化的工具,根据建筑的形状来自动的把对应的触发器生成出来。”


如何运用过程化技术

正如杨拓所言,谈到过程化技术相关的工具,Houdini 是一个比较常用的图形软件。由于它是完全基于节点模式设计的产物,很适合用于“自动生成”一些东西,也和传统的三维软件有很大的差异。

最直观的应用,就是在地表平面加入一些参数,很快便能创造有着高低差视角的游戏关卡。开发者还可以在地形上连上一条曲线,用曲线读取地形信息,得到冲击地形的河床以及这个河床所生成的河流。通过一些简单的“点线面”输入,进而获取最终的效果。

用 Houdini 生成地形

但在杨拓眼中,如果不带脑子的使用过程化技术,又会导致相当多的隐患:

“以河流为例,河流横穿 8×8 公里的地图。意味着你这个河流改变一点参数,河流横穿的 8×8 地块都是被污染掉的,也就是说需要重新构建。如果有人开发手机游戏,就知道我们的游戏每天都做「增量构建」,也做「全量构建」。但如果地图的所有地块每天做全量构建,对游戏场景的开发迭代很不利。”

紧接着,他在 TGDC 上提出了一个“正常的方法”。实际上,现在国外的 3A 产品大部分都使用了名为“模块化点云”的方案,杨拓表示:

“通过把地形地貌的坡度信息、高度信息以及地形图层的信息总和生成在 Houdini 里面,就可以转成一些点。你可以看到 Houdini 的实例图里面,这些点包含的是一棵树的大小、缩放信息和旋转信息……一百棵树可能就几 K 的数据量,而且这个东西通过渲染引擎的实例化方案,一个批次可以完全渲染完。

最后导入到场景里的话,比如我要换另外一种植被效果,只要换一棵草的样子,整个场景的草都换了。换树也是,只需要修改一棵树。优化下来觉得性能不好,要降低草的密度,我只要点一个参数就全部改变。用这种方法我们就可以很快不断迭代、不断尝试……”

通过过程化技术铺开植被

如果以建筑为例,每个“点”实际上就是一个建筑模块,开发者可以先组织建筑模块的信息,然后再做细化的替换。换而言之,通过这种方式,整个游戏场景都能够转化为“点云”。

“这些点云导入虚幻引擎或者 Unity 引擎里面,通过实际化渲染,一个批次就可以全部渲完。直接调参数就可以优化,不用每次改什么东西还要反复调……我们的过程化技术其实是以点云为驱动的过程化技术,正是因为有点云的组织结构,所有的操作、所有的变化通过一个 Excel 表就知道我加了什么、减了什么,也可以通过分析数据表的格式,知道某个单位内我们的美术资源量到底消耗了多少。”

过程化技术生成的建筑

可以预见的是,随着经验的积累,过程化技术将成为大型开发商扩大优势的重要工具。杨拓认为这其中包含的可迭代性价值,体现在美术可以把玩法、程序的工作剥离出来,将精力集中于设计和创造。而关卡策划和关卡程序只需要修改模块的生成规则,就可以将所有的修改量限制在非常小的范围内。对于玩家们来说,未来体验到品质更高,细节更为丰富的开放世界游戏,似乎也不再是痴人说梦。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多