# Tutoriel 9 — Inclure des assets du jeu (Asset Ripper)

La géométrie custom c'est bien, mais réutiliser les vrais meshes, textures et matériaux de VR Dungeon Knight donne à tes salles un aspect natif dans le jeu.
Ce tutoriel explique comment extraire ces assets (usage personnel uniquement) et les importer dans ton projet Unity.

---

## C'est quoi Asset Ripper ?

Asset Ripper est un outil open-source qui lit les asset bundles Unity et les convertit en fichiers importables (FBX, PNG, .mat, etc.).

- GitHub : [https://github.com/AssetRipper/AssetRipper](https://github.com/AssetRipper/AssetRipper)
- Dernière version : télécharge le build Windows GUI (`AssetRipper_win_x64.zip`)

> **Mention légale :** Les assets extraits sont des données du jeu appartenant au développeur.
> Utilise-les uniquement dans tes packs de salles personnels. Ne les redistribue pas.

---

## Étape 1 — Extraire les assets de VR Dungeon Knight

1. Trouve le dossier de données du jeu :
   ```
   Steam\steamapps\common\VR_DungeonKnight\VR_DungeonKnight_Data\
   ```

2. Ouvre Asset Ripper. Glisse le dossier `VR_DungeonKnight_Data` dans la fenêtre (ou via **File → Open Folder**).

3. Asset Ripper scanne tous les bundles (1–2 minutes).

4. Clique sur **Export → Export all files** et choisis un dossier de sortie (ex. `C:\RipOutput`).

5. À la fin tu obtiens une arborescence qui ressemble à un projet Unity :
   ```
   RipOutput/
     Assets/
       Mesh/
       Texture2D/
       Material/
       AudioClip/
       ...
   ```

---

## Étape 2 — Trouver les assets qui t'intéressent

Parcours `RipOutput/Assets/` avec l'Explorateur. Sous-dossiers utiles :

| Sous-dossier | Contenu |
|---|---|
| `Mesh/` | Fichiers `.fbx` — murs, sols, piliers, props |
| `Texture2D/` | Fichiers `.png` — toutes les textures |
| `Material/` | Fichiers `.mat` (format Unity — à recréer manuellement) |
| `Prefab/` | Hiérarchies de prefabs (utile comme référence, pas toujours importable tel quel) |

Utilise les noms pour identifier les assets : `DungeonWall_Stone`, `Floor_Tile_01`, etc.

---

## Étape 3 — Importer dans le projet room-template

Copie uniquement ce dont tu as besoin — tout importer alourdira le projet.

1. Dans l'Explorateur, copie les `.fbx` et `.png` choisis dans ton projet Unity :
   ```
   room-template/Assets/GameAssets/
   ```
   (Crée le dossier `GameAssets/` dans `Assets/` si besoin.)

2. Retourne dans Unity. Les fichiers apparaissent dans la fenêtre Project sous `Assets/GameAssets/`.

3. **Meshes (.fbx) :**
   - Sélectionne le `.fbx` dans le Project.
   - Onglet **Model** dans l'Inspector : mets **Scale Factor** à `1`, **Mesh Compression** à `Off`.
   - Clique **Apply**.
   - Le mesh est prêt à glisser dans la scène.

4. **Textures (.png) :**
   - Sélectionne chaque texture.
   - **Texture Type** → `Default` (ou `Normal Map` pour les normales).
   - Clique **Apply**.

5. **Matériaux :**
   - Ne copie pas les `.mat` directement — les références GUID seront cassées.
   - Crée de nouveaux matériaux dans Unity (`Assets → Create → Material`), puis assigne les textures extraites manuellement.

---

## Étape 4 — Utiliser les assets du jeu dans ta salle

Une fois importés, les assets du jeu s'utilisent comme n'importe quel autre asset :

- Glisse un mesh (ou un sous-mesh du FBX) dans la scène → crée un objet `MeshFilter` + `MeshRenderer`.
- Assigne un matériau avec la texture correspondante.
- Redimensionne, positionne, et combine avec ta géométrie custom.
- Ajoute un `MeshCollider` (désactive **Convex** pour la géométrie statique) pour que le joueur puisse marcher dessus.

### Astuce — Reproduire les matériaux du jeu

Pour coller exactement à l'apparence en jeu :

1. Ouvre le fichier `.mat` rippé dans un éditeur texte pour voir le shader et les noms de textures référencés.
2. Dans Unity, utilise le shader **Standard**, assigne la texture Albedo et éventuellement la Normal Map.
3. Ajuste les valeurs Metallic / Smoothness pour correspondre à ce que tu vois dans le fichier rippé.

---

## Étape 5 — Exporter et tester

Rien ne change dans la procédure d'export :

1. **AssetBundles → Build AssetBundles** (menu Window).
2. Copie `[nom-bundle].rooms` dans `BepInEx\data\fantastic-jam-DKReforged\rooms\[nom-bundle]\`.
3. Lance le jeu en mode solo et entre dans ta salle.

Les textures et meshes sont packés dans le `.rooms` — la salle s'affiche correctement même sans les fichiers rippés sur le PC du joueur.

---

## Problèmes courants

| Problème | Solution |
|---|---|
| Le mesh est retourné (faces inversées) | Inverse les normales dans Blender, ou active **Two-Sided** sur le matériau |
| Texture rose (manquante) | Réassigne la texture dans le slot du matériau |
| Le joueur tombe à travers le sol | Ajoute un `MeshCollider`, vérifie que **Is Trigger** est décoché |
| Asset Ripper plante à l'export | Exporte uniquement les fichiers `sharedassets*.assets` au lieu du dossier complet |

---

## Récapitulatif

| Étape | Action |
|---|---|
| 1 | Extraire les données du jeu avec Asset Ripper |
| 2 | Choisir les `.fbx` / `.png` utiles |
| 3 | Importer dans `Assets/GameAssets/` |
| 4 | Créer de nouveaux matériaux et assigner les textures |
| 5 | Builder le bundle et tester |

Les assets du jeu apportent une cohérence visuelle immédiate — combine-les avec ta propre mise en scène pour créer des salles qui semblent faire naturellement partie du donjon.
