Content Pack Format Reference
Folder layout, file names and config keys for all eight pack types
Everything here is taken from primary material rather than second-hand write-ups: the developer's published pack guides, plus the default packs that ship inside the game itself — including the README.txt and the config_*.json files, which are read directly below. Field names that could not be confirmed in either source are left out rather than guessed.
Wherever a pack lives, these rules apply
Audio is searched WAV → MP3 → OGG
When the same clip exists in several formats, WAV always wins. That is why WAV is the safest choice to drop in — at the cost of file size.
Images are searched PNG → JPG → WEBP
PNG wins. If you need transparency, PNG is your only option — JPG has no alpha channel.
A clip finds its image by name, then falls back twice
An audio clip first looks for an image with the same file name. Failing that it uses the pack’s `_pack_filler_image`. Failing that it falls back to the `no_image` file in the menu pack.
Godot cannot parse compressed WAV files
The nastiest trap here: the game considers a compressed WAV valid, then fails to load it. If your WAVs came from an outside source, verify they are not compressed WAV.
Pack folders
All eight folders live side by side inside the game files, reachable from the main menu. Note that dub packs do not get their own folder.
Voice Pack
packs_voiceThe backbone of the game. Every game mode uses voice packs: a folder of audio clips, and the better you impersonate them the higher you score.
Minimum to work
A folder with at least one audio file in it. That is genuinely all — no config file required.
| File name | Kind | Required | Notes |
|---|---|---|---|
<any name>.wav / .mp3 / .ogg | audio | required | Each clip must be under 60 seconds. Normalize your levels — the developer’s own words are "loud is better than quiet", because the scoring algorithm struggles with small waveforms. |
_icon | image | optional | The pack cover image. |
<image named after a clip> | image | optional | Binds automatically to the clip of the same name. my_clip.mp3 will look for my_clip.png. |
_pack_filler_image | image | optional | Fallback image for every clip that has no image of its own. |
_subtitle.txt | text | optional | Subtitle shown under the pack name when it is selected. This is the real file name used by the shipped default pack. |
Worth knowing
- Since 0.5.0 there is an in-game metadata editor: main menu → Extras → "Edit Voice Packs & Clip Metadata". There you can assign images per sample, add captions, tag samples, credit contributing authors (players can search packs by author) and attach a readme.
- A pack is named after its folder by default; the editor lets you change the displayed name.
- Each clip can carry a same-named .txt sidecar using caption= for the line prompt and image= for a specific image.
Dub Pack
packs_voiceIntroduced in 0.5.0, a dub pack is an advanced voice pack: it works in normal gameplay, and it is also usable in Dub Mode.
Minimum to work
Two things: per-sample timestamp metadata telling the game where each take syncs against the video, and the video itself in OGV format.
| File name | Kind | Required | Notes |
|---|---|---|---|
dub_video.ogv | video | required | OGV only. If the game cannot find an OGV named dub_video, the whole pack fails to load. |
<number>_<clip name>.wav | audio | required | The developer recommends keeping samples under 6 seconds and cutting at natural breaks, with a leading number to preserve order (01_ / 02_ / 03_). |
_backing_track | audio | optional | The music or ambience stripped out of the source clip. It plays alongside player recordings, which makes the result feel closer to the original. |
<clip name>.txt | text | optional | Sidecar keys: dub_timestamps=[seconds,...], dub_characters=["name"], caption=, image=. These four keys are identical across 596 sidecar files found in real community packs. |
Worth knowing
- Why OGV is mandatory: the engine the game is built on currently supports only that one open video format — MP4 and AVI are not options. That is the whole reason for the requirement.
- Timestamps are entered by hand. The developer’s workflow is to set Audacity’s audio position readout to "hh:mm:ss + milliseconds" and write the seconds into the export file name (e.g. 07_MyClip_44-048), then fill them into the editor afterwards.
- Dub Mode rules: you get unlimited retakes, but you are not allowed to hear your own recordings until the game ends. Once everything has been performed, the takes are played back dubbed over the video.
- Scenes with several audio sources can be tagged with "dub character" groups so players can filter for the characters they want to perform. Unselected characters use their original audio on playback.
- Clips can be toggled "dub only", which keeps them out of every mode except Dub Mode.
Contestant Pack
packs_playerThe character you appear as on the show. Their name is used during gameplay and they react to the results.
Minimum to work
One image named player.
| File name | Kind | Required | Notes |
|---|---|---|---|
player.png | image | required | Aim for roughly 500×1000 pixels. The image is not scaled — a small image means a small contestant. |
config_player.json | config | optional | Name, two theme colours and the host introduction. The shipped file has exactly four keys: name / color1 / color2 / introduction. |
<any name>.wav / .mp3 / .ogg | audio | optional | Spoken reactions to specific events, one file per event. File names do not matter. |
Worth knowing
- The image is positioned so its bottom edge touches the studio floor. To shift the character upward, add empty space at the bottom.
- Nine events can carry audio: being introduced by the host, winning, losing, and getting a judge score of 0 / 1 / 2 / 3 / 4 / 5. That list is also the clearest confirmation that scoring runs 0–5 rather than on a percentage scale.
- Name, the two theme colours and the host introduction can all be edited in the in-game Customization menu.
Judge Pack
packs_judgesThe five judges on the panel. Used in the standard game mode and in the Twitch panelist voting mode, and the panel can have multiple audio reactions to a performance.
Minimum to work
One image per judge, named judge1 through judge5.
| File name | Kind | Required | Notes |
|---|---|---|---|
judge1.png … judge5.png | image | required | Aim for roughly 500×1000 pixels, bottom-aligned to the floor, not scaled. |
success.png | image | optional | What the podium lights up with when a judge votes in favour of a performance. 2:1 ratio, 512×256 by default. |
judgeX_success.png | image | optional | Per-judge success screen, where X is that judge’s number. Judges without one fall back to the shared success image. |
scoreblip1.wav … scoreblip5.wav | audio | optional | The score blips always play in order, independent of which judge is voting — the second vote always fires scoreblip2. |
judgeX_voice.wav | audio | optional | Voice line for that specific judge, played only when they vote in your favour. |
config_judges.json | config | optional | Structure is { "judge1": { "name": "" }, … } with five entries. |
Worth knowing
- Judge names are edited in the Customization menu.
- To silence the score blips — for example if you only want judge voices — add play_voices_with_blips set to false directly in the config JSON.
Studio Pack
packs_studioThe environment the show takes place in. Also used in the standard game mode and the Twitch panelist voting mode.
Minimum to work
A custom model is not actually required — you can change just the music, the score screen background, or the "absolute" image.
| File name | Kind | Required | Notes |
|---|---|---|---|
model.glb / model.gltf | model | optional | Export as glb or gltf and name it model to replace the default studio. |
music_studio.wav / .mp3 / .ogg | audio | optional | Without this, the game uses the default track composed by AzureOtsu. |
screen.ogv | video | optional | Background video for the contestant score screen. It loops and plays muted. |
absolute_image.png | image | optional | Shown when a performance earns the very rare 6/5 "absolute" verdict. An absolute image inside a judge pack takes priority over this one. |
config_studio.json | config | optional | Contains audio.music_studio_loop_start and a full recording_overlay_colors block. |
Worth knowing
- Creating a studio folder in-game generates a template glb showing the size and position of the judges, contestants and three screens. Using it to align your model is the easy path — nothing in the template is required for the model to work.
- The bigger the model, the longer the load. Studios with a lot of vertices can take several seconds to load into the game.
- Music loops the whole track by default. music_studio_loop_start sets a loop point: for WAV this is the starting sample, for MP3 and OGG the starting time in seconds.
- The studio includes its own lighting. If your model brings its own, set use_builtin_light to false in the studio config.
- The colours of the audio recording overlay are edited in the in-game Customization menu.
Host Pack
packs_hostNo published guideThe host. The published pack index lists the category but never shipped a written guide — the fields below come from inspecting the default host pack that ships with the game (Default - Shae).
Minimum to work
One host.png plus a config_host.json.
| File name | Kind | Required | Notes |
|---|---|---|---|
host.png | image | required | This is the single image in the shipped default pack. |
config_host.json | config | required | Host identity plus every line of dialogue. The shipped file uses host_type / name / match_singleplayer. |
Worth knowing
- Dialogue is grouped by stage. The shipped structure is match_singleplayer.intro.{a_welcome, b_contestant, c_judges, d_explanation} and match_singleplayer.round.{b_post_record, c_post_listen, round_next}, and every entry is an array of strings.
- Lines support placeholders: <host_name> and <player> are replaced with the actual host and contestant names.
- The stage names alone describe the round flow: recording finishes (b_post_record) → the take is listened back (c_post_listen) → the judges vote → the next round (round_next).
- Because each stage is an array, you can write several lines and let the game rotate between them.
Chatter Pack
packs_chatterTwitch onlyIntroduced in 0.5.0 and Twitch-exclusive: it gives your chat the ability to "speak" inside the show.
Minimum to work
A config_chatter file in INI or CFG format assigning keywords to audio files.
| File name | Kind | Required | Notes |
|---|---|---|---|
config_chatter.ini / .cfg | config | required | Keywords currently have to be written straight into the file — there is no GUI. Two sections: [broad_keywords] and [exact_keywords]. |
<any name>.ogg / .wav / .mp3 | audio | required | The audio a keyword triggers. Several files may share the same keywords, in which case one is chosen at random. |
Worth knowing
- broad_keywords fire when the keyword appears anywhere in the viewer’s first word. So clap also catches Clap / clap2 / clapping / CLAPS / cccclappp.
- exact_keywords only fire on an exact match, and they are case-sensitive — which makes them the right choice for emote names.
- The syntax matches other content packs: a bracketed section name, then the audio file on the left and an array of keywords on the right, e.g. clap.ogg = ["clap", "👏"].
Sources: the developer's published content-pack guides for voice, dub, contestant, studio, judge and chatter packs; the shipped default packs' own README.txt and config_*.json files (for every pack type, including host and menu, which have no published guide); and the per-clip .txt sidecar keys observed consistently across community packs. Pack content in the library remains the work of its respective community authors.