提高游戏开发效率必知:程序自动生成场景应用

procedural generation,也就是程序化生成。广义来说,就是将原来人手制作的东西,交给程序算法去自动生成。

严格来说不能算新技术,但是近年却因为3A游戏的内容制作量爆炸性地提高,加上open world游戏的流行,而开始真正发扬光大。

其中又以Ubi最为精通,开放世界类游戏高产大王(也最常被人吐槽内容重复)

自动生成的范畴很多,涉及美术资源甚至音乐音效,但是以场景生成应用最为广泛,所以也集中讲讲这块。

(评论里有很多同学反馈,这里强调一下:通常大厂open world用的procedural generation,只是用来做辅助生成,不是100%从头到尾的自动化(下文也提到),毕竟这是不可能达到高品质的。而即使狭义上100%的自动生成,例如minecraft, no man's sky,也往往有一部分基础部分是人先摆好,然后再随机像零件一样拼装的)

+ 自动生成场景有多大意义?

传统的场景制作流程,都是人手工往场景内添加物件,对于2000年代的游戏来说,当时的地图不算大,细节也没今天那么丰富,所以人手制作尚且能够支撑。

但现在场景制作量多到什么程度呢?
 


枭雄还是12平方公里的伦敦地图,而起源是120公里的埃及(部分)。广州大学城跑一次内环也才4.5km。
 


像这样满街都是的民房,内部有:

-各种家具、物品
-墙上有破损
-有很多地方要标记能不能攀爬、攀爬点在哪
……

而这样的建筑,一个城镇有20~50座不等,而这样的城镇,在刺客信条起源里头光大城市就有5座,小的乡镇或者城寨更是到处分布。

你还不能都长一样(想想魔兽世界的人族兵营)

现在的开放世界游戏,物件数量往往都会百万级起步,并且为了尽可能呈现真实感,都要为每个地方尽可能增加细节(杂物、破损、表面凹凸)。这样如果全人手摆放,规模之大可想而知。

应用了自动生成的优势除了成本之外,就是可以大胆地提升很多东西的细节丰富度,比如far cry 5可以用比较低的成本就可以制作细节很高的山崖。
 


这意味着什么呢?

对于开放世界而言,最怕的就是玩家跑到一个地方发现没有内容。

以前这些山崖,只能作为一个远景看看,而现在即使爬上去你也会感到细节丰富,都是有相当逼真的碎石和植物,而不是光秃秃的贴图。(老滚爬山党路过)
 


另外,传统人工摆放,最蛋疼的,往往还不是产出第一版场景,而是策划要做修改的时候:

我的主角要帅气的从这个位置跑过去,把这个房子拆开,往两边挪一下,中间插个马路。

不够地方?想想办法嘛~

记得周围的花园还是要摆的漂漂亮亮的哦!

而自动生成意味着程序可以做到针对你新修改的内容,自动布置。

最典型的的就是在树丛里刷了道路,草丛会自动删除,同时周围的碎石还会好好看看的重新布置一下,以适应新的情况。

+ 主要难点

而这种制作模式也有很多难题,二手游戏买号平台当然怎么解决这些难题就是自动生成的核心技术壁垒了:

1. 如何避免重复感

场景之所以可以自动生成就是里头很多东西确实很好规则化。

但是规则化最大的敌人就是重复感,人为描述的规则往往考虑不够周全。

著名的No man's sky其实在自动化生成上已经做到很不错的水平,但上市依然一边倒的差评,就是因为重复。除了玩法缺乏之外,另一个就是自动生成并没有真正给玩家带来不重复的体验。去到一个新的地方,植物动物造型变一变,颜色变一变,其他都差不多。

即使技术屌如Ubi也没能完全摆脱自动生成产生的重复感,但是随着他们不断实践,我们能明显感受到品质在持续提升。

怎么解决重复感是一个很大的学问,往往不仅仅是算法的问题,还涉及美术设计,基础资源积累,甚至游戏玩法设计本身。这里只是简单说一下要点。

首先,基础资源的堆积也是很重要的环节:要搞清楚,自动生成场景不代表不需要人工资源的堆积,也就是你想你的自然生态场景看起来丰富,你还是要先有足够多种类的树木、石头。

No man's sky的动物就是将头、身、四肢、小配件等模型分拆再按规则重组,加上颜色、材质的随机来做出随机感。其实这个方法很不错,但是因为原始资源实在不够,最多几十个星球你就会觉得毫无新意。而随机可选的东西多了,重复感才会相对减弱。

然后,是自动生成选择的随机维度,要尽量容易产生有意义的差异化。比如生成动物,虽然靠部件换色能够轻松组合出几百个能看的组合,但是往往没有人会觉得里头有记忆点,从而感到烦厌。而相比之下,体型、夸张的形状,会更有记忆点。另外,用人的设计在里头做干扰,也是很重要的环节,比如加上生物的行为,行为与玩法又要关联。玩家遇到一些动物有变态的行为组合(能喷火又跑得快)

最后,就是算法产生的东西的随机性要符合自然的感觉,这个就要看具体的情景,例如树和灌木怎么混搭,怎么选择位置,怎么加杂色和大小变化,这些就不再赘述。

2. 针对不同的物件/情景设计合理算法

目前自动生成并没有非常通用的方案,基本上针对不同的物件都要设计不同的方案,大到产生山谷河流,小到种树放石头布电线。

同样布置石头,在山壁上和在平原上不同,山壁需要考虑斜率,考虑山壁的材质是不是石头,平原上则考虑随机分布的合理性和去模式化感觉。

模块化建筑合成,不同的建筑风格可能都会有不同的思路。

而针对不同的游戏,这些方案往往还要跟着游戏的一些细节做调整,比如有些游戏要能攀爬,可攀爬的部分就要针对做设计。

当然,随着这些方案的持续积累,这些技术最终都会变得越来越全面和通用,毕竟常规题材还是有限的。

3. 与人工布置的结合

目前还不可能做到从头到尾都让计算机生成场景(不然很多人要失业了),所以实际制作过程中还是需要大量的人工参与。

那么一方面,随机算法不能破坏人制作的东西,比如你布置了一条路,算法就不能再上面放一棵树,如果之前已经有一棵树,自动生成还要会删除它。而这个事实上比想象中还要复杂,例如AI的巡逻路线可能被自动摆的物件挡住、程序设计的规则可能没有考虑到特殊情况导致某个角落出现不正常,GDC2018上刺客信条就分享了测试团队怎么用自动化的思路来发现自动生成和人工内容相冲突的问题。

另一方面,人还要能引导算法去遵从设计师的思路。例如策划可能会想为自己的玩法设计地形(区域大小、关键路线、关键物件等),自动生成还要考虑如何配合人的想法,而不是胡乱生成一堆随机但是完全不搭的东西

这里说两种常见思路:

3.1 人工布点、曲线、面,然后算法大规模生成

简单说就是,美术和策划布置比较少的点或者线作为引导标记,来引导自动生成算法应该在哪里布置相应的东西,剩下的事情就是交给算法去生成,并且保证生成的东西符合这些引导标记。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值