孤岛惊魂5游戏流程(孤岛惊魂5是育碧的游戏吗)

近些年来,开放世界游戏越来越受玩家喜欢,与传统游戏相比,这些游戏往往可以让玩家体验更丰富的内容。对于

近年来,开放世界游戏越来越受玩家欢迎。与传统游戏相比,这些游戏往往能让玩家体验到更丰富的内容。对于开发者来说,内容的增加会大大增加研发成本。d成本。所以编程生成成为了制作开放世界游戏非常重要的工具。

在之前的GDC演讲中,育碧科技和Art Etienne Carrier详细介绍了胡迪尼引擎生成《孤岛惊魂5(Far Cry 5)》世界所使用的流水线和制作流程。

以下是GameLook听译完整内容:

《孤岛惊魂5》游戏内世界秀

艾蒂安载波:

我的名字是Etienne Carrier,我在蒙特利尔育碧公司做了3年的技术艺术家。我加入育碧的时候,《孤岛惊魂5》项目刚刚起步,是我参与的第一个3A项目。由于我从来没有玩过3A游戏,我加入育碧的秘密武器是我的编程研发经验。我已经做了六年了。

在加入育碧之前,我玩的是独立游戏。在这个过程中,我在我的R & ampD pipeline,所以今天很高兴和大家分享育碧在《孤岛惊魂5》项目中使用的程序化生成技术。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini在我们开始之前,这是我们今天想要分享的内容的列表。首先,做一个简短的介绍,并解释我们希望解决的挑战,然后是这个管道的目标。然后,我们学习编程生成工具,这些工具都是从用户的角度来看的。

然后,我们将了解更多关于这个管道,然后详细介绍Cliff和biome工具,然后谈论一些在R & ampd流程,最后是总结部分。

1.挑战

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

在研发过程中。《孤岛惊魂5》的d过程我们遇到的一个挑战就是不断变化的地形。通过动图,我们可以看到地形在两年半的时间内发生了多次变化,所以我们的挑战是在迭代如此频繁的情况下,如何管理这么多的内容。

我们来看一小部分地形。这是我们关卡美术最初做的一个森林地形,这个植被分布和初始地形是一致的,但是随着地形的迭代,我们会看到植被的位置会有问题。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini因此,我们希望在每次迭代中,这些植被能够根据地形合理分布。此外,我们还想确定当游戏世界中有多个玩家时,如何让他们看到的游戏世界是连续连贯的。

当然,面对这些问题,我们也可以在项目之初锁定这些地形的位置,但这显然是不现实的,因为我们要不断迭代才能满足最终发布的质量要求。

2.目标

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini考虑到这些挑战,我们建立了一个特殊的管道。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini第一个目标是创造一个微管理工具,用更自然的游戏内容填充游戏世界。然后,这些内容需要与地形拓扑保持一致。比如这是同样的情况,但是植被完全是根据地形的变化来分布的。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini随后,这些流水线需要自动化,所以我们使用了Houdini和Houdini引擎,以及一个在build machine上构建的Nightly build,主要用于每天晚上刷新游戏世界。我们有多种工具来处理游戏世界的不同部分,也就是地图。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini所有生成的数据必须是确定性的,这意味着相同的输入需要导致相同的结果。无论我们怎么烘焙地形,都可以看到中间的地形是不变的。因为我们有夜间构建,地图之间的连接需要无缝。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini最后一个目标,我们希望这些东西是玩家友好的。只有每夜构建不能保证用户能得到最新的数据。我们在工作过程中也需要随时更改这些数据,所以我们增加了很多工具。

3.工具

现在让我们快速看一下可以使用的工具。起初,我们只制作解决生物群落分布的工具,但随着项目的扩展,我们创造了许多工具。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini首先是淡水工具,用来生成湖泊、河流、瀑布等水体。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini以及围栏和电线工具。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini用于在陡峭表面生成悬崖的工具

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini控制游戏中植被分布的生物群落工具

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini我们还有一个云生成工具,可以根据2D地图上的地形生成不同浓度的雾。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini最后,我们还有一张世界地图,可以根据地形、树木等因素生成世界。

4.用户视角

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini我更喜欢通过用户的视角来使用这些工具,所以接下来,我们就快速介绍一下使用这些工具生成一个游戏世界是什么感觉。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini首先用户可以做地形化通行证。我们确实使用了墙机通行证来启动该项目,但大多数地形改造使用现有的工具。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

然后艺术家可以在上面分配淡水,主要是利用曲线。比如这里我们直接使用淡水工具,然后地面上会生成水体和一些分布在水中的物体。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

随后,用户可以生成悬崖,工具基本都是通过地形坡度实现的。虽然它可以被微控制,但大多数时候,用户不需要做任何事情,只需运行工具就可以在这些地形区域生成悬崖。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

接下来,等级艺术家可以增加植被,主要是使用biome painter,然后biome工具会自动生成整个地形上分布合理的森林植被,它们还可以与水资源进行交互。

这些工具都很好,但是用户也想定制。艺术家可以清理一个区域,然后添加一条道路。因为我们做的是自然的,可以直接加到地图上。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

可以看到植被会在路上投下倒影,路上的树已经被清除了。

但是还有一些资源需要手动替换,比如车辆,都是级别美工做的。在这个基础上,我们可能要稍微调整一下生物群落的绘制,比如增加行驶道路,周围增加一些树木。

刷新生物群落工具后,我们可以看到效果:

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

大概就是这样。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

为了使用我们所有的工具,我们可以在这里添加围栏,主要是通过绘制曲线,围栏会自动生成。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

用户也可以在地形中添加电线。在这里,我们可以添加两种相互连接的导线,所以我们添加单根导线和连接导线。如果用户没有为远处的地形设计导线,系统会自动生成导线。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

这时候树木挡住了电线的去路,所以我们需要刷新biome工具,因为这些工具可以互相交互,交换信息。一个改变之后,其他的可以相应改变。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

这些是从用户角度来看的工具。但是为了展示一些不能中断的工作流程,地形可以随时改变,比如降低地形或者在这里增加一个小岛。一旦我们对这些变化感到满意,我们只需要刷新这些工具。在这种情况下,我只需要刷新悬崖和生物群落工具。

5.管道

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini接下来,我们来看看胡迪尼引擎中的所有工具是如何工作的。我们使用内部引擎DUNIA作为输入,然后通过Houdini输出,基本上是两个引擎之间交换数据。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini你可能知道什么是胡迪尼,但是这张图可以简单的说明它能做什么。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

有些输入是用Python从dunia到Houdini,比如世界信息和世界名称。我们制造了不止一个世界,而是几个世界进行测试,并在上面运行这些管道。

我们还发送了文件路径,以确保文件保存在PC上的同一个文件夹中,这些文件路径也被发送到Houdini engine。我们还发送了地形、曲线和形状等。包括地形,比如栅栏,不仅仅是栅栏的分布,还有栅栏的形状和样式。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

然而,编程工具的主要输入是地形本身。由于生成是在地形上的特定区域内完成的,所以地形被分成了许多小扇区,也就是图中的粉红色部分(64mx64m),这是用户想要使用该工具时可以调整的最小区域。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

在生成区域时,用户可以根据不同的情况进行选择,比如全图或者某个区域。所有的调整都可以通过相机的视角直接看到。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

然后我们再来看看胡迪尼能发回的数据,比如2D地形数据,地形纹理布局,编程生成的几何图形,地形逻辑区,主要是地形的id号。所有这些数据都是暂时以缓存的形式存在于磁盘上,所以在Dunia和Houdini之间传输数据相对简单,因为避免了数据传输的加载时间。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

实体点云中存储着一些特定的信息,如某些物体的具体位置信息、植被资源、岩石、可收藏的物品、贴花和VFX特效数据、预制建筑等。甚至环境中的动物。这些对象都有相应的id,以便进行准确的调整。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini这些工具的关键是可以互联互通。编程生成是有序的,所以构建机器将总是按照这个顺序处理它们。每个工具都可以生成影响下一个工具的数据。有些工具可以写mask,有些可以读以前工具的mask。

比如淡水工具会写一个水掩膜,后续的biome工具可以读取,这样分发的时候就把水源考虑进去了。

6.悬崖工具

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini此工具的目的是在相对较大的陡峭表面上制作悬崖,并在地形上创建细节。

在本节中,我们将首先讨论之前Cry系列中使用的技术,然后了解工具输入、分层、几何、着色方法、地形数据、腐蚀、植被表面和数据输出到工具。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini其实之前在《哭泣的哭泣》系列中并没有使用过这样的工具。《孤岛惊魂4》之前以及之前,游戏里的悬崖只是地形。虽然我之前没有做过这些项目,但是从这张图我们可以看出,之前的项目并没有把悬崖的细节填进去,因为手工做这些资源会增加研发成本。

但是在《孤岛惊魂5》项目上,我们要做更大的项目,才能让悬崖有更深的表现,这也是我们为它开发工具的原因。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

这是一个只有地形的悬崖。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

这是编程生成悬崖工具后的悬崖。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

实际上我们是以地形坡度为起点,删除特定坡度阈值内的所有曲面,比如右减。这就是悬崖输入几何,也给玩家一个视觉上的提醒,有悬崖,不可能在上面走。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

既然我们从这样的几何图形开始,斜坡上就会有拉长的菱形。为了摆脱这种情况,我们在几何体上重新网格化通道,得到一个具有统一样式的三角形。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini那么,我们希望通过这些工具重现的另一个有趣的现象就是地理分层。图中的黄线是岩石随时间变化而形成的。为此我们创造了一个阶层工具,每个阶层都是随机的。我们给每个层一个唯一的ID,这样调试这些层就更方便了。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini那么我们还需要控制这些地层的角度来达到想要的效果。通常,我们在RGB地形上做,然后胡迪尼会给出角度参数。

在选择参数时,我们并没有选择无限个数据,而是只用了四个,让用户可以选择最适合自己游戏世界的地形形状。

但是,仅仅这样,似乎不自然,于是我们做了进一步的处理。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

首先,我们制作了一些噪声网格,并把它们分成两组。事实上,噪声是在低分辨率网格中形成的,然后转换到高分辨率网格中。通过这些网格,我们发现如果做小石头或者悬崖,效果不会很好。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

通过使用噪声,悬崖表面被分成两组。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

然后,我们在两个悬崖表面上运行具有不同种子值的分层工具,以便几何体具有真实的体积。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

这里使用了挤出工具和置换贴图。

这时候几何看起来还是不尽如人意,需要减少三角形的数量。在调用之前,几何图形分布在不同的网格中。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini更准确地说,每个扇区都有一个网格。如果你记得的话,扇形的面积是6464米,所以这里的每种颜色代表一个不同的扇形。我们这样做是为了更好的加载和流媒体传输。这是悬崖网格部分。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini需要注意的是,游戏中悬崖是有颜色的。我们使用地形着色器,它可以使用与地形相同的通道渲染对象,因此悬崖可以使用与其下方地形相同的纹理。如果我们在悬崖下有草,一些悬崖将会是草色的。为了避免这种情况,我们必须确保悬崖网格被转换成它们下面的地形颜色。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

为此,我们使用了最后一个工具,悬崖网格,将数据转回地形,取代悬崖遮罩和Stratatattribute。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

然后用新转换的属性生成颜色布局,可以控制游戏世界的宏观变化。另外,应该说这个颜色本来是可以做成悬崖色的,但是我们没有这么做,主要有两个原因。第一,我们希望保留远处的内容,即使因为距离远,它们还没有被加载;此外,我们希望纹理颜色处理的编程生成所占用的内存尽可能低,并且由于我们使用了地形着色器,悬崖网格不需要任何uv。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

我们移动到地形上的悬崖遮罩,并通过运行慢速模拟来扩展悬崖。我们可以看到散落在悬崖表面的点向下滑动以适应腐蚀效果。值得注意的是,腐蚀区域保留了原来的颜色。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini通过使用我们的碎石散落在腐蚀表面,这些将被输出到实体点云。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini

从遮罩中,我们生成了地形纹理id,并制作了两个不同的带噪声的悬崖纹理。事实上,我们可以做更多,但考虑到我们分配给地形纹理的内存限制,我们只做了两个。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini我们还可以在悬崖表面分布植被。我们探测的方式是把面朝上的悬崖分开,然后我们可以在这些悬崖表面分布树木和其他植物,如图所示。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini 育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini最后,这些是Cliff工具传输给编辑器的数据,包括几何和碰撞,以及生长在斜坡上的岩石和树木实体点云,带有地形纹理ID,地形上的悬崖颜色和悬崖遮罩。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini这是游戏中部分悬崖的截图。

7.生物群落工具

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini这个工具的目的是将生物群内容传播到整个游戏世界。这里我们会涵盖很多功能,主要是因为我们要制作的内容形式有很多,所以这个工具可以做很多事情。

第一步是从Heightmap生成地形,非常简单。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini然后,从地形学拓扑中,我们生成了非生物数据,这是这片土地的物理特征。

值得注意的是,所有这些地形属性将是我们做大多数生物群的关键。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini完成这些后,地形数据将存储在地形属性中。我们还引入其他2D数据,使用户通过工具生成的Biome Painter数据与编程生成的数据保持一致,如淡水、小路、栅栏、电线、悬崖等。

Biome工具的有趣之处在于,它不会一次性生成游戏世界中的所有生物,而是分为主要生物和次要生物进行生产。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini主要生物群覆盖《孤岛惊魂5》世界大部分地区,约75%-85%。这些生物要根据地形来决定,比如有的地方是森林,有的地方是草原。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini这个工具给了我们一个看起来非常自然的宏观世界。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好HoudiniMain biome还做其他东西,比如在生成的森林里给用户放置电线的地方。我们可以看到,在Biome工具中添加了电力线掩膜,以取代山区的数据和草地。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini然后我们做了亚生物群落食谱,它由很多部分组成,每个部分代表不同的生物,比如森林,草原等。这些生物群落的中心是生成地形实体。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini它可以在地形上分配单位,并修改和创建地形属性,但最核心的部分是确定每个物种的生存能力。

每个物种都为自己的成长和繁荣而奋斗,生存能力就是为每个物种确定自己喜欢的地形属性。最适应地形的物种会优于其他物种。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini比如物种A喜欢生活在这个封闭的地形上,物种B喜欢生长在底部的FlowMap地形上。如果流图值足够高,那么物种B将优于物种a。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini选择获胜物种时,还会增加一个生存半径。举个例子,在这种情况下,如果蓝色物种长到了绿色物种的半径内,就会被移除,也就是图中的红色物种。另外,我们也希望树下有草,所以这些不会被清除。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini为此,我们设计了优先级半径,所以先评估优先级。如果两个物种的优先级相同,这时候我们就采取优胜劣汰。比如这张图,蓝种的优先级半径更长,而黄种的优先级是0,所以会长得更接近绿种。但是,我们不希望它太靠近蓝色的树,所以只要黄色的草太靠近蓝色的树,它们就会被清除。

生存能力对植被的分布起着很大的作用。接下来,我们来看一些自然现象。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini左图中,流动的线上没有植被,右图中,山脉的盐碱面上几乎没有植被。为了模仿类似的东西,我们需要结合不同的地形数据。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini通过融合地形非生物数据,我们可以为植被的分布创造一种特殊的节奏。然后我们把两种地形结合起来,也可以把噪声融合到地形数据中。

然后我们还要加上之前工具生成的排除蒙版,比如淡水,道路,悬崖等。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini这样我们就得到了一个物种在这个地形中生存的分布图。

此外,我们的生物群落工具还包含不同大小物种的资源。在之前的《孤岛惊魂》生产系列中,这些物种的大小只是随机选取的,与地形和物种偏好的生活环境不符。现在,我们的工具可以根据不同的情况为这些物种选择不同的大小。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini比如在这个场景中,很多因素都会影响树的大小。比如小树苗会分布在森林的边缘,大树会分布在比较大的森林的中心。

此外,海拔也会影响树木的大小。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini虽然我们限制了材料的尺寸,但为了使植被多样化,我们设计了许多工具选项。例如,我们从50米的树开始,然后我们可以添加40米、30米等,并确保不同大小的树分布在适合它们的地形上。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini但是,这样也会遇到一个问题,就是不同大小的树会形成阶梯状分布。为了解决这个问题,我们允许每种尺寸的树缩小或增大,以填充不同尺寸之间的间隙。

如果不想搞乱多样性,也可以用随机分布。

另外,同样的树,不同大小的树不一定一样,所以我们的工具也给出了多样化的选择。例如,在这种情况下,每棵树都有自己的多样性。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini我们再来看另一个现象,就是林冠的生态演替。如前所述,小树往往位于森林的边缘,但有时也有一些分布在森林的中间。当你走进森林,你会发现一些小树也开始生长,并且已经达到了一定的高度。

生存能力会影响树的选择。但是,由于我们使用的地形不同,最终带来的多样性并不总是一帆风顺,这有时会使最高的树分布在森林的边缘。

为此我们增加了年龄参数,通过年龄的变化可以看到会出现不同的效果。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini由于这一点,我们还可以使用斜坡来改变轮廓形状。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini我们需要控制的另一个重要因素是这些树的密度。如果采用同样的密度,小树之间的距离可能看起来很自然,但是对于大树来说,就会显得拥挤。而且我们为不同的树做的资源也会导致不同的性能开销。比如小树占用的GPU比大树低,所以需要控制不同类型树的密度。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini基本上我们的密度是由大小以斜坡方式控制的,但是年龄等方面的影响也会考虑进去。

另外,我们还可以通过坡度来调节植被密度。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini这是一个不错的游戏内案例。例如,背风坡的树木比迎风坡的少。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini还有一点要说的是,我们希望游戏中的色彩多样化。比如这里有很多草的颜色。为了节省资源创建的成本,我们添加了一个单独的颜色分布函数,例如,它可以通过生存能力或时间来控制。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini我们可以在游戏中看到效果。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini这些植被分布也需要有自己的轮换。默认情况下,它们根据地形坡度旋转。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini比如游戏中,河边的草总是落到水面上。那是因为水岸总有一个斜坡。

育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini另一种情况是树干弯曲。你可能在自然界见过这种现象。如果还没注意到,可以专门观察一下。遗憾的是,我们在游戏中没有做到这一点,我真的希望我们的系统可以允许这一点。

我们有

了其他一些比较酷的事情,比如这里的草丛会随风摇曳。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini我们这里根据wind vector map对草丛做了旋转,但还按照地形影响对风向进行了调整,所以只要有风吹来,这些草丛都会按照风的方向旋转。
我们的植被旋转可以基于斜坡角度进行水平旋转,这是通过百分比控制的。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini还有旋转抖动,我们对植被使用这些旋转的时候是随机的,除了岸边和固定地点的旋转是不便的,但大多数地方的植被旋转方式都是随机的。
说完了大部分控制植被生成的参数之后,然而biome取决于资源放置,因为有些植被的资源也会影响到地形资源,甚至会影响周围资源,比如两种不同的大树就影响了周边的物体分布。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini比如这个树皮皴裂的树干周围有一些枯枝分布,另外,这些树木产生的阴影也会影响其他物种的生长。
为了实现这样的效果,我们在系统中将一些资源数据传回到地形当中,主要用于4种不同的事情,包括地形畸变、地形纹理、地形数据输出和地形颜色。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini我们可以通过地形畸变举例,我们可以在这些分布位置生成一个mask,还能够与地形数据相结合,比如使用road mask获得与路相邻的信息。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini这里实际上我们把地形提高了1米,对应在游戏里就会出现地形畸变。
我觉得这是一个非常有趣的功能,因为大多数时候,在游戏里树木都是直接长在地上,我们不会填补它所处位置的更多信息,但在大自然中,树根往往会会比地面高一些,他们还可以防止水土流失。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini接下来近距离看看这些树根,我们非常希望它们与地形无缝融合,可以通过生成匹配的地形纹理来实现。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini再次对分布单位生成mask,我们设置想要对这个mask生成的纹理数量,然后从菜单选择air texture,我们的工具随后会选择哪个纹理应用到哪些地方。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini随后,地形id会被发送到编辑器,它就会按照需要与地形混合在一起。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini接下来,我们或许还想要给树木添加额外的东西,可以通过树木生成attributes的方式实现,不过,这时候mask会存储于地形上,我们可以设置自己想要的参数和范围。
然后我们来到下一个节点,森林岩石,重新使用生成的mask。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini然后就会触发这些资源之间的对应行为。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini回到黄松树案例,我们还可以加入年龄数据,这就可以让我们根据树木年龄增加新的元素,如果你是生活在这样的环境中,就可以发现有些自然现象也出现在了游戏里,而不只是被阴影挡住。
我们还可以在树木中间增加小树,以增加生态演替效果。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini做植被的时候,我们会不断迭代,增加更多的因素,直到实现这样完整的组合。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini《孤岛惊魂5》的一个地图是一平方公里,这样的一个地图当中有60多万个单位分布,都是通过biome工具程序化生成的。实际上,我们在游戏里增加了大概70张这样的地图,以组成一个栩栩如生的完整世界,所以生成的资源量很大。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini这是一张谷歌地球图片,比较有趣的现象是地形差异,可以看到干燥区域和湿润区域的绿色是不一样的。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini为了让游戏世界更真实,我们还做了地形纹理色调,并且将它与自然的纹理颜色混合,这实现了地形颜色的多样化,中性的草皮是灰绿色的,我们通过与地形颜色的混合来实现光暗效果下的颜色变化。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini放大世界一部分,我们可以看到地形颜色与植被混合的效果。
另外值得注意的是,以上提到的地形与植被颜色还可以用到草皮上,因为草丛着色器也可以选择地形颜色。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini最后,我们从Houdini将数据传送到编辑器里,包括entities point cloud、地形高度图、地形纹理id等等。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini
由于时间原因,这部分我决定跳过,不过,这里展示一些研发过程中的改变,因为事情并不总会按照计划进行。
总结
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini我直接跳到心得部分,首先要说的是,更大的权利需要更多的责任,程序化工具可以生成大量数据,这让我们可以很好的控制性能,但这也会影响整体玩法以及美术。比如他们想在《孤岛惊魂5》做非常浓密的森林,但在实际上它并不是那么有趣,因为树木、动物不可能在这样的森林里生活,因此做生物分布的时候我们必须专门做一套工具进行控制,在提升密度的同时确保不影响玩法。
其次,设计优雅的工具带来更多机会。比如我们的biome就给我们带来了大量机会。
另外,将事情做的简单一些。虽然这已经看起来很复杂,但大多数时候工具都是偏工程化的,一旦确定了整体观,就可以投入一些时间对其进行简化。
聆听用户的意见,有些时候,他们可能更喜欢控制UI,而不是处理过程,比如我们的淡水工具,你可以自动生成河流,也可以让美术师手动设计,但大多数时候可能都用不到手动功能。
保持灵活,因为最初的计划并不总是最好的。
还有,确保在控制与自动化之间有比较好的平衡,过于强调手动控制会增加成本,但太多的自动化会让事情失去控制。
育碧资深TA:《孤岛惊魂5》如何程序化生成游戏世界,用好Houdini最后,感谢这些人对管线做出的贡献。

剪辑教程

索尼发布新一代8K旗舰数码电影摄像机CineAltaV 2

2022-6-4 22:14:00

剪辑教程

团队战术:动作敏捷多变,转圈战术擅长打破联防。独行侠正在崛起。

2022-6-4 22:16:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索