LifePlay-Revival/Docs/Migration/etat/U58/U4/U4-T1-CART.md

91 lines
12 KiB
Markdown
Raw Normal View History

Fiche U4-T1 — Niveau N1 — Modèle prévu sonnet | utilisé Sonnet 5.5 (claude-sonnet-5-5) — Agent lp-inventory — Skills sk-protocol, sk-recount, lp-paths
# U4-T1 — Cartographie des références 5.5 dans le worktree addon 5.8
Lecture seule. Aucun fichier du worktree modifié.
## 1. Porte d'entrée (arrêt de la fiche)
`git -C D:/Game/LifePlay-Sandbox-5.8 rev-parse --abbrev-ref HEAD` -> `ue5.8` ; `rev-parse --short HEAD` -> `f9033a1` ; `git status --porcelain` -> vide. Établi. Pas d'arrêt.
## 2. Commandes et comptes bruts
Toutes depuis `D:/Game/LifePlay-Sandbox-5.8` (fichiers suivis par git uniquement ; `Binaries/Intermediate/Saved` absents du suivi).
| Commande | Résultat |
|---|---|
| `git grep -n -I -E '5\.5\|5_5\|UE_5\|LifePlay-master\|EngineAssociation\|BuildSettingsVersion\|IncludeOrderVersion\|DefaultBuildSettings\|Unreal5_\|CompilerVersion\|Game.Launcher'` | **192 lignes**, 36 fichiers |
| même motif, `git grep -c -I ... \| awk -F: '{s+=$2} END{print s}'` (recompte autre formulation) | 192 (confirmé) |
| `git grep -n 'UE_5\.5' \| cut -d: -f1 \| sort -u \| wc -l` | 16 fichiers |
| `git grep -n -E 'UE_5\.5' -- ':!Tools/claude' ':!README.md' ':!Docs' \| wc -l` | 8 lignes (les 8 scripts connus) |
| `git grep -c 'LifePlay_Backup_5.5' -- Tools/mods Tools/hairs` | HAIRS1.json 13, lpr_hair_pocolov.json 25 |
| `git ls-files \| grep -iE 'Build\|Engine\|Roots'` | 5 `*.Build.cs`/ini + `Tools/BuildMod.ps1`, `Tools/Roots.ps1` |
Répartition par fichier (192) : lpr_hair_pocolov.json 25, lp-build/SKILL.md 22, lp-ue-compat/ruptures.md 20, lp-ue-compat/SKILL.md 16, HAIRS1.json 13, lp-env/SKILL.md 13, README.md 11, lp-validate 9, lp-paths 9, lp-lot 7, lp-commandlets 5, lp-build/symptoms.md 4, Docs/SB-plan.md 4, LPSandbox.uproject 3, Creating_Asset_Mods.md 3, 3 `.bat` 2 chacun, lp-doc 2, BuildMod.ps1 2, 2 Target.cs 2 chacun, et 1 pour : RapportControles.py, DeliverAnims.ps1, AnimPipeline.ps1, NewMod.ps1, HairPipeline.ps1, EditMod.ps1, LPHairFromStaticMeshCommandlet.h/.cpp, LPAuditBlueprintCallsCommandlet.cpp, SB0-conception.md, S3-move.md, LPSandbox.ini, DefaultGame.ini, DefaultEngine.ini.
Absences vérifiées (motif large, 0 résultat attendu et plausible) : aucun `.Build.cs` (5 fichiers) ni `LPSandbox.uplugin` ne contient 5.5 ni `EngineVersion` (`grep -n -i 'engine\|version' Plugins/LPSandbox/LPSandbox.uplugin` ne montre que `FileVersion`, `Version`, `VersionName`, `IsBetaVersion`). Aucun `CompilerVersion` dans l'addon. Aucun `.cmd`/`.py` autre que RapportControles.py:10.
## 3. Tableau des occurrences A et B (détail vérifiable)
| fichier:ligne | extrait | cat. | remplacement proposé pour 5.8 |
|---|---|---|---|
| LPSandbox.uproject:3 | `"EngineAssociation": "5.5",` | A | `"5.8"` |
| LPSandbox.uproject:5 | `"Description": "... UE 5.5"` | C | texte -> UE 5.8 (cosmétique) |
| LPSandbox.uproject:20 | `"../LifePlay-master 5.5/Plugins/LPAnimCore"` | A | `../LifePlay-master 5.8/Plugins/LPAnimCore` (chemin relatif au dossier du .uproject ; voir § 5 sur le nom du dossier frère) |
| Source/LPSandbox.Target.cs:12 | `DefaultBuildSettings = BuildSettingsVersion.V5;` | A | `V7` (symptoms.md:24 et lp-ue-compat : la cible éditeur 5.8 refuse V5) |
| Source/LPSandbox.Target.cs:13 | `IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_5;` | A | `Latest` ou `Unreal5_8` (5.8 : `Unreal5_5` obsolète, `Oldest = Unreal5_6`, ruptures.md:100-101) |
| Source/LPSandboxEditor.Target.cs:12 | idem V5 | A | `V7` |
| Source/LPSandboxEditor.Target.cs:13 | idem Unreal5_5 | A | `Latest` / `Unreal5_8` |
| Config/LPSandbox.ini:46 | `GameRoot=..\LifePlay-master 5.5` | B (lu par Roots.ps1) | `..\LifePlay-master 5.8` ; ou fixer `-GameRoot` à l'appel |
| Tools/BuildMod.ps1:53 | `$UE = 'D:\Game\Launcher\Engine\UE_5.5\Engine'` | B | `...\UE_5.8\Engine` (ou lecture via Engine.ps1 du jeu, décision orchestrateur) |
| Tools/BuildMod.ps1:30 | exemple `-Install D:\Game\LifePlay_Build_5.5_H3d\Windows` | C (aide en commentaire) | chemin de build 5.8 d'exemple |
| Tools/EditMod.ps1:23 | `$Editor = '...\UE_5.5\Engine\Binaries\Win64\UnrealEditor.exe'` | B | `UE_5.8` |
| Tools/HairPipeline.ps1:53 | `$UE = '...\UE_5.5\...\UnrealEditor-Cmd.exe'` | B | `UE_5.8` |
| Tools/anim/AnimPipeline.ps1:47 | `$Editor = '...\UE_5.5\...\UnrealEditor-Cmd.exe'` | B | `UE_5.8` |
| Tools/anim/DeliverAnims.ps1:49 | `$Editor = '...\UE_5.5\...\UnrealEditor-Cmd.exe'` | B | `UE_5.8` |
| Tools/debug/LifePlay_interaction_sandbox.bat:6 | `... else (set "GAME=%~dp0..\..\..\LifePlay-master 5.5")` | B | `LifePlay-master 5.8` |
| Tools/debug/LifePlay_interaction_sandbox.bat:7 | `set "UE=...\UE_5.5\...\UnrealEditor.exe"` | B | `UE_5.8` |
| Tools/debug/LifePlay_measure_sandbox.bat:6 / :9 | idem (GAME 5.5 / UE_5.5) | B | idem |
| Tools/debug/LifePlay_pair_sandbox.bat:6 / :7 | idem | B | idem |
| Tools/anim/RapportControles.py:10 | défaut `D:\\Game\\LifePlay-master 5.5\\Saved\\AnimPipeline\\quaternius` | B (chemin du jeu, défaut de docstring/argument) | `LifePlay-master 5.8` si le défaut est actif ; non vérifié si c'est code ou docstring (incertain) |
| Tools/NewMod.ps1:73 | `backup = "D:/Game/LifePlay_Backup_5.5/mods/$Name"` | D (dossier de sauvegarde indépendant du moteur, cf. Engine.ps1 du jeu) | ne pas toucher |
Les 8 scripts attendus (critère fiche § 8) y figurent : AnimPipeline.ps1:47, DeliverAnims.ps1:49, BuildMod.ps1:53, les 3 `.bat` (:7, :9, :7), EditMod.ps1:23, HairPipeline.ps1:53. Recompte : `git grep -n 'UE_5\.5' -- ':!Tools/claude' ':!README.md' ':!Docs'` = 8 lignes, 8 fichiers (le fichier measure_sandbox.bat porte UE_5.5 à la ligne 9, non 7).
Comptes par catégorie (hors lignes C/D listées ci-après) : A = 6 lignes (uproject :3, :20 ; Target.cs 4 lignes... soit 2 + 4 = 6). B = 13 lignes (LPSandbox.ini:46 ; 5 scripts .ps1 = 5 ; 3 .bat x 2 = 6 ; RapportControles.py:10 = 1). Moins de 300 : détail fourni.
## 4. Occurrences C et D (par fichier)
C (skills / docs de méthode / docs d'usage à mettre à jour), détail par `git grep -n` ci-dessus :
- README.md : 3, 19, 25, 56, 83, 88, 101, 107, 118, 119, 125 (11 lignes). Lignes 56, 101, 107 sont des commandes (Build.bat LifePlayEditor / LPSandboxEditor, UnrealEditor.exe en `UE_5.5`) : à passer en UE_5.8 ; 118-119 décrivent le défaut `..\LifePlay-master 5.5`.
- Docs/Modding/Creating_Asset_Mods.md : 3, 30, 39 (guide public, "UE 5.5" et `UE_5.5` : à mettre à jour à la release 5.8).
- Docs/SB-plan.md:183 contient une commande de build `UE_5.5` ; autres lignes 154, 186, 247 = chemins.
- Tools/claude/skills/** (lp-build 22, lp-ue-compat 36, lp-env 13, lp-validate 9, lp-paths 9, lp-lot 7, lp-commandlets 5, lp-doc 2, symptoms 4) : ces skills sont des copies de ceux du jeu (jonction `.claude\skills`) ; lp-build/SKILL.md:19 et symptoms.md:27 décrivent déjà la collision addon 5.5/5.8 ; plusieurs lignes sont volontairement bilingues 5.5/5.8 (à ne pas réécrire mécaniquement).
- Config/DefaultEngine.ini:3, Config/DefaultGame.ini:3 : commentaires (chemin 5.5, "clé non supportée par UE 5.5") ; Plugins/.../LPHairFromStaticMesh*.h/.cpp:1 et LPAuditBlueprintCallsCommandlet.cpp:673 : commentaires (la dernière cite déjà 5.5 et 5.8). Catégorie D/C selon décision, sans effet sur la compilation.
D (historique, ne pas toucher) : Tools/mods/lpr_hair_pocolov.json (25 lignes) et Tools/hairs/HAIRS1.json (13 lignes), toutes des chemins `D:/Game/LifePlay_Backup_5.5/...` (sauvegarde indépendante du moteur ; `grep -vc 'LifePlay_Backup_5.5'` = 0 ligne différente pour lpr_hair_pocolov.json) ; Docs/SB0-conception.md:4, Docs/S3-move.md:108 (décrit les Target.cs 5.5), Docs/SB-plan.md:154, 186, 247 ; NewMod.ps1:73.
Total vérifié : A 6 + B 13 + D (json 38 + NewMod 1 + Docs 5 + ...) + C : la somme exacte par catégorie n'a pas été recalculée ligne à ligne pour C/D ; seul le total brut 192 est établi.
## 5. Mécanisme moteur / jeu
Addon (worktree) :
- `Tools/Roots.ps1` (lu en entier) : `Resolve-LPRoots` ne résout QUE le jeu, pas le moteur. Ordre : paramètre `-GameRoot` du script appelant, sinon `Config\LPSandbox.ini` section `[Workshop]` clé `GameRoot` (ligne 46 : `..\LifePlay-master 5.5`, relative à la racine de l'addon), sinon erreur ; exige `LifePlay.uproject` dans cette racine. Les scripts Tools qui l'appellent : BuildMod.ps1:50-51, EditMod.ps1:20-21, HairPipeline.ps1:50-51, NewMod.ps1:33-34, AnimPipeline.ps1:45-46, DeliverAnims.ps1:46-47.
- Moteur : codé en dur dans 5 `.ps1` (`UE_5.5`) ; dans les 3 `.bat`, moteur en dur `UE_5.5` et jeu = `%LP_GAMEROOT%` si défini, sinon `%~dp0..\..\..\LifePlay-master 5.5` (frère de l'addon). Aucun script de l'addon ne lit `EngineAssociation` ni n'appelle `Engine.ps1` (`git grep -n 'Engine\.ps1\|LP_ENGINE'` : seulement des mentions dans les skills). Établi.
- Conséquence : le worktree `D:\Game\LifePlay-Sandbox-5.8` étant frère de `LifePlay-master 5.5`, le défaut `..\` de LPSandbox.ini et des `.bat` désigne la copie 5.5, pas `LifePlay-master 5.8`, tant qu'on ne change pas la valeur ou n'exporte pas `LP_GAMEROOT`/`-GameRoot`. Estimé (calcul de chemin, non exécuté).
Jeu 5.8 (`D:\Game\LifePlay-master 5.8\Tools\Engine.ps1`, lu, sans conclusion d'autorité) : à dot-sourcer ; lit `EngineAssociation` de `LifePlay.uproject` (doit être de forme X.Y), définit `$LPEngineVersion`, `$LPEngineBase = 'D:\Game\Launcher\Engine'` (seul chemin moteur codé en dur), `$LPEngineRoot = $LPEngineBase\UE_<version>\Engine` ou `$env:LP_ENGINE_ROOT` s'il est défini, `$LPBuildRoot = D:\Game\LifePlay_Build_<version>` ; lève une erreur si le moteur n'existe pas, sauf `-NoCheck`. Il lit l'`.uproject` du JEU (son propre dossier parent), pas celui de l'addon. Les scripts de l'addon ne l'utilisent pas aujourd'hui.
## 6. Compilation du projet LPSandbox
- Aucun script de l'addon ne compile LPSandbox : `git grep -n -E 'Build\.bat|UnrealBuildTool|Build\.cs|Resolve-LPRoots'` sur Tools/*.ps1 et Tools/anim/*.ps1 ne trouve aucun appel de Build.bat/UBT. Établi.
- Seul `Tools/BuildMod.ps1:233` lance `RunUAT.bat BuildCookRun -project="$Root\LifePlay.uproject"` (cuisson d'un mod, projet du JEU, moteur `$UE` = UE_5.5 ligne 53) ; ce n'est pas une compilation de LPSandbox.
- Les commandes de compilation sont uniquement documentées, README.md:101 : `...\UE_5.5\Engine\Build\BatchFiles\Build.bat LPSandboxEditor Win64 Development -Project='D:\Game\LifePlay-Sandbox\LPSandbox.uproject' -WaitMutex` (cible autonome de l'addon, moteur 5.5) ; README.md:56 et Docs/SB-plan.md:183 : `Build.bat LifePlayEditor ... -Project='D:\Game\LifePlay-master 5.5\LifePlay.uproject'` (compile le jeu, l'addon arrivant par `AdditionalPluginDirectories` du jeu).
- Cibles : `Source/LPSandbox.Target.cs` et `Source/LPSandboxEditor.Target.cs` (V5 / Unreal5_5), modules `LPSandboxApp` (Source) + plugin LPSandbox (modules LPSandbox, LPAnimMeasure, LPModTools).
- Pas de `CompilerVersion` épinglé dans `Config/DefaultEngine.ini` de l'addon (0 occurrence) : l'épinglage MSVC vit dans le jeu (non vérifié ici, voir lp-build/SKILL.md:14-15 : 14.38.33130 en 5.5, 14.50.35717 en 5.8).
- `Tools/claude/skills/lp-build/SKILL.md:19` et `symptoms.md:27` signalent que les copies 5.5 et 5.8 partagent le dossier addon (binaires 5.5 écrasables) : le worktree `Sandbox-5.8` est le contournement prévu ; son `Plugins/LPSandbox/Binaries` ne figure pas dans le suivi git.
## 7. Niveaux de preuve
- Établi : porte (branche/commit), comptes 192 / 16 / 8 et lignes des tableaux A/B (relus par `git grep -n`), contenu de Roots.ps1 et Engine.ps1, absence de commande de compilation dans les scripts Tools, absence de 5.5 dans Build.cs et .uplugin.
- Estimé : résolution du défaut `..\LifePlay-master 5.5` vers la copie 5.5 depuis le worktree frère ; valeurs de remplacement V7 / Latest (tirées des skills lp-build/symptoms.md:24 et lp-ue-compat/ruptures.md:100-101, citations de documentation non revérifiées dans UE_5.8/Engine/Source).
- Incertain : statut code ou commentaire de RapportControles.py:10 (à trancher en lisant la ligne dans son contexte) ; répartition C/D exacte du total 192 (somme par catégorie non recalculée ligne à ligne) ; si `AdditionalPluginDirectories` de l'addon 5.8 doit pointer le jeu 5.8 (décision U4, non conclue ici).