# DC3-IMPL — Atelier de mods dans l'addon - **Fiches** : DC3-T1 (A-IMPL-H, scripts structurants) et DC3-T2 (A-IMPL-L, déplacements simples) — **Modèle** : M3 opus | opus pour les deux (DC3-T2 fait dans la foulée par la session principale, motif : les déplacements et les chemins des scripts sont imbriqués, un second agent aurait dû relire tout le contexte). - **Dépend de** : DC0-SPEC § 4. **Instantané addon** : `D:\Game\LifePlay_Backup_5.5\DC3-addon` (cibles absentes + `Config\LPSandbox.ini`, `.gitignore`, `README.md`). **Branche addon** : `lot/DC3-atelier` (depuis `lot/DC2-modtools`). - **Jeu** : côté jeu, rien n'est encore retiré (attente de la fin de la réécriture d'historique PUB1, autre session). ## Copie jeu → addon (même disposition relative) 746 fichiers comparés par SHA-256 : 0 différence (copie brute, avant adaptation). Une erreur de copie (`Tools/anim/methodes/*.json` arrivés dans `Tools/anim/`) corrigée aussitôt, contenu vérifié identique. | Élément | Addon | |---|---| | `Tools/BuildMod.ps1`, `NewMod.ps1`, `EditMod.ps1`, `ModSource.ps1`, `HairPipeline.ps1` | `Tools/` (adaptés, voir ci-dessous) | | `Tools/HairImportFbx.py`, `HairMaterials.py`, `FbxMaterialMap.py`, `ImportQuaternius.py`, `DiagnosePose.py` | `Tools/` (inchangés) | | `Tools/anim/` (`AnimPipeline.ps1`, `DeliverAnims.ps1` adaptés ; `.py`, `profiles/`, `methodes/` inchangés) | `Tools/anim/` — les 2 résidus non suivis `Tools/anim/21_Sandbox_Addon.md`, `Journal_Modifications.md` du jeu **non copiés** | | `Tools/hairs/`, `Tools/mods/` | idem | | `ModSources/` (3 mods, `*/Content` compris), `AnimSources/` | idem ; `ModSources/*/Content/` ignoré par git (comme dans le jeu) | | `Tools/debug/LifePlay_{pair,interaction,measure}_sandbox.bat` | `Tools/debug/` (adaptés) | | `Docs/Modding/FullGuides/Creating_Asset_Mods.md`, `ShortGuides/explanation.lphair` | `Docs/Modding/` | ## Deux racines - Nouveau `Tools/Roots.ps1` : `$LPSbRoot` (addon, déduit de l'emplacement de `Roots.ps1`) et `Resolve-LPRoots [-GameRoot]` → racine du jeu (paramètre, sinon `Config/LPSandbox.ini` `[Workshop] GameRoot=..\LifePlay-master 5.5`, sinon erreur ; contrôle de `LifePlay.uproject`). Testé : `D:\Game\LifePlay-master 5.5` / `D:\Game\LifePlay-Sandbox`. - `Config/LPSandbox.ini` de l'addon : section `[Workshop]` ajoutée (la copie du jeu reste lue par repli jusqu'à son retrait). - Chaque script reçoit `-GameRoot` (facultatif) ; `$Root` = jeu ; passent à `$LPSbRoot` : `ModSources`, `AnimSources`, `Tools/mods`, `Tools/anim/*.py`, `RetargetPack.py`, `ImportQuaternius.py` (`source.import` des `pack.json`), lanceur d'interaction, `BuildMod`/`DeliverAnims` appelés par le pilote (avec `-GameRoot $Root`) ; restent au jeu : projet, `Config/DefaultGame.ini`, `Releases`, `Mods`, `Content`, `Saved` (dont `travail` des `pack.json`), `Licenses`, `Tools/RunCommandlet.ps1`, `Tools/BuildCollections.py` (`HairPipeline` : chemin explicite vers le jeu). - `ModSource.ps1` : `Source = $LPSbRoot\ModSources\`, `Mounted = \Mods\` (signature inchangée). - Lanceurs `.bat` : `GAME` = `%LP_GAMEROOT%` sinon `%~dp0..\..\..\LifePlay-master 5.5` ; `PROJ`, `ROOT` (Mesure : `Saved\sandbox_mode.txt`) en dérivent. - Analyse syntaxique PowerShell (`Parser::ParseFile`) : 6 scripts sans erreur. ## Reste (après la fin de PUB1) Jeu : `git rm` des éléments copiés (scripts, `Tools/anim|hairs|mods`, `Config/LPSandbox.ini`, lanceurs, guide, `ModSources` suivi) ; `ModSources/`, `AnimSources/` et fichiers non suivis **déplacés** vers la sauvegarde (jamais supprimés) ; références (`SplitModules.ps1`, `LPModInfoSubsystem.h:8`, `BuildDebug.ps1:39`, `explanation.lpmod`, README, `.gitignore`) ; retrait des replis `ProjectDir()` / `ProjectConfigDir()` de `LPAnimMeasurePaths` et `LPSandboxConfig` (addon) — **reporté après DC3-T3** pour garder un repli pendant la validation. ## Report DC2 traité `LPModTools/LPAnimCatalogCommandlet.cpp` : `-Livraison=` devient obligatoire (erreur d'usage, code 1) ; l'ancien défaut (pack quaternius) faisait réécrire `Saved/AnimPipeline/quaternius/fiches_calculees.json` par un lancement sans argument (DC2-VAL, anomalie 1). Le pilote passe toujours `-Livraison=` (inchangé). Recompilation nécessaire (DC3-T3). ## Après PUB1 : retrait côté jeu (2026-10-07) - Addon commité d'abord : `1f4ec1f` (copie + adaptations, 164 fichiers). - Instantané jeu `D:\Game\LifePlay_Backup_5.5\DC3` (59 fichiers : les 53 suivis retirés + `SplitModules.ps1`, `LPModInfoSubsystem.h`, `BuildDebug.ps1`, `explanation.lpmod`, `README.md`, `.gitignore`). - `git rm --cached` de 57 fichiers suivis (dont `AnimSources/*/pack.json`, `Tools/DiagnosePose.py`, `Tools/ImportQuaternius.py`, suivis entre-temps par les commits de phase) ; **tout** le contenu disque correspondant (754 fichiers, dont `ModSources` 133 Mo et les 2 résidus de `Tools/anim`) **déplacé** vers `D:\Game\LifePlay_Backup_5.5\DC3\deplaces_du_jeu` (rien supprimé). Copie addon vérifiée identique (`pack.json`). - Références : `SplitModules.ps1:21,41`, `LPModInfoSubsystem.h:8`, `BuildDebug.ps1:39`, `explanation.lpmod:17` (dépôt de l'atelier), `README.md` (outils et guide dans un dépôt d'atelier séparé ; le jeu se construit sans lui), `.gitignore` (`/ModSources/*/…` → `/ModSources/`, `/AnimSources/`). Seul reste un commentaire périmé dans `LifePlay.Build.cs:30` (report DC4, avec `Json`). - Addon : replis vers le jeu retirés (`LPAnimMeasurePaths::ToolsAnimDir()` → `/Tools/anim` seul ; `LPSandboxConfig` → `/Config/LPSandbox.ini` seul).