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

2019-05-30
分享:

  随着现在AI发展,未来自动生成这块肯定会越来越强大,大厂和小厂在这块的壁垒差距会越加明显,但是玩家未来也能够更容易相守到更高品质,细节更丰富的,内容量更大的游戏。

  procedural generation,也就是程序化生成。广义来说,就是将原来人手制作的东西,交给程序算法去自动生成。严格来说不能算新技术,但是近年却因为3A游戏的内容制作量爆炸性地提高,加上open world游戏的流行,而开始真正发扬光大。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  相当于程序开发了一个很强的地图刷,这个刷可以根据美术策划的需求配置成几种分类:道路、树1、树2、杂物。

  然后你就只管往上刷,程序会自动帮你按照合理的规则(当然需要程序/TA帮忙定制)放置这些东西,例如保证路和斜坡上没有树,保证树与树之间密度合理,保证树下有合理的灌木草丛覆盖,等等。

  相比大规模生成,这种方案可控程度更高,美术策划很好控制细节,当然也意味着更高的人工参与量(刷漆工还有码农)。

  另外这个思路现在在UE4/unity里也能实现,并且市场还有几个实例方案(例如landscape auto material),虽然这些实现的性能比较捉急还没有达到地平线这种产品化的程度,但不失为一个很好的思路参考。

  随着现在AI发展,未来自动生成这块肯定会越来越强大,大厂和小厂在这块的壁垒差距会越加明显,但是玩家未来也能够更容易相守到更高品质,细节更丰富的,内容量更大的游戏。

      现金彩票,现金彩票娱乐,现金彩票注册


成都现金彩票网络科技股份有限公司 版权所有 粤ICP备16025335号-1

《互联网文化暂行规定》 文化部网络游戏举报与联系邮箱:duoyungou@oro8.com 四川省互联网不良与违法信息举报中心

增值电信业务经营许可证编号:辽B2-20150094

全国文化市场举报电话:12318
网站地图