A dungeon is a structured series of rooms that a player enters and progresses through in order. Dungeons reference rooms by registry key — they do not define enemies or loot directly.

Files live in: <pack_root>/data/dungeons/<group_folder>/<dungeon_name>.json

JSON Shape

{
  "displayName": "dungeons.mypack.pirate.pirates_outpost",
  "description": "dungeons.mypack.pirate.pirates_outpost.desc",
  "meta": "pirate/dungeon",
  "energyCost": 10,
  "repeatable": true,
  "raid": false,
  "rooms": [
    "dungeons.mypack.pirate.patrol_room",
    "dungeons.mypack.pirate.cargo_bay",
    "dungeons.mypack.pirate.warlord_bridge"
  ]
}

Field Reference

FieldTypeRequiredDescription
displayNamestring (lang key)Registry key for the dungeon display name.
descriptionstring (lang key)Registry key for the dungeon description.
metastringFaction/type tag. Format: <faction>/<type>. Example: "pirate/dungeon"
energyCostintegerEnergy spent to enter. Use 0 for free entry.
repeatablebooleantrue = farmable. false = one-time only (e.g. tutorials).
raidbooleanWhether this dungeon is a multiplayer raid.
roomsarray of stringsOrdered list of room registry keys. Rooms are encountered in sequence. Duplicate entries are valid.

Content Reference Chain

dungeon.json  →  rooms[] registry keys
room.json     →  hostiles[] registry keys + loot[].id registry keys
hostile.json  →  stats + loot[] registry keys

Example — Repeatable Farming Dungeon

{
  "displayName": "dungeons.mypack.pirate.pirates_outpost",
  "description": "dungeons.mypack.pirate.pirates_outpost.desc",
  "meta": "pirate/dungeon",
  "energyCost": 10,
  "repeatable": true,
  "raid": false,
  "rooms": [
    "dungeons.mypack.pirate.patrol_room",
    "dungeons.mypack.pirate.cargo_bay",
    "dungeons.mypack.pirate.patrol_room",
    "dungeons.mypack.pirate.warlord_bridge"
  ]
}

Example — One-Time Tutorial

{
  "displayName": "dungeons.mypack.training.boot_camp",
  "description": "dungeons.mypack.training.boot_camp.desc",
  "meta": "training/tutorial",
  "energyCost": 0,
  "repeatable": false,
  "raid": false,
  "rooms": [
    "dungeons.mypack.training.basic_combat_room",
    "dungeons.mypack.training.loot_intro_room",
    "dungeons.mypack.training.commander_fight"
  ]
}

Example — Multiplayer Raid

{
  "displayName": "dungeons.mypack.void.collapsed_star",
  "description": "dungeons.mypack.void.collapsed_star.desc",
  "meta": "void/raid",
  "energyCost": 50,
  "repeatable": true,
  "raid": true,
  "rooms": [
    "dungeons.mypack.void.void_sentinels_room",
    "dungeons.mypack.void.void_sentinels_room",
    "dungeons.mypack.void.void_overlord_room"
  ]
}