游戏引擎是什么?

引擎是“软件框架”(software framework)。游戏引擎就是专门为游戏开发而设计的软件框架,提供游戏开发所需要的基础功能。

软件框架(Software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。
框架的功能类似于基础设施,与具体的软件应用无关,但是提供并实现最为基础的软件架构和体系。软件开发者通常依据特定的框架实现更为复杂的商业运用和业务逻辑。这样的软件应用可以在支持同一种框架的软件系统中运行。
简而言之,框架就是制定一套规范或者规则(思想),大家(程序员)在该规范或者规则(思想)下工作。或者说使用别人搭好的舞台来做编剧和表演。

简单来说,利用游戏引擎制作游戏省去了“重复造轮子”的工作,能够极大方便游戏开发者。而且,由于游戏引擎通常拥有较大的使用者群体,所以相互交流很方便,相关的教学资源和素材资源也很丰富。

但是,使用游戏引擎势必会受到游戏引擎的一些限制,引擎不提供的功能就实现不了。好在现有的商业游戏引擎都具有一定的开放性,比如Unity3D就允许用户制作功能插件,极大扩展了游戏引擎的应用范围。

在商业游戏引擎流行之前,游戏大厂其实早就在使用其专用引擎来开发游戏了,这些专用引擎通常专门针对某种游戏类型甚至特定某个游戏的开发而设计制作,不具备广泛的应用性。当前的一些商业游戏引擎,其实就是这些专用引擎经过一些改造而来。
用通俗的话来讲,游戏引擎就像是现代工业生产中的工具和机器,提供了一些实用的功能给游戏制作者,否则,游戏制作者就需要自己“重新发明轮子”,要么徒手撸出一辆汽车,要么老老实实先撸出一堆起子扳手,再撸出机床,最后再开始造汽车。游戏引擎相当于给游戏制作者全套工具。只不过,有的引擎给的工具相对更傻瓜,有的引擎给的工具更基础化。越傻瓜的工具越好用,但可控性可调性越低,越基础的工具对使用者的要求越高,但自由性更大,也能产出更好的产品。所以,好的引擎一定在功能性和自由性上有很好的平衡。

当前比较流行的游戏引擎

当前比较流行的游戏引擎可以分成几个类型。

首先是“全科型”游戏引擎。这类引擎功能完善,可以用来制作各种类型、各种规模的游戏,从一两个人玩一玩的独立游戏,到千万级投资的AAA大作都能搞定。譬如Unity3D、UE(虚幻引擎)、Source(起源引擎)等等都属于”全科型“。

unity3d.jpg

unreal.png

source.png

frostbite.jpg

第二类是“专科型”游戏引擎。这类引擎通常针对某一类游戏的制作功能非常完善且强大,对对于其他类型的游戏制作就不太支持了。但“专科型”引擎在其擅长的领域还是很强大的。譬如Cocos(专门制作2D游戏)、RPG Maker(专门制作日式RPG游戏)都属于此列。

cocos2d.png

rpgmaker.png

第三类是“业余型”游戏引擎。这类引擎通常针对非游戏行业专业人员玩票使用,通常具备可视化编程功能以方便使用者。但这类引擎通常功能比较有限,有的甚至还比不上一些游戏提供的关卡设计器。这类引擎的优势是简单易学,用来做点小玩意或者用来入门也是不错的。
在这类游戏引擎中我要重点提一下Stencyl这款引擎,它和著名的幼儿编程软件Scratch一样都采用了“积木搭建式”可视化编程作为脚本编写手段。

Scratch在幼儿编程入门方面很出名,国内的“编程猫”之类都属于“类Scratch”产品。

同时,Stencyl比Scratch更进一步,将这种编程方式做到了近乎专业的程度,如果耐心足够的话,完全可以用Stencyl做出专业品质的2D游戏。

stencyl.png

最后一类当然就是“关卡编辑器”了,这类工具其实相当于该游戏开发所用引擎的超级简化版,缺点当然是不能脱离游戏本身来使用。著名的Dota 1就是使用魔兽3的关卡编辑器来开发的。

魔兽争霸3地图编辑器

如何选择并使用游戏引擎

从通用性上考虑,Unity3D是目前适用范围最广的引擎,学会Unity3D基本上可以应对所有类型的制作需求,其个人版免费的策略也很适合初学者上手。

在掌握Unity3D的基础上,针对具体项目,可以尝试选择针对性更强的游戏引擎。比如如果制作日式RPG就用RPG Maker,对游戏画面效果有很大追求就用虚幻引擎。

但要注意的是,不同引擎的使用方法差异还是蛮大的,尤其对于初学者来说,转换引擎的学习成本很高,因此不建议在初学阶段频繁转换引擎。较好的做法是在吃透一个引擎,或者通过一个引擎吃透游戏制作流程之后,再酌情尝试其他引擎。

目前网上有很多关于U3D和UE孰优孰劣的论战,大多是些初学者在那里打嘴仗,建议大家远离这类争论,安心学习。