Dungeons Reference
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
| Field | Type | Required | Description |
|---|---|---|---|
displayName | string (lang key) | ✅ | Registry key for the dungeon display name. |
description | string (lang key) | ✅ | Registry key for the dungeon description. |
meta | string | ✅ | Faction/type tag. Format: <faction>/<type>. Example: "pirate/dungeon" |
energyCost | integer | ✅ | Energy spent to enter. Use 0 for free entry. |
repeatable | boolean | ✅ | true = farmable. false = one-time only (e.g. tutorials). |
raid | boolean | ✅ | Whether this dungeon is a multiplayer raid. |
rooms | array of strings | ✅ | Ordered 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"
]
}