在将 Wwise 声音引擎集成到《Cube》中时涉及以下任务:
《Cube》最初由 Wouter van Oortmerssen 开发,是一款开源的第一人称单人或多人射击游戏。您可以随时从 Cube 网站下载 (http://cube.sourceforge.net/)。为了满足 Wwise 集成包的相应需求,我们对从 Cube 网站下载的版本做了以下修改:
为使用 Wwise 声音引擎,改写了现有声音代码。
将音频内容移到了 Wwise 工程中。
移除了对其他库(SDL、SDL_image、libpng)的依赖。
添加了额外的音频(如脚步声)。
为了顺应以上更改,对有些游戏配置和内容文件做了修改。
声音引擎中注册了两种游戏对象:
指向 baseent 结构体的指针。这些游戏对象是游戏世界中的移动实体:玩家、怪兽和投掷物。
虚拟游戏对象(编号为 64-127)。这些游戏对象用于不与移动实体绑定的 3D 声音(如物品生成)。
音频整合的核心代码存放在 <WwiseRoot>\Cube\cube_source\src
文件夹中的以下文件中:
Sound.cpp
– 包含所有访问声音引擎的代码。
Protos.h
– 包含声明的公共函数。
整合过程涉及以下类型的声音:
怪兽声音:
每个角色都有关联的疼痛、死亡和脚步声 Event。详请参见 monster.cpp
中的 monstertypes[]。
脚步声 Event 通过 monsterfootstep()
函数发送。另外,其还会设置与角色脚下地面材质对应的 "Material" Switch 以驱动 Switch Container。
物品有关联的拾获 Event。详请参见 entities.cpp
中的 itemstats[]。
魔法音效:
每种魔法都有关联的 Event。详情参见 weapon.cpp
中的 guns[]。
投掷物有飞溅 Event(S_FEXPLODE、S_RLHIT)。
在启用四倍伤害时投掷 Ice Gem 还会发送 "S_ITEMPUP" Event。
网络声音:
有些 Event 还要转到服务器以便通过网络播放声音(由 snd_clientevent()
处理)。
其他声音:
若要查找游戏当中发生的所有其他声音 Event,请在代码库中搜索 snd_event()
调用。