游戏级设计师的设计工具
我以Unreal为例来解释一下引擎的组成和基本功能。
所谓“虚幻引擎”,其实指的是编辑器“虚幻编辑器”。游戏公司花钱买引擎,其实就是买了这套基础编辑器的使用权和修改权,同时享受引擎开发公司的技术支持。这个编辑器是一个集成的编程环境,可以理解为3D MAX的部分功能加上一个集成的C编程环境——虽然看起来很复杂,但是只要掌握用法就会很方便。这个编辑器也是节目组和设计组的区别。程序员面对的是编辑器下面的底层工作,设计师面对的是编辑器上面的设计工作。比如我们的UBI,程序员基本和游戏内容无关。
和当今大多数3D引擎一样,虚幻引擎的基本设计理念是基于BSP(二进制空间划分)的。简单来说,一个BSP就是空间中的一个基本单位,比如立方体就是一个BSP。BSP可以是中空的或实心的;虚幻引擎的默认设置是整个空间都是实心的,然后用空心BSP在实心空间里“挖”出可用空间。BSP最大的特点就是“简单”。为了方便绘图和计算,BSP的形状和结构应尽可能简单。这是因为所有BSP本身都需要实时演算生成。如果结构复杂,复切线多,系统的计算量会很大。
对于更复杂的物体,如场景、装饰、人物等。,BSP不能用于实时计算。需要提前准备好3D对象和地图,放在内存中,然后由引擎读入。这种物体叫做网格。有两种网格:动态网格和静态网格。网格(动画网格要配合动画,一般用来表现人物,这部分是动画组做的。网格(静态网格就是不需要动画的普通网格,一个游戏中大部分的装饰品和物体都属于这一类。根据类型在引擎中进行网格封装,可以被关卡设计者随时调用;如果在关卡设计中需要什么特殊物品,一般会让美工打包加入。如果是有特殊功能的对象,比如和主角或者敌人交互的Mesh,程序员也会给它们添加一个调用接口。但是Mesh和BSP有一个相当大的区别:为了优化,Mesh一般不做碰撞计算(因为形状复杂)。如果是做碰撞计算的对象,通常会单独添加一个碰撞网格(Collsion Mesh)。碰撞网格基本比普通网格简单,没有贴图。
当然,很多游戏需要狂野的场景,有些需要大量狂野的场景,比如《幽灵行动》系列。在这种情况下,引擎提供了一个强大的地形编辑器。与BSP不同,地形不是正方形,可以完成更复杂的地形结构,但也要消耗大量资源。因为一个地形需要大量的贴图图层和多边形来绘制,而且几乎无法隐藏。所以在大多数游戏中,你很难看到地形复杂的室外场景——至于背景的远景,一般都是用隐藏面和背景框(Skybox)来完成的。
编辑器中与关卡设计相关的另一个重要功能是放置Actor。虚幻中的一切都属于演员范畴,包括BSP和Mesh,但是除了这两个范畴之外还有很多其他的演员,这些演员往往和游戏内容有关。例如,NPC的运动需要航路点或导航网;;NPC的自动覆盖和动作需要类似Coverspot和Actionspot的东西。NPC的人工智能需要编剧;与球员相关的重要位置需要有决策点和目标点;游戏中的特殊音乐和音效需要音效演员……...在一些游戏中(比如强调黑暗的《分裂细胞》),灯光也和关卡设计有很大关系。这些具体内容取决于游戏,但落点的好坏决定了一个关卡设计的好坏。关于placement和AI,下面我会具体说一下。
根据具体游戏的不同,引擎还有很多其他功能,但那是细节问题。