Wwise Sounds
Import pack-relative PCM16 WAV files as Wwise audio events for ADA voice-over and finite 2D playback.
type: sound loads WAV files from your pack at runtime and creates real UAkAudioEvent assets.
Use these events in ADA messages or other properties that accept a Wwise audio event. Pack authors
and players do not need Wwise Authoring installed, and do not generate banks themselves.
type: soundsounds: - id: AdaWelcome file: audio/welcome.wav name: ADA welcome volume description: Controls playback volume for the welcome message. category: Voices subCategory: ADAfile starts at the directory containing this pack’s pack.yml, not at the YAML file’s directory.
Distribute the WAV alongside the YAML. Absolute paths, paths outside the pack, and symbolic links
that resolve outside the pack are rejected. The .sound.yml filename can supply the type when a
file contains only one document; every document in a multi-document file needs explicit type.
Accepted audio
Section titled “Accepted audio”| Property | Supported value |
|---|---|
| Container | Little-endian RIFF/WAVE (.wav, case-insensitive extension) |
| Encoding | Uncompressed signed PCM, 16 bits per sample |
| Channels | Mono or stereo |
| Sample rate | 8000–192000 Hz |
| File size | At most 64 MiB per file |
| Playback | Finite, once, 2D, no spatial attenuation |
| Volume routing | Pack setting × local Audio option, then Master Audio Bus |
PCM16 WAVE_FORMAT_EXTENSIBLE files also work when their valid-bit count and channel mask match mono/stereo PCM. Float WAV, 8/24/32-bit PCM, MP3, OGG, compressed WAV, streaming, loops, effects and spatial attenuation are unsupported. Export recordings as 16-bit PCM WAV; 48000 Hz is a useful choice for voice-over. Sounds are held in memory while loaded, so keep long recordings small.
| Field | Required | Meaning |
|---|---|---|
id | Yes | Generated event ID and stable volume-setting identity |
file | Yes | Pack-relative PCM16 WAV path |
name | No | Exact slider label; defaults to <id> volume |
description | No | Slider help text; defaults to generated playback-volume guidance |
category | No | Section name; defaults to KDataForge sound events |
subCategory | No | Second grouping label; displayed as <category> / <subCategory> |
Optional text fields must be non-empty strings when present. Document-level conditions, debug
and include use their normal grammar. id uses the same token rules as other generated content
and shares the generated asset namespace with images, curves and data assets. Do not reuse one ID
for two assets.
Per-event volume
Section titled “Per-event volume”Every sound that passes its document conditions automatically creates two 0–100 controls:
- A pack-wide base-volume slider in KDataForge configuration.
- A local player slider under Options → Audio.
Both controls use the entry’s name, description and grouping. FactoryGame exposes only one
section level below Audio, so KDataForge flattens category plus optional subCategory into one
heading such as Voices / ADA. Omitting both keeps KDataForge sound events. This preserves
Options → Audio as the native top-level category.
The effective amplitude is pack volume × local user volume. With both controls at 100, the
authored PCM level is unchanged. One control at 50 is half amplitude (about -6 dB); either at 0
mutes the event.
Saving either control reloads the generated bank, keeps the event UObject path stable, and uses the
new level for subsequent playback. Local Audio changes use a short debounce while dragging. A sound
already playing may finish with its previous level. Pack values use
FactoryGame/Configs/Packs/<PackRef>.config.yml and normal host synchronization/admin rules. Audio
values persist locally in Saved/Config/Windows/KDataForgeUserSettings.ini and are not synchronized.
Internally generated pack keys live below __sounds; pack-authored config fields must not use that
group.
Reflection exports created on a host or client include each active generated slider in
indexes/settings.json, including its Audio category placement. Dedicated-server exports omit
these local-only options.
Reference an event
Section titled “Reference an event”Given ref: ADAExample and id: AdaWelcome, the event’s object path is:
/KDataForge/GenAssets/ADAExample.Gen_ADAExample_AdaWelcomeUse AdaWelcome inside the same pack, or the complete path for an explicit cross-pack reference.
This also works for soft object references such as FGMessage.mAudioEvent:
type: dataassetassets: - id: WelcomeMessage class: /Script/FactoryGame.FGMessage properties: - path: mTitle value: "Welcome" - path: mMessage value: "Welcome, pioneer." - path: mAudioEvent value: AdaWelcomeSounds load in the Assets stage before data-asset property initialization and CDO patches,
so sound references do not depend on filenames sorting before message files. Importing a sound
does not play it or define an ADA trigger. Configure message triggers, subtitles and queue behavior
on the FGMessage separately. See the complete ADA example.
Editor authoring and preview
Section titled “Editor authoring and preview”In the desktop editor, choose File → New document → sound, or use the Wwise sound content
wizard. In Visual editor, Sounds provides ID, file, name, description, category and subcategory
fields.
The wizard creates YAML; place the recording inside the pack yourself. Code editor offers sound
completion and hover help; validation checks schema, file containment and the actual WAV header.
Go to definition and Rename ID include sound declarations, full event paths and short
mAudioEvent references. Runtime simulation, naming audits, dead-content analysis and changelogs
also understand sound documents.
In the in-game editor, select sound when creating a pack document. Add a Wwise sound (PCM16 WAV)
entry, edit id/file plus optional UI metadata, save, then reload the pack. Preview locally with:
/kdf sound ADAExample AdaWelcomeThe game console equivalent is KDF.Sound ADAExample AdaWelcome. Preview returns a real Wwise
playing ID and logs both start and end-of-event. It needs a client with initialized audio; a
dedicated server cannot produce sound. This preview plays the event directly, independently of
ADA’s trigger and subtitle configuration.
Chat preview is available on the local host. Remote players use KDF.Sound in their own client
console; a chat request cannot play sound on another machine.
The supported authoring editors are the desktop editor and KDataForge’s in-game editor. Runtime
events are generated for the packaged game; KDF.ApplyToAssets does not import them into Unreal
Editor assets, and Unreal Editor/PIE audio import is not supported by this runtime path.
Reload, multiplayer and errors
Section titled “Reload, multiplayer and errors”Run /kdf reload after changing YAML or the WAV. The event’s UObject path stays stable. An unchanged
recording and volume keep the existing event; changing either updates that object after a replacement
bank loaded successfully. A missing, invalid or rejected replacement is reported and leaves the
previously imported sound object intact. Removing a declaration also removes its volume slider on
reload; close and reopen Options after changing display metadata. Removing a sound requires a session
restart to discard the generated event object. Bank cache lives under
FactoryGame/Content/KDataForgeRuntimeSounds
in the game installation; source audio stays in the pack. The cache directory must be writable.
This cache can be cleared while the game is closed and is rebuilt on the next load.
Incomplete or damaged cache files are replaced automatically.
Install identical packs and WAV files on all multiplayer clients. Sound data is local and is not transferred by KDataForge’s configuration synchronization. Pack base volumes synchronize like other pack settings; each player’s Options → Audio multiplier remains local. Dedicated servers validate the source and create event references without opening an audio device. A host reload is process-local; clients apply synchronized base values through their own generated banks.
Use /kdf report for diagnostics. Missing files, invalid PCM headers, incomplete frames, unsupported
formats, ID collisions and unavailable Wwise audio produce explicit errors. If Wwise rejects a
generated bank, inspect LogAkAudio and LogWwiseFileHandler. This importer targets Satisfactory’s
Wwise 2025.1 bank format; after a game audio-engine update, use a compatible KDataForge build.
Wwise loads event definitions and media from SoundBanks before events can play; this feature prepares those resources for you. Audiokinetic: Loading Banks
