导语 游戏行业发展至今已有数十年,技术更迭也越来越迅速。本文作者Freddy将从自身的经历出发,谈谈小作坊模式到技术变革对游戏工业化发展的影响,并结构性地介绍了开放世界的制作流程中的环境艺术。(本文首发于腾讯游戏学院专家团月刊《EXP手册》)
作者:Freddy
腾讯游戏学院专家 技术美术
1、技术革新与职业规划
首先我结合自己所经历的这段短暂的游戏发展历程, 结合PCG技术,来简述一下从小作坊模式到技术变革对游戏工业化发展的影响。从行业技术的发展来看,我国的游戏发展经历了从技术混沌时期,进入到了技术专业时期。
虽然这个发展阶段过滤掉了很多使用老旧技术的工种和从业者。游戏开发者也从初期的多种学科的大专本科学历,提高到了专业学科的研究生博士学历,这也是发展的必经之路,提高可以沉淀的长期竞争力是根本。
但无论是以前传统的低模+手绘贴图技术,还是投机取巧的HACK技术,或者现在的学术派硬刚光线追踪等物理算法以及PCG技术。最终还是以艺术家对于画面有完全的控制力,可以完美表达游戏气质的优质画面为核心目标,这将是游戏画面技术发展终极阶段。
出发点:
和许多同龄小伙伴一样,我的童年是在街机厅和电脑房中度过的,世嘉土星游戏机花费了我大量的零花钱。
并且痴迷于研究表哥看完的破旧“电脑报”中的游戏攻略。
和许多小孩觉得泡面真好吃,长大以后赚钱了要天天吃泡面一样,当时我的理想就是天天打游戏。
从做游戏宣传片的外包开始,到开发主机游戏,端游,手游。随着工作上的技术积累,我对游戏行业发展的思考维度也不断的发生变化。
选择行业与入门定位:
初入游戏行业的时候,端游时代的火爆还没有结束,微端游戏逐渐流行,页游时代马上来临。没有人想到移动终端的硬件更新和生态发展这么快,手机游戏会成为碾压其他平台的大众平台,塞班会逐渐消逝,iOS和安卓成为市场主力军。
当时由于PC终端硬件机能问题(现在的手机已经比当时的PC机好多了),大部分国内游戏公司使用的端游开发模式都是:场景地形使用粗糙的自研游戏引擎的地形编辑器制作。角色为低模+手绘贴图技术,特效大部分都是使用简陋的粒子编辑器。图形渲染程序员凤毛麟角,基本上除了几种简陋的光照模型和带有流光的Blend模式外加个Fresnel就没什么特殊效果了。当时觉得笼罩在韩国游戏技术的阴影里,他们制作的游戏品质真好,本世代技术用到特别好,特别羡慕。
然后国内游戏开始进化,可以加入一些简单的ShadingModel并且支持了法线贴图,把画面带有法线(有限的机能下增加细节)和Glow效果(实际上根本原因是可以使嘈杂的画面变统一,并且能够减轻模型锯齿的观感)的游戏作为噱头叫做次世代游戏。特效万物Bloom,各种特效叠加起来的画面在Gamma空间计算下亮到爆炸。实际上我们当时是属于老技术还没有用好,新技术落地抢不上槽的一代。
这时国内一些大型端游公司终于对这方面有了一定的认知,开始深入发力对游戏引擎和技术进行研究了,一些正统一些的端游大作终于也开始着手开发。渲染技术方面开始加入了丰富的渲染模型和布料等物理系统为这些公司提供了一定的技术壁垒。
当时作为一个新手,看到许多非常厉害的前辈和同事具备了非常熟练的使用各种游戏引擎(Orge/BigWorld魔改的引擎或其他自研引擎, UE3/UDK刚开始用,还熟悉了一些比较小众的引擎)地形编辑器,特效编辑器,优化模型和手绘贴图的能力。还经常互相交流一些Trick手法使手绘贴图的表现效果更好,下图就是具有虚拟立体感的手绘贴图。那时真的是硬钢的美术效果,绘画技术决定了游戏质量。那时我在FengZhu的PossibilitySpace工作室充分领教到了美术大师的“手绘贴图”的魅力。
现在回想起来,这些技术栈的积累很大程度上已经被淘汰掉了。我自己和这些同事当时做梦也想不到软硬件的发展速度会这么快,这些熟练的技术经验有很大一部分已经完全没有用了,可以说是浪费了很多的时间。还好我通过轮岗实验,发现对特效方面比较感兴趣,这一工种接触的东西比较全面,并且可以深入了解游戏引擎自己制作独立游戏,稍作判断我就开始往这个方面发展。
未来判断的重要性:
2010年左右,用UDK进行游戏开发流行了起来,我有幸接触了节点式的Material编辑模式实验了很多有趣的效果。并且在UDK官方教程的模块中发现了TechnicalArtist工种,并对自己定位发力研究程序方面的内容,做一个多面手很重要。
当时Houdini在国内影视圈开始火了,就看了一下Houdini方面的内容。实际上现在在游戏行业流行的Houdini已经发售了快二十年了,早就在影视行业流行了。由于之前实习期间做动画影视后期的时候用过Combustion和D-Fusion,觉得节点操作应该没什么难度,哪知由于代码知识一窍不通,入门就被劝退了。由于同时在学UDK的节点编辑器,从而转去学了同样是连连看的NUKE。
现在由于搞自动化生成又捡了起来Houdini,但是容易了许多,可以直接跳过许多教程直接看官方帮助学习。真实的学习过程往往就是这样,时机不够成熟的时候,跳过了能力范围直接去研究,并且无法学以致用的话,效果甚微。
所以对于未来的判断再次显得非常重要,可以先把有困难的问题作为后续目标进行搁置,等前置条件完备后再做这个就非常简单。
然后手游爆发时代到来,我就去潜心搞Unity了,做了几个爆款。由于没有技术栈积累的概念,工作内容积累下的大部分都是工程向的经验...
大势所趋:
短暂的微端和页游时期火了一波后,手游时代到来,似乎随便做一个看起来不差的游戏都能获得一定的成功。以Cocos2D和Unity引擎开发的游戏层出不穷,各大投资方疯狂涌入智能手机产业加速行业的发展。
这时国内游戏行业遇到了一个非常绝佳的机会,由于硬件机能问题,全世界的开发者基本都处于同样的水平线上,使得我们国内的游戏开发者有时间从最基础的画面效果一步一步进行扎实的研究,并且还能赚到大钱。国外的厂商除了游戏设计方面,占不了什么先发优势的便宜,发挥最好的也就做成GAMELOFT那样的效果,远远无法发挥在主机和单机游戏领域那么强的技术。
引申来说,这一段时间技术带来的国内游戏画面进步又有一些弊端,就是技术和画面在不断发展的状态中的提升是肯定的,并且一些项目在这段风口时间下确实成功了。这导致许多团队不重视游戏设计,只注重画面和IP,这方面确实是可以靠钱堆出来的,并且可靠性高。这方面内容有机会再开一篇单聊。小团队由于没有资本加持,就要靠游戏设计的创新来在市场中寻求突破,Supercell这种小团队游击的方式是这种模式成功的典范。
智能手机导致了互联网的又一次爆发,网络上关于游戏引擎和移动APP开发的教程也越来越多。通过盗版软件,搜索引擎和论坛的生态优势,大家相互学习的速度越来越快,甚至到近年来我国开始在手游方面领先于国外手游公司。
我也是这段时期基本断断续续从UE3转型到了Unity3D,并且伴随了Unity引擎的整个发展流程学习到了很多美术技术和程序方面的经验。现在由于对游戏画面和元素复杂度的要求越来越高,一方面要掌握Unity(Unity依然很主要)技术来维护日常工作,另外又开始转回到UE4引擎和Houdini方面的学习,还要对未来的行业发展做出自己的判断。
技术选择的重要性:
随着时间的变化,一种技术的积累会随着软硬件技术的更新和行业的发展被一定程度作废掉,没有人可以保证目前研究的东西会一直有用,你做几十年泥瓦匠的经验不如3D打印来的快。
我自己也在工作中掌握了许多短时间有用但长远看来会被淘汰掉的技术,但是由于要维护日常工作项目的开发进度你不得不这么做,甚至为了维持上线项目稳定性会很长时间不会升级游戏引擎版本。许多软硬件技术的操作积累(软件熟练度与调参甚至编程语言)的重要性会逐渐变弱,直至消失。整体流程性设计方面非常重要,提高对技术的认知比直接研究技术更有性价比。
熟练工的工作未来必然会被自动化工具替代掉,最终返璞归真到内容的开发上。这时美术专注于设计而不是操作熟练度,策划专注于游戏设计和世界观而不是配表配蓝图,程序专注于架构设计而不是工程开发。例如Substance系列或Zbrush等软件的更新,以前由于技法问题非美术问题的认知差异,导致别人可以做出来你却不知道怎么做的美术效果,将不复存在,比拼的是纯美术功底。
职场对于新人的准入门槛会大大降低,因为原来的积累需求向和工程向内容没有用了,老从业者没有了先发优势,和新人逐渐处于同一个水平线上。这时你的优势只有概念与架构上的积累和行业前瞻力,这些的重要性大于基础操作能力。
目前许多人重复造的零碎轮子,逐渐会快速被大型引擎厂商整合为一体,最终达到调节参数即可的效果(有时某人开发的轮子还没有做好,官方引擎更新一个版本就自带这个Feature了。所以提前看引擎官方的规划也挺主要,除非你的效率和开发稳定性极高)。
这些Feature的使用门槛性逐渐降低,导致如何通过你掌握的知识用好轮子成了核心内容。未来的游戏引擎将发展为一个具有一定定制化功能的,操作非常简单方便的一个游戏编辑器,乃至任何大部分游戏玩家都可以进行UGC内容创作。
不断学习,磨练自身: 总之随着游戏开发规模越来越大型,开发模式走向工业化的路是必然趋势,所以可以对这方面内容不断的学习和思考。 支撑游戏工业化发展的一个重要组成部分就是我们本篇的下一个主角 - 过程化内容生成技术(PCG),我在摸索这一部分内容的时候觉得逐渐掌握了一些规律,并不断的改进和纠错学习方法。我断断续续开发的游戏技能自动化生成工具,也算是其中的一个方向吧。
2、PCG技术对游戏工业发展的影响
Procedural Content Generation 程序化内容生成 过程化内容生成,是需要先输入特征参数和基本材料,然后通过一系列的定制化(或具有一定随机性的)算法,来大批量的实时或离线的生成内容的一种方法。
WIKI:https://zh.wikipedia.org/wiki/%E7%A8%8B%E5%BA%8F%E5%8C%96%E7%94%9F%E6%88%90
百度百科:https://baike.baidu.com/item/%E8%BF%87%E7%A8%8B%E7%94%9F%E6%88%90/4661028?fr=aladdin
随着国内游戏厂商越做越大,工业化趋势越来越明显,最近PCG的使用在国内游戏行业逐渐流行起来了,周围的好友几年前就已经开始布局和推动研究这方面的内容。
但是当大家的认知程度还没有提上来的时候,或者说是契机不存在的时候,实际上技术是很难去推动的。现在由于国内各个游戏厂商陆续开始做开放世界游戏了,所以这方面技术得以落地。 从福特公司开始搞人工生产线开始,企业管理者发现这种流水线模式可以大大加快生产速度,并且由于不同工种工作耦合性低,所以出错率相当低,这时还不涉及到全自动流程。它另外一个对于企业的优势是这种工人工种的单一化使得可替换性升高,降低人工价值,进一步降低成本。分工越细成本越低,自动化越高成本越低。
随着自动化机械的不断发展,逐渐从人工流水线演变为机械化的全自动生产线。我在公司内部分享的时候有一个例子就是从简单的糖果生产线到现在战斗机的生产线再到半导体的生产线的对比,一个好的工业化流程可以大批量源源不断的制作出非常精密复杂的东西。
直到整个流水线只需要输入一些物质不需要或很少需要人为干涉的时候,就演变为了程序化生成。
在游戏生产中,我把PCG技术的优点从三个方面来看:
第一点,是对于游戏工业(这里指大型游戏)发展来说,是其工业流程管线的重要组成部分,可以大大提高游戏资产生产速度,并降低成本,且出错率低。这对于大型游戏项目外包的控制力的优化是非常重要的。
第二点,就是PCG产生资源的数量级巨大,可以在玩法上进行大量创新,不断的随机自动内容生成,可以激发游戏设计师的想象力。
第三点,可以在有限的硬盘空间内实时动态生成无限的新内容省去硬盘空间占用,并且可以让玩家反复游玩新的自动生成关卡。也可以离线计算可以优化游戏性能,让玩家有广阔的空间进行探索。
国外游戏大厂由于积累的早,很多年前就实现了工业化游戏制作流程,自己不断研究核心技术(一部分是游戏技术一部分是游戏深度),然后赋能给发展中国家进行外包制作。这种开发模式一是节约大流量成本,二是开发效率非常高,三是内容产出稳定。 这就直接导致了老外AAA工作室有时间去花时间研究创新和前沿的东西,而发展中国家只能使用别人剩下的东西。更直接的一点就是他们除了关键Milestone或Deadline临近节点适当加加班,基本告别996了,这是一种健康的迭代状态,有时间去体验生活,并且艺术来源于生活,所以游戏会越做越好,越有深度。
在游戏PCG的生产规模上并不是只有大型开放世界游戏需要PCG技术。
我分了以下的几种维度: 规模上从宏观到微观,只要有规律就可生成模拟:
PCG生成宇宙 -> PCG生成多样地区的大世界 -> PCG单一地区生成 -> PCG局部地区生成 -> PCG微观生成
这里的所有维度都包含着以下几种资源:
PCG任务生成:自动生成任务,自动生成NPC对话,自动生成游戏任务,自动生成叙事剧情。
PCG环境生成:自动生成地形,地牢,洞穴,天空,宇宙。
PCG模型生成:自动生成动植物,自动生成建筑,自动生成物体(各种岩石,各种物品),自动生成景观(云体,水体,极光)。
PCG动画生成:使用MotionMaching可以差值组合出数万倍的动画效果,机器学习甚至可以自动生成动画不需要人为操作。
PCG特效生成:使用一定的规律模板来自动生成各种特效,包括各种环境变化,魔法,弹道轨迹,刀光,技能 和 屏幕后处理氛围特效。
由于我们人类目前使用的终端硬件技能所限,所以游戏世界的复杂程度无法各方面都兼顾到,所以就需要进行权衡。
游戏《无人深空》在一定程度上使用PCG技术实现了小规模宇宙的制作,但是由于星球本身直径较小,并且地貌单一,所以也算不上大世界,但是是一个细化问题。
而游戏《EVE》实现了更大规模的宏观宇宙生成,但是局限于星体生成,星球内部是看不到的,所以复杂程度也大大降低。
目前的PCG开放大世界生成,实际上和现实的环境比来说还是非常小的规模。几十公里的地形范围实际上只能算是某一个局部环境区域。在游戏开发过程中由于开发精力有限,和硬件机能问题,往往都把大世界缩小到数公里的范围之内。所以游戏领域的大世界生成技术就是在数公里的范围内,在保持一定的多样性的同时,使用PCG技术配合人工局部调整来进行游戏世界的创作。包括《地平线:黎明时分》《荒野大镖客》《FarCry》《GTA》等这些出色的游戏,制作他们的工作室在研发时也是一个权衡,在次世代主机的性能固定的情况下,他们选择了相对范围比较适中的地貌的PCG区域生成,几十公里的规模算不上大世界,但是玩家体验方面有了足够多的可玩性。
从微观上来看,如果视角放的足够小,类似于蚁人,一平米的地面也可以容纳大量的资源,地衣都会变成茂密的森林,并且细节丰富程度会指数级别增长。
所以我认为所谓的大世界自动生成需要游戏设计师对于自己的游戏想要表现的东西要有一个判断,你是想表现类似《EVE》那种宏观宇宙战场,还是类似《皮克敏》那种微观区域。PCG它的最重要的核心优势不是地形有多大,而是承载这个地形中的内容数量和丰富程度的多少,并且这部分内容靠人力是很难制作出来的,并且这种随机性的效果看起来会非常自然。
下图是EVE中使用 Diffusion-limited Aggregation 算法程序化生成的宇宙:
如同我的上一篇文章,本文不会过多的去讲解工具的使用方法(不同的团队使用不同的技术栈,可以自行去技术论坛搜索,并且写起来细枝末节长篇大论),只讲概念或者理念。
因为就像前面讲的,工具随着时间迭代会足够的智能,操作傻瓜化,而你所掌握的概念实际上才是把任何工具用好的基础。不要妄图以操作的复杂程度作为门槛,而没有沉淀下来研究背后的知识(地理,生物,人类学,数学等等),每一门知识都够研究一辈子了。
目前自动化生成技术运用的比较广泛的就属于生成游戏大地形方面了,那么我们就从这里开始介绍。 大地形生成方法: 如果我们的游戏设计师设计好了一片区域,在大地形制作的时候,就需要先把生态的规划搞好,这需要收集大量的自然生态参考信息(经纬度,海拔,地貌等)。我们搜集的信息越多越好,然后对信息进行抽象化,输入到PCG工具生产管线中。这样,我们生产出来的游戏世界就会比较自然,并且在具有一定随机性的同时,保持有一定的合理性,确保看起来没有违和感。这一点非常重要,决定了后面所有的软件操作方法,会导致最终的效果好坏。
下图是我对于当时使用的开放世界PCG工具管线制作的大地形开发做的一个流程图(属于比较流行的Houdini管线),这些所有步骤都会影响大世界场景的最终效果和合理性。
目前在游戏公司的开发中,虽然不是大世界,但是我们大都把超过几十公里带有多种地貌的游戏世界规模统称为大世界。在这个流程中实际上我认为是越上层是越关键的。当时由于一些工具和二次迭代功能比较简陋,所以制作起来还是比较麻烦的。但是这些后面的所有步骤虽然看起来很复杂,但是都属于软件操作,随着引擎程序员对各种工具特性的不断完善和优化会越来越简单。
我们要对整个流程进行重视,而不是把认知停留在自动化的软件制作阶段。我经常吃饭时和朋友们提起:我们有多久没有面对一株美丽的花朵而驻足停留?如果你连真实的花或者植物或者风景都没有深入观察过,只看参考图又如何创作出有说服力的作品呢?这一点老外做的非常好,在游戏开发过程中会经常带领游戏设计师,TA或原画去实景采风,这是采集信息的关键部分。
还有就是,不要把风景的好坏完全的依赖PCG生成技术,还是要有人为的干预和景观设计。在现实世界中,地球的表面环境虽然是在历史的随机状态下逐步生成的,但是5A级风景区还是屈指可数。在游戏场景设计中,我们要保证的是场景的美观性,这就需要大量的环境景观设计,游戏中需要一些有功能性或故事性的奇景更是如此,直接完全靠随机生成的效果是不一定好看的。为了让人为设计的环境控制起来比较方便,所以PCG制作环节中的局部环境的动态更新非常重要。当然,PCG随机生成的物体的随机效果的优点就是看起来比手动摆放的假随机看起来要自然和生动许多。
创建大世界游戏首先要对游戏的世界观和游戏画面风格进行一个基本确定的定义,这个定义会影响后续所有的制作过程。游戏制作人对于游戏世界的定性,然后是游戏策划对这个上层的概念进行细分设计,把世界划分为各个功能区域,然后把不同区域的生态和人文规则交给概念原画做效果图和气氛图。
然后我们通过对游戏世界进行地理和生态规划,然后通过这些规划对世界进行不同地貌的区域划分。
这里的地理和生态规划要具有一定的科学性和逻辑性,大部分设计要有科学支撑。写实类环境的规划要有逻辑性,会让人看起来自然一些,否则会看起来非常怪。
特殊的不符合常识的地理和生态部分,要有完整世界观对其进行支撑。
地形生成软件选择使用WM的原因是WorldMachine出现时间较长,技术栈稳定,并且可以更改更加底层的节点算法。缺点是操作会略复杂一些,并且预览和操作非常麻烦。新兴的地形软件WorldCreator和Gaea由于操作更加简单,预览效果快,逐步也被大量使用。这种软件选择看个人倾向,但是同一个团队要做到统一。
这里我先通过线性流程的方式,尽量完整的抛去具体操作来讲解PCG大地形开发流程。一些理念也是参考了《FarCry》和其他的一些游戏。
以下内容涉及到一些自然景观大地形PCG制作的具体操作流程,比较枯燥,不感兴趣的读者可以跳过。
暂无关于此日志的评论。