Files
UnheardCity/docs/categories.md

5.6 KiB

Categories and characters

Implemented in ackit/classify.py; used both when building the shipped catalog (tools/build_catalog.py) and when a game build is not in the catalog (runtime scan), so every language/build gets the same scheme.

Groups and categories

Every sound has a group and a finer category, derived from its name (taken from the game files: the soundbank names in CookedBanks.txt and the Wwise event names; the 3 SFX entries no name reaches show as hex). First matching rule wins:

name starts with group category
CHR_RadioScanner, PSO_CarRadio, Speech_RADIO, Speech_TV, Speech_CAMERAS, DIA_ Speech Radio & TV
Speech_TAPE_ Speech Interview tapes
Speech_INTERROGATION_ Speech Interrogations
Speech_CINEMATIC_, Speech_New_ Speech Cinematics
Speech_Boss_ / Speech_BOSS_ Speech Boss fights
Speech_RIDDLER_, Speech_RIDDLES_ Speech Riddler
Speech_SIDE_ Speech Side missions
Speech_DLC_ Speech DLC
Speech_PRED_ Speech Predator chatter
Speech_COMBAT_, Speech_Bully_ Speech Combat barks
Speech_EMOTE_ Speech Efforts & emotes
Speech_REACT_ Speech Reactions
Speech_STREETS_, Speech_ZONES_, Speech_OUTCAST_, Speech_Vertical_ Speech Open-world chatter
Speech_CHAR_ Speech Character lines
Speech_CH_, Speech_SEQUENCE_, Speech_STEEL_, _MUSEUM_, _CHURCH_, _COURT_, _UNDER_, _GCPD_, _ZP1_ Speech Story missions
Speech_GAME_, Speech_MAP_, Speech_AUGMENTED_, Speech_FORENSICS_, Speech_TEMP_ Speech Gameplay & hints
NPC_...Crowd... Ambience Crowds
other Speech_ Speech Other speech
media of the Music / Music_PDLC stream packs, Music*, MUS_ Music Music / Music (DLC)
AMB_, PSA_ Ambience Ambience
PSO_ (flies, drips, fans, lights) Ambience Ambient emitters
WND_ Ambience Wind
WTR_ Ambience Weather
VOL_, PVOL_ Ambience Room tone
anything containing Footstep SFX Footsteps
CHR_/NPC_ containing Combat, BoneBreak, Bodyfall SFX Combat
SEQ_, MTN_ SFX Scripted sequences
OBJ_ SFX Objects
PX_, PHY_ SFX Physics
WPN_ SFX Weapons
DVC_ SFX Gadgets
GUI_, SBJ_ SFX Interface
VFX_ SFX Visual effects
other NPC_ SFX Enemies & NPCs
CHR_, GEN_ SFX Character foley
Global SFX Global
anything else (e.g. unnamed hex IDs) Unknown Unknown

BANK sounds (in-memory, docs/formats/banks.md) are classified by the name of their soundbank (e.g. CHR_CatwomanFoleySuit, Speech_EMOTE_Batman), which is more systematic than their event names.

Counts per voice language (identical in all 5): Story missions 1996, Predator chatter 1796, Character lines 1537, Open-world chatter 1295, Side missions 808, Combat barks 801, Efforts & emotes 616, Interview tapes 514, Riddler 360, Radio & TV 223, Gameplay & hints 199, DLC 167, Boss fights 150, Cinematics 150, Reactions 108, Interrogations 95. SFX archive: Music 389, Ambience 225, SFX 31, Unknown 6. BANK (all languages): Combat barks 4360, Character foley 3051, Other speech 2590, Footsteps 1256, Ambient emitters 705, Weapons 494, Combat 412, Objects 401, ...

Characters

Two separate fields, because Wwise names describe a scene, not the speaker of each variation (a conversation alternates speakers between NAME_1, NAME_2, ...):

  • character - the verified speaker, only from the curated lists in data/catalog/source/<lang>/*.txt (one file per character, listening-based; the lists so far were made on the Italian voices, source/ita/). A list names sounds by their position in its language's WAD (wemscan names); positions differ between languages, so each listed recording is found at its position in that language and the label goes to its line (characters.csv, keyed by the line's name), i.e. to the same recording in every language. A label applies to exactly the listed recordings (not to other versions of the same event). Checked by ackit verify --catalog against the speaker field of the game's dialogue objects: 2,766 labelled lines agree (spelling aside: Mister Freeze, Bruce Wayne, TwoFace, Mysterious_stranger = Azrael), 25 listed as Unknown are named there, 19 differ (to listen to: Batman_sword_raised_01-04 game: Ra's al Ghul, ENCRYPTION_CARD2_02 game: Hugo Strange, thug1_heckle_01_3 game: Thug 01, SIDE_CAT_TF_intro1_03 game: Thug 06; the 12 Wonder City lines say "Announcement"). Display names: Calendar -> Calendar Man, Croc -> Killer Croc, Freeze -> Mr. Freeze, Ivy -> Poison Ivy, Madhatter -> Mad Hatter, Quinn -> Harley Quinn, Ras -> Ra's al Ghul, Strange -> Hugo Strange, Talia -> Talia al Ghul, Twoface -> Two-Face, Vicky -> Vicki Vale, Zsazz -> Victor Zsasz, Unknown -> Unknown (speaker checked but not identified). A line in two lists gets both ("A; B").
  • characters_inferred - characters and roles mentioned by the name (token rules in classify._TOKENS, e.g. BM/BATMAN -> Batman, PENG -> Penguin, TF -> Two-Face, THUG*/GENTHUG* -> Thug, TYGER -> TYGER guard; interview tapes add Hugo Strange). A hint for the ~7,400 lines without a verified speaker, never shown as the speaker. In the editor the character filter matches verified speakers, and optionally inferred ones.

Coverage of the 10,811 WAD voice lines (every voice language, the same lines): 3,366 with a verified speaker, 6,258 more with inferred characters, 1,187 with neither (combat barks 407, story missions 267, open-world chatter 228, radio & TV 122, ...).