Audio modding
After a long time, Audio modding is now possible (for Warhammer 3 at least!)
Wwise
The total war games uses an audio engine called Wwise. This is a very powerful, but complex system. If you want to audio modding, you also need to get a basic understanding of the tool.
WWise Naming
The first thing to understand, there is no names in wwise. When a wwise project is compiled (saved for use) the tool converts all the names into id strings. This is why the game has a ton of files called 9484940112.wem. At some point they were named Karl_Eating_Goblins.wem and so on, but that name is converted (hashed)
Wwise event structure
Everything in wwise starts with an event (apart from music).
There are two event types, Event and Dialog_event. After the event there is a chain of object that leads you to the actual audio played.
For example this basic event with will play a random sound from a collection of two.
Karl_Eating_Goblin_Event => Karl_Eating_Goblin_Event_ActionPlay => Random Container => Soundx.mp3, soundy.mp3.
They follow a basic pattern most of the time. Event => Action => Container (optional) => Sound(s)
The second event type is a dialog_Event. It has nothing to do with dialog, its a lookup table that results in container or sound object.
UnitVoiceActor | UnitType | SpottedFacton | Child |
---|---|---|---|
Orc_Female_1 | Ranged | Human | 123 |
Orc_Male_1 | Ranged | DarkElf | 456 |
OrC_Male2 | Melee | Orc | 678 |
When the even is triggered, the game sets a set of variables which are used to lookup the child node, which typically points to a Container which in turn points to sounds
Currently Dialog_Events can not be modded, but soon...
The last important bit is the ActorMixer object. This object controls who owns the sounds. Is it a UI sound, game sound, battle sound and so on. This is important to make the sound play as not all ActorMixer has their volume set at all times
Exploring Wwise in AssetEditor.
In AssetEditor there is a tool for exploring the audio data, called "Audio Explorer". This can be used to learn about how wwise works. It also allows you to find which ActorMixer Id you should use and what file to replace if you want to update the sound of something.
In the tool you get a list of all the events in the game. Under extra you can select if you want Events, Dialog_events or both. Picking one from the dropdown gives you the wwise object graph for the selected events.
In the example here, you see the "Evemt_battle_IND_Small_arms_dlc12_rattling_gun_fire_play_event". Somewhere in the game database or meta data files, there will be a reference to this name.
The event contains a play action, followed by a set of random containers. Why they are nested instead of one large, no one knows. But from this you can see all the sounds connected. If you want to replace a specific sound, this gives you the wav file to replace. The tool also allows you to preview the sounds.