Troubleshooting¶
This page collects common modding failures and the first places to check.
Pack Does Not Appear¶
Check:
- pack folder is under
Editor/<Pack Name>while editing config.jsonis valid JSON- folder name does not start with a dot
- dependencies in
config.jsonare available thumbnail.pngis valid if the menu tries to show it
Classic Reskin Does Not Apply¶
Check:
dependenciesincludesClassic- reskin level files are under
Level Replacements/Classic - entity replacements are under
Entity Replacements/Classic - audio maps are under
Audio Replacements/Classic - playable palettes are under
Palettes/Classic/<Playable Character>
Image Missing In Level Editor Or Game¶
Check:
imageNameexactly matches a file inLevels/Art- extension is included in
imageName - the image is not in
Level Replacements/Classic - the layer has the image in
staticImages,titleScreenImages, or animation frames - the JSON scene has at least one layer
Title Screen Still Uses Original¶
Check:
- file is
Level Replacements/Classic/title.json - the pack is loaded as a Classic reskin
- title JSON has a
scenesarray - visible art is in
staticImagesortitleScreenImages - old
Levels/title.jsonwas migrated or removed if the editor created a skin copy
Script Does Nothing¶
Check:
- script file is in
Scripts/ scriptNameomits.luapackNamematches the pack folder name- the animation reaches the scripted frame
- the script returns its update function, and that function returns
true - context object is not
nil
Use print() temporarily and check the Unity log or in-game error display.
Script Throws Nil Errors¶
Guard context-specific objects at the start of the update function:
local player = game.this_player
if player == nil then
return true
end
Do the same for attacker, victim, nearest opponents, and objects returned from ID lookup.
Music Does Not Play¶
Check:
- music file is in
Musics - JSON uses the base filename without extension
musicPackNameor replacementpackNamematches the pack name- replacement map is
Audio Replacements/Classic/music-replacements.json - loop metadata JSON is valid if present
Sound Does Not Play¶
Check:
- sound file is in
Sounds - JSON uses the base filename without extension
- replacement map is
Audio Replacements/Classic/sound-replacements.json - event frame is reached
- sound channel is appropriate
Palette Does Not Appear¶
Check:
- the workflow is for playable characters only
- path is
Palettes/Classic/<Playable Character>/palette <n>.png - PNG dimensions and color order match the expected palette guide
- the pack was reloaded after adding files
Entity Replacement Loads Wrong Behavior¶
Check:
entityTypeis correctreferencePackNameandreferenceEntityNamepoint to the intended original entityreferenceBehaviour.objectModeuses a valid value from Behaviour Modes- animations with events intentionally skip referenced Classic behaviour
- spawned entity names and pack names match exactly