近年来,开放世界游戏越来越受玩家欢迎,这些游戏往往能让玩家体验到比传统游戏更丰富的内容。对于开发者来说,内容量的增加会大大增加研发成本。因此,程序生成成为了制作开放世界游戏的一个非常重要的工具。
在之前的 GDC 演讲中,育碧技术美术师 Etienne Carrier 详细介绍了通过 Houdini 引擎程序化生成《孤岛惊魂5》世界的管道和制作流程。我叫 Etienne Carrier,在 Ubisoft Montreal 担任技术美术师,当了 3 年的老师。加入育碧时,《孤岛惊魂5》项目刚刚开始,这是我参与的第一个3A项目。由于我之前没有做过AAA游戏,所以我加入育碧这个职位的秘密武器是我在程序化研发方面的经验,我已经做了六年了。
在加入育碧之前,我从事独立游戏的开发。在这个过程中,我在自己的研发管线中加入了程序生成,所以今天很高兴和大家分享我们育碧项目在《孤岛惊魂5》中使用的程序生成技术。
在我们开始之前,这里列出了我们今天要分享的内容,首先是快速介绍并解释我们正在尝试解决的挑战,然后是这个管道的目标,然后我们将看看程序化生成都是从用户的角度来看的工具。
在《孤岛惊魂5》的开发过程中,我们遇到的挑战之一就是不断变化的地形。一年半的多次变化,所以我们的挑战就是如此频繁地迭代在这种情况下,如何管理这么多内容。
让我们看一小部分地形。这是我们的关卡艺术最初制作的森林地形。这种植被分布与初始地形是一致的,但是随着地形的迭代,我们会看到植被的位置会出现问题。
因此,我们希望在每次迭代中,这些植被能够根据地形合理分布,同时我们也想确定当有多个玩家的情况下如何制作游戏世界。他们看到的游戏世界是连续的、连贯的。
当然,面对这些问题,我们也可以在项目一开始就锁定这些地形的位置,但这显然是不现实的,因为我们必须不断迭代才能达到最终发布的质量要求。
考虑到这些挑战,我们创建了一个专用管道。第一个目标是创建一个微管理工具,让游戏世界充满更自然的游戏内容。这些则需要与地形拓扑保持一致,例如这是相同的情况,但是植被的分布完全随着地形的变化而变化。
然后这些管道需要自动化,所以我们使用了Houdini和Houdini引擎,并且在构建机上进行了Nightly build,后者主要用于每晚刷新游戏世界。我们有多种工具可以处理游戏世界的不同部分,即地图。
产生的所有数据必须是确定性的,也就是说相同的输入需要导致相同的结果,无论我们如何烘焙地形,我们可以看到中间的地形是不变的,因为我们有Nightly build,所以地图之间的连接需要无缝。
我会直接跳到要点上,首先要说的是,权力越大,责任越大,程序化工具可以生成大量数据,这让我们可以很好地控制性能,但也会影响整体的游戏玩法和美术。就像他们想在孤岛惊魂5中做一个非常茂密的森林森林,但其实并没有那么有趣,因为树木和动物不能生活在这样的森林里,所以在做生物分布的时候,我们必须做一套专门的控制工具,在保证不影响的同时增加密度游戏玩法,其次,设计优雅的工具有更多机会。例如,我们的生物群落给我们带来了很多机会。