# Custom Rooms — Tutorial Series

These tutorials walk you through creating custom dungeon rooms for **VR Dungeon Knight** using the **DKReforged** mod.

No prior Unity or 3D modelling experience required.

## Tutorials

| # | File | What you will learn |
|---|---|---|
| 1 | [01-init.md](01-init.md) | Set up the Unity project and create `rooms.json` |
| 2 | [02-simple-room.md](02-simple-room.md) | Build a complete minimal room: floor, walls, spawn, door |
| 3 | [03-improve-room.md](03-improve-room.md) | Add textures, external 3D assets, loot, decoration |
| 4 | [04-enemies.md](04-enemies.md) | Enemy spawns, NavMesh, monster-locked door |
| 5 | [05-trap-room.md](05-trap-room.md) | Trap placement and trap+enemy design |
| 6 | [06-puzzle-room.md](06-puzzle-room.md) | Key doors and key-hunt room design |
| 7 | [07-multiple-parts.md](07-multiple-parts.md) | Multi-prefab bundles, corridor+room pairs, large rooms |
| 8 | [08-ideas.md](08-ideas.md) | Ideas and techniques to go further |
| 9 | [09-game-assets.md](09-game-assets.md) | Extract and reuse game meshes/textures with Asset Ripper |
| 10 | [10-scripted-puzzle.md](10-scripted-puzzle.md) | Scripted puzzle: collect tokens to unlock a key (custom MonoBehaviour) |
| 11 | [11-lods.md](11-lods.md) | LOD groups — optimize performance in large rooms |

## Prerequisites

- Windows PC
- VR Dungeon Knight installed
- DKReforged mod installed in `BepInEx\plugins\fantastic-jam-DKReforged\`
- Free disk space (~2 GB for Unity)

## How it works

DKReforged automatically scans `BepInEx\data\fantastic-jam-DKReforged\rooms\` at the start of every solo run. Each subfolder is a room pack. Rooms are built in Unity, exported as `.rooms` asset bundle files, and placed in those subfolders.

The mod injects the rooms into the dungeon pool — no code required on your side.

## Marker quick reference

| Object name | Role | Required? |
|---|---|---|
| `SpawnHere` | Player spawn point | Yes |
| `WhatLockIsNeeded` | Door to the next room | Yes |
| `WhatLockIsNeeded/MonsterLock` | Door that unlocks when all enemies are dead | One of three |
| `WhatLockIsNeeded/UnbarredDoor` | Always-open door | One of three |
| `WhatLockIsNeeded/KeyLock` | Key door | One of three |
| `DoorKeySpawner` | Where the key spawns (with KeyLock) | With KeyLock |
| `EnemySpawn` | Enemy spawn point | No |
| `LootSpawner` | Loot drop point | No |
| `Trap` | Trap spawn point | No |
