{
  "version": "2.0.0",
  "updated": "2026-07-18",
  "canonicalSource": "grudge-builder/scripts/publish-production-world.mjs",
  "worldSeedDefault": "grudge-world-1",
  "playBaseUrl": "https://client.grudge-studio.com/play",
  "oceanBaseUrl": "https://client.grudge-studio.com/ocean",
  "homeIslandUrl": "https://client.grudge-studio.com/home-island",
  "infoHub": "https://info.grudge-studio.com",
  "gameIdentity": {
    "genre": "freeform-arpg",
    "classSystem": "flavor-only",
    "equipRule": "any-race-any-weapon-any-armor"
  },
  "notes": [
    "Fabled sector may host many islands; core is fabledzone.glb with cave-door portals into dwarf castle/buildings.",
    "Haven Shore uses Fruzer foundation; starter path city=haven_port.",
    "Account characters via id.grudge-studio.com + character.grudge-studio.com; binaries on assets.grudge-studio.com.",
    "D1 tables world_* live in grudge-objectstore; query via ObjectStore worker / admin."
  ],
  "grid": {
    "layout": "3x3",
    "rows": [
      [
        "ethereal_falls",
        "frostbite_expanse",
        "thornwood_wilds"
      ],
      [
        "stormbreak_reef",
        "convergence_nexus",
        "ashen_wastes"
      ],
      [
        "abyssal_trench",
        "haven_shore",
        "ember_depths"
      ]
    ]
  },
  "legacyBridge": {
    "NW": "ethereal_falls",
    "N": "frostbite_expanse",
    "NE": "thornwood_wilds",
    "W": "stormbreak_reef",
    "CENTER": "convergence_nexus",
    "E": "ashen_wastes",
    "SW": "abyssal_trench",
    "S": "haven_shore",
    "SE": "ember_depths"
  },
  "zones": [
    {
      "id": "ethereal_falls",
      "legacyId": "NW",
      "name": "Ethereal Falls",
      "biome": "magic",
      "difficultyMin": 3,
      "difficultyMax": 6,
      "isSafeZone": false,
      "isContested": false,
      "sizeMeters": 10000,
      "grid": {
        "col": 0,
        "row": 0
      },
      "entryReady": true,
      "capitalCityId": null,
      "foundation": "fabled_satellite",
      "playUrl": "https://client.grudge-studio.com/play?sector=ethereal_falls&mode=zone&worldSeed=grudge-world-1",
      "systems": {
        "terrain3d": true,
        "zonePopulation": true,
        "harvestNodes": true,
        "wildlife": true,
        "fish": true,
        "npcCamps": true,
        "docks": true,
        "colyseusSector": true,
        "factionTown": false,
        "fabledCore": true,
        "islandEvents": true
      },
      "resources": [
        "arcane_dust",
        "herbs",
        "crystals"
      ],
      "description": "Remote magical falls — satellite Fabled wilds (scaled core)."
    },
    {
      "id": "frostbite_expanse",
      "legacyId": "N",
      "name": "Frostbite Expanse",
      "biome": "frozen",
      "difficultyMin": 4,
      "difficultyMax": 7,
      "isSafeZone": false,
      "isContested": false,
      "sizeMeters": 10000,
      "grid": {
        "col": 1,
        "row": 0
      },
      "entryReady": true,
      "capitalCityId": "runeforge_hold",
      "foundation": "fabledzone",
      "playUrl": "https://client.grudge-studio.com/play?sector=frostbite_expanse&mode=zone&worldSeed=grudge-world-1&city=runeforge_hold",
      "systems": {
        "terrain3d": true,
        "zonePopulation": true,
        "harvestNodes": true,
        "wildlife": true,
        "fish": true,
        "npcCamps": true,
        "docks": true,
        "colyseusSector": true,
        "factionTown": true,
        "fabledCore": true,
        "cavePortals": true,
        "dwarfCastleInterior": true,
        "islandEvents": true,
        "bosses": true
      },
      "resources": [
        "frost_herbs",
        "ice",
        "crystals",
        "whale_bone",
        "arctic_fish",
        "ore"
      ],
      "description": "Fabled sector core (fabledzone.glb): multi-island forge village. Cave doorways portal into dwarf main city / castle. Extra procedural islands allowed."
    },
    {
      "id": "thornwood_wilds",
      "legacyId": "NE",
      "name": "Thornwood Wilds",
      "biome": "forest",
      "difficultyMin": 3,
      "difficultyMax": 7,
      "isSafeZone": false,
      "isContested": false,
      "sizeMeters": 10000,
      "grid": {
        "col": 2,
        "row": 0
      },
      "entryReady": true,
      "capitalCityId": "starweave_canopy",
      "foundation": null,
      "playUrl": "https://client.grudge-studio.com/play?sector=thornwood_wilds&mode=zone&worldSeed=grudge-world-1&city=starweave_canopy",
      "systems": {
        "terrain3d": true,
        "zonePopulation": true,
        "harvestNodes": true,
        "wildlife": true,
        "fish": true,
        "npcCamps": true,
        "docks": true,
        "colyseusSector": true,
        "factionTown": false,
        "islandEvents": true
      },
      "resources": [
        "hardwood",
        "herbs",
        "berries",
        "rare_mushrooms",
        "beast_hides"
      ],
      "description": "Ancient forest canopy — Elf capital Starweave Canopy."
    },
    {
      "id": "stormbreak_reef",
      "legacyId": "W",
      "name": "Stormbreak Reef",
      "biome": "storm",
      "difficultyMin": 3,
      "difficultyMax": 6,
      "isSafeZone": false,
      "isContested": false,
      "sizeMeters": 10000,
      "grid": {
        "col": 0,
        "row": 1
      },
      "entryReady": true,
      "capitalCityId": null,
      "foundation": null,
      "playUrl": "https://client.grudge-studio.com/play?sector=stormbreak_reef&mode=zone&worldSeed=grudge-world-1",
      "systems": {
        "terrain3d": true,
        "zonePopulation": true,
        "harvestNodes": true,
        "wildlife": true,
        "fish": true,
        "npcCamps": true,
        "docks": true,
        "colyseusSector": true,
        "factionTown": false,
        "islandEvents": true
      },
      "resources": [
        "shells",
        "coral",
        "rare_ore",
        "storm_crystals"
      ],
      "description": "Perpetual storms over razor coral reefs."
    },
    {
      "id": "convergence_nexus",
      "legacyId": "CENTER",
      "name": "Convergence Nexus",
      "biome": "contested",
      "difficultyMin": 5,
      "difficultyMax": 9,
      "isSafeZone": false,
      "isContested": true,
      "sizeMeters": 12000,
      "grid": {
        "col": 1,
        "row": 1
      },
      "entryReady": true,
      "capitalCityId": null,
      "foundation": null,
      "playUrl": "https://client.grudge-studio.com/play?sector=convergence_nexus&mode=zone&worldSeed=grudge-world-1",
      "systems": {
        "terrain3d": true,
        "zonePopulation": true,
        "harvestNodes": true,
        "wildlife": true,
        "fish": true,
        "npcCamps": true,
        "docks": true,
        "colyseusSector": true,
        "factionTown": false,
        "embassies": true,
        "islandEvents": true,
        "bosses": true
      },
      "resources": [
        "scrap",
        "ore",
        "relics"
      ],
      "description": "Central clash zone — faction embassies and world events."
    },
    {
      "id": "ashen_wastes",
      "legacyId": "E",
      "name": "Ashen Wastes",
      "biome": "desert",
      "difficultyMin": 5,
      "difficultyMax": 8,
      "isSafeZone": false,
      "isContested": false,
      "sizeMeters": 14000,
      "grid": {
        "col": 2,
        "row": 1
      },
      "entryReady": true,
      "capitalCityId": "ashen_throne",
      "foundation": null,
      "playUrl": "https://client.grudge-studio.com/play?sector=ashen_wastes&mode=zone&worldSeed=grudge-world-1&city=ashen_throne",
      "systems": {
        "terrain3d": true,
        "zonePopulation": true,
        "harvestNodes": true,
        "wildlife": true,
        "fish": true,
        "npcCamps": true,
        "docks": true,
        "colyseusSector": true,
        "factionTown": true,
        "islandEvents": true,
        "bosses": true
      },
      "resources": [
        "glass_sand",
        "ore",
        "herbs",
        "bones"
      ],
      "description": "Glass desert — Demon capital Ashen Throne."
    },
    {
      "id": "abyssal_trench",
      "legacyId": "SW",
      "name": "Abyssal Trench",
      "biome": "abyss",
      "difficultyMin": 6,
      "difficultyMax": 10,
      "isSafeZone": false,
      "isContested": false,
      "sizeMeters": 10000,
      "grid": {
        "col": 0,
        "row": 2
      },
      "entryReady": true,
      "capitalCityId": "drowned_sepulcher",
      "foundation": null,
      "playUrl": "https://client.grudge-studio.com/play?sector=abyssal_trench&mode=zone&worldSeed=grudge-world-1&city=drowned_sepulcher",
      "systems": {
        "terrain3d": true,
        "zonePopulation": true,
        "harvestNodes": true,
        "wildlife": true,
        "fish": true,
        "npcCamps": true,
        "docks": true,
        "colyseusSector": true,
        "factionTown": true,
        "islandEvents": true,
        "bosses": true
      },
      "resources": [
        "salvage",
        "fish",
        "ore",
        "abyss_pearls"
      ],
      "description": "Deep trench — Undead capital Drowned Sepulcher."
    },
    {
      "id": "haven_shore",
      "legacyId": "S",
      "name": "Haven Shore",
      "biome": "tropical",
      "difficultyMin": 1,
      "difficultyMax": 3,
      "isSafeZone": true,
      "isContested": false,
      "sizeMeters": 10000,
      "grid": {
        "col": 1,
        "row": 2
      },
      "entryReady": true,
      "capitalCityId": "haven_port",
      "foundation": "fruzer_islands",
      "playUrl": "https://client.grudge-studio.com/play?sector=haven_shore&mode=zone&worldSeed=grudge-world-1&city=haven_port",
      "systems": {
        "terrain3d": true,
        "zonePopulation": true,
        "harvestNodes": true,
        "wildlife": true,
        "fish": true,
        "npcCamps": true,
        "docks": true,
        "colyseusSector": true,
        "factionTown": false,
        "havenShoreFoundation": true,
        "vendors": true,
        "missions": true,
        "islandEvents": true
      },
      "resources": [
        "coconut",
        "palm_frond",
        "fish",
        "shells",
        "hardwood",
        "herbs"
      ],
      "description": "Safe tropical starter — Fruzer islands foundation + Haven Port vendors."
    },
    {
      "id": "ember_depths",
      "legacyId": "SE",
      "name": "Ember Depths",
      "biome": "volcanic",
      "difficultyMin": 5,
      "difficultyMax": 9,
      "isSafeZone": false,
      "isContested": false,
      "sizeMeters": 10000,
      "grid": {
        "col": 2,
        "row": 2
      },
      "entryReady": true,
      "capitalCityId": "pit_foundry",
      "foundation": null,
      "playUrl": "https://client.grudge-studio.com/play?sector=ember_depths&mode=zone&worldSeed=grudge-world-1&city=pit_foundry",
      "systems": {
        "terrain3d": true,
        "zonePopulation": true,
        "harvestNodes": true,
        "wildlife": true,
        "fish": true,
        "npcCamps": true,
        "docks": true,
        "colyseusSector": true,
        "factionTown": true,
        "islandEvents": true,
        "bosses": true
      },
      "resources": [
        "obsidian",
        "sulfur",
        "fire_crystals",
        "rare_ore",
        "gems"
      ],
      "description": "Volcanic Legion caldera — Orc capital Pit Foundry."
    }
  ],
  "towns": [
    {
      "id": "haven_port",
      "sectorId": "haven_shore",
      "raceId": "human",
      "faction": null,
      "name": "Haven Port",
      "subtitle": "Human Capital · PVE Trade Village",
      "modelGlb": "models/warlords/haven_shore/fruzer_islands.glb",
      "modelScale": 2.4,
      "playUrl": "https://client.grudge-studio.com/play?sector=haven_shore&mode=zone&worldSeed=grudge-world-1&city=haven_port"
    },
    {
      "id": "runeforge_hold",
      "sectorId": "frostbite_expanse",
      "raceId": "dwarf",
      "faction": "fabled",
      "name": "Runeforge Hold",
      "subtitle": "Dwarf Capital · Fabled Core",
      "modelGlb": "models/warlords/fabled/fabledzone.glb",
      "modelScale": 1.15,
      "interiors": {
        "dwarfMainCity": "models/warlords/fabled/dwarf_main_city.glb",
        "portalMode": "cave_doorway"
      },
      "playUrl": "https://client.grudge-studio.com/play?sector=frostbite_expanse&mode=zone&worldSeed=grudge-world-1&city=runeforge_hold"
    },
    {
      "id": "starweave_canopy",
      "sectorId": "thornwood_wilds",
      "raceId": "elf",
      "faction": "fabled",
      "name": "Starweave Canopy",
      "subtitle": "Elf Capital · Ancient Forest",
      "modelGlb": "models/towns/cathedral_sanctum.glb",
      "modelScale": 0.9,
      "playUrl": "https://client.grudge-studio.com/play?sector=thornwood_wilds&mode=zone&worldSeed=grudge-world-1&city=starweave_canopy"
    },
    {
      "id": "pit_foundry",
      "sectorId": "ember_depths",
      "raceId": "orc",
      "faction": "legion",
      "name": "The Pit Foundry",
      "subtitle": "Orc Capital · Volcanic Creations",
      "modelGlb": "models/towns/pit_foundry.glb",
      "modelScale": 1,
      "playUrl": "https://client.grudge-studio.com/play?sector=ember_depths&mode=zone&worldSeed=grudge-world-1&city=pit_foundry"
    },
    {
      "id": "drowned_sepulcher",
      "sectorId": "abyssal_trench",
      "raceId": "undead",
      "faction": "legion",
      "name": "Drowned Sepulcher",
      "subtitle": "Undead Capital · Flooded Ruins",
      "modelGlb": "models/towns/pit_foundry.glb",
      "modelScale": 0.85,
      "playUrl": "https://client.grudge-studio.com/play?sector=abyssal_trench&mode=zone&worldSeed=grudge-world-1&city=drowned_sepulcher"
    },
    {
      "id": "ashen_throne",
      "sectorId": "ashen_wastes",
      "raceId": "demon",
      "faction": "crusade",
      "name": "Ashen Throne",
      "subtitle": "Demon Capital · Glass Desert",
      "modelGlb": "models/towns/crusade/exterior.glb",
      "modelScale": 1.2,
      "playUrl": "https://client.grudge-studio.com/play?sector=ashen_wastes&mode=zone&worldSeed=grudge-world-1&city=ashen_throne"
    }
  ],
  "dungeons": [
    {
      "id": "tropical_dungeon_0",
      "sectorId": "haven_shore",
      "name": "Pirate's Crypt",
      "entranceModel": "cave",
      "minLevel": 1,
      "bossId": "boss_pirate_captain",
      "portalMode": "cave_door"
    },
    {
      "id": "frozen_dungeon_0",
      "sectorId": "frostbite_expanse",
      "name": "Glacial Depths",
      "entranceModel": "cave",
      "minLevel": 4,
      "bossId": "boss_frost_warden",
      "interiorGlb": "models/warlords/fabled/dwarf_main_city.glb",
      "portalMode": "cave_door"
    },
    {
      "id": "fab_portal_main_city",
      "sectorId": "frostbite_expanse",
      "name": "Runeforge Hold · Dwarf Main City",
      "entranceModel": "cave",
      "minLevel": 4,
      "bossId": null,
      "interiorGlb": "models/warlords/fabled/dwarf_main_city.glb",
      "portalMode": "cave_door"
    },
    {
      "id": "forest_dungeon_0",
      "sectorId": "thornwood_wilds",
      "name": "Thornwood Labyrinth",
      "entranceModel": "tree_hollow",
      "minLevel": 3,
      "bossId": "boss_thorn_worge",
      "portalMode": "tree_hollow"
    },
    {
      "id": "volcanic_dungeon_0",
      "sectorId": "ember_depths",
      "name": "Magma Core",
      "entranceModel": "gate",
      "minLevel": 5,
      "bossId": "boss_gharthok",
      "portalMode": "gate"
    },
    {
      "id": "abyssal_dungeon_0",
      "sectorId": "abyssal_trench",
      "name": "Drowned Cathedral",
      "entranceModel": "ruins",
      "minLevel": 6,
      "bossId": "boss_drowned_priest",
      "portalMode": "ruins"
    },
    {
      "id": "desert_dungeon_0",
      "sectorId": "ashen_wastes",
      "name": "Sunken Tomb",
      "entranceModel": "ruins",
      "minLevel": 5,
      "bossId": "boss_ashen_aspect",
      "portalMode": "ruins"
    },
    {
      "id": "nexus_dungeon_0",
      "sectorId": "convergence_nexus",
      "name": "Racalvin's Vault",
      "entranceModel": "portal",
      "minLevel": 7,
      "bossId": "boss_herald_first_grudge",
      "portalMode": "portal"
    }
  ],
  "bosses": [
    {
      "id": "boss_pirate_captain",
      "sectorId": "haven_shore",
      "dungeonId": "tropical_dungeon_0",
      "name": "Pirate Captain",
      "phases": 1,
      "minLevel": 2
    },
    {
      "id": "boss_frost_warden",
      "sectorId": "frostbite_expanse",
      "dungeonId": "frozen_dungeon_0",
      "name": "Frost Warden",
      "phases": 2,
      "minLevel": 5
    },
    {
      "id": "boss_thorn_worge",
      "sectorId": "thornwood_wilds",
      "dungeonId": "forest_dungeon_0",
      "name": "Thorn Worge Alpha",
      "phases": 2,
      "minLevel": 4
    },
    {
      "id": "boss_gharthok",
      "sectorId": "ember_depths",
      "dungeonId": "volcanic_dungeon_0",
      "name": "Ghar'Thok the Unbroken",
      "phases": 3,
      "minLevel": 6,
      "modelKey": "models/bosses/orc_warrior"
    },
    {
      "id": "boss_drowned_priest",
      "sectorId": "abyssal_trench",
      "dungeonId": "abyssal_dungeon_0",
      "name": "Drowned Priest",
      "phases": 2,
      "minLevel": 7
    },
    {
      "id": "boss_ashen_aspect",
      "sectorId": "ashen_wastes",
      "dungeonId": "desert_dungeon_0",
      "name": "Ashen Aspect",
      "phases": 2,
      "minLevel": 6
    },
    {
      "id": "boss_herald_first_grudge",
      "sectorId": "convergence_nexus",
      "dungeonId": "nexus_dungeon_0",
      "name": "Herald of First Grudge",
      "phases": 3,
      "minLevel": 8
    }
  ],
  "events": [
    {
      "id": "evt_haven_trade_day",
      "sectorId": "haven_shore",
      "name": "Trade Day",
      "eventType": "island_event",
      "schedule": "daily"
    },
    {
      "id": "evt_frost_blizzard",
      "sectorId": "frostbite_expanse",
      "name": "Howling Blizzard",
      "eventType": "weather_hazard",
      "schedule": "hourly_chance"
    },
    {
      "id": "evt_fabled_forge_surge",
      "sectorId": "frostbite_expanse",
      "name": "Forge Surge",
      "eventType": "island_event",
      "schedule": "weekend"
    },
    {
      "id": "evt_thorn_hunt",
      "sectorId": "thornwood_wilds",
      "name": "Worge Hunt",
      "eventType": "island_event",
      "schedule": "daily"
    },
    {
      "id": "evt_nexus_clash",
      "sectorId": "convergence_nexus",
      "name": "Faction Clash",
      "eventType": "pvp_event",
      "schedule": "weekend"
    },
    {
      "id": "evt_ember_eruption",
      "sectorId": "ember_depths",
      "name": "Caldera Eruption",
      "eventType": "hazard",
      "schedule": "hourly_chance"
    },
    {
      "id": "evt_abyss_tide",
      "sectorId": "abyssal_trench",
      "name": "Black Tide",
      "eventType": "hazard",
      "schedule": "tide_cycle"
    },
    {
      "id": "evt_ashen_storm",
      "sectorId": "ashen_wastes",
      "name": "Glass Storm",
      "eventType": "weather_hazard",
      "schedule": "daily"
    }
  ],
  "recommendedFirstEntry": "haven_shore"
}
