Game Engine Architecture by Jason Gregory:1.7 工具和资源流水线(2)

本文介绍了游戏开发中关键资源的数据类型,包括骨骼动画、音频、粒子系统等,并探讨了游戏世界数据及其编辑器的设计,最后讨论了几种工具架构的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.7.4  骨骼动画数据
骨骼网格(skeletal mesh)是一种为了实现关节动画(articulated animation)的将网格绑定到骨骼层级(skeletal hierarchy)上面的网格类型。这种网格有时候也称之为蒙皮(skin),因为它是用“皮肤”把里面不可见的骨骼给包围起来。骨骼网络中的每个顶点都包含一份索引列表指出它绑定的是骨骼中的哪个关节。一个顶点一般还包含有关节的权重,指定每个节点对这个顶点的影响的大小。
为了渲染一个骨骼网格,游戏引擎需要这三部分数据:
1. 网格本身
2. 骨骼层次结构(skeletal hierarchy)(关节名称,父子节点关系还有这个节点绑定到网格时的原始姿势)
3. 一个或多个动画片断(animation clips),用来指明随着时间关节是如何运动的
网格和骨骼一般是由数字内容创建工具程序(Digital Content Creation App)作为一个数据文件导出来的。不过如果有多个网格绑定到一个骨骼时,最好把骨骼作为一个单独的文件导出来。动画一般单独导出来,以便让它在需要用的时候读进内存。不过,有的游戏引擎可以让很多动画作为一个文件导出来,有的甚至把网格、骨骼、动画合在一起导出在一个集成的文件里面。
一个没有被优化过的骨骼动画是一个4*3的矩阵流的样本,采样率为至少每秒30帧,对于骨骼中的每个关节都要如此(而它们经常有100个甚至更多)。这让动画数据天然就是内存使用大户。因为这个原因,动画数据往往采用一种高压缩的格式。压缩方式随着引擎的不同而不同,其中一些是私有的。没有一个用于游戏动画数据的标准的格式。


1.7.5 音频数据(Audio Data)
音频片断一般是由Sound Forge或者其它音频创作工具导出的,它有许多种格式和许多种不同的采样率。音频数据可能是单声道(mono),单体声(stereo),5.1,7.1或者其它多声道的情况。Wave文件(.wav)是很常见的,其它还有PlayStation ADPCM文件(.vag和.xvag)也是常见的。音频片断往往为了方便组织,读取进引擎,和作为流使用而打成包。


1.7.6 粒子系统数据(Particle Systems Data)
现代游戏使用非常复杂的粒子特效。这是由专注于作视觉特效的艺术家制作的。第三方工具,如Houdini,能够做出电影级的特效。不过大多数游戏引擎都没有渲染出用Houdini创作的特效的全部效果的能力。正因如此,许多游戏公司制作一个自定义的粒子效果编辑工具,用来制作能被引擎支持的特效。自定义工具往往还能让艺术家看到这个特效在游戏中真正将会是什么样子。


1.7.7 游戏世界数据和世界编辑器(Game World Data and the World Editor)
游戏世界是游戏引擎中所有的东西集中在一起的地方。就我所知,没有非商业的游戏世界编辑器(类似于Maya或者Max)。不过,许多商业游戏引擎都提供一个非常好的世界编辑器。
* 许多Radiant游戏引擎的变体被用于大多数游戏引擎,它基于Quake技术
* 半条命2(Half-Life 2)引擎提供一个叫做Hammer的世界编辑器
* UnrealEd是UnrealEngine的世界编辑器。这个强大的工具还可以管理所有能被引擎接受的数据类型的数据。
写一个好的世界编辑器是非常困难的,不过它对于任何一个好的游戏引擎来说都是非常的重要的。


1.7.8 一些工具架构的方法(Some Approaches to Tool Architecture)
游戏引擎工具集(tool suite)可能以很多种方式来架构。一些工具可能软件中的独立的一块,如图1.32所示。有的则是建立在被引擎所使用的低层级模块之上,如图1.33所示。有的工具则可能内嵌于游戏本身。如Quake和Unreal系统的游戏都有一个游戏中的控制台允许开发者和"自定义游戏制作者"(modders)(译者按,即类似于在魔兽的基础上制作的3C, Dota)在游戏运行时去调试和修改配置。
作为一个有趣和和独特的例子,Unreal的世界编辑器和资源管理器,UnrealEd,是内嵌于游戏引擎的。要运行这个编辑器,你用一个带有"editor"的命令行参数启动游戏。这个独特的构架如图1.34描述。它让工具有完全的能力去读取游戏引擎使用的所有数据结构,用以避免对于每套数据结构都有两份(一份给引擎用一份给工具)的这个常见问题。它也意味着没有编辑器的话游戏可以运行得更快(因为它已经在运行了)。内建在游戏中的编辑器,非常好的想法,由于编辑器本身是游戏的一部分所以比较好进行相关的开发。不过,像这样设计成内建编辑器的也有它的问题。比如,当游戏引擎死机了,工具也就不能使用了。因此,把引擎和资源工具的联系弄得太紧密也会降低开发速度。

Standalone tools architecture
图1.32 Standalone tools architecture


图1.33 Tools build on a framework shard with the game


图1.34 UnrealEngine's tool architecture

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值