A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 20011|回复: 86

[杂谈]我对游戏引擎的一点了解

[复制链接]
该用户已被禁言

精华
0
帖子
115
威望
0 点
积分
145 点
种子
5 点
注册时间
2005-9-8
最后登录
2020-3-18
 楼主| 发表于 2010-11-25 22:29  ·  上海 | 显示全部楼层 |阅读模式
本帖最后由 依克西昂 于 2010-11-26 08:59 编辑

首先我要说明一点,我对于TV游戏机平台并没有偏见,实际上对于一个程序员来说,TV游戏机平台是一

个良好的开发环境。但是,有时候,太方便了,人就容易变得懒惰且不思进取。久而久之自然就会被别

人超越。
=======================================================================
虽然很多国内玩家对于TV游戏非常热爱,对于游戏的设计以及游戏乐趣的本质也很有研究。但是,绝大

多数玩家似乎对于游戏的软硬件技术实现却十分茫然。这一方面固然是因为,一个热爱游戏的人自然因

该把心思花在游戏本身而不是其运行的软硬件平台上。另一方面,也是由于我国的TV游戏玩家受到日本

厂商的影响比较大。而日本厂商出于宣传自己产品的目的,往往有意模糊技术概念。比如我小时候就一

直认为,游戏机的机能一定是8位>16位>33位,而实际上直到我上大学之前都对这个“位”到底意味着什

么一无所知。其实“位”作为一个计算机所特有的概念,并不怎么深奥,很容易就能向一个小学生解释

清楚。之所以会这样,多拜当年几大硬件厂商在各种杂志上铺天盖地的广告混淆了我的视听。而时至今

日,这种不好的影响似乎依然在延续,很多玩家在争论ps3和xbox360到底谁的机能强大的时候,往往还

是将其主机厂商的广告词拿来作论据。而实际上,这些论据中的大部分在对硬件稍有了解的人看来都是

不可理喻的。
所以,为了消除这种不好的影响,我决定写几篇关于游戏软硬件技术方面的文章,向大家介绍一些游戏

开发中常用到的技术实现。不过,由于我本人虽然是一名程序员,但是并没有参与过什么游戏项目,其

中一些观点难免有偏误,如有发现,还望各位不惜指正。
之前的一片文章中,我提到了引擎技术,这里就先谈谈引擎吧。
=============================================================
前一段时间有这么一则新闻曾经引起了大家的热议,我记得大致的内容是:街霸4的制作人员说,借助于

卡普空自行研发的引擎,街霸4的移植工作就是点开文件夹,选择“编译为3DS”,然后3DS版的街霸4就

移植完成。
这则新闻发出之后,许多玩家都表示这简直是胡扯,根本没有可能。但是,我认为,胡扯是肯定的,但

也绝不是“根本没有可能”。无疑,对于美工来说,他们至少要为3DS调整人物和背景模型,这个工作量

还是不小的。但是对于程序员来说,如果他们之前真的已经在引擎中添加了3DS的编译模块的话,那么除

了调节一下按键和菜单界面之外,他们的工作可能真的只是“编译为3DS”了。
是的!引擎就是这样一种神奇的工具。
那么引擎到底是什么?它为什么能够拥有如此多的功能?而且这些功能又都如此强大?
关于这个问题,我之前说过:“引擎是一种可以成倍地简化游戏开发工作的一系列工具软件”,但实际

上这只解释了引擎的作用。关于引擎是什么的其他描述,我觉得比较准确的说法是:“引擎就像是火箭

发射架,将游戏中所包含的能容‘发射出去’。”但这种说法只有一个已经了解了引擎的人才能真正理

解,对于一个普通的玩家来说,他很难想象出自己的卡带或是光盘里有着这么一个“发射架”。
其实,我对于引擎的了解也不是一步到位的,而是一个渐进的过程。其原因就在于,引擎本身就是一个

不断发展和进化的概念。虽然其核心意义没有改变,但随功能的不断增加和改进,引擎这个概念已经多

次由量变引发了质变。
我认为想要向别人介绍一种不断进化的事物,最好的办法不是给这个事物下一个准确的定义,而是将这

个事物从无到有直到现在的发展过程描述出来。所以,要了解引擎技术,还必须从头说起。
==========================================================================
早期的游戏开发中没有引擎的概念,我本人甚至认为,在“关卡”这个概念诞生之前,人们都没有想到

要去做引擎这个东西。然后,当关卡的概念出现并普及之后,开发人员们开始很自然地想到了这样一件

事情--每一个关卡中总有些事情是不变的。
想象一下,在《超级玛丽一代》中,每一关的地图,敌人和敌人出现的位置都是不同的,有的关卡是天

空,而有的关卡是城堡。但是每一关的规则却都是相同的,跳、顶和踩构成了游戏不变动的核心规则。

即使你不是一个程序员也很容易想到,用于描述游规则的代码是可以供所有关卡共用的。很显然,我们

没有必要给每一个关卡都提供一段相同的代码来描述相同的规则。
而这部分用于描述游戏核心规则的代码,就是游戏引擎的最初雏形。由此开始,开发游戏的程序员们开

始专心于编写描述游戏核心规则的代码。而图像和声音以及关卡地图等则交由其他专门的人员制作后按

规定的数据格式存储在游戏中。游戏运行时,描述游戏核心规则的代码会去读取这些文件,然后根据规

则展现出来。
由此可见,其实早期日本游戏开发者们绝对是制作过“引擎”的,而且从那时的游戏质量来看,日本人

的“引擎”可能还优于欧美。
但是,要注意的一点是,日本人在游戏机上开发游戏的传统在此时给他们埋下了一个隐患。由于同一品

牌的游戏机是一个硬件配置绝对统一平台,所以日本人此时所开发的“引擎”相对于欧美的同行们缺少

了一个功能,就是“屏蔽硬件层”。
“屏蔽硬件层”这个概念,其实说来也很简单。由于pc平台没有一个统一的硬件标准,在APPLE流行的年

代直到DOS操作系统的末期,硬件平台真是千差万别。如果你想要开发一个DOS平台下的游戏,那么第一

个问题就是:市面上至少有几十种互不兼容的声卡,你要如何让你的游戏支持所有这些声卡!在尝试了

无数方法之后,欧美的pc游戏程序员们终于痛下决心,彻底屏蔽硬件层!简单的说就是写一个专门的程

序,用于支持所有的声卡设备,并在该程序中预留一个接口,其他的游戏开发者如果想要自己的游戏能

够支持所有声卡,只要调用这个接口即可。这样一来,对于程序员来说,原来的那些五花八门的声卡就

变成了一个统一的接口,硬件层的那些复杂的处理过程就好像不存在了一样,它们被“屏蔽”了。
“屏蔽硬件层”在今天已近发展成为引擎技术的一个重要组成部分,甚至已经超越了“屏蔽硬件”的概

念,这一点之后会再介绍。
========================================================================================
之后,就是《DOOM》了,DOOM所使用的引擎在本质上并不比《超级玛丽》高级,也还是将逻辑规则和数

据分开的那一套做法。但是DOOM的引擎中有一个特别之处,它的图像处理模块异常强大(以当时的标准

来说)。事实上,由于描述该如何绘制游戏中炫目的3D场景的代码,远远超过了其他部分的代码。导致

这个结果的原因在于,3D图形不同于2D图形,绘制3D图形是一个非常复杂的过程,所以需要一套复杂却

又高效的代码来处理这一过程。
由此,引擎技术另一个特点显现了出来,那就是对于特别复杂的模块(如3D绘图),引擎会将其独立为

专门的模块进行处理。在DOOM之后,几乎所有的引擎都将主要的精力放在了对图形模块的改进上,以至

于当时业界干脆将“引擎”称为“图像引擎”。
在今天,游戏开发变得越来越复杂,即使是像联网这样的模块也已经复杂到必须专门独立为一个模块来

处理点的地步了。而且,优秀的引擎,其包含的模块还可以进行更换,比如一个引擎的图形模块可能来

自于某家公司,而人工智能模块可能又是另一家公司的产品。
=========================================================================================
到了QUAKE3的时候业界已经发生了很多的变化,ps已然显示出王者风范,但日本的开发商们不会想到他

们的游戏开发方式有什么缺陷。而在pc这边,微软做了一件大事终于完善了DX。DX作为一件产品,其意

义大于价值,它指明了一个引擎的核心意义。DX能做什么?它能够绘图,播放声音,接受键盘手柄鼠标

以及其他外设的输入,也能将信息反馈给这些设备。而且当你调用DX的这些功能的时候,你不必在意硬

件是怎么实现的,因为DX会帮你实现。
那么现在我要给出引擎的核心定义了,那就是:引擎是一个可以提供游戏中绘图,声音播放,输入输出

等最基本功能的程序,且用户在使用这些功能时只需要调用接口而不必关心具体的实现方式。
这就是引擎的核心作用。
DX能做到这一点是非常不易的,首先,想要屏蔽硬所有件层是一项非常浩大的工程,你不可能去主动支

持所有的显卡、声卡、显示器、鼠标、键盘、CPU,唯有利用微软的霸主地位让所有的硬件厂商向微软提

供统一的接口,然后再由DX调用这些接口来实现功能。
像HL和虚幻系列的引擎最早都是调用DX来实现最底层的功能的。虚幻引擎十分强大,它另外实现了一套

兼容性极强的底层代码。所以虚幻引擎能够通吃ps3和360。而HL离了DX就活不成,所以半条命干脆就360

独占了。很多跨平台游戏都是ps3悲剧,就是因为其最初的引擎是基于DX实现的。不过,这也怪sony没有

提供最底层实现。
于此同时,游戏引擎程序员被独立了出来,他们不再关心游戏的上层内容,而只关心如何能够使游戏运

行的平台高速处理绘图、声音播放等最基本的功能。而上层的游戏逻辑则交由其他的程序员编写(往往

是用脚本语言来并编写的)。
=======================================================================================
到今天,引擎技术已经发展的十分完善了,除了核心功能,各个外围的模块也已经十分强大。比如虚幻

引擎,就配备了强大的地图编辑器和角色模型编辑器,这些虽然都只是开发时才用到的编辑软件,但如

今也已经成为商业引擎必不可少的组建了。而且还提供了许多便捷的功能,比如前面提到的卡普空的引

擎。他可以将360的游戏编译为3DS的游戏,这其实是一种交叉编译技术。现在的引擎已经越来越像是一

套开发环境了。
事实上,虚幻引擎已经开放了免费的mini版本,如果各位希望对引擎有一个更直观的了解,可以去Epic

的官网下载该版本(使用是免费的,但你如果真的做出游戏来发行的话,是要分成的)。不过前提是,

你的电脑至少要完全支持DX9.0的所有功能!
========================================================================================
最后,引擎中有一个重要的模块:“脚本语言”。据考证,虚幻引擎最早引入了该技术。之前的引擎必

须将游戏中的逻辑写在代码中,而引入了脚本语言技术之后,逻辑也可以像图像和声音一样作为资源来

加载了。如此一来,本来是FPS游戏的引擎,加载了赛车游戏的逻辑之后,就变成了赛车游戏了。这项技

术极大的扩展了游戏引擎的通用性。
那么下次就来说说“脚本语言”吧。(该技术的原理很难用通俗的语言来解释,所以可能要等一段时间

才能写出来。)

评分

1

查看全部评分

该用户已被禁言

精华
0
帖子
992
威望
0 点
积分
841 点
种子
0 点
注册时间
2010-11-18
最后登录
2020-9-11
发表于 2010-11-25 22:50  ·  江苏 | 显示全部楼层
其实,我对超级玛丽玩法的兴趣大于超级玛丽的制作方法。
像我这样不思进取的人是要被时代淘汰的。悲乎。

精华
0
帖子
3556
威望
0 点
积分
3918 点
种子
24 点
注册时间
2007-12-20
最后登录
2024-4-12
发表于 2010-11-26 09:50  ·  浙江 | 显示全部楼层
虽然看不太懂,但还是学到了很多,真心感谢楼主

圣骑士

以喷制喷

精华
0
帖子
4279
威望
0 点
积分
4447 点
种子
5 点
注册时间
2008-3-27
最后登录
2014-8-13
发表于 2010-11-26 10:03  ·  湖北 | 显示全部楼层
由于基础太差不能完全理解,但LZ条理分明逻辑清晰,让我学到了不少,谢谢

精华
0
帖子
810
威望
0 点
积分
931 点
种子
5 点
注册时间
2009-9-2
最后登录
2020-5-18
发表于 2010-11-26 13:19  ·  广东 | 显示全部楼层
游戏引擎开发乃IT界屠龙之技,一个写引擎的人其实就是一个数学家,现在能真正写引擎出来的人亚洲其实没几个,游戏引擎公司也轻易不招收亚洲人,因为要求太高,没几个人能写出来。而现在市面上的众多游戏的引擎其实归根还是只有数量不多的几个,都是买了欧美的真正引擎公司的作品在他的基础上做二次开发,实际上就是根据自己的实际游戏来修改。底层的东西真正的游戏公司是没法做的,也做不出来,真真正正的引擎只有引擎公司才做得出来。但是二次开发是由引擎公司提供了接口,他们就可以相对简单的进行开发,基本就是按照自己游戏的想法和理念来创作,其实技术吧,不算有多高要求,就是看用不用心,能不能砸钱,敢不敢花时间,所以引不引擎的对大多数游戏公司都是“浮云”,他们声称换什么引擎的不过是增添删改而已罢了,基本没能力独立创作一个引擎,只是嚼头,用来吸引一下用户,当然,修改一下能对用户可能造成比较大的不同感受。

精华
0
帖子
810
威望
0 点
积分
931 点
种子
5 点
注册时间
2009-9-2
最后登录
2020-5-18
发表于 2010-11-26 13:22  ·  广东 | 显示全部楼层
还有LZ你写的这些东西,没写过软件的人是根本看不懂的,或者说不能完全理解,你说得太具体了
该用户已被禁言

精华
0
帖子
540
威望
0 点
积分
812 点
种子
5 点
注册时间
2004-7-7
最后登录
2014-12-21
发表于 2010-11-27 11:28  ·  英国 | 显示全部楼层
foxmagic88 发表于 2010-11-26 13:22
还有LZ你写的这些东西,没写过软件的人是根本看不懂的,或者说不能完全理解,你说得太具体了

我觉得很好懂……而且LZ写的不错。
多谢》《~

精华
0
帖子
1260
威望
0 点
积分
1498 点
种子
118 点
注册时间
2005-2-6
最后登录
2024-10-22
发表于 2010-11-27 11:40  ·  北京 | 显示全部楼层
最近我正在给公司做IPHONE的RPG引擎,说的通俗一点,引擎就是模板,有了模板办事效率自然要高很多,但是既然是按照模板办事,你就要遵循模板的规则,忍受模板的局限性。

再强大的引擎也有局限性,就算是虚幻3也不敢说他可以完成制作人所有的想象力,但是虚幻3足够强大,功能足够多,对于绝大部分游戏来说已经足够了,使用起来效率又高,于是便很多人使用了,这就是一个权衡的过程

精华
0
帖子
1864
威望
0 点
积分
26 点
种子
0 点
注册时间
2010-5-29
最后登录
2011-7-2
发表于 2010-11-27 12:41  ·  安徽 | 显示全部楼层
很多引擎都是靠不断的完善的

比如虚幻3,游戏本体并不怎么样,但是到了游戏上,从JRPG,MMORPG,ACT,FPS,TPS一路通吃。基本上就是开发者的实力

精华
0
帖子
2522
威望
0 点
积分
2567 点
种子
39 点
注册时间
2007-1-24
最后登录
2024-11-24
发表于 2010-11-27 13:03  ·  江苏 | 显示全部楼层
我发现我居然差不多都看懂了- =

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2024-11-25 03:12 , Processed in 0.204701 second(s), 23 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部