# 02 — Salle Simple

Construis une salle minimale complète : sol, murs, plafond, point de spawn, lumière ambiante et porte de sortie. À la fin de ce tutoriel, ta salle apparaîtra dans le jeu.

---

## Étape 1 : Créer l'objet racine

Chaque salle doit avoir **un objet parent** qui contient tout le reste.

1. Dans Unity → **File → New Scene** (ou ouvre la scène vide existante)
2. Dans la **Hierarchy**, clic droit → **Create Empty**
3. Renomme-le avec la convention `[nom-bundle]_[NomSalle]` :
   - Exemple : `mon-pack_SallePrincipale`
   - Le nom du bundle doit être en minuscules avec des tirets
   - **Ce nom doit être unique parmi tous les mods** — préfixe toujours avec le nom de ton bundle
4. Dans l'**Inspector**, règle la Position sur `(0, 0, 0)`

---

## Étape 2 : Construire la géométrie

### Sol

1. Clic droit sur l'objet racine → **3D Object → Plane**
2. Inspector : Position `(0, 0, 0)`, Scale `(2, 1, 2)` — donne un sol de ~20m × 20m

### Murs

Crée quatre Cubes enfants de l'objet racine :

| Mur | Position | Scale |
|---|---|---|
| Nord | `(0, 2.5, 10)` | `(20, 5, 0.3)` |
| Sud | `(0, 2.5, -10)` | `(20, 5, 0.3)` |
| Est | `(10, 2.5, 0)` | `(0.3, 5, 20)` |
| Ouest | `(-10, 2.5, 0)` | `(0.3, 5, 20)` |

### Plafond

Un autre Cube : Position `(0, 5, 0)`, Scale `(20, 0.3, 20)`

### Ouverture pour la sortie

La porte nécessite un vide dans un mur. Divise le mur nord en deux Cubes :

- Supprime le Cube du mur nord
- **Section gauche** : Position `(-5.5, 2.5, 10)`, Scale `(9, 5, 0.3)`
- **Section droite** : Position `(5.5, 2.5, 10)`, Scale `(9, 5, 0.3)`
- Cela laisse un vide de 2m au centre

---

## Étape 3 : Ajouter une lumière

Les salles ont besoin d'au moins une lumière — sans elle la salle est complètement noire.

> La Directional Light par défaut de la scène est un **objet de scène** et **n'est pas exportée avec le bundle**. Ajoute les lumières comme enfants de ton objet racine.

1. Clic droit sur l'objet racine → **Light → Directional Light**
2. Règle la Rotation sur `(50, -30, 0)` pour un éclairage d'ambiance
3. Règle **Intensity** sur `0.8`

Pour un effet plus atmosphérique, ajoute aussi une Point Light :

1. Clic droit sur l'objet racine → **Light → Point Light**
2. Position : `(0, 4, 0)` — centre, près du plafond
3. Range : `20`, Intensity : `1`

---

## Étape 4 : Importer un asset de cadre de porte

Les marqueurs de porte ne gèrent que la logique — aucun visuel n'est fourni. Tu dois construire ou importer un cadre de porte pour marquer l'ouverture.

### Option A — Le construire avec des Cubes (le plus simple)

Crée deux Cubes hauts et fins comme montants et un Cube plat comme linteau :

- **Montant gauche** : Position `(-1.1, 2.5, 10)`, Scale `(0.2, 5, 0.3)`
- **Montant droit** : Position `(1.1, 2.5, 10)`, Scale `(0.2, 5, 0.3)`
- **Linteau** : Position `(0, 5, 10)`, Scale `(2.4, 0.3, 0.3)`

### Option B — Importer depuis Blender (FBX)

Unity 2018 **n'est pas compatible** avec la plupart des packages de l'Unity Asset Store (ils nécessitent Unity 2019+). La méthode recommandée pour intégrer des assets 3D personnalisés est d'exporter depuis **Blender** en FBX.

**Dans Blender :**

1. Modélise ou télécharge ton cadre de porte
2. **File → Export → FBX (.fbx)**
3. Dans les paramètres d'export :
   - Coche **Apply Transform** (sous Geometry)
   - **Forward** : `-Z Forward`
   - **Up** : `Y Up`
   - Scale : `1.00`
4. Sauvegarde le fichier `.fbx`

**Dans Unity :**

1. Glisse le fichier `.fbx` depuis l'Explorateur Windows dans le dossier **Project**
2. Unity l'importe automatiquement — un asset de modèle apparaît
3. Glisse le modèle depuis le Project dans la Hierarchy, sous ton objet racine
4. Positionne-le au niveau de l'ouverture

---

## Étape 5 : Placer le marqueur de spawn

1. Clic droit sur l'objet racine → **Create Empty**
2. Renomme-le exactement `SpawnHere`
3. Position : `(0, 0, -5)` — loin de la porte, quelque part dans la salle

---

## Étape 6 : Placer le marqueur de porte de sortie

1. Clic droit sur l'objet racine → **Create Empty**
2. Renomme-le `WhatLockIsNeeded`
3. Position : `(0, 1, 9.5)` — au centre de l'ouverture
4. Clic droit sur `WhatLockIsNeeded` → **Create Empty**
5. Renomme l'enfant `UnbarredDoor` — cette porte est toujours ouverte (aucun ennemi nécessaire)

> Une fois les ennemis ajoutés (tutoriel 04), remplace `UnbarredDoor` par `MonsterLock`.

---

## Étape 7 : Vérification de la Hierarchy

```
mon-pack_SallePrincipale
├── Plane (sol)
├── Cube (mur sud)
├── Cube (mur est)
├── Cube (mur ouest)
├── Cube (mur nord gauche)
├── Cube (mur nord droit)
├── Cube (plafond)
├── Cube (montant gauche)
├── Cube (montant droit)
├── Cube (linteau)
├── Directional Light
├── Point Light
├── SpawnHere
└── WhatLockIsNeeded
    └── UnbarredDoor
```

---

## Étape 8 : Créer le Prefab

1. Dans le dossier **Project**, crée un dossier : clic droit → **Create → Folder**, nomme-le `Salles`
2. Glisse ton objet racine depuis la **Hierarchy** dans le dossier `Salles`
3. Un fichier Prefab bleu apparaît — l'objet dans la Hierarchy devient aussi bleu

---

## Étape 9 : Assigner l'Asset Bundle

1. Sélectionne le Prefab dans le dossier `Salles`
2. En bas de l'**Inspector**, trouve la section **AssetBundle**
3. Clique sur le dropdown gauche (`None`) → **New** → tape le nom de ton bundle : `mon-pack`
4. Laisse le dropdown droit vide

---

## Étape 10 : Exporter

> ⚠️ N'utilise **pas** **File → Build Settings → Build** — ça essaie de compiler un jeu complet et échouera.

1. Menu Unity en haut → **Build → Asset Bundles (Windows)**
2. Attends quelques secondes
3. Un dossier `Bundles/` apparaît à la racine du projet Unity
4. Trouve le fichier nommé `mon-pack` (sans extension) — renomme-le en `mon-pack.rooms`

---

## Étape 11 : Installer et tester

1. Copie `mon-pack.rooms` dans :
   ```
   BepInEx\data\fantastic-jam-DKReforged\rooms\mon-pack\
   ```
2. Lance VR Dungeon Knight, commence une partie solo
3. Vérifie `BepInEx\LogOutput.log` pour :
   ```
   [RoomLoader] 1 room(s) loaded from mon-pack.rooms (pool: NormalRoomStructures)
   ```

> Si ta salle n'apparaît pas après plusieurs parties, c'est la sélection aléatoire. Mets `TestRoom = mon-pack` dans le fichier de config BepInEx pour la forcer comme première salle.

---

## Problèmes courants

| Problème | Solution |
|---|---|
| "Asset bundle version mismatch" dans les logs | Mauvaise version Unity — doit être exactement **2018.2.4f1** |
| La salle charge mais le joueur tombe | Le sol Plane est trop petit ou manquant |
| La sortie ne se déclenche pas | `WhatLockIsNeeded` manquant ou sans enfant (`UnbarredDoor` / `MonsterLock`) |
| Rien dans les logs du RoomLoader | Le nom du fichier bundle ne correspond pas au nom du dossier |

---

## Suite

→ [03-improve-room.md](03-improve-room.md) — ajouter textures, meilleurs assets et butin
