关卡设计的工具是什么?是引擎。这个答案简单明了。每个熟悉3D游戏的玩家,都会把UnrealDoom3Source这样的引擎挂在嘴边。不过,引擎到底是什么?

  我就以Unreal为例,解释一下引擎的构成与基本功能。

  所谓的“Unreal引擎”,实际上指的是“Unreal Editor”这个编辑器。游戏公司花钱买引擎,实际上就是买这一套基本编辑器的使用权与修改权,同时享受引擎开发公司的技术支持。这个编辑器是一个集成的编程环境,可以理解为3D MAX的部分功能加上一个集成化的C编程环境——虽然看起来很复杂,但是只要掌握了用法就会觉得很方便。这个编辑器也是程序组和设计组两组人马的区别所在,程序员们面对的是编辑器以下的底层工作,而设计师们要面对的则是在编辑器基础以上的设计工作。例如在我们UBI,程序员们基本上是与游戏内容无涉的。

  和如今绝大多数的3D引擎一样,Unreal引擎的基本设计概念是基于BSPBinary Space Partition,可以翻译作二进制空间区块)上面的。简单来说,一个BSP就是空间中的一个基本单位,例如一个立方体就是一个BSP。一个BSP可以是空心的,也可以是实心的;Unreal引擎的默认设定是整个空间都是实心的,然后用空心的BSP在实心空间中“挖”出可利用空间来。BSP的最大特点就是“简单”,为了绘图和计算方便,搭建BSP的时候都要使用尽可能简单的形状和结构。这是由于BSP本身全部都需要即时演算生成,如果结构复杂的话,有很多复杂相切的话,系统计算量会很大。

  对于比较复杂的物件,比如场景、摆设、人物等等,就不能使用BSP即时演算了,需要预先做好3D物体与贴图,放在内存中再由引擎读入。这种物件我们称作MeshMesh有两种:动态Mesh和静态Mesh。动态MeshAnimation Mesh)要和动画搭配,一般都是用来表现人物角色,这个部分由动画组负责制作;静态MeshStatic Mesh)就是那些没有必要做出动画的普通Mesh,一个游戏中绝大多数的摆设、物件都是这一类。Mesh按照种类分别在引擎中打好包,关卡设计师可以随时调用;如果关卡设计中需要什么特殊的物品,一般也会让美工打包加入其中。倘若是有特殊功能的物品,比如和主角或敌人有互动的Mesh,程序员还会给它们加上调用接口。但MeshBSP有一个相当大的不同:为了优化起见,一般Mesh都不会做碰撞计算(由于形状比较复杂的缘故)。如果是要做碰撞计算的物体,一般还要单独加上一层碰撞MeshCollsion Mesh)。碰撞Mesh基本上都比普通Mesh结构简单,而且不用贴图。

  当然,有很多游戏需要野外场景,有些还需要大量的野外场景,比如“幽灵行动”系列。在这种情况下,引擎提供了功能强大的地形编辑功能(Terrain Editor。和BSP不同,Terrain并不是方块,而可以完成比较复杂的地形结构,但相对地消耗资源也比较厉害。因为一个Terrain需要很多的贴图层和多边形来绘制,而且几乎总不能隐藏。所以,在大多数游戏中,你很难见到地形复杂的室外场景——至于背景远处的远景,一般都是用消隐面加上背景盒(Skybox)来完成。

  编辑器中和关卡设计相关的另外一个重要功能是放置ActorUnreal中所有的东西都被列属于Actor类之中,包括BSPMesh,但除去这两类之外还有很多其他的Actor,这些Actor往往和游戏内容相关。例如,NPC的移动需要有路点或者引导MeshNPC的自动掩护和行动,需要有CoverspotActionspot之类的东西;NPCAI需要有Script Actor;和玩家相关的重要位置,需要有判定点和目标点;游戏中的特殊音乐和音效,需要有声音Actor……在某些游戏(比如强调黑暗行进的分裂细胞)中,灯光也和关卡设计有很大关系。这些具体的内容要视游戏而定,但摆放的好坏却决定了一个关卡设计的优劣。关于摆放和AI,我会在下面专门谈到。

    (ai设定在A区域巡逻,再去B区,在A区放置Actor)chaos

  根据具体游戏的不同,引擎还有许多其它的功能,不过那都是细节问题。