程序员角度理解的 Wwise

本贴最后更新于 1182 天前,其中的信息可能已经时移俗易

Wwise 概述

  • 强大的游戏音频中间件
  • 游戏程序员与音频艺术家解开耦合,各司其职
  • 强大的混音台
  • 较多的内存及 CPU 优化手段
  • 内置的多语言支持
  • 多平台支持,每个平台可以独立调整各种设置

程序员须要了解的

事件 Event

  • 这是游戏引擎发送给 Wwise 引擎的 Game Call,告诉 wwise 游戏内发生了某些事情,通常用来触发/停止声音,或者修改声音属性
  • 两边的事件名称必须对应,对象名称不区分大小写

游戏同步 GameSync ,包括如下几个方面

1,开关 Switch

  • 由游戏引擎发送,用来表示游戏内以条件来决定的情景,如:切换昼夜、地表类型等
  • 使用切换开关组(Switch Group)来实现多选一,类似于游戏内的 Toggle Group

2,参数控制 RTPC(Real Time Parameter Control)

  • 一般表示游戏中在一定范围内连续变化的信息,例如背景音乐音量、音效音量控制
  • 可以设置数值范围,又游戏引擎传入
  • 例:第一人称游戏中,玩家血量越低,心跳声越剧烈

3,状态 State

  • 可用于标识个体的状态,例如玩家状态,生存、死亡、陆地上、水中等等
  • 个体处于不同状态,则可以使用不同的声音
  • 例:玩家从濒死状态切换到死亡,则可以心跳声由十分快速,逐渐减弱为 0

4,触发器 Trigger

  • Wwise 中根据游戏中发生的事件来自动触发的反馈方式
  • 例,忍者拔出武器时,可以在已在播放中的动作音乐上插入强调类型的音乐效果,以增加场景的感染力

音频艺术家专业领域

随机化 Random Sounds

  • 随机属性 Pitch 音高,每次播放一个声音都会随机一个范围内的音高属性
  • Random Container,随机容器,每次播放,在容器内随机一个声音进行播放

序列化 Sequence Sounds

  • Sequance Container 序列容器
  • 可以在序列容器里包含普通声音,静音,甚至随机容器
  • 可以多个随机容器拆出首声尾声,再用序列容器播放,用最少的音频资源做最多的变化

3D 空间化 3D Spatialization

  • 衰减 Attenuation 指定衰减曲线后,表示根据距离作出何种衰减
  • 可以指定位置或位置 + 朝向
  • 因为声音的高频分量会随着距离增加快速衰减,所以一般配合低通滤波器,也就是低频
    分量更容易通过
  • 声锥衰减 Cone Attenuation 可以理解为喇叭,越正面声音越大,越背面声音最小

声相偏移 Speaker Panning

  • 2d 剧情对话等声音,是不适合使用 3d 定位的,这种情况可以使用声像偏移技术来实现
效果器

可以给声音单独或批量加入效果,例如混响等效果

声音选角器 Soundcaster

  • 用来调整和处理相互关联的声音,例如主角所有动作相关的所有声音相互影响是否合适,例如,跑动中开枪的主角,枪声和脚步声是否合理

调音台 Mixing Desk

  • 声音艺术家专业

以及更多专业领域......

优化

1,内存优化

  • 控制 sound bank 粒度,不需要的语音包不加载,例如以关卡或角色为单位划分
  • 减小音频包的体积,例如修改音频格式 wav->mp3(但是会降低声音品质,但很难避免)
  • Conversion Setting,设置共享集批量转码,是否立体声,采样率,Vorbis 格式等设置
  • 关于格式,在我心目中 iOS 使用 mp3 格式,Android 使用 Vorbis 格式(也就是 ogg),会是在压缩比、解压效率和效果中比较均衡的设置
  • 启用/关闭不重要的声音(会降低品质和随机性)
  • Streaming,流式播放,大量降低内存,但有延迟,适合背景音乐和对声音及时性不那么敏感的游戏

2,CPU 优化

  • 项目级 Volume Threshold 可以缩减动态范围,裁剪一些声音
  • 项目级 Max Voice Instances 设置同时播放的数量
  • 物体级 Playback Limit ,可以给物体加最大限制,可以是 PerObject 或 Global
  • 优先级系统 Priority,优先级越低,越会被优先裁减掉

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...