Alien: Isolation's audio runs through Wwise. Scripts don't reference audio files — they fire sound events by name, and Wwise decides what that means: which take to play, whether to pick at random, which bank the audio comes from.
Whenever you set a sound event on an entity parameter, OpenCAGE opens the sound event selector. That window has a player along its bottom edge, so you can hear what an event actually sounds like before committing to it — and export or replace the audio behind it.
Three ideas are worth having straight before you start changing things:
The player exposes every variation it managed to resolve, which is the only way to hear what an event will really sound like in the game rather than one arbitrary take of it.
The first time you open the selector, OpenCAGE starts indexing the game's soundbanks in the background so the first sound you click is ready rather than waiting on a cold index.
Two entities do the work, and you generally need both:
sound_event parameter and trigger it; that parameter is what opens the selector described on this page.Which bank to load is exactly what the Metadata button tells you — select the event, read off the soundbank it's listed in, and point a SoundLoadBank at that. See Soundbank Metadata.
Banks that are permanently resident don't need loading; those are configured separately under Permanent Soundbanks.
Character dialogue is fired the same way — through sound events — but by entities that also know which character is speaking, so the line comes from the right place and drives the right face:
character to speak it (plus an alt_character), and like Sound it inherits its sound_event from SoundPlaybackBaseClass. speech_priority decides what it interrupts or is interrupted by, and queue_time is how long it will wait for a slot before giving up. Fires on_speech_started.character_01…character_05, each with an alt) and up to ten lines. Each line has a line_NN_event for the sound event, a line_NN_character naming which of the five slots delivers it, and — from the second line onwards — a line_NN_delay for the pause before it. Fires on_script_ended when the last line finishes.Use Speech for a barked line or a one-off; use SpeechScript for back-and-forth conversation, where hand-wiring a chain of Speech entities and delays would be far more work.
Both still need their bank loaded, so the Metadata → SoundLoadBank step above applies to dialogue as much as to any other sound.
Select an event in the list and the player fills in. Controls, left to right:
Audio is decoded on demand rather than up front, so a long sound may take a moment before it starts.
Export writes the variation currently selected out as a .wav. The file is decoded from whatever the game stores it as, so you get plain uncompressed audio you can open anywhere.
Exporting waits for the decode to finish first, which for a long sound is a few seconds — the button greys out while it works.
Note that this exports one variation, not the whole event. If an event has eight footstep takes and you want all of them, export each in turn.
Replace swaps the audio behind the selected variation for a .wav of your own. OpenCAGE encodes it into exactly the form the game's decoder expects and writes it into the soundbanks that hold it.
Everything is checked before anything is written. If the audio can't be imported, you're told why and nothing changes — you won't be left with a half-edited soundbank. If it can, you get a summary first:
Confirm and the replacement is applied.
Replacement audio must be a .wav. A few things to keep in mind:
The same audio is often shipped in several banks at once, because banks are loaded per level and a sound used in three levels lives in three places.
A replacement therefore updates every copy the game ships, not just the one you were listening to. If it only changed one, the old sound would come back in whichever level loaded a different bank — which reads as a bug in the game rather than an unfinished edit.
If some copies write and others fail, OpenCAGE says so explicitly rather than reporting success, since a partial replacement leaves the sound changed in some places and not others.
Sound edits are global. Soundbanks aren't per-level data — replacing a sound changes it everywhere in the game, for every level, and there's no per-level override. Take a backup before doing this at scale.
With an event selected, the Metadata button lists every soundbank the event appears in. That tells you which levels can actually fire it — an event that isn't in a bank your level loads won't play, however correctly the script is wired.
This is where you get the bank name to give a SoundLoadBank entity, so the event you're about to fire is actually loaded — see Playing a Sound in a Script.
If the event isn't listed in any soundbank at all, it says so. That usually means the name is wrong or the event belongs to content that isn't shipped.
Which banks are permanently resident is configured separately — see Permanent Soundbanks.