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.