Skip to content

World of Warcraft (Classic) — Unit Sound System

Sound Catalog: SoundEntries.dbc

All WoW sounds are indexed in DBFilesClient\SoundEntries.dbc. The 29-field classic layout and the per-creature CreatureSoundData.dbc event slots are documented in docs/dbc-reference.md.

Full path = directoryBase + "\" + file[n].

Unit Sound Wiring

Units reference SoundEntries IDs through creature templates in the database (server-side) or through CreatureSoundData.dbc (client-side display). Key linking DBCs for classic:

DBC Role
CreatureSoundData.dbc Per-creature: maps sound event slots to SoundEntries IDs
CreatureDisplayInfo.dbc Links creature display ID to CreatureSoundData record
CreatureModelData.dbc Footstep sound set ID per model

Sound Kit Selection

When multiple files exist for a kit (fields 3–12), the engine randomly selects one weighted by freq[n]: files with freq[n] == 0 are skipped. Files with higher freq[n] values are selected more often.

OpenWarcraft3 Implementation

The sound module (sound/s_sound.c) loads DBFilesClient\SoundEntries.dbc at init and builds a hash by kit name. Playback: - S_PlaySound(kit_id) — play by numeric DBC ID - S_PlaySoundByName(name) — play by kit name string (hash lookup) - S_PlaySoundFile(path) — play raw MPQ path (for WC3 entity event sounds)

UI sounds triggered by Lua/FDF use PlaySound(kit_id) / PlaySoundByName(name) through the uiImport_t function table.

Entity event sounds (unit attack, death) use S_PlaySoundFile via CL_EntityEvent.