游戏迷和游戏党必看-游戏引擎那些事
近年来游戏产业形成井喷式发展,这样的结果就是游戏品质良莠不齐。剧情和玩法是一款游戏好玩与否的关键,而游戏引擎则决定了一款游戏是否具有良好的品质。今天小编就带大家深(浅)入(显)的了解下广为人知却根本不知道到底是什么的游戏引擎。
我们以市面上很火热的虚幻4(Unreal Engine 4)为例。
虚幻4是啥?
这就是虚幻4。是不是和想象中的不一样?
没有错,这玩意就是一款软件。而且人机亲和力一般,对于新手来说就很不友好了。
游戏引擎现状
进入游戏行业,不接触游戏引擎是不可能的。很多游戏相关的公司的游戏开发都要会用Unity3D、UE4、CE3、Cocos2d-x,或者会用其中之一。这些属于商业引擎,拿出来卖钱的,相对好用些。
除去商业引擎,还有非商业引擎,而且一抓一大把。比较出名的像EA的寒霜、暴雪的银河、KONAMI的FOX、育碧的ANVIL等。其中暴雪的银河大家会比较熟悉,《星际争霸2》的地图编辑器基本上就是个阉割版的银河引擎(话说《War3》的地图编辑器也算吧)。
其实国产自研游戏引擎成长也很迅速,比较成熟的游戏引擎有完美的Angelica、畅游的黑火、网易的Neox、白鹭、C2engine等。
早期的引擎
说了那么多吓唬外行的话,现在我们来看下世界上第一款电子游戏《Pong》。
图中的两条白杠是玩家自己控制的,我们把它叫做角色。
我们把那个弹来弹去的小白点叫做道具。
中间的虚线叫做场景。
上面的两个数字0是为了给玩家展示结果的,我们把这个东西叫做 UI。
如果白点和白杠接触时会发出声音,那我们就把这个声音叫做音效。
这时候我们看一下这时候引擎这个软件是个啥玩意:
可以做一个角色;可以做一个道具;可以做一个场景;可以做一个 UI;可以加音效;可以用计算机语言把这个逻辑串起来;有一个可以执行上面 6 个功能的界面。
能达到以上7点的软件就是最早的引擎了。虽然在实际执行上没有讲的这么简单,因为那时候的计算机语言还没有这么高级,不过理解这个过程是没有问题的。用图形表现出来就是:
可是!后来计算机牛逼了,一个画面上可以处理更多的像素了!我们看一下俄罗斯方块,通过他理解一下引擎。
我们都知道这东西只要凑够一行就能消掉,但它靠判定什么样的东西凑够一行呢?一个“被填充的格子”凑够一行就可以消掉。
每个方块占据一个区域,老外给这个区域取了一个名字叫做 Collision,国人翻译过来叫做碰撞体。
collision是和他对应的图片相关联的,所以他们把图片加 Collision 合在一起打了一个组,取了个名字叫做 Entity。
然后人们觉得这个概念相当好用,而且从理论上完全可以给每个 Entity 添加自己独特的程序和音效。这时候的游戏引擎就发展成大约这个样子:
随着万恶的资本主义社会对金钱的追求,他们一次又一次地引发科技革命,计算机越来越牛逼了。人们就想,如果图片能填充给 Collision,那动画可不可以呢?答案是必须可以啊!没有什么东西能阻止人类赚钱。
然后他们又想,不一定所有的 Entity 都必须加图像呀,有一些只要有程序就可以了,制作的时候在引擎里我们只要示意一下它存在,真正玩的时候玩家看不到,但是效果是实实在在有的,这样可以实现很多效果。为了区别于加上图片的 Entity,他们取了个名字叫做效果器或者发生器。实质上就是把喵叫了个咪,放在引擎里。
然而这个架构真的很厉害,它解放了很多制作人的想象力。而且从逻辑上讲,只要硬件和科技的升级,图片、声音、程序的质量,都可以升级 Entity 或者效果器的质量。也就是说这个架构是一个可以成长的架构。
3D技术
1992年3D Realms公司/Apogee公司就发布了一款只有2兆多的小游戏——《德军司令部》,这是最早的3D游戏。它在X轴和Y轴的基础上增加了一根Z轴,在由宽度和高度构成的平面上增加了一个向前向后的纵深空间,这根Z轴对那些看惯了2D游戏的玩家造成的巨大冲击可想而知。
后来由于Pixar做出《玩具总动员》大卖之后,人们才深刻意识到原来3D技术可以用到艺术领域!
当人们看到3D效果可以这么好看时,就有人想把这种技术应用的游戏上,因为即使是当时画面最顶尖的《魔兽争霸2》对比《玩具总动员》也是那么的粗糙。
但是用3D技术做游戏面临很多困难。要知道当时的电影渲染时间很长,经常一渲染就是几个月。但是游戏渲染是实时的,一个30帧的游戏,每一帧的画面必须在1/30秒内渲染出来,否则就会卡顿。目前市面上的游戏都是30帧以上。
Pixar在做3D电影时会先做很多模型,画好贴图,调整材质,然后在绑定骨骼,把每一帧的动作都一帧一帧地记录下来,然后给不同的角色配上表情器,再一帧一帧地控制每个角色的表情,最后调整灯光、摄像,渲染就出来了。
整个制作过程总共会给模型3个属性:像纸模一样的UV,表面具有反光效果的Specular,表现表面凹凸起伏细节的Bump技术。
但是不管哪个技术,在那个年代实时渲染都干不成。
干不成怎么办?没有什么能阻止人类赚钱。有一部分人就想出了这样一种制作模式。
1/30秒的实时渲染做不出来,那么把图片渲染好直接放到引擎里不就行了。然后他们就用这种办法做出了这样的游戏:
这种制作方式在现在有一种流行的叫法,叫做 3 渲 2。意思就是 3D 的模型,渲染成 2D 的图片。因为 2D 的图片相对要更省资源,所以在很多厂商刚起步没有很强的研发能力,他们选择制作模型的时候,画面的表现形式就会使用这种方式。
还有些人嫌3DMAX的材质球渲染起来很麻烦,就不用3DMAX的高端材质球,而用渲染起来更方面的低端材质球。
由于模型是 3D 的,所以collision也会变成 3D。游戏引擎可以自己生成 Collision ,但是大多数情况下人们还是喜欢自己去定制一个特别合适的 Collision。而材质球就会当做是一个Entity的属性,只不过这个属性超级复杂而已。这一套看起来也相当高大上没错吧,没错,这玩意确实相当高大上,看看EA在1995年发布的初代《极品飞车》的画面就知道了。
当时CS虽然贴图支持很少,但是这时的3D引擎已经可以表现一些特效了。《魔兽争霸3》的贴图依然不怎么样,但是特效绝对是那个年代最好的。包括后来的《魔兽世界》用的还是同样的老一套,只不过为Entity加了个粒子效果。
没过多久,游戏制作人又在细节表现方面有了突破,表现细节的贴图不再只有Bump贴图,他们发明了法线贴图,老外叫他Normal Map。Bump贴图是靠手画出来的,有模型表现不出来的细节,和Bump贴图的制作方式不同, Normal Map直接靠映射方式。
在3D软件里,用一个低面数模型包裹住一个高面数模型,然后设置一下,高面熟模型信息就会记录在低面数模型上。同时会烘焙出一张紫色贴图,这张图就叫做Normal Map了。
同时人们还发现,Specular这种东西只要不和光线追踪挂钩就很省资源,实际的表现也很出色。当这个技术被用在游戏引擎中并发布出来的时候,人们欣喜地称之为次世代。
这时的画面可以表现高面熟模型的细节,那么就需要制作高面熟模型。制作高面熟模型的软件叫做Zbrush,制作流程就变成了:
现世代
当年的次世代现在已经变成了上世代,而如今的次时代更加尖端。虽然大的制作流程没有变化,不过细节却变得天翻地覆。由于计算机的运算能力的提升,引擎同时也整合了更强大的粒子特效,实现了更逼真的光照系统,支持更大的贴图尺寸和分辨率,支持更多的模型面数,同时还通过例如全局光贴图(Ambient Occlusion Map),阴影贴图(Shadow Map) 等技术让画面变得更加逼真。
之前我们讲Specular贴图是不能表现光线追踪效果的,无耻的人类做了一个假的光线追踪系统——假环境反射贴图(Cube Map),因为是假的,所以镜子里照出来的东西也是事先加入进去的。
由于光影强大,环境模拟强大,所以贴图的制作越来越变得去光影化,很多时候完全就是填色游戏。而由于对更高精度贴图的支持以及更高模型面数的支持,高模雕刻的精细程度反而变成了重中之重。
同时,现在的音效也可以把交响乐很轻松地塞到游戏里。当这么多的功能全部整合到引擎里,就是我们现在看到的引擎模样了。