游戏源浅谈游戏引擎 游戏源浅谈游戏引擎2011-08-05 1552游戏源浅谈游戏引擎 自
Doom游戏时代以来我们已经走了很还。DOOM不只是一款伟大的游戏它同时也开
创了一种新的游戏编程模式游戏引擎。 这种模块化可仲绾和扩展的设计观念可以让
游戏玩家和程序设计者深入到游戏核心用新的模型场景和声音创造新的游戏或向已
有的游戏素材中添加新的东西。大量的新游戏根据已经存在的游戏引擎开发出来而
大多数都以ID公司的Quake引擎为基础这些游戏包括Counter StrikeTeam FortressTac
OpsStrike Force以及Quake Soccer。 Tac Ops和Strike Force都使用了Unreal Tourmnament
引擎。事实上游戏引擎已经成为游戏玩家之间交流的标准用语但是究竟引擎止于何
处而游戏又从哪里开始呢像素的泻染声音的播放怪物的思考以及游戏事件的触发游
戏中所有这一切的幕后又是什么呢 首先来看看一个游戏引擎和游戏本身之间的主
要区别。许多人们会混淆游戏引擎和整个游戏。这有点像把一个汽车发动机和整个
汽车混淆起来一样。你能够从汽车里面取出发动机建造荔外一个外壳再使用发动机
次。游戏也像那。游戏引擎被定义为所有的非游戏特有的技术。游戏部份是被称
为资产的所有内容模型动画声音人工智能和物理学和为了使游戏运行或者控制如何
运行而特别需要的程序代码比如说AI--人工智能。 对于曾经看过Quake游戏结构的
人来说游戏引擎就是Quake。exe而游戏部分则是QAGame。dll和CGame。 dl。 什么
是泻染器为什么它又这么重要呢好吧如果没有它你将什么也看不到。它让游戏场景
可视化让玩家/观众可以看见场景从而让玩家能够根据屏莫上所看到的东西作出适
当的决断。尽管我们下面的探讨可能让新手感到有些恐惧先别去理会它。浑染器做
些什么为什么它是必须的我们将会解释这些重要问题。当构造一个游戏引擎的时候
你通常想做的第一件事情就是建造泻染器。因为如果看不见任何东西-那么你又如何
知道你的程序代码在工作呢超过50的CPU处理时间花费在齐当器上面通常也是在这
个部分游戏开发者将会受到最苛刻的评判。如果我们在这个部分表现很差事情将会
变得非常糟糕我们的程序技术我们的游戏和我们的公司将在10天之内变成业界的笑
话。它也是我们最依赖于外部厂商和力量的地方在这里他们将处理最大限度的潜在
操作目标。如此说来建造一个浑染器确实不象听起来那么吸引人事实如此但如果没
有一个好的泻染器游戏或许永远不会踏身于排行榜前10名。如今在屏幕上生成像素
涉及到3D加速卡API三维空间数学对3D硬件如何工作的理解等等。对于主机游戏机
游戏来说也需要相同类型的知识但是至少对于主机你不必去尝试击中一个移动中的
目标。因为一台主机的硬件配置是固定的时间快照和PC个人计算机不同在一台主机
的生命期中它的硬件配置不会改变。在一般意义上演染器的工作就是要创造出游戏
的视觉闪光点实际上达到这个目标需要大量的技巧. 3D图形本质上是用最少的努力
创造出最大效果的一门艺术因为额外的3D处理在处理器时间和和内存带宽方面都
是极为晶贵的。它也是一种预算要弄清楚你想在什么地方花费处理器时间而你宁愿
在什么地方节省一些从而达到地好的整体效果。接下来我们将会介绍一些这方面的
工具以及怎样更好的用它们让游戏引擎工作。 3D物体对象被储存成3D世界中的
系列点被称为顶点彼此之间有相互关系所以计算机知道如何在世界中的这些点之间
画线或者是填充表面。一个立方体由8个点组成每个角一个点。立方体有6个表面分
别代表它的每一个面。 这就是3D对象储存的基础。 对于一些比较复杂的3D物体比如
说一个Quake的关卡将有数以千计有时数以十万计的顶点和数以千计的多边形表
面。本质上与上面的立方体例子类似它仅仅是由许许多多的小多边形组成的一些复
杂场景。模型和世界如何储存是浑染器的一部份功能而不属于应用程序/游戏部份。
游戏多辑不需要知道对象在内存中如何表示也不需要知道浑染器将怎样把他们显示
出来。游戏只是需要知道洪染器将使用正确的视野去表示对象并将在正确的动画帧
中把正确的模型显示出来。在一个好的引擎中谊染器应该是可以完全被一个新的这
轨器蔡换掉并且不需要去改动游戏的一行代码。许多跨平台引擎而且许多自行开发
的游戏机引擎就是这样的如Unreal引擎-举例来说这个游戏GameCube版本的泻染器
就可以被你任意的普换掉。 让我们再看看内部的表示方法-除了使用坐标系统还有
其他方法可以在计算机内存里表示空间的点。在数学上你可以使用一个方程式来描
述直线或曲线并得到多边形而几乎所有的3D显示卡都使用多边形来作为它们的最
终演染图元。一个图元就是你在任何显示卡上面所能使用的最低级的绘制洛染单位
几乎所有的硬件都是使用三个顶点的多边形三角形。新一代的nVidia和ATI显卡可以
多许你以数学方式浑染被称为高次表面但因为这不是所有图形卡的标准你还不能靠
它作为演染策略。 我现在有一个由几十万个顶点/多边形描述的世界。我以第一人
称视角位于我们这个3D世界的一边。 在视野中可以看见世界的一些多边形而另外一
些则不可见因为一些物体比如一面看得见的墙壁世挡住了它们。即使是最好的游戏
编码人员在目前的3D显卡上在一个视野中也不能处理300000个三角形且仍然维持
60fps一个主要目标。显卡不能处理它因此我们必须写一些代码在把它们交给显卡处
理之前除去那些看不见的多边形。这个过程被称为剔除。 有许多不同的剔除方法-
首先你必须理解市场销售宣称的多边形生成率和真实世界的多边形生成率。行销上
宣称的多边形生成率是图形显示卡理论上能够达到的多边形生成率。如果全部多边
形都在屏莫上相同的纹理相同的尺寸大小正在往显示卡上传送多边形的应用程序除
了传送多边形以外什么也不做这时显卡能处理多少多边形数量就是图形芯片厂商呈
现给你的数字。然而在真实的游戏情形中应用程序时常在后台做着许多其他的事情
-多边形的3D变换光照计算拷贝较多的纹理到显卡内存等等。不仅纹理要送到显示
卡而且还有每个多边形的细节。一些比较新的显卡允许你实际上在显卡内存本身里
面储存模型/世界几何细节但这可能是帅贵的将会耗光纹理正常可以使用的空间所
以你最好