Mod Config¶
config.json defines a pack's identity, dependencies, game settings, and optional pack-level scripts.
For the complete field-level specification, including every session setting and the full difficulty tables, see Pack Config.
Minimal Shape¶
{
"id": "3f6c2a9e-8b1d-4c57-9e2f-7a0d5b4c1e88",
"isChronicle": true,
"description": "My Streets of Rage 2 New Era mod.",
"dependencies": ["Classic"],
"dependenciesChecksums": [""],
"settings": {
"hasWideScreen": true,
"hasImprovements": true,
"bufferGlitchFixMode": 2,
"scoreForLives": [20000, 50000, 150000],
"difficultySettings": []
}
}
Editor-created packs usually contain a much larger settings object. Keep it unless you know which game-session behavior you are changing.
Top-Level Fields¶
| Field | Type | Description |
|---|---|---|
id |
string |
Stable unique identifier: a random UUID created once with the mod and never changed. The engine identifies the pack by it, so a rename keeps every reference. Mods without one are identified by name. See Mod identity. |
isChronicle |
bool |
Marks the pack as a Chronicle-style content pack. |
expandHudSpacing |
bool |
In widescreen, reserve a 32px lane beside the timer for custom HUD art. Defaults to false. If the campaign or any active character pack enables it, all player HUDs use the expanded layout. |
description |
string |
Description shown by menus or pack listings. |
dependencies |
string[] |
Pack names this pack depends on. Classic reskins should include Classic. |
dependenciesChecksums |
string[] |
Optional checksum list matching dependencies. Empty strings are accepted in editable packs. |
dependenciesIds |
string[] |
Optional id of each dependency, matching dependencies; null for one without an id. |
settings |
object |
Game-session settings. |
preEntityUpdateScripts |
ScriptData[] |
Scripts run before entity updates. |
postEntityUpdateScripts |
ScriptData[] |
Scripts run after entity updates. |
Common settings Fields¶
| Field | Description |
|---|---|
hasWideScreen |
Enables widescreen presentation support. |
hasImprovements |
Enables New Era improvements for the session. |
bufferGlitchFixMode |
Input buffer fix mode. 0 no fix, 1 all but ground upper, 2 all. |
scoreForLives |
Score thresholds for extra lives. |
difficultySettings |
Difficulty definitions. See Difficulty Settings. |
scrollSpeedMultiplier |
Fraction object applied to scroll speed. |
useSmoothControls |
Enables smoother control behavior. |
emulateClassicLag |
Enables classic lag emulation. |
allowedCharacters |
Optional list of allowed character pack/type hashes. |
minimumPlayers |
Minimum player count. |
maximumPlayers |
Maximum player count. -1 means no explicit maximum. |
Multiplier Fields¶
Multipliers are stored as fractions:
{
"numerator": 3,
"denominator": 2
}
This example means 1.5x.
Pack-Level Scripts¶
Pack-level scripts use the same ScriptData shape as animation scripts:
{
"preEntityUpdateScripts": [
{
"packName": "My Pack",
"scriptName": "Global entities pre-update"
}
]
}
Use these sparingly. Animation scripts are easier to reason about because they only run when an entity reaches that animation.
Dependency Guidance¶
Classic reskins should include Classic in dependencies. Packs that replace Classic art, audio, palettes, or entities usually target Classic folder paths, so the dependency tells the runtime that those original assets are expected.