LifePlay-Revival/Docs/Migration/etat/sandbox/DC3/DC3-IMPL.md
edujiro5972 e46093c81c DC3 : atelier de mods hors du jeu, dans l'addon LifePlay-Sandbox (CHG-236)
Retrait de BuildMod, NewMod, EditMod, ModSource, HairPipeline et leurs .py, Tools/anim,
Tools/hairs, Tools/mods, ModSources, AnimSources, Config/LPSandbox.ini, lanceurs sandbox et
guide des moddeurs (57 fichiers suivis ; contenu disque deplace vers la sauvegarde DC3).
References et docs mises a jour. Pin addon 79f0205. Validation : DC3-VAL PASS (cuisson
lpr_anim_freeanims depuis l'addon identique au mod publie, tournee identique a SB2-REF).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 19:53:13 +02:00

68 lines
5.6 KiB
Markdown

# 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\<Mod>`, `Mounted = <jeu>\Mods\<Mod>` (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()` → `<addon>/Tools/anim` seul ;
`LPSandboxConfig` → `<addon>/Config/LPSandbox.ini` seul).