在自由度高的地方,采用非线性的程序设计呼吸(设置state等进行切换);
在线性化的叙事流程中(例如实时渲染的动画),采用线性的录制的呼吸声,在演员录制动捕的时候进行同期录音。
通过在SEQUENCE中添加marker点,marker触发后,会播放线性的声音,播放结束后会进入程序性的声音,直到触发下一个marker。
通过监测Ambience 的RMS值,来控制dialogue的值,然后再反过来控制对话对ambience 的duck值。
Project Acoustics基于Triton技术,这是一个先进的声学模拟引擎,能够处理复杂的三维空间中的声音传播和反射。
支持Untiy\Unreal以及wwise.
https://www.audiokinetic.com/zh/blog/loop-based-car-engine-design-with-wwise-part-1/
非必要情况下,不会添加新的总线,会让整体局面更复杂。
以减法为主,极少做加法
创建总线的一些情境:
检测的电平值本身的意义不是特别大,主要是利用meter值去进行其他操作。
例如对白,会分别检测总的,以及低中高三个频段的电平值。
通过电平检测值实现。
主要应用场景:
![image-20250215162814960]通过减法增强效果。
通过战斗音效的电平检测,来降低对应混响的音量,以达到增强打击感的效果。
城市声音景观组成:
第一部分(可见的):环境点声源、行人、载具、其他变量(天气或者犯罪事件)
第二部分(不见的):环境音基调,远距离区域声音,海岸线\水面声音
每个不同的区域有独特的环境音基调;
需要大体积声源;
内容随高度进行声响摆位。(在高处时,声音大部分在下面,通过RTPC控制。
)
中远距离环境音,中远两个距离分别有5个发声点环绕着玩家,与玩家保持固定的偏移,只检测了水平的距离。(无论你高度如何,中远距离环境音不会改变)
具体的声音内容通过State和RTPC进行调整。例如,水上的监测点则不会发出声音。
DDS屏蔽值(shelter value)
点声源与听者的屏蔽程度,从听者向DDS点声源进行射线检测,仅作用于水平面。
邻近区域
海岸线周边样条曲线,在曲线上播放海水拍打音效
最终采用组合解码的方式,改善了内存与磁盘的使用空间,音频保真度没有妥协,根据声音类型进行解码方式选择sharesets:
Ambience_Beds
Ambience_Default
Ambience_Rain
CHR_Default
Cine_Atmos
Cine_Default
Cine_Dialogue
CS_Default
Default
Dialog Default
Dialog Screen Reader
Foley_Cloth_Footsteps
Foley_Water
Hero_Abilities
LFE_Discrete
Haptics_Default
Music_Default
NPC_Weapons&Attack
Objects_General
Objects_Physics
UI_HUD
Vehicles
Vehicles Engines
Walla Default
Weapons
Weapons_Tails
ATRAC9:短音效、数量少的声音 - UI、物品、打斗、技能等
WEM Opus:长文件、数量多的 - 对白音乐、环境、CG贴片等
Vorbis:可能会同时大量播放的 - 载具,雨声等
流播放的工作原理
分段加载:
音频文件被分成多个小数据块(chunks),播放时仅加载当前需要播放的部分到内存缓冲区。
动态缓冲:
在播放过程中,后台持续从存储设备读取后续数据块,填充到内存缓冲区,确保播放的连续性。
内存释放:
已播放完的数据块会被及时释放,避免内存占用过高。
为什么需要流播放?
节省内存:
大型音频文件(如长达数分钟的背景音乐)直接加载到内存会占用大量空间,流播放仅保留当前播放的片段。
支持大文件:
适用于开放世界游戏、电影化叙事游戏中需要长时间播放的高质量音频。
动态内容切换:
支持无缝切换不同音频片段(如根据游戏场景动态调整环境音效)。
减少加载延迟:
无需等待整个文件加载完成即可开始播放。
流播放的典型应用场景
背景音乐(BGM):
长时播放的高保真音乐,尤其适用于开放世界或剧情驱动的游戏。
语音对话:
角色长篇对话或剧情旁白,避免一次性加载数百MB的语音文件。
环境音效:
持续的风声、雨声、城市噪音等动态环境音效。
动态音乐系统:
根据玩家行为实时混合不同音轨(如战斗音乐过渡到探索音乐)。
流播放的优缺点
优点:
显著降低内存占用。
支持超大音频文件(如数十分钟的音乐)。
灵活应对动态内容需求(如随机事件触发的音效)。
缺点:
增加磁盘I/O压力,可能影响性能(需优化读取策略)。
需要管理缓冲区,防止播放中断(如硬盘速度不足时)。
对音频格式有要求(需支持分段解码,如.wav、.ogg等流式编码格式)。
实现流播放的关键技术
音频中间件支持:
Wwise、FMOD等工具提供流播放接口,简化开发流程。
例如在FMOD中使用 FMOD_CREATESTREAM 标志创建流式音频。
引擎集成:
Unity通过 AudioClip 的 LoadType 设置为 Streaming 实现。
Unreal Engine 通过 Sound Wave 的 Streaming 选项启用。
数据预读取与缓冲:
设置合理的缓冲区大小,平衡内存占用和读取频率。
使用多线程避免主线程卡顿。
File Packager 负责将启用了流播放(Streaming)的 音频文件 打包成外部文件(如 .pck 或 .bnk),这些文件独立于 SoundBank 存在。
实际音频数据(如 .wav、.ogg 文件)。
流播放所需的块(Chunk)索引信息。
运行时功能:
游戏通过 Wwise 引擎直接从这些外部包中按需加载音频数据块,实现流播放。
SoundBank 主要存储的是 音频事件的逻辑定义 和 音频资源的元数据,例如:
事件(Events)和动作(Actions)。
音频对象的结构(如容器、随机播放规则、混合总线参数)。
非流式音频数据(如果音频未启用流播放,则音频文件会被直接打包进 SoundBank)。
对流式音频文件的引用(如果音频启用了流播放,SoundBank 仅存储其路径和元数据,而非实际音频数据)。
减少运行内存的占用
EQ并不适用于音频对象
3D音频对象会大幅提升CPU的使用率
将音频对象留给某些特定的声音,例如环境声或者敌人。
3D Audio Bed Mixer plugin会节约大量内存。
减少API调用。
在不需要时动态bypass掉插件或者提前离线渲染好。
先提前管理好声音的数目,再进入WWise,不要过度依赖于playback objects limits。
Wwise中设置目标平台的最大发声数。例如一百个。
好好利用Wwise的profiler,来进行性能分析。
实时混响:覆盖全地图建筑结构,Matrix Reverb + ReverbTime\Reverb Energy RTPC
卷积混响:表现特征空间,如落日寺,自研卷积混响插件、游戏场景的卷积采样、特定区域触发
卷积混响
就是在真实场景采集到的脉冲信号(IR),能够更真实的还原场景空间特征。
为了节省手机性能,只判断了敌我之间是否有障碍物。损失频段但不损失音量(与视觉提示相配合)。
不与基础音频管线耦合。手游音频开发首要目标是项目能运行跑起来,而音频效果的表现优化是在其后面的,因此不能与基础音频管线冲突或者有关联。
开销小并且稳定。在不同机型上都能有稳定的表现。
核心:生成一个与游戏内容实时匹配的AudioScene,在audioscene里面计算模拟最终描述空间音频渲染所需要的数据。
早期反射、后期混响、尾音
现成技术方案:
早期反射参数需求:反射距离、反射强度、瞬态性
后期混响参数需求:RT60、空间复杂度
尾音参数需求:空间开放度
最终采用方案:
基于icosphere体投影构建一阶声学空间
相较于体素,不会overdraw,计算更为高效。
体投影优势:
每个面彼此独立,可以利用多线程
根据算力的优先级程度可以分配不同朝向的算力分配,也就是面可以细分或者退化。
icosphere优势:
可以分割出top、bottom、middle三个部分。
系统优化:
所有计算job化:对于多线程计算任务的抽象。会给每个job分配最低权重,强制让其到小核心运行。
利用temporal;
无效的job剔除;
算法优化:
halton-sequence替代random。
三角形索引。
不规则体积估算。
运行框架:

简化曲线
使用ringbuffer实现早期反射:
内存可控:按照最远反射距离30m,48KHZ算≈0.017MB
开销:取决于最大echo数量,手游是三个。
Ringbuffer按需激活:
最多用三个反射的Emitter 表现全部早反:左右中
复杂场景:采用trigger
按照wwise官方说明书进行。
设计考量,将战斗音效接入atmos,其他音乐环境音效走passthrough,避免影响战斗中的声音。
需要解决的问题-掩蔽
很多声音同时播放,重要的声音听不清楚(掩蔽效应)
解决办法:闪避系统ducking
地狱潜兵中,采用HDR,设置优先级:确定哪种声音更重要?
爆炸声可能比较大,但是附近敌人的声音更重要。——响度≠重要性。
优先级设定
首先,将声音进行分类,详细程度可以视情况而定。
优先级映射:什么声音对玩家比较重要,由低到高进行排序。并且,排序低并不代表不重要,而是相对不重要而已。
根据游戏声音分类和优先级排序,进行声音闪避系统设计。
详情参见wwise手册。
表现力与性能的均衡与取舍:最大限度地提升单位资源的音频表现力。
环境声交互性:全景声的下混,俯仰角的环境声发生变化。仰角-天空;俯角-地。
-音频程序部分
车辆运动的声音构成:先进行细分,再部分进行整合。
车辆录制流程:发起录音-预约车辆(私人车主/汽车厂商…)-预约场地-进行录制(赛场跑道录制或者室内马力机录制)。麦克风可承受声压级要大。
轮胎声音的录制。轮胎声音的分类。录制中,赛道漂移音色区别大,定圆漂移稳定的LOOP声。录制过久,轮胎会被磨平,音色会有差异。选择电车(避免排气、引擎等声音的干扰),选择后驱,更好漂移。
轮胎声音后期处理问题:一个样本还是多个样本(性能与表现的取舍);随机样本还是粒子合成(sound seed grain)。轮胎与地面材质。
录音方案的选择:
XY立体声、double MS多通道:近咪芯收音,无相位问题,便于后期处理。
ORTF立体声:接近人耳的听觉感受,用于CG制作。
枪麦录制:补充点声源。
音乐与交互音乐
文化与节奏感。