《无人深空》艺术总监:4人美术团队,如何与程序生成艺术共处?

【GameLook专稿,未经授权不得转载!】

GameLook报道/要问当今对游戏业冲击最大的技术为何,那么恐怕非AIGC莫属。在全球各家巨头、无数个技术团队的迭代下,通过文字指令生成2D图片乃至于3D模型的技术正在飞速进步。尽管如今的AIGC技术尚未达到大规模商用开发的标准,但已经有不少游戏公司开始在实验将AI技术融入开发管线。

AI的蓬勃发展同时也引发了行业内的冲击和恐慌,有不少人在担忧AI是否会挑战人类画师的地位,乃至取而代之,也有人对AI生成内容的艺术性提出质疑。而这一系列的内心挣扎,《无人深空》的艺术总监Grant Duncan在八年前就已经经历过,在2015年的GDC,他登台分享了自己的心路历程。

《无人深空》是一款主打太空探索玩法的第一人称动作游戏,在发售之时就以可探索星球总数无限多而吸引了大量眼球。而实现这一功能的便是程序生成技术。凭借程序辅助生成,仅有四人的美术团队在短时间内生成数万亿亿个星球。

Grant Duncan和他的艺术家伙伴们最初都对这由程序员主导的开发技术和最终产出的结果质量持怀疑态度,但随着不断地探索与参与,Grant Duncan最终解决了精神内耗,寻找到了与程序生成艺术和谐共处的秘诀。而他认为,只要使用得当,程序生成就是帮助艺术家们减轻繁琐步骤,快速增加生产力的好帮手。

GameLook对这一GDC演讲进行了全文翻译:

Grant Duncan:能够站在这里让我很荣幸,毕竟这里坐着的有顽皮狗、Bioware的美术总监们,他们带领着巨大的团队。我们的团队只有四个人,但由于我们的游戏是程序自动生成的,也可以说我们的团队有好几百人——不幸的是,这些人都很蠢!(全场大笑)

《无人深空》是一款强调探索未知的科幻游戏,游戏依靠程序生成。我们的科幻风格并不是常见的太空冷战之类的风格,而是更多地受到了Chris Foss和John Harris这类70年代艺术家的影响。

在《无人深空》里,宇宙是无限的。你被数百万颗星球围绕着,每一个星球都有着他们自己的卫星系统、组成他们自己的太阳系。你可以在这些星球间进行无缝地旅行和穿梭。我们的地形引擎什么的也是依托这一目的而开发的,这让我们可以从早期就开始进行针对性的定制。

在《无人深空》刚刚发布的时候,很少有人知道“程序生成”究竟是个什么东西。说实话,其实我也不太清楚,即便我们的程序员已经给我解释过几百遍了。我只知道他们是由算法和数据生成的游戏关卡,而不是由艺术家们设计的。我们团队的程序员Dave一直想让我多了解程序生成这些东西,但我总是有些抗拒,因为作为一个艺术家,这类技术总是会让我感到惊吓。

Dave告诉我,程序生成就是个里面装满数学的大箱子。我的数学不好,所以这个解释没让我安心多少。简而言之,就是将我们游戏中的各种元素塞进这个箱子,比如树木、石头啊之类的,这个箱子就会按一定的规则生成一个种子值,这个值确保了每次输入这个值,我们都会输入一个同样的随机结果。

例如,《我的世界》这个游戏想必大家都玩过,在这里,玩家每次打开游戏的时候就会生成一个新种子,种子会根据一系列规则生成一个世界。当你在《我的世界》里穿行的时候,地面的地形并非储存在游戏中,而是根据种子生成的。

种子还可以用来生成城市和建筑。图中右下角是由Introversion Software开发的城市生成器,这里的城市不需要储存在任何地方,只要你点一点鼠标就可以自动填充上各种提前制作好的城市建筑模型。这个版本的规则并不复杂,而规则更多样,你能生成的建筑样式也就更多样,这是很自然的。

即便看了这么多案例,我还是对程序生成技术有一些不安。于是我向我的艺术家朋友们请教他们的看法。我经常收到的一个回复是:“程序生成美术就是**!”其中一些人表现的态度十分激进,虽然他们经常也并不能说清楚他们产生这些想法的原因为何。

其中一些说法不太公平,比如说“程序生成出来的艺术只有无聊的无尽写实地形。”此外,程序在剥夺艺术家对艺术的控制地位,这是我眼中艺术家们最担忧的方面。这种说法也并非没有道理,游戏的美术边界的确很大程度上是由程序员推动的,但程序员们时常更多地在乎美术背后的技术和系统,而相对不在乎整体的观感,因此他们更注重写实风格的地形,通过复制现实努力追求真实感。但在艺术家的眼中,这样的追求太无趣了。

还有一些人认为程序生成的东西都是纯随机的,而随机的东西无法导向优秀的结果。我认为这是对程序生成的一个误区,人们误以为艺术家就只是随机地点点划划,对整体的布局没有掌控。但不是这样的。我们艺术家总有点控制狂,总想着精确到像素,在PS里花上很久对一个没人会注意的细节精雕细琢。但程序生成艺术恰恰和这个理念背道而驰。

我举一个不恰当的例子,假如程序生成艺术真的只是把一堆元素放进去毫无章法的随机排列的话,那最后的产品就如同大乱炖一样,所有的东西都混成一团。

于是我们有了蓝图系统。这个系统控制除了地形以外的所有物品的生成规则,包括道具、生物等等。由艺术家们创作一个底版,然后我们的系统就会生成一系列变式,其中的原理是系统会进行自动的骨骼比例缩放、自动附加纹理和材质等等,这样你就可以得到很多外观不同的物体,而且你不必一个个去制作它们。

如图所示,图中最左边的是艺术家在Zbrush中创作的动物原型,然后根据特性不同增加了各种各样的配饰。右边则是比例缩放系统,系统会生成随机的形状,这样你就得到了完全不同的动物形象。

树的生成也是遵循的同一原理。同样的树干结构组合上不同的枝桠和树叶形状,再加上不同的材质,最后进行骨骼的扭曲。这只是一棵树的案例,而我们可以生成数十万个完全不重样的树。这都依托于我们的资源库,在资源库里有几百种材质、纹理和各类规则。

我们是一个很小的团队,因此我们必须时刻注意不要让工作量过载。因此在研究动物骨骼的时候,我们一直在绞尽脑汁让更多的动物共享一套骨骼来减少工作量。比如,羚羊、马、牛就是使用的同一套骨骼系统。我们研究的越多,就越能意识到很多动物的骨骼实际上非常雷同。只要你的骨骼系统做的更完善,你就可以在处理一些细微差别的同时利用一套骨骼生成几百种不同的动物。而且我们也不用制作几百个走路的动画循环了。

这是我们的鲨鱼模组,其他的水下生物,比如鲸鱼和海豚等等也是使用的经过各种处理的同一套模组。

还有飞机模组,这个模组实际上比生物要简单得多。根据种类不同,我们会设定一系列规则,比如有的有外置引擎、有的有驾驶舱、有的有机鼻,等等。这样,即便外形千差万别,玩家也能大致看出一台飞机所属的型号。

正是这样,我们在前期进行了很多很多的筹备,因为假如你的规则不完善,最终生成出的生物结果可能就会怪异无比。我们要尽力避免这种情况发生。

好了,在这个阶段,我们已经拥有一大碗大乱炖了。我们生成了各种各样的模型,几十万种不同的树,外形各异的生物。但此时我依然比较担心,因为把这些东西一股脑塞进游戏后,最终的结果依然是乱糟糟,毫无连贯性。于是,我们开始讨论世界建构的规则。

如果你们担任过环境艺术家,你们或许会知道一些世界构建的小细节,比如放置一棵树的同时,在脚下要同时放上一些草皮和小石子。只是这些经验你们已经司空见惯而感到无所谓。但在一个程序生成的游戏里,如果你不告诉系统这条规则,这种事情就不会发生。因此,在和程序员反复打交道之后,我们逐渐积累了一整套世界生成规则,尽可能让最终的成果接近手工搭建的世界。

举一些世界生成规则的例子。在生成一个星球的时候,我们会根据星球距离太阳和月亮的相对位置决定星球的气候特征,途中就是一个沼泽为主的星球。我们需要保证这个星球上的生物拥有连贯性,而不会在环境中显得突兀。我们对物体都进行了标记,而这个星球上的动物大多都是蜥蜴之类的两栖动物,拥有光滑蜡质的皮肤。植被也是灌木和沼泽类树木为主。我们将植物和动物的颜色进行适当的统一,形成一种自然迷彩色的感觉。如果我们希望一个生物变得显眼,那我们就会为它挑选一个对立的颜色。

规则的另一个重要部分是物品的摆放规则,这对程序生成来说十分重要。环境美术的一个原则就是物品的体积原则,自然中会形成一个个小的扎堆,位于中央的是一个大的物体,再用中等体积的物体环绕这一大型物体,最后再在外圈摆上一圈小物体。而程序生成系统并不是一开始就理解这些原则,他们会把物品零散地四处摆放。于是我们就以此建立了一套规则,让系统理解物体体积的重要性。

另一个挑战是让机器理解色彩理论。即便是人类自己来处理,我们也经常会打破色彩理论的规则。这款游戏的颜色并非随机生成的——我会自己制作调色板,再以此来决定一个生态系统内的生物的皮肤、岩石、植被的颜色等等。此外,我还会定义一个可以使用的明度范围,这样颜色就不会显得过分僵硬。

如图所示,一个生物会有一个基础底色,而在生物的边缘,我们会选用较淡的底色。生物身上的其他部位的颜色则多用互补色来填充,这样就不显得突兀。

植被也是一样,在放置植被的时候,系统会根据地形的颜色来调整植被的颜色。

想要追踪各种各样的生成情况并不是什么易事,毕竟我们有好几亿亿个星球呢。想要挨个去检查根本就不可能。于是我们在游戏中设置了很多个小无人机。这些无人机会自动飞往星球上方,并录制动态GIF图,我就可以利用这些GIF图快速观察生成情况如何,再利用种子号码前往有问题的行星去调查一番,思考是否需要调整颜色搭配规则等等。

在我眼中,连贯性是十分重要的,它能让一个世界中的万物都自然地融入进这个世界。我认为任天堂在这个方面做得很好,他们并没有讨论他们所用的技术如何,但他们游戏中的每一个元素都仿佛真正来自那个世界里一般。

而在程序生成的世界里,想要达到连贯性并不容易。我们利用了大量的标签系统来管理元素的搭配。比如,一个怪物如果想要表现得凶狠,那我们就在规则中把他标记为“凶狠”的怪物,为它加上尖刺和尖牙。想生成一个危险丛生的星球,就再利用标签多多生成这类怪物。

下图的这些元素,其中很多都被我们打上了“发光的”“梦幻的”标签。这么做就是为了保证世界的各个部分可以连贯地融为一体。

又例如,我们会定义在海平面以上多少多少米的范围内,有哪些树木更容易生长,灌木更倾向于向哪个方向生长,等等。这些规则是适用于全体星球的,这就意味着我要慎之又慎,否则一个失误就会让几百万个星球除了树什么都不剩了。

如今,尽管我们的程序生成工具已经十分完善了,但我们依然会觉得产出十分缓慢。我们还是要打开Zbrush去自己绘制各种各样的东西。而据我所知,现在有越来越多的工具在帮助我们进行程序生成,而我们所需要实际投入的工作量也在逐渐变小。这是我认为从事美术行业的一个让我感到激动的地方。

我们内心里期望有更多大型工作室能参与程序生成系统的制作和使用,毕竟对于我们小团队来说,开发这些工具的工作量还是很有限的。你们不必完全使用程序生成来搞定一切,你们可以尝试混合型系统一类的解决方案。我们的系统依然和模块化的角色生成器有些类似,而我们很期待看到其他工作室推出的解决方案。

数字艺术是很繁琐的,有时候我们会被一大堆细节扯住后腿。但有了程序生成技术,我们可以跳过很多无趣的部分,直接让系统帮助我们生成大量的多样性模型,再进入Zbrush去进行微调就容易得多。这让美术变得更有乐趣。

如若转载,请注明出处:http://www.gamelook.com.cn/2022/12/504590

关注微信