最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

第一章:Unreal教程

IT圈 admin 39浏览 0评论

2024年9月1日发(作者:毕语儿)

第一章 Unreal技术简介

《Unreal》的历史

至今,Unreal Engine已有10年左右的历史了。它始终如一地向人们提供各种

各样独特的游戏制作体验。下面简单介绍Unreal Engine大事记,正是这些关

键事件引领我们到达今日的地位。

1998年6月

《Unreal》

图1.1——初代《Unreal》的诞生是3D游戏制作史上的里程碑。

1998年夏季《Unreal》发售伊始便即热卖。该游戏情节引人入胜、图像令人惊

叹、环境赏心悦目。与当时的其它3D游戏相比,其外景更是在当时的3D游戏

中卓尔不群。这款单机游戏极富诱人体验,同时也具备独特的多人元素:玩家可

以拥有协同作战的人工职能„bots‟,或是由电脑控制的敌对玩家。

随着《Unreal》的发展,Unreal Engine诞生了。该引擎采用了模块化设计,

于是,Epic Games及其它的授权公司可以容易地修改并自定义引擎的各个方

面,而不必重写一个新的引擎。该游戏引擎同时也为mod制作者(修改现有游

戏的人)使用UnrealScripts增强与修改他们的游戏体验铺平了道路。

1999年11月

Unreal竞技场

图1.2——《Unreal竞技场》最终被移植到不同的平台。

最初作为初代《Unreal》扩展包的《Unreal竞技场》大大扩展了多人游戏功能。

该游戏也被移植到了PlayStation 2和Sega Dreamcast平台。《Unreal竞

技场》将以往的单纯“死亡竞赛”模式转变成一系列颇具观赏性的竞技游戏模式。

《Unreal竞技场》由所拥有的难以置信的网络对战,以及一些最为先进bot AI

不断的被运用入此游戏当中,这些亮点使得玩家们叹为观止。该游戏还向下兼容

初代《Unreal》中的原始地图。

2001年3月——7月

Unreal开发者网络发布

Unreal开发者网络(Unreal Developer Network,通常称“UDN”)提供了一

个中心场所,供Unreal Engine的用户(从授权用户到mod制作者)获得与

引擎相关文档资料和诸多游戏创作方面的指南。时至今日,该网站仍是获得

Unreal Engine及其开发信息的最权威资源。Unreal开发者网络可通过

进入。

图1.3——UDN仍是取得Unreal技术信息的唯一来源。

2002年9月

《Unreal锦标赛》和《Unreal竞技场2003》

在《Unreal锦标赛》携《Unreal竞技场》的特有技术植入微软Xbox游戏平台

后,紧随而来的是PC平台上《Unreal竞技场2003》的发售。这两款游戏都很

注重多人模式,《Unreal锦标赛》还成为了第一批使用微软Xbox Live!宽带在

线系统的游戏。

《Unreal竞技场2003》引领了一个新时代,使得游戏开发和mod改造异常灵

活有力。Unreal竞技场2003具备强大的粒子系统、地形生成系统和Karma

物理引擎。它同时包含了制作游戏中过场片断和动画的集成系统——Matinee

系统。它同时整合了静态网格功能,实现了用显卡绘制多边形网格的多个实例。

这提供了一种方法使用相对较低的计算开销来绘制一个高细节度关卡,并能获得

较高的帧数。

图1.4——《Unreal竞技场2003》为《Unreal》系列技术锦上添花。

图1.5——《Unreal锦标赛》是严格为游戏机设计的游戏,且极具《Unreal

竞技场》风格。

2003年2月

《Unreal II》

《UnrealII:觉醒》的发布使得PC单机游戏的世界复苏了,而在过去的数年间,

PC游戏制作都严重倾向于多人玩家模式。《UnrealII》又回到了初代《Unreal》

故事线索,再次使玩家陷入对抗残忍的Skaarj势力的挑战中。该游戏也包括了

与NPC角色(非玩家控制角色)的大量互动,而这些角色则由电脑控制。自

《Unreal竞技场2003》以来应用的所有技术,将引擎推向了拥有豪华环境设

定的新水平上。该游戏还运用了Legend Entertainment公司的Golem 动画

系统。

图1.6——《UnrealII》回归至《Unreal》的技术根源——单人游戏模式。

2004年3月

《Unreal竞技场2004》

《Unreal竞技场》第三版的发售冲锋类游戏随之产生,并且代来了在线多人游

戏飞跃。这个游戏模式向玩家提供了一个庞大的战场,战场上充斥着可占据的控

制点、前哨、武器以及车辆系统,使得玩家们在一个庞大的范围内能够进行全方

位的战争。这种游戏类型在gameplay上还提供了一个有趣的变化:有些关卡

在外太空进行,并强迫玩家必须乘坐太空战斗机渗入一个空间站,并在着陆后徒

步夺取此空间站!

图1.7——《Unreal竞技场2004》引入了众多的战场和车辆系统。

2005年4月

《Unreal锦标赛2:Liandri Conflict》

《Unreal锦标赛》的第二代是Xbox游戏平台上的独占游戏,采用了Xbox独

有的Unreal Engine2.5特别版。该游戏提供了增强图形功能,其多人

gameplay不管在系统联机或Xbox Live!在线游戏系统的情况下,都是非常稳

定的。游戏中新加入了混战元素,这在其它的《Unreal竞技场》系列游戏中从

未出现。游戏加入了可选的第三人称视角模式,它给玩家带来一种崭新的

hardcore游戏动作体验。

图1.8——《Unreal锦标赛2》是原始Xbox系统独占的游戏。

2006年11月

《战争机器》

随着《战争机器》的发布,Unreal Engine3进入了针对游戏机平台开发游戏的

主要阶段。尽管《战争机器》不是第一个使用Unreal Engine3的游戏(第一

个应该是Roboblitz),但《战争机器》却是第一个展示出Unreal Engine3完

美实力的游戏。战争机器具有独特的第三人称视角风格,丰富多彩与极端细致的

环境,逼真得令人恐惧的敌人,以及前所未有、令人深思的战斗;这些特征使《战

争机器》迅速热卖,并成为史上最畅销的游戏产品之一。

该游戏通过使用法线帖图技术,使模型看起来由数百万个多边形组成,具有很强

的视觉深度。灯光和材质都表现得极其完美,营造了极端逼真的光影环境。该游

戏还采用了新的物理引擎—Aegis,整个系统由强大的新型Kismet可视化脚本

系统支撑。

图1.9——《战争机器》是Xbox 360上最期待的作品之一。

Unreal Engine综述

本节将向您简单(用通俗易懂的语言)介绍Unreal Engine的方方面面。到底

什么是Unreal Engine?简而言之,它就是把一大堆用户创建的资源整合入一

个很炫的可视化交互环境。然而这只是将Unreal Engine的一切实质用途过度

简化所得的结论。在此,我们不去探讨引擎每个方面的细节,而是面向一般人士

(或非程序员)来阐述,以便您了解引擎的工作原理。

图1.10——Unreal Engine中的数据流。

Unreal Engine的构成

Unreal Engine由一系列独立工作的组件构成,它们都通过一个中央核心引擎

发挥作用。因此,各个模块在相对独立的同时,也可以协同工作。这使得这种基

于组件的构架具有模块化的特性,因此,引擎技术的授权使用者可以轻松定制(甚

至替换)任意组件,而不必对核心代码进行大幅改动。本节将向您介绍引擎的各

个组件及其工作原理,带您进入《Unreal》游戏制作的神奇体验。

图1.11——图形引擎负责将大篇幅的属性列表转化为屏幕上可交互的影像。

图形引擎

图形引擎是整个引擎的一个组件,控制着游戏运行中的画面。您在玩Unreal

Engine3的游戏(如《战争机器》或《Unreal竞技场III》)时,图形引擎负

责在您冲向胜利的道路上生成令人惊叹的图像。如果没有图形引擎,您的整个游

戏体验就会变为一张庞大的清单列表,上面列满了随时变化的属性值,例如,玩

家的位置、健康状况、携带的武器、弹药、当前播放动画等等。大量信息转化为

列表上的一连串值,而图形引擎则将这些信息转化为玩家进行游戏时见到的华丽

场景。

图形引擎也负责若干“幕后”计算,例如,哪些物体在其它物体前面进行渲染,哪

些物体遮挡住了其它物体。Unreal Engine3采用了新的概念:遮挡将避免渲染

最后面的物体。

这样描述吧:想象在一个房间里,您所面对的墙壁后面是另一个房间。在Unreal

Engine之前的版本中,默认情况下将渲染墙壁背后的房间,因此只能用各种繁

复的关卡优化技术去隐藏它。在Unreal Engine3中则启用了遮挡算法,所有

当前视图下不可见的对象都不会被渲染。这样,关卡设计者就不用再为错综复杂

的关卡优化处理操心了。

然而,某些关卡优化处理方法仍在使用中,并且和渲染引擎一起帮助控制玩家可

见或不可见的效果。Unreal Engine3支持“关卡流”(Level Streaming)技术,

即允许在游戏进行时,内存可以加载或卸载不同的关卡。这就是说,当您进入关

卡的某一部分时,您退出的区域将从内存里剔除,不再被图形引擎渲染,如此一

来,系统便可以创建并无缝集成大片区域。关卡流的更多信息,请参见 第10

章:关卡流 。

图形引擎还负责渲染大量的应用于游戏中的物体的着色器和材质。正如您已经知

道的,Unreal Engine3采用了法线帖图技术,即用多边形物体的表面法线来表

示低分辨率几何形,由此造成一种游戏中的简单模型实际上是由上百万个多边形

组合而成的错觉。图形引擎处理法线帖图在每个对象上的应如何显示。

您的关卡的光照也是由图形引擎控制的。Unreal Engine3具有极其强大的光照

系统,支持动态光照和阴影、柔和阴影效果等等。由此可以大大增强动态投影的

计算。请参见 第7章:光照介绍 。

声音引擎

据称,90%的视觉效果包含在听觉效果中。事实上,即使是最具有视觉效果的

娱乐电影或游戏,在关掉声音后,它们的魅力也荡然无存。许多玩家认为游戏声

音的细微差别是理所当然的,他们并没有意识到在当今的游戏中存在着大量的声

音层次:从玩家驰骋沙场的声音,玻璃的破碎声,炮火的隆隆声,到周遭环境的

吵闹声,比如流水风雨声,甚至随动作起伏而变化的全动态管弦配乐。当今的游

戏中充满了各种声音。

声音引擎实现了游戏中的这些声音效果。它根据游戏中的事件,将所有的录音效

果排列(如投掷手榴弹时播放爆炸声),在事件发生时通过电脑或游戏主机上的

声音硬件,重现声音。

关卡设计者对声音引擎本身的考虑是很少的。只需要录制一系列的声音效果或音

乐,然后利用它们建造SoundCue。SoundCue本质上只是一些指令列表,用

以控制声音的播放。通过它,您可以控制声音的循环播放、变调与调制,甚至将

声音和其它的声音片断结合起来。关于SoundCue的介绍,请参见 第17章:

声音系统 。

物理引擎

要创造出真实的交互环境,很关键的一个条件是要使游戏中的物体遵守物理定

律。在一个堆满了箱子的房间里,如果玩家可以随意搬动箱子,甚至将它们掷向

敌人,那么这个房间会让人觉得真实得多。在Unreal Engine3中,游戏中的

物理效果是通过Ageia公司的PhysX物理系统来实现。

PhysX 系统支持各种各样的物理仿真,包括刚体、受挤压物体、动态骨架网格

物体(“布娃娃”),甚至面料!在游戏中,每种仿真都是可以互动的,也可以由

玩家直接或通过脚本序列进行操纵。此物理系统与声音引擎一起共同制造动态音

效,例如在物体因物理作用撞击地面时。

图1.12——采用物理引擎,人物可以转化为“布娃娃”。

输入管理器

如果没有玩家的输入,就无法进行游戏。简单地说,输入其实就是一个由游戏引

擎驱动的动画,或称为“machinima”。输入有多种形式:按下按键,鼠标移动

或处理模拟控制器的输入。在一些情况下,甚至还包括语音命令。这些输入通过

输入管理器处理,转化为内部命令,从而引起游戏中的某种变化。

每当玩家进行一次输入,输入管理器就设置一系列属性,并依次控制游戏中发生

的事件。例如,当玩家按“跳跃”按钮时,输入管理器就向引擎发出信号,触发跳

跃的动作,并将相关信息发给图象引擎,在屏幕上绘制动作,将跳跃的声音加入

声音引擎的队列中。所有的通信都在瞬间完成,你几乎无法感觉到输入和命令执

行完成之间的时间延迟。

Unreal3的输入管理器具有一个很重要的特性,它非常灵活,支持针对于不同

的游戏运行平台或输入设备调整输入方式。

网络基础架构

贯穿整个《Unreal竞技场》系列的发展,Unreal Engine成功构建了高度优化

的网络基础架构,推动了客户端——服务器联网模式并顾及了快速的多人游戏。

在多人游戏中,客户端电脑(玩家的电脑)时刻与另一台担当服务端的电脑保持

通信。担当服务端的电脑也可以运行客户端程序,意味着某玩家可以直接通过服

务端电脑进入并进行游戏。如果一台电脑只作为服务端运作,而没有运行任何客

户端程序,则这台电脑称为“专用服务器(dedicated server)”。专用服务器

通常用于在线游戏,因为服务端可以做它的事情而不增加任何在服务端运行客户

端所带来的开销。

网络基础架构的关键在于,它所传输的数据被精简至游戏的核心数据部分,例如,

每个玩家的位置,他们与即时环境的交互。在系统中只传输最相关的细节,使得

网络即使在低速连接状态下也可以保持高速传输。

Unreal脚本解释程序

Unreal脚本是Unreal Engine最具有革命性的元素之一。它是一种语法与C++

十分酷似的脚本语言。通过Unreal脚本,理论上用户可以对引擎组件的任何部

分作修改,而不必触及游戏的源代码。Unreal脚本编译器作为引擎的一个组件,

负责获取用户制作的Unreal脚本,并将它们翻译成引擎可以处理的代码。

不得不说的是,本书不会深入讨论如何编写Unreal脚本,而是从美工层面上来

探讨如何创建游戏资源。

图1.13——Unreal脚本解释程序。

组件交互综述

现在您了解了Unreal Engine的基本组件。我们再来看看这些组件是如何协同

工作,使您产生真实的游戏体验。

大部分的游戏都是由一个游戏循环驱动的。游戏循环是游戏程序代码的一部分,

它不断地自我重复,检测玩家的更新,从而对游戏的各个方面进行更新。在此循

环中,还对一系列单个的检测项进行计算,以准确判断在游戏环境中发生何种类

型的变化。例如,玩家移动、开枪、受伤,以及敌人如何移动等等。游戏循环还

执行其它一些普通任务,例如:将图形引擎加入序列用来重绘屏幕,驱动声音引

擎播放声音,甚至在网络系统间传送数据。一般来说,游戏循环通常是线性设计

的,也就是说,每次循环都会按照相同的顺序执行此类检查,每次检查都具有相

同的优先级。

图1.14——基本游戏循环图表。

Unreal Engine也同样使用了游戏循环,但它是一个事件驱动系统。也就是说,

引擎包含了一张事件列表,上面包含所有被用到的引擎组件。这些事件由各种不

同的来源引发,例如,玩家输入,来自物理系统的数据,或组件之间尝试相互通

信。通过系统的所有事件都列在这张事件列表上。

图1.15——基于事件的系统。

这种系统的优点在于,每一事件都具有特定的优先级。这样,事件是根据其重要

程度被处理的,而不是在每个游戏周期内以特定序列更新游戏的每一个方面。

举例来说,试想当玩家在游戏中使用武器射击时的情形。此动作刚完成,一系列

不同类型的事件就已加入到了队列中,而队列中可能早已经存在其它事件。射击

事件包括发射弹体和播放声音。显然,前者更为重要,因为它决定了游戏进行,

例如,发射之后是否命中一个敌人或是引起其它动态物体的物理反应。因此,

Unreal Engine分配给发射弹体以更高的优先级,要求播放枪炮声之前就要完

成这个动作。由此可见,关键在于处理好事件发生的轻重缓急,将重要事件先于

非重要事件前处理。

工作中的引擎组件

既然您已经知道了Unreal Engine是事件驱动的性质,我们再来看看在游戏运

行中,引擎组件是如何协同工作的。启动基于Unreal Engine设计的游戏后,

第一件事就是初始化每个引擎组件。这和您启动跑车后让其热身很类似。跑车本

身并不会做任何特殊的动作,而是处于闲置状态,但却为您的下一步动作做准备。

例如,换档,踩油门,转动方向盘等等。对于Unreal Engine来说,就是发生

于启动游戏到显示标题屏幕的很短的加载时间。

图1.16——Unreal Engine组件的交互。

这时,各种引擎组件已开始相互传递信息。启动时,引擎内核对图形引擎、声音

引擎、物理引擎和Unreal脚本编译器进行初始化。与此同时,核心引擎开始向

各个组件发送命令。有一些组件(如物理引擎),也开始向核心引擎回送数据,

以保持系统内部同步化。所有的组件完成了初始化后,显示用户界面,继而游戏

引擎等待用户的输入。

游戏一旦启动,便开始加载某个关卡,其中包含了各项游戏资源。这些资源包括

贴图和材质、声音、静态网格物体、骨架网格物体和动画、脚本等。每项资源都

由特定引擎组件传送,例如,材质由图形引擎进行处理,而刚体则由物理引擎进

行计算,等等。

这时,事件序列已被激活。核心引擎中迅速排满了各类事件,再经处理后,就成

为我们的游戏体验。下面以《Unreal竞技场III》为例,简短列出了这一流程,

以通俗的语言说明了在运行类似《Unreal竞技场III》的游戏时,此流程的工作

方式。

1. 游戏初始化(启动《Unreal竞技场III》)

a. 核心引擎对引擎各组件实行初始化。

b. 各组件开始向核心引擎回送数据,以进行同步。

c. 游戏进入预备状态,等待用户输入。

2. 游戏开始(选择并启动关卡)

a. 加载地图,地图中包含了所有资源及对应属性。

b. 将每项资源信息发送到相应的引擎组件中(声效发送至声音引擎,材质

发送至图形引擎)。

3. 游戏运行(大量使用高射炮、脉冲枪和其它武器)

a. 各引擎组件向核心引擎发送信息,由核心引擎对事件进行优先级排序,

形成事件序列。

b. Unreal Engine的游戏循环不间断运行,并根据事件优先级对每个事件

进行评估,率先执行优先级最高的任务。

用Unreal Engine创建您自己的游戏世界

既然您已经基本掌握了引擎及其组件,以及它们如何协同工作以产生游戏体验的

原理,我们再来看看作为一名游戏设计师,在进行游戏制作时需要用到的素材及

如何切实利用Unreal Engine。您完全可以自己决定如何使用引擎,以及创造

什么样的游戏世界。Unreal Engine不仅限于制作游戏方面,它是一个十分灵

活与开放的系统,几乎可以胜任任何可视化项目。

试想您正参加一个大型建筑项目投标会,您可以向您的潜在客户展示一个完全交

互式的3D工程项目预演,而客户可以自行控制——这些令人瞠目结舌的视觉效

果就是由Unreal Engine3创造出来的!可以想象,凭借如此新颖的演讲,在

投标会上您将如何一鸣惊人!

游戏资源

事实上,Unreal Engine使用的所有数据都存储在一系列文件包中。每个文件

包就是各类资源的集合,如贴图、静态网格物体、动画数据,以及游戏制作或大

型项目需要的其它关键元素。文件包通常按其包含资源的类型进行区分,但也不

尽然。例如,您可以保存一个名为ComputerMeshes的文件包,其中仅仅包

含场景中的静态网格物体。您也可以在这个文件包中随意加入这些网格物体的贴

图。最后再想想当文件包作为一个容器向游戏加载资源的情况。游戏运行时用到

的所有资源(除地图外),都包含在这些文件包中。

地图

地图又称关卡或场景,在《Unreal》系列中,地图是场景创建的源头。尽管地

图没有包含在文件包中,却是游戏最主要的资源之一。从技术角度讲,地图就是

玩家所见到的各种游戏资源的总合。其中,许多资源来自于不同的文件包。从艺

术设计角度讲,地图就是您为您的游戏或可视化体验搭建的舞台。您可以构建场

景总体造型,并利用手头的资源(例如静态网格物体、材质等)进行装饰,使场

景显得更为逼真。本书后续将向您讲述在关卡中放置的各种资源。

图1.17——地图就是您在玩游戏时见到的实际关卡。

出于方便的考虑,地图中包含自有文件包。此文件包完全包含于此关卡中。如果

这些资源只存在于某个关卡,那就很方便了。但是在大多数情况下,您将资源存

放在其它的文件包中,而不是此关卡文件包中。其原因之一,是因为当其它关卡

也需要这些资源时,不能从此地图文件包中读取。同样,请牢记,文件包中与当

前关卡无关的资源,在保存关卡时,将从关卡文件包中剔除掉。例如,如果您的

关卡文件包中有砖墙的纹理,但没有应用到当前关卡的任何材质上。当您下次保

存这个关卡时,砖墙贴图将在关卡文件包中被删除。

贴图与材质

贴图是一种简单的2D图像,用于在关卡中或其它游戏资源中创建材质。现在,

我们不去太深入地探讨这个问题,后面会有整个章节专门讨论材质的生成。在此,

这样解释就足够了:在你的关卡中,所有可见的表面都应用了材质,而每一材质

包含了至少一张贴图。因此,可以将贴图看作材质的一部分。简而言之,贴图就

是提供色彩(通常还有其它信息)的2D图像,而材质则说明了光照在表面产生

的效果。当然,个中道理不仅如此,姑且先这样介绍吧。

图1.18——两种不同的贴图; 一张由Photoshop制作,另一张由相机拍摄。

贴图用于向材质提供一些特殊说明,包括但不仅限于色彩。贴图通常被称为

“maps”(例如,常见术语

高光贴图

漫反射贴图

), 但为了防止混淆,我

们仍称它们为贴图。一些贴图,如法线贴图,使物体表面形成了远多于多边形数

目所允许的物理细节的错觉。通过使用法线贴图,由几千个多边形组成的模型看

起来竟然像是由数百万个多边形组成的!

和其它的游戏资源一样,贴图也是存储在文件包中。它们不是由Unreal Engine

的主要编辑器——Unreal编辑器(UnrealEd)创建的,而是由其它外部应用软

件创建的。贴图通常是由诸如Photoshop、ZBrush或Painter创建的,也可

以通过数码相机、扫描物体或照片得到。

材质是在UnrealEd中利用外部软件产生的贴图创建的。单种材质可以使用多种

不同的贴图(但是使用过多贴图,会耗费宝贵的系统资源)。这些材质也是保存

在文件包中,可以应用于地图中的平面。请记住,在Unreal Engine3中,不

能直接将贴图应用于表面;只能将材质应用于表面,而材质中可以包含所需要的

贴图。在“材质”一章中会详细讨论。

声音

和贴图一样,声音也必须在外部软件中创建。它们可以来自于音频文件编辑器,

如音效CD或者从各种不同的声音网站上免费下载的声音文件。在游戏中,声音

是为了响应各类事件而播放的,例如,开门、电梯启动、武器开火,等等。也可

能是其它一些环境音效包括水流声、蟋蟀的叫声或机器的运行声。

尽管声音文件只能从外部软件捕捉或获取,UnrealEd提供的SoundCue编辑

器,能够灵活地添加大量声音效果,这在“声音”一章会深入讨论。该编辑器允许

你将多种音效混合成一个声音,随机播放声音,调节单个声音的音量、速度以及

调制效果。这个系统异常强大,可以帮助您将一系列非常简单的音效转变成复杂

的综合音效。

Kismet是Unreal内嵌的可视化脚本系统。您也可以使用它来产生复杂的音乐

系统,使得发生特定事件时,播放一些音乐和声效。例如,当玩家的HP跌至某

个标准以下时,或者当玩家以某种速度移动时等等。在“声音”一章,我们将简单

展示这个音乐系统是如何设置的。

静态网格物体

静态网格物体是经过优化处理的多边形模型。您可以使用它们装饰绝大部分和关

卡。事实上,目前大多数使用Unreal Engine3的游戏差不多全部由静态网格

物体进行覆盖,您几乎看不到关卡中的BSP几何体。

静态网格物体的关键是,它被设计成在显卡中完全被实例化(或多次复制)。这

样,在游戏运行中,即使在使用上千个静态网格物体的地图中,也可以达到非常

快的绘制速度和性能。然而,这样带来的最大的好处是,一些静态网格物体可以

反复使用。因为只有静态网格物体的第一个实例会占用一部分有效内存。该静态

网格物体的其它副本在显卡中存有位置、角度和大小信息。因此,只要您的显卡

不是太旧,就可以创建上千个副本,而不会使电脑负担过重。但是,如果是上千

不同的

静态网格物体,每个静态网格物体的首个实例都要占用内存,和使用

显卡存放副本相比,会很快地降低整机性能。

这并不是说您不能在关卡中使用各种不同的静态网格物体,绝非此意。只是过度

地使用会导致性能大幅下降。过度具体是指什么程度呢?这和您电脑的性能规格

有关,还要基于以下因素:网格物体上接受多少动态光照,网格物体上使用多少

材质,每个网格有多少个多边形,以及很多其它的因素。

使用UnrealEd的图元统计浏览器,您就可以按占用内存量对关卡中的资源进行

排列。当您发现关卡的速度稍慢时,您可以打开电子数据表式窗口,按“占用资

源大小”排列,就可以看到每个资源的占用系统资源的情况了。占用资源最多的

排在第一。如果速度慢,并且静态网格物体以内存占用量为标准排在了数据表的

前面,那么就是特别提醒您得取消一些当前正在使用的静态网格物体,或减少它

们的复杂度(即减少多边形的数量和使用的材质数量),或根据其它因素做出相

应的调整。在“优化”一章中,我们将进行更多关于图元统计浏览器的讨论。

图1.19——图元统计浏览器可以帮助您查看是否在关卡中使用了过多的静态

网格物体。

动画与骨架网格物体

游戏人物并不是(典型的)静态网格物体。这些角色通常被称作具有骨架网格物

体,即由数字化骨骼进行变形得到的网格物体。这些网格物体是在外部3D软件,

如3ds Max和Maya中创建的。网格物体在此创建并添加骨架――这一过程称

为“骨骼绑定”。然后将这些网格进行动画处理,使它们看起来像在奔跑、跳跃、

射击、扭胯,或其它在游戏交互中需要的动作。

这些网格物体和它们的动画都保存在文件包中。实际上,动画是以另一种资源类

型保存的。这样带来了一个很大的好处,具有类似骨骼结构的游戏人物可以相互

使用对方的动画序列。这不仅简化了对角色进行动画处理的过程,实际需要加载

到游戏中的动画序列数据也大大减少,这样,就可以释放宝贵的系统资源。在“骨

架动画”一章中,将对动画进行讨论。

外部扩展工具

现在,您已经大概知道了要构建您的Unreal世界,需要哪些东西。但还是有一

个问题:到底需要什么去创建他们呢?本节将向您介绍一些可以用来创建游戏资

源的工具。正如您所看到的,很多您需要的资源都要在外部软件中创建。但是,

请记住,以下列表并非所有工具的总计,也不是必须使用的工具列表。这只是一

个大体上的框架,提供了用于完成特定的任务的一些最常用的软件包。

UnrealEd(Unreal编辑器)

如果您要构建《Unreal》的关卡,您迟早会使用到UnrealEd。UnrealEd是创

建地图的核心工具,负责在地图上添加网格,创建材质,利用已录制的声音创建

音效,等等。它也是唯一能打开并浏览Unreal文件包内容的软件。请记住关键

的一点,您不能使用UnrealEd来创建3D物体,例如静态网格物体或骨架网格

物体。您也不能利用它来创建贴图或声音文件。本书着重介绍在UnrealEd中,

使用外部软件创建的资源来生成丰富多彩的游戏元素。

图1.20——UnrealEd用户界面。

3D软件

既然Unreal Engine是一个3D游戏引擎,您当然会在一些地方用到三维资源,

例如,角色或其它骨架网格物体,以及静态网格物体。当今市场上有大量的3D

软件完全可以创造出Unreal Engine3所需要的内容。其中有两个关键性软件

是最常用的:3ds Max和Maya。它们都是由Autodesk公司开发并发售的产

品。您可以在下面的网页上找到关于这些软件更多的信息,或下载试用版本:

/。

图1.21——3ds Max用户界面。

贴图软件

要制作游戏中的材质所需要的贴图,您需要一些专门的贴图制作软件。常用的软

件包括Adobe Photoshop或Corel Painter。它们都提供了一些功能,可以利

用照片或现有贴图,也可以自行绘制。

还有其它的一些软件,有的软件允许直接在模型表面进行绘制,例如Pixologic

公司的ZBrush。这是很强大的一款软件,不仅允许创建贴图,甚至可以建立包

含上百万多边形的网格,用于生成网格所需的高精度法线贴图!

图1.22——在Photoshop中可以对贴图进行编辑。

Collada

现今,用户可以选择如此众多的3D制作程序,但Unreal Engine3只能识别一

种格式以进行信息传输,如何使用户免去在不同软件间转换格式的繁琐又能自由

选择任意一种应用程序来制作Unreal游戏的资源?Unreal Engine3支持

Collada文件格式,它拥有适用于市面上几乎所有3D软件的插件版本。可登录

获取更多关于Collada的信息或下载最新版本的Collada插件。

图1.23——Collada为3D资源提供了一种统一的格式。

Sound Programs

UnrealEd无法录制音频文件,因此您需要其它的软件来获取音效,并将它们转

换为WAV文件,这样才能将其导入UnrealEd SoundCue Editor并转换为

SoundCue资源。目前有很多软件都可以帮助您完成这件事。实际上,最简单

的方法就是使用windows自带的录音机软件也可以将加载的文件转换为WAV

格式。

图1.24——Adobe Audition。

然而,如果您需要更为专业的环境来制作音效或音乐,可以考虑使用索尼公司

Sound Forge或Adobe Audition来创建自己的音效。无论您选择哪种软件,

请确认可以对声音波形进行编辑,这样您就可以去掉音效末尾十分细小的停顿,

使各种效果间的混合简单易行。在UnrealEd的SoundCue编辑器中,您可以

编辑音调和音量。

培训资源

许多资源创建软件都需要大量的技巧,并非从一开始就会使用的。因此,很多满

怀信心的游戏设计师还需要一些培训帮助他们上手。在很多地方都可以找到关于

3D软件和贴图制作的培训。例如,3D (设计师之家)网站中有数

百小时的免费视频教学录像可供下载,也可以购买专业级的视频教学。

3D Buzz小组从事在线3D教学业务已有5年了,它与Epic Games紧密合作,

负责制作60+小时的教学视频。该视频与《Unreal竞技场2004》DVD特别

版及该游戏的周年版本同时发布。

2024年9月1日发(作者:毕语儿)

第一章 Unreal技术简介

《Unreal》的历史

至今,Unreal Engine已有10年左右的历史了。它始终如一地向人们提供各种

各样独特的游戏制作体验。下面简单介绍Unreal Engine大事记,正是这些关

键事件引领我们到达今日的地位。

1998年6月

《Unreal》

图1.1——初代《Unreal》的诞生是3D游戏制作史上的里程碑。

1998年夏季《Unreal》发售伊始便即热卖。该游戏情节引人入胜、图像令人惊

叹、环境赏心悦目。与当时的其它3D游戏相比,其外景更是在当时的3D游戏

中卓尔不群。这款单机游戏极富诱人体验,同时也具备独特的多人元素:玩家可

以拥有协同作战的人工职能„bots‟,或是由电脑控制的敌对玩家。

随着《Unreal》的发展,Unreal Engine诞生了。该引擎采用了模块化设计,

于是,Epic Games及其它的授权公司可以容易地修改并自定义引擎的各个方

面,而不必重写一个新的引擎。该游戏引擎同时也为mod制作者(修改现有游

戏的人)使用UnrealScripts增强与修改他们的游戏体验铺平了道路。

1999年11月

Unreal竞技场

图1.2——《Unreal竞技场》最终被移植到不同的平台。

最初作为初代《Unreal》扩展包的《Unreal竞技场》大大扩展了多人游戏功能。

该游戏也被移植到了PlayStation 2和Sega Dreamcast平台。《Unreal竞

技场》将以往的单纯“死亡竞赛”模式转变成一系列颇具观赏性的竞技游戏模式。

《Unreal竞技场》由所拥有的难以置信的网络对战,以及一些最为先进bot AI

不断的被运用入此游戏当中,这些亮点使得玩家们叹为观止。该游戏还向下兼容

初代《Unreal》中的原始地图。

2001年3月——7月

Unreal开发者网络发布

Unreal开发者网络(Unreal Developer Network,通常称“UDN”)提供了一

个中心场所,供Unreal Engine的用户(从授权用户到mod制作者)获得与

引擎相关文档资料和诸多游戏创作方面的指南。时至今日,该网站仍是获得

Unreal Engine及其开发信息的最权威资源。Unreal开发者网络可通过

进入。

图1.3——UDN仍是取得Unreal技术信息的唯一来源。

2002年9月

《Unreal锦标赛》和《Unreal竞技场2003》

在《Unreal锦标赛》携《Unreal竞技场》的特有技术植入微软Xbox游戏平台

后,紧随而来的是PC平台上《Unreal竞技场2003》的发售。这两款游戏都很

注重多人模式,《Unreal锦标赛》还成为了第一批使用微软Xbox Live!宽带在

线系统的游戏。

《Unreal竞技场2003》引领了一个新时代,使得游戏开发和mod改造异常灵

活有力。Unreal竞技场2003具备强大的粒子系统、地形生成系统和Karma

物理引擎。它同时包含了制作游戏中过场片断和动画的集成系统——Matinee

系统。它同时整合了静态网格功能,实现了用显卡绘制多边形网格的多个实例。

这提供了一种方法使用相对较低的计算开销来绘制一个高细节度关卡,并能获得

较高的帧数。

图1.4——《Unreal竞技场2003》为《Unreal》系列技术锦上添花。

图1.5——《Unreal锦标赛》是严格为游戏机设计的游戏,且极具《Unreal

竞技场》风格。

2003年2月

《Unreal II》

《UnrealII:觉醒》的发布使得PC单机游戏的世界复苏了,而在过去的数年间,

PC游戏制作都严重倾向于多人玩家模式。《UnrealII》又回到了初代《Unreal》

故事线索,再次使玩家陷入对抗残忍的Skaarj势力的挑战中。该游戏也包括了

与NPC角色(非玩家控制角色)的大量互动,而这些角色则由电脑控制。自

《Unreal竞技场2003》以来应用的所有技术,将引擎推向了拥有豪华环境设

定的新水平上。该游戏还运用了Legend Entertainment公司的Golem 动画

系统。

图1.6——《UnrealII》回归至《Unreal》的技术根源——单人游戏模式。

2004年3月

《Unreal竞技场2004》

《Unreal竞技场》第三版的发售冲锋类游戏随之产生,并且代来了在线多人游

戏飞跃。这个游戏模式向玩家提供了一个庞大的战场,战场上充斥着可占据的控

制点、前哨、武器以及车辆系统,使得玩家们在一个庞大的范围内能够进行全方

位的战争。这种游戏类型在gameplay上还提供了一个有趣的变化:有些关卡

在外太空进行,并强迫玩家必须乘坐太空战斗机渗入一个空间站,并在着陆后徒

步夺取此空间站!

图1.7——《Unreal竞技场2004》引入了众多的战场和车辆系统。

2005年4月

《Unreal锦标赛2:Liandri Conflict》

《Unreal锦标赛》的第二代是Xbox游戏平台上的独占游戏,采用了Xbox独

有的Unreal Engine2.5特别版。该游戏提供了增强图形功能,其多人

gameplay不管在系统联机或Xbox Live!在线游戏系统的情况下,都是非常稳

定的。游戏中新加入了混战元素,这在其它的《Unreal竞技场》系列游戏中从

未出现。游戏加入了可选的第三人称视角模式,它给玩家带来一种崭新的

hardcore游戏动作体验。

图1.8——《Unreal锦标赛2》是原始Xbox系统独占的游戏。

2006年11月

《战争机器》

随着《战争机器》的发布,Unreal Engine3进入了针对游戏机平台开发游戏的

主要阶段。尽管《战争机器》不是第一个使用Unreal Engine3的游戏(第一

个应该是Roboblitz),但《战争机器》却是第一个展示出Unreal Engine3完

美实力的游戏。战争机器具有独特的第三人称视角风格,丰富多彩与极端细致的

环境,逼真得令人恐惧的敌人,以及前所未有、令人深思的战斗;这些特征使《战

争机器》迅速热卖,并成为史上最畅销的游戏产品之一。

该游戏通过使用法线帖图技术,使模型看起来由数百万个多边形组成,具有很强

的视觉深度。灯光和材质都表现得极其完美,营造了极端逼真的光影环境。该游

戏还采用了新的物理引擎—Aegis,整个系统由强大的新型Kismet可视化脚本

系统支撑。

图1.9——《战争机器》是Xbox 360上最期待的作品之一。

Unreal Engine综述

本节将向您简单(用通俗易懂的语言)介绍Unreal Engine的方方面面。到底

什么是Unreal Engine?简而言之,它就是把一大堆用户创建的资源整合入一

个很炫的可视化交互环境。然而这只是将Unreal Engine的一切实质用途过度

简化所得的结论。在此,我们不去探讨引擎每个方面的细节,而是面向一般人士

(或非程序员)来阐述,以便您了解引擎的工作原理。

图1.10——Unreal Engine中的数据流。

Unreal Engine的构成

Unreal Engine由一系列独立工作的组件构成,它们都通过一个中央核心引擎

发挥作用。因此,各个模块在相对独立的同时,也可以协同工作。这使得这种基

于组件的构架具有模块化的特性,因此,引擎技术的授权使用者可以轻松定制(甚

至替换)任意组件,而不必对核心代码进行大幅改动。本节将向您介绍引擎的各

个组件及其工作原理,带您进入《Unreal》游戏制作的神奇体验。

图1.11——图形引擎负责将大篇幅的属性列表转化为屏幕上可交互的影像。

图形引擎

图形引擎是整个引擎的一个组件,控制着游戏运行中的画面。您在玩Unreal

Engine3的游戏(如《战争机器》或《Unreal竞技场III》)时,图形引擎负

责在您冲向胜利的道路上生成令人惊叹的图像。如果没有图形引擎,您的整个游

戏体验就会变为一张庞大的清单列表,上面列满了随时变化的属性值,例如,玩

家的位置、健康状况、携带的武器、弹药、当前播放动画等等。大量信息转化为

列表上的一连串值,而图形引擎则将这些信息转化为玩家进行游戏时见到的华丽

场景。

图形引擎也负责若干“幕后”计算,例如,哪些物体在其它物体前面进行渲染,哪

些物体遮挡住了其它物体。Unreal Engine3采用了新的概念:遮挡将避免渲染

最后面的物体。

这样描述吧:想象在一个房间里,您所面对的墙壁后面是另一个房间。在Unreal

Engine之前的版本中,默认情况下将渲染墙壁背后的房间,因此只能用各种繁

复的关卡优化技术去隐藏它。在Unreal Engine3中则启用了遮挡算法,所有

当前视图下不可见的对象都不会被渲染。这样,关卡设计者就不用再为错综复杂

的关卡优化处理操心了。

然而,某些关卡优化处理方法仍在使用中,并且和渲染引擎一起帮助控制玩家可

见或不可见的效果。Unreal Engine3支持“关卡流”(Level Streaming)技术,

即允许在游戏进行时,内存可以加载或卸载不同的关卡。这就是说,当您进入关

卡的某一部分时,您退出的区域将从内存里剔除,不再被图形引擎渲染,如此一

来,系统便可以创建并无缝集成大片区域。关卡流的更多信息,请参见 第10

章:关卡流 。

图形引擎还负责渲染大量的应用于游戏中的物体的着色器和材质。正如您已经知

道的,Unreal Engine3采用了法线帖图技术,即用多边形物体的表面法线来表

示低分辨率几何形,由此造成一种游戏中的简单模型实际上是由上百万个多边形

组合而成的错觉。图形引擎处理法线帖图在每个对象上的应如何显示。

您的关卡的光照也是由图形引擎控制的。Unreal Engine3具有极其强大的光照

系统,支持动态光照和阴影、柔和阴影效果等等。由此可以大大增强动态投影的

计算。请参见 第7章:光照介绍 。

声音引擎

据称,90%的视觉效果包含在听觉效果中。事实上,即使是最具有视觉效果的

娱乐电影或游戏,在关掉声音后,它们的魅力也荡然无存。许多玩家认为游戏声

音的细微差别是理所当然的,他们并没有意识到在当今的游戏中存在着大量的声

音层次:从玩家驰骋沙场的声音,玻璃的破碎声,炮火的隆隆声,到周遭环境的

吵闹声,比如流水风雨声,甚至随动作起伏而变化的全动态管弦配乐。当今的游

戏中充满了各种声音。

声音引擎实现了游戏中的这些声音效果。它根据游戏中的事件,将所有的录音效

果排列(如投掷手榴弹时播放爆炸声),在事件发生时通过电脑或游戏主机上的

声音硬件,重现声音。

关卡设计者对声音引擎本身的考虑是很少的。只需要录制一系列的声音效果或音

乐,然后利用它们建造SoundCue。SoundCue本质上只是一些指令列表,用

以控制声音的播放。通过它,您可以控制声音的循环播放、变调与调制,甚至将

声音和其它的声音片断结合起来。关于SoundCue的介绍,请参见 第17章:

声音系统 。

物理引擎

要创造出真实的交互环境,很关键的一个条件是要使游戏中的物体遵守物理定

律。在一个堆满了箱子的房间里,如果玩家可以随意搬动箱子,甚至将它们掷向

敌人,那么这个房间会让人觉得真实得多。在Unreal Engine3中,游戏中的

物理效果是通过Ageia公司的PhysX物理系统来实现。

PhysX 系统支持各种各样的物理仿真,包括刚体、受挤压物体、动态骨架网格

物体(“布娃娃”),甚至面料!在游戏中,每种仿真都是可以互动的,也可以由

玩家直接或通过脚本序列进行操纵。此物理系统与声音引擎一起共同制造动态音

效,例如在物体因物理作用撞击地面时。

图1.12——采用物理引擎,人物可以转化为“布娃娃”。

输入管理器

如果没有玩家的输入,就无法进行游戏。简单地说,输入其实就是一个由游戏引

擎驱动的动画,或称为“machinima”。输入有多种形式:按下按键,鼠标移动

或处理模拟控制器的输入。在一些情况下,甚至还包括语音命令。这些输入通过

输入管理器处理,转化为内部命令,从而引起游戏中的某种变化。

每当玩家进行一次输入,输入管理器就设置一系列属性,并依次控制游戏中发生

的事件。例如,当玩家按“跳跃”按钮时,输入管理器就向引擎发出信号,触发跳

跃的动作,并将相关信息发给图象引擎,在屏幕上绘制动作,将跳跃的声音加入

声音引擎的队列中。所有的通信都在瞬间完成,你几乎无法感觉到输入和命令执

行完成之间的时间延迟。

Unreal3的输入管理器具有一个很重要的特性,它非常灵活,支持针对于不同

的游戏运行平台或输入设备调整输入方式。

网络基础架构

贯穿整个《Unreal竞技场》系列的发展,Unreal Engine成功构建了高度优化

的网络基础架构,推动了客户端——服务器联网模式并顾及了快速的多人游戏。

在多人游戏中,客户端电脑(玩家的电脑)时刻与另一台担当服务端的电脑保持

通信。担当服务端的电脑也可以运行客户端程序,意味着某玩家可以直接通过服

务端电脑进入并进行游戏。如果一台电脑只作为服务端运作,而没有运行任何客

户端程序,则这台电脑称为“专用服务器(dedicated server)”。专用服务器

通常用于在线游戏,因为服务端可以做它的事情而不增加任何在服务端运行客户

端所带来的开销。

网络基础架构的关键在于,它所传输的数据被精简至游戏的核心数据部分,例如,

每个玩家的位置,他们与即时环境的交互。在系统中只传输最相关的细节,使得

网络即使在低速连接状态下也可以保持高速传输。

Unreal脚本解释程序

Unreal脚本是Unreal Engine最具有革命性的元素之一。它是一种语法与C++

十分酷似的脚本语言。通过Unreal脚本,理论上用户可以对引擎组件的任何部

分作修改,而不必触及游戏的源代码。Unreal脚本编译器作为引擎的一个组件,

负责获取用户制作的Unreal脚本,并将它们翻译成引擎可以处理的代码。

不得不说的是,本书不会深入讨论如何编写Unreal脚本,而是从美工层面上来

探讨如何创建游戏资源。

图1.13——Unreal脚本解释程序。

组件交互综述

现在您了解了Unreal Engine的基本组件。我们再来看看这些组件是如何协同

工作,使您产生真实的游戏体验。

大部分的游戏都是由一个游戏循环驱动的。游戏循环是游戏程序代码的一部分,

它不断地自我重复,检测玩家的更新,从而对游戏的各个方面进行更新。在此循

环中,还对一系列单个的检测项进行计算,以准确判断在游戏环境中发生何种类

型的变化。例如,玩家移动、开枪、受伤,以及敌人如何移动等等。游戏循环还

执行其它一些普通任务,例如:将图形引擎加入序列用来重绘屏幕,驱动声音引

擎播放声音,甚至在网络系统间传送数据。一般来说,游戏循环通常是线性设计

的,也就是说,每次循环都会按照相同的顺序执行此类检查,每次检查都具有相

同的优先级。

图1.14——基本游戏循环图表。

Unreal Engine也同样使用了游戏循环,但它是一个事件驱动系统。也就是说,

引擎包含了一张事件列表,上面包含所有被用到的引擎组件。这些事件由各种不

同的来源引发,例如,玩家输入,来自物理系统的数据,或组件之间尝试相互通

信。通过系统的所有事件都列在这张事件列表上。

图1.15——基于事件的系统。

这种系统的优点在于,每一事件都具有特定的优先级。这样,事件是根据其重要

程度被处理的,而不是在每个游戏周期内以特定序列更新游戏的每一个方面。

举例来说,试想当玩家在游戏中使用武器射击时的情形。此动作刚完成,一系列

不同类型的事件就已加入到了队列中,而队列中可能早已经存在其它事件。射击

事件包括发射弹体和播放声音。显然,前者更为重要,因为它决定了游戏进行,

例如,发射之后是否命中一个敌人或是引起其它动态物体的物理反应。因此,

Unreal Engine分配给发射弹体以更高的优先级,要求播放枪炮声之前就要完

成这个动作。由此可见,关键在于处理好事件发生的轻重缓急,将重要事件先于

非重要事件前处理。

工作中的引擎组件

既然您已经知道了Unreal Engine是事件驱动的性质,我们再来看看在游戏运

行中,引擎组件是如何协同工作的。启动基于Unreal Engine设计的游戏后,

第一件事就是初始化每个引擎组件。这和您启动跑车后让其热身很类似。跑车本

身并不会做任何特殊的动作,而是处于闲置状态,但却为您的下一步动作做准备。

例如,换档,踩油门,转动方向盘等等。对于Unreal Engine来说,就是发生

于启动游戏到显示标题屏幕的很短的加载时间。

图1.16——Unreal Engine组件的交互。

这时,各种引擎组件已开始相互传递信息。启动时,引擎内核对图形引擎、声音

引擎、物理引擎和Unreal脚本编译器进行初始化。与此同时,核心引擎开始向

各个组件发送命令。有一些组件(如物理引擎),也开始向核心引擎回送数据,

以保持系统内部同步化。所有的组件完成了初始化后,显示用户界面,继而游戏

引擎等待用户的输入。

游戏一旦启动,便开始加载某个关卡,其中包含了各项游戏资源。这些资源包括

贴图和材质、声音、静态网格物体、骨架网格物体和动画、脚本等。每项资源都

由特定引擎组件传送,例如,材质由图形引擎进行处理,而刚体则由物理引擎进

行计算,等等。

这时,事件序列已被激活。核心引擎中迅速排满了各类事件,再经处理后,就成

为我们的游戏体验。下面以《Unreal竞技场III》为例,简短列出了这一流程,

以通俗的语言说明了在运行类似《Unreal竞技场III》的游戏时,此流程的工作

方式。

1. 游戏初始化(启动《Unreal竞技场III》)

a. 核心引擎对引擎各组件实行初始化。

b. 各组件开始向核心引擎回送数据,以进行同步。

c. 游戏进入预备状态,等待用户输入。

2. 游戏开始(选择并启动关卡)

a. 加载地图,地图中包含了所有资源及对应属性。

b. 将每项资源信息发送到相应的引擎组件中(声效发送至声音引擎,材质

发送至图形引擎)。

3. 游戏运行(大量使用高射炮、脉冲枪和其它武器)

a. 各引擎组件向核心引擎发送信息,由核心引擎对事件进行优先级排序,

形成事件序列。

b. Unreal Engine的游戏循环不间断运行,并根据事件优先级对每个事件

进行评估,率先执行优先级最高的任务。

用Unreal Engine创建您自己的游戏世界

既然您已经基本掌握了引擎及其组件,以及它们如何协同工作以产生游戏体验的

原理,我们再来看看作为一名游戏设计师,在进行游戏制作时需要用到的素材及

如何切实利用Unreal Engine。您完全可以自己决定如何使用引擎,以及创造

什么样的游戏世界。Unreal Engine不仅限于制作游戏方面,它是一个十分灵

活与开放的系统,几乎可以胜任任何可视化项目。

试想您正参加一个大型建筑项目投标会,您可以向您的潜在客户展示一个完全交

互式的3D工程项目预演,而客户可以自行控制——这些令人瞠目结舌的视觉效

果就是由Unreal Engine3创造出来的!可以想象,凭借如此新颖的演讲,在

投标会上您将如何一鸣惊人!

游戏资源

事实上,Unreal Engine使用的所有数据都存储在一系列文件包中。每个文件

包就是各类资源的集合,如贴图、静态网格物体、动画数据,以及游戏制作或大

型项目需要的其它关键元素。文件包通常按其包含资源的类型进行区分,但也不

尽然。例如,您可以保存一个名为ComputerMeshes的文件包,其中仅仅包

含场景中的静态网格物体。您也可以在这个文件包中随意加入这些网格物体的贴

图。最后再想想当文件包作为一个容器向游戏加载资源的情况。游戏运行时用到

的所有资源(除地图外),都包含在这些文件包中。

地图

地图又称关卡或场景,在《Unreal》系列中,地图是场景创建的源头。尽管地

图没有包含在文件包中,却是游戏最主要的资源之一。从技术角度讲,地图就是

玩家所见到的各种游戏资源的总合。其中,许多资源来自于不同的文件包。从艺

术设计角度讲,地图就是您为您的游戏或可视化体验搭建的舞台。您可以构建场

景总体造型,并利用手头的资源(例如静态网格物体、材质等)进行装饰,使场

景显得更为逼真。本书后续将向您讲述在关卡中放置的各种资源。

图1.17——地图就是您在玩游戏时见到的实际关卡。

出于方便的考虑,地图中包含自有文件包。此文件包完全包含于此关卡中。如果

这些资源只存在于某个关卡,那就很方便了。但是在大多数情况下,您将资源存

放在其它的文件包中,而不是此关卡文件包中。其原因之一,是因为当其它关卡

也需要这些资源时,不能从此地图文件包中读取。同样,请牢记,文件包中与当

前关卡无关的资源,在保存关卡时,将从关卡文件包中剔除掉。例如,如果您的

关卡文件包中有砖墙的纹理,但没有应用到当前关卡的任何材质上。当您下次保

存这个关卡时,砖墙贴图将在关卡文件包中被删除。

贴图与材质

贴图是一种简单的2D图像,用于在关卡中或其它游戏资源中创建材质。现在,

我们不去太深入地探讨这个问题,后面会有整个章节专门讨论材质的生成。在此,

这样解释就足够了:在你的关卡中,所有可见的表面都应用了材质,而每一材质

包含了至少一张贴图。因此,可以将贴图看作材质的一部分。简而言之,贴图就

是提供色彩(通常还有其它信息)的2D图像,而材质则说明了光照在表面产生

的效果。当然,个中道理不仅如此,姑且先这样介绍吧。

图1.18——两种不同的贴图; 一张由Photoshop制作,另一张由相机拍摄。

贴图用于向材质提供一些特殊说明,包括但不仅限于色彩。贴图通常被称为

“maps”(例如,常见术语

高光贴图

漫反射贴图

), 但为了防止混淆,我

们仍称它们为贴图。一些贴图,如法线贴图,使物体表面形成了远多于多边形数

目所允许的物理细节的错觉。通过使用法线贴图,由几千个多边形组成的模型看

起来竟然像是由数百万个多边形组成的!

和其它的游戏资源一样,贴图也是存储在文件包中。它们不是由Unreal Engine

的主要编辑器——Unreal编辑器(UnrealEd)创建的,而是由其它外部应用软

件创建的。贴图通常是由诸如Photoshop、ZBrush或Painter创建的,也可

以通过数码相机、扫描物体或照片得到。

材质是在UnrealEd中利用外部软件产生的贴图创建的。单种材质可以使用多种

不同的贴图(但是使用过多贴图,会耗费宝贵的系统资源)。这些材质也是保存

在文件包中,可以应用于地图中的平面。请记住,在Unreal Engine3中,不

能直接将贴图应用于表面;只能将材质应用于表面,而材质中可以包含所需要的

贴图。在“材质”一章中会详细讨论。

声音

和贴图一样,声音也必须在外部软件中创建。它们可以来自于音频文件编辑器,

如音效CD或者从各种不同的声音网站上免费下载的声音文件。在游戏中,声音

是为了响应各类事件而播放的,例如,开门、电梯启动、武器开火,等等。也可

能是其它一些环境音效包括水流声、蟋蟀的叫声或机器的运行声。

尽管声音文件只能从外部软件捕捉或获取,UnrealEd提供的SoundCue编辑

器,能够灵活地添加大量声音效果,这在“声音”一章会深入讨论。该编辑器允许

你将多种音效混合成一个声音,随机播放声音,调节单个声音的音量、速度以及

调制效果。这个系统异常强大,可以帮助您将一系列非常简单的音效转变成复杂

的综合音效。

Kismet是Unreal内嵌的可视化脚本系统。您也可以使用它来产生复杂的音乐

系统,使得发生特定事件时,播放一些音乐和声效。例如,当玩家的HP跌至某

个标准以下时,或者当玩家以某种速度移动时等等。在“声音”一章,我们将简单

展示这个音乐系统是如何设置的。

静态网格物体

静态网格物体是经过优化处理的多边形模型。您可以使用它们装饰绝大部分和关

卡。事实上,目前大多数使用Unreal Engine3的游戏差不多全部由静态网格

物体进行覆盖,您几乎看不到关卡中的BSP几何体。

静态网格物体的关键是,它被设计成在显卡中完全被实例化(或多次复制)。这

样,在游戏运行中,即使在使用上千个静态网格物体的地图中,也可以达到非常

快的绘制速度和性能。然而,这样带来的最大的好处是,一些静态网格物体可以

反复使用。因为只有静态网格物体的第一个实例会占用一部分有效内存。该静态

网格物体的其它副本在显卡中存有位置、角度和大小信息。因此,只要您的显卡

不是太旧,就可以创建上千个副本,而不会使电脑负担过重。但是,如果是上千

不同的

静态网格物体,每个静态网格物体的首个实例都要占用内存,和使用

显卡存放副本相比,会很快地降低整机性能。

这并不是说您不能在关卡中使用各种不同的静态网格物体,绝非此意。只是过度

地使用会导致性能大幅下降。过度具体是指什么程度呢?这和您电脑的性能规格

有关,还要基于以下因素:网格物体上接受多少动态光照,网格物体上使用多少

材质,每个网格有多少个多边形,以及很多其它的因素。

使用UnrealEd的图元统计浏览器,您就可以按占用内存量对关卡中的资源进行

排列。当您发现关卡的速度稍慢时,您可以打开电子数据表式窗口,按“占用资

源大小”排列,就可以看到每个资源的占用系统资源的情况了。占用资源最多的

排在第一。如果速度慢,并且静态网格物体以内存占用量为标准排在了数据表的

前面,那么就是特别提醒您得取消一些当前正在使用的静态网格物体,或减少它

们的复杂度(即减少多边形的数量和使用的材质数量),或根据其它因素做出相

应的调整。在“优化”一章中,我们将进行更多关于图元统计浏览器的讨论。

图1.19——图元统计浏览器可以帮助您查看是否在关卡中使用了过多的静态

网格物体。

动画与骨架网格物体

游戏人物并不是(典型的)静态网格物体。这些角色通常被称作具有骨架网格物

体,即由数字化骨骼进行变形得到的网格物体。这些网格物体是在外部3D软件,

如3ds Max和Maya中创建的。网格物体在此创建并添加骨架――这一过程称

为“骨骼绑定”。然后将这些网格进行动画处理,使它们看起来像在奔跑、跳跃、

射击、扭胯,或其它在游戏交互中需要的动作。

这些网格物体和它们的动画都保存在文件包中。实际上,动画是以另一种资源类

型保存的。这样带来了一个很大的好处,具有类似骨骼结构的游戏人物可以相互

使用对方的动画序列。这不仅简化了对角色进行动画处理的过程,实际需要加载

到游戏中的动画序列数据也大大减少,这样,就可以释放宝贵的系统资源。在“骨

架动画”一章中,将对动画进行讨论。

外部扩展工具

现在,您已经大概知道了要构建您的Unreal世界,需要哪些东西。但还是有一

个问题:到底需要什么去创建他们呢?本节将向您介绍一些可以用来创建游戏资

源的工具。正如您所看到的,很多您需要的资源都要在外部软件中创建。但是,

请记住,以下列表并非所有工具的总计,也不是必须使用的工具列表。这只是一

个大体上的框架,提供了用于完成特定的任务的一些最常用的软件包。

UnrealEd(Unreal编辑器)

如果您要构建《Unreal》的关卡,您迟早会使用到UnrealEd。UnrealEd是创

建地图的核心工具,负责在地图上添加网格,创建材质,利用已录制的声音创建

音效,等等。它也是唯一能打开并浏览Unreal文件包内容的软件。请记住关键

的一点,您不能使用UnrealEd来创建3D物体,例如静态网格物体或骨架网格

物体。您也不能利用它来创建贴图或声音文件。本书着重介绍在UnrealEd中,

使用外部软件创建的资源来生成丰富多彩的游戏元素。

图1.20——UnrealEd用户界面。

3D软件

既然Unreal Engine是一个3D游戏引擎,您当然会在一些地方用到三维资源,

例如,角色或其它骨架网格物体,以及静态网格物体。当今市场上有大量的3D

软件完全可以创造出Unreal Engine3所需要的内容。其中有两个关键性软件

是最常用的:3ds Max和Maya。它们都是由Autodesk公司开发并发售的产

品。您可以在下面的网页上找到关于这些软件更多的信息,或下载试用版本:

/。

图1.21——3ds Max用户界面。

贴图软件

要制作游戏中的材质所需要的贴图,您需要一些专门的贴图制作软件。常用的软

件包括Adobe Photoshop或Corel Painter。它们都提供了一些功能,可以利

用照片或现有贴图,也可以自行绘制。

还有其它的一些软件,有的软件允许直接在模型表面进行绘制,例如Pixologic

公司的ZBrush。这是很强大的一款软件,不仅允许创建贴图,甚至可以建立包

含上百万多边形的网格,用于生成网格所需的高精度法线贴图!

图1.22——在Photoshop中可以对贴图进行编辑。

Collada

现今,用户可以选择如此众多的3D制作程序,但Unreal Engine3只能识别一

种格式以进行信息传输,如何使用户免去在不同软件间转换格式的繁琐又能自由

选择任意一种应用程序来制作Unreal游戏的资源?Unreal Engine3支持

Collada文件格式,它拥有适用于市面上几乎所有3D软件的插件版本。可登录

获取更多关于Collada的信息或下载最新版本的Collada插件。

图1.23——Collada为3D资源提供了一种统一的格式。

Sound Programs

UnrealEd无法录制音频文件,因此您需要其它的软件来获取音效,并将它们转

换为WAV文件,这样才能将其导入UnrealEd SoundCue Editor并转换为

SoundCue资源。目前有很多软件都可以帮助您完成这件事。实际上,最简单

的方法就是使用windows自带的录音机软件也可以将加载的文件转换为WAV

格式。

图1.24——Adobe Audition。

然而,如果您需要更为专业的环境来制作音效或音乐,可以考虑使用索尼公司

Sound Forge或Adobe Audition来创建自己的音效。无论您选择哪种软件,

请确认可以对声音波形进行编辑,这样您就可以去掉音效末尾十分细小的停顿,

使各种效果间的混合简单易行。在UnrealEd的SoundCue编辑器中,您可以

编辑音调和音量。

培训资源

许多资源创建软件都需要大量的技巧,并非从一开始就会使用的。因此,很多满

怀信心的游戏设计师还需要一些培训帮助他们上手。在很多地方都可以找到关于

3D软件和贴图制作的培训。例如,3D (设计师之家)网站中有数

百小时的免费视频教学录像可供下载,也可以购买专业级的视频教学。

3D Buzz小组从事在线3D教学业务已有5年了,它与Epic Games紧密合作,

负责制作60+小时的教学视频。该视频与《Unreal竞技场2004》DVD特别

版及该游戏的周年版本同时发布。

发布评论

评论列表 (0)

  1. 暂无评论