游戏引擎:游戏引擎剖析( 6)

原文作者:Jake Simpson
译者: 向海
Email:[email protected]


第6部分: 声音系统音频APIs


声音系统
  由于人们玩游戏在种类和技术上进步声音和音乐近几年来在游戏中正逐渐变得重要起来(声音是个实际游戏可玩特点比如在Thief和其它同类游戏中听觉提示)现在 4声道环绕系统在游戏玩家宝库中是负担得起和平常给定空间声音噪音障碍和闭塞和动态音乐如今许多游戏使用这些提高玩家情绪上反应更多关注投入到这个领域就不足为奇了

  现在在PC竞技场中游戏玩家实际上只有种声音卡可以选择 -- PC声卡制造商创新公司(Creative Labs)Sound Blaster Live! 从旧时间个人计算机声音卡片制造业者有创造力中心. 多年来创新公司已经为DirectX提供了他们EAX声音扩展并且他们是发起新OpenAL(开放音频库Open Audio Library)创立者就如同OpenGL是个图形APIOpenAL像它起来听个声音系统APIOpenAL 被设计为支持大多数通常声卡许多特征而且在个特定硬件特征不可得时提供个软件Software替代

  为了更好定义 OpenAL我向创新公司Garin Hiebert询问了其定义:

  "这里借用我们 " OpenAL 规格和叁考" 个定义:

  OpenAL 是对音频硬件个软件Software接口,给员提供个产生高质量多通道输出能力OpenAL 是在模拟 3维环境里产生声音种重要思路方法它想要跨平台并容易使用在风格和规范标准上和OpenGL相似任何已经熟悉OpenGL员将发现OpenAL非常熟悉

  OpenAL API能容易地被扩展适应插件技术.创新公司已经把EAX支持加入到这套API了员可以用来给他们声音环境增加复杂反响比赛和障碍效果

  如同Jedi Knight II: Outcast 连同Eagle 世界/声音特征编辑器,Soldier of Fortune II 以这个新系统为特征什么是Eagle? 在介绍这个以前让我们讨论些其他系统并定义些声音术语


  另外个系统是Miles声音系统Miles是家公司它为你代码生产插件在充分利用每块声卡时处理所有必须到特定声音卡说话(比如Sound Blaster Live!系列或者老A3D声卡)它非常像个API前端捆绑了些额外特征在里面 在其他事物当中Miles让你存取些事物像MP3解压缩 它是很好解决方案但像任何事它花费金钱并是你代码和硬件的间额外虽然对於快速声音系统制造它非常有用而且他们有段时间了因此他们确精通自己业务


声音术语
  让我们开始障碍和闭塞它们听起来但不是这样闭塞基本上意谓着个声音在播放时听者在他们的间有些闭合障碍物

  比如说在NOLF2个屏幕镜头上你听到房子里面坏蛋声音你能听到他们但是他们声音相当低沉而沙哑障碍是相似但是你和声音的间障碍物并不是闭合个好例子就是在你和声源的间有根柱子由于房间中回声你仍然听得到这个声音但是它和声音直接传递到你耳朵里是区别当然这确实依赖于知道在你耳朵和声源的间直线上是什么而且根据房间大小声源到你距离等等需要处理能变得相当耗时后面我们将会谈到跟踪--足可以说它时常是比较慢幀速率原因Quake III 里面A3D 代码做了这些事情关闭这些选项通常能够提高幀速率Tribe 2 是这种弊病另外个受害者关闭3D声音选项则你幀速率立即好转这在你考虑Tribes世界有多大和你能看见多远时有意义

  接着是声音物质特征大部分声卡可以让你能够用可定义过滤器作用于声音从而修正播放声音例如在水下或者在个布料遮盖房间中或者在个长走廊中或者在歌剧院听到声音有着很大区别能够根据你所处环境改变你听到声音方式是相当不错

  我们回到Eagle… 这是个编辑器允许多数第人称射击游戏地图设计者将他们地图导入到这个工具然后构造简化几何形体来为实际游戏引擎中EAX代码产生个声音地图其思想是你不需要个真实图形地图复杂几何形体来模拟声音环境你也能够给产生简化地图分配声音物质这样声音环境就能够动态地改变我亲眼目睹了这在Soldier of Fortune和Unreal Tournament上示范确实相当引人注目 我这在财富和 Unreal 巡回赛和它军人上真对示范是证人相当醒目. 当你跳入水中时听到所有声音改变这是个非常令人沉浸经历

  好让我们继续吧

  对于游戏机由于静态硬件各种可能性会更受限制 — 尽管在PlayStation 2和Xbox上硬件相当不错我说限制仅仅是指扩展而不是它所能够做点也不会感到惊讶看到这些游戏机上游戏很快支持杜比数字5.1(Dolby Digital 5.1)输出Xbox 由于它 MCP 音频处理器能够将任何游戏音频编码为5.1并且游戏不需要特别编码就能利用这个特征杜比(Dolby)把ProLogic II 带到了 PS2 上并和Factor 5合作为GameCube游戏实现了ProLogic II在 Xbox 的上Halo, Madden 2002 和 Project Gotham Racing等游戏都有5.1杜比数字音频内容DTS最近也为 PS2 游戏开发者发布了SDK为这个平台上游戏带来了降低了比特率DTS音频版本


位置声音--个复杂世界
  现在有些很少有处理声音空间化问题我说是把声音放在个真实3D世界中有 4个扬声器在你周围是个很棒开始但这仍然只是在 2维方向在你上方和下方没有扬声器你没有真正获得3D声音些声音调制过滤器试图解决这个问题但实际上没有真实东西代替物当然真实地大多数游戏多半只是在 2维方向上因此这仍然不是太大问题

  实际上任何声音系统最重要特征的是把声音混合在根据你所处位置空间中声音位置每个声音音量大小旦你决定了实际上你能够听到声音然后你必须混合这些声音通常声音卡自己处理这些这首先是声音卡存在主要原因然而外面有些引擎决定首先用软件Software做次‘预混合’直到你着眼于点点历史以前这并没有真正地带来多大意义

  当声音卡最初问世时候有许多区别混合思路方法些声卡可以混合8种声音些单位16种些32种等等 如果你总想听到16种可能声音但你不知道声音卡是否能够处理那么你回到了尝试和试验道路上 — 就是你自己用软件Software混合这实际上是Quake III声音系统工作方式但提个问题:"Quake III是为A3D和Sound Blaster Live!声卡世界发布这比以前更加标准化为什么还这样做?" 这是个好问题实际上Quake III声音系统几乎每行代码都和Quake II中声音系统而且Quake I甚至Doom也是这样你想向上直到 A3D 声卡和 SB Live! 声卡许多年来声音系统需求没有真正地改变过两个扬声器 2维方向音量简单地随着距离减小从Doom直到Quake III没有发生太大变化而且在游戏行业中如果不是迫不得已别理会它

  通常你会仅仅使用DirectSound为你做声音混合它会可以使用声音硬件或者转而依靠软件Software很多地方就像DirectX为3D显示卡所做在 90% 声音情形中依靠软件Software混合对你幀速率没有真正发生太多区别当DirectSound在些狂热编码者眼中甚至还不是丝光线时Doom引擎就已经产生了它从来没有得到更新过它从来就没有真需要更新

  当然你可以使用 SoundBlaster Live!声卡些聪明特征例如房间回声特性: 块石窟个礼堂个巨穴, 个足球体育馆等而且你真应该使用由硬件提供混合器毕竟那是它存在这种思路方法个不足的处是本身时常无法获得混合结果混合是在声卡内部完成而不是在主存如果由于某种原因你需要看到产生音量你是运气不好


Music Tracks in Games(游戏中音轨)
  我们没有过多谈到游戏中音乐生成传统有两种思路方法种是简单音乐 .wav 文件(或同等物)它被预先制作做好准备运行和最小忙乱然而这些在内存和回放时间方面很昂贵第 2种方式用预设样本编码MIDI音轨这时常比较节省内存但缺点是必须同时把些声音混合在因而会把声音通道用光

  动态音乐就是根据在游戏中目睹行动改变你音乐能力比如探险用慢节奏音乐战斗用快节奏音乐预先制作音乐个困难的处是要合拍因此你可以从段音乐渐弱到另段音乐这对于MIDI音轨比较容易尽管时常你足够快速地淡出或者段音乐在播放另段音乐的前已经消失了你能侥幸不被察觉

  在我们离开这个主题的前顺便说值得是存在些公司专门为你游戏创作特定意义音乐FatMan(www.fatman.com) 就是家这样公司音乐可能比其他别东西更加容易外包这是他们存在方式

  最后游戏现在事情自然是MP3格式允许巨大11 :1声音样本压缩然而在送到声音卡的前只花费CPU很少时间解压缩当我在Rave Software工作时在Star Trek Voyager: Elite Force 中我们设法用MP3在张CD上面完全支持 3种语言仍然为较多图形留有空间主要地我们 MP3 只用于非玩家角色(NPC)语音由于游戏全部音频效果MP3流和动态解压缩超出了硬件处理能力虽然在将来这是肯定可能比较新格式如来自 Dolby AAC 和来自微软WMA以将近两倍MP3压缩率提供了相等或者更高音频质量(实际上比特率)可能应用到将来游戏中

  以上是这章节内容下面将是网络和连线游戏环境开发 
Tags:  游戏搜索引擎 游戏引擎启动异常 什么是游戏引擎 游戏引擎

延伸阅读

最新评论

发表评论