LifePlay-Revival/Docs/Migration/etat/SK/SK-T4-V1c.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

99 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SK-T4-V1c — skills `ue-cpp-build` et `lp-ue-compat`
Fiche SK-T4-V1c — Niveau N3 — Modèle prévu opus-xhigh | utilisé opus
Lot SK, vague V1 (avant U0). Date : 2026-10-08.
## 1. Résultat
| Skill | Couche | Emplacement | Fichiers (lignes) |
|---|---|---|---|
| `ue-cpp-build` | 2 | `%USERPROFILE%\.claude\skills\ue-cpp-build\` | `SKILL.md` (99), `reference.md` (53), `LICENSE` (25, avis MIT de la source) |
| `lp-ue-compat` | 3 | `D:\Game\LifePlay-Sandbox\Tools\claude\skills\lp-ue-compat\` | `SKILL.md` (60), `ruptures.md` (99) |
Les deux `SKILL.md` ≤ 120 lignes (R9) ; corps en français, `description` avec mots-clés anglais (R12) ; aucun contenu
de jeu (seuls chemins, API, numéros d'erreur) ; aucun script embarqué ; pas d'`allowed-tools`.
Écart au § 5.3 de SK-ARBRE : l'annexe s'appelle `ruptures.md` (consigne de la fiche) et non `api-table.md`.
Le patron « sous-système garde / FTSTicker », les verrous L7c et les règles jeu/addon prévus au § 5.3 ne sont pas
traités (hors consigne de cette fiche) : à ajouter en U3 si besoin.
## 2. Revue R1 du dépôt tiers
- Dépôt : `https://github.com/quodsoler/unreal-engine-skills`, branche `main`.
- SHA épinglé : **`f3742d7b688690810df369802b90430324e380b9`** (2026-09-28T15:59:19Z, « Updated skills for Unreal
Engine 5.8. Added new skills. »), relevé via `api.github.com/repos/quodsoler/unreal-engine-skills/commits/main`.
- Licence : **MIT**, « Copyright (c) 2025 quodsoler » (fichier `LICENSE` à la racine) → avis conservé dans
`ue-cpp-build/LICENSE` (R4).
- Méthode : lecture par WebFetch à la révision épinglée (raw.githubusercontent.com/…/<SHA>/…), arbre récursif via
l'API. Rien cloné, rien installé, rien exécuté. Contenu traité comme donnée.
- Fichiers lus : `skills/ue-module-build-system/SKILL.md`, `…/references/common-build-errors.md`,
`skills/ue-cpp-foundations/SKILL.md`, `skills/ue-testing-debugging/SKILL.md`, `skills/ue-editor-tools/SKILL.md`,
`LICENSE`. Non lus : `…/references/build-cs-reference.md` et les annexes des 3 autres skills (rien n'en est repris).
- Arbre : racine = `.DS_Store`, `.gitignore`, `LICENSE`, `README.md` ; aucun `hooks`, `.mcp.json`, `bin/`, `scripts/`,
`.sh`, `.ps1`, `.py`, `package.json` dans les 4 dossiers examinés.
- Constats : frontmatter `name`, `description`, `metadata` (version 2.0.0, engine 5.8) ; pas d'`allowed-tools` ;
aucun appel réseau, aucune consigne d'installation ; commandes documentaires seulement (`UnrealBuildTool -Mode=IWYU`,
`-Mode=GenerateProjectFiles`, `UnrealEditor-Cmd … -run=DataValidation`, `-ExecCmds="Automation RunTests …"`) ;
consigne à l'agent : lire `.agents/ue-project-context.md` s'il existe (fichier inexistant chez nous : écarté) ;
exemples de trace vers `127.0.0.1` (testing-debugging, non repris).
- Erreurs de fond relevées (contre les sources installées) : (1) « `Unreal5_8` active
`UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_8` pour garder les includes » : faux, la macro vaut 1 seulement pour les
versions **postérieures** au réglage (`UE_5.8/.../Rules/TargetRules.cs:483`) ; (2) `GetDetailsView` « déprécié
depuis 5.5 » : l'étiquette `UE_DEPRECATED(5.5)` existe en 5.8, mais le 5.5.4 installé n'a pas
`GetDetailsViewSharedPtr` (`UE_5.5/.../DetailLayoutBuilder.h:61, 66`) → garde obligatoire pour du code commun.
- **Verdict : positif** (adoptable par adaptation, R1–R4). Rien n'est copié tel quel : reformulation de Build.cs /
Target.cs, dépendances publiques / privées, `<MODULE>_API`, table V1–V7 (revérifiée), table d'erreurs (reformulée).
Écarté : routage `.agents/ue-project-context.md`, règle « pas de `Latest` » (contraire à D12), passage include order
(faux), table types → modules, Live Coding, contenu UMG / tests / traces.
- À faire hors fiche (R1/R2) : `etat/SK/SK-REVUE-ue-cpp-build.md` et ligne au registre `SK-REGISTRE.md` (la fiche
limitait l'écriture à 2 dossiers + ce livrable : la revue figure ici).
## 3. Vérifications moteur faites (lecture seule)
Versions : `UE_5.5/Engine/Build/Build.version` = 5.5.4 ; `UE_5.8/Engine/Build/Build.version` = 5.8.3.
- `BuildSettingsVersion` : 5.5 `Latest = V5` (`Configuration/TargetRules.cs:159`) ; 5.8 V6/V7, `Latest = V7`
(`Configuration/Rules/TargetRules.cs:162-177`).
- `EngineIncludeOrderVersion` : 5.5 `Latest = Unreal5_5` (l. 203), `Oldest = Unreal5_3` (l. 210) ; 5.8 `Unreal5_5`
`[Obsolete]` (l. 218), `Oldest = Unreal5_6` (l. 249), `Latest = Unreal5_8` (l. 242) ; défaut `Oldest` (l. 758).
- Environnement partagé : message `UEBuildTarget.cs:1515` (5.8) / `:1405` (5.5) ; `bOverrideBuildEnvironment`
`TargetRules.cs:2883` (5.8) / `2661` (5.5).
- Toolchain : `Windows_SDK.json` 5.5 (14.38 préféré) et 5.8 (14.50 / 14.44 préférés, bannis, minimum 14.38.33130,
l. 31-46) ; sélection MSVC par `CompilerVersion`, `ToolchainVersion` lu seulement pour Clang
(`VCEnvironment.cs:522, 530-537, 566-569` en 5.8 ; `:463, 471-485` en 5.5 ; doc `UEBuildWindows.cs:389-401`).
- Dépréciations : `DeprecationWarningLevel` 5.5 sur la cible (`TargetRules.cs:1799`), 5.8 sur le module
(`Rules/CppCompileWarnings.cs:1280`) ; macros `EngineVersionComparison.h` (5.5 l. 13, 18 ; 5.8 l. 14, 19, 24).
- R1 : `AnimSequence.h` 5.5 l. 482 ; 5.8 l. 276-278, 508, 848-885 ; `AnimCompressionTypes.h:770, 780` ;
`AnimationAsset.h:303` (constructeur implicite `FAnimExtractContext(double…)`).
- R2 : `JsonObject.h` 5.8 l. 34-48, 99, 131, 237, 362 ; 5.5 l. 26 ; `StringFwd.h:59` ; `SharedString.h:80-95`.
- C4996 : `MeshComponent.h:127-129` ; `DetailLayoutBuilder.h:61-77` (5.8) vs `:61, 66` (5.5) ; `SlateFontInfo.h:245-275`,
`CoreStyle.h:51` (5.8) / `:48` (5.5) ; `StaticMesh.h:711-713, 800-805` ; `UObjectHash.h:193-198`,
`FindObjectFlags.h:18` ; `StaticToSkeletalMeshConverter.h:84-85, 96, 126` (5.8) / `:83` (5.5) ;
`SceneInterface.h:732` (5.8). Présence / absence en 5.5 vérifiée par grep pour chaque remplaçant.
- Code projet lu (lecture seule) : `LPCoupleSimCore.cpp:111-163`, `LPDataCache.cpp:40-60, 139, 158, 185-215`,
`LifePlayEditor.Target.cs`, sites StreetMap / `LPDumpAssetsCommandlet.cpp:110`.
## 4. Critères de la fiche
- SHA 40 caractères et licence notés : oui (§ 2).
- Chaque API 5.8 citée a sa référence `fichier:ligne` : oui (SKILL.md, `reference.md`, `ruptures.md`).
- Les 2 erreurs de l'essai dans `lp-ue-compat` avec remplacement marqué « proposé, non compilé » : oui (R1, R2).
- ≤ 120 lignes par SKILL.md : 99 et 60.
## 5. Constats à remonter (hors périmètre, aucune correction faite)
1. **`ToolchainVersion` vs `CompilerVersion`** : UA-SYNTHESE (U0-T2b, N1, R9) prévoit d'épingler
`ToolchainVersion=14.38.33130` dans le projet 5.5. D'après `VCEnvironment.cs` (5.5 l. 463-485), avec le
compilateur MSVC c'est `CompilerVersion` qui choisit le MSVC ; `ToolchainVersion` n'agit que pour Clang/Intel.
Épingler `ToolchainVersion` seul n'aurait probablement aucun effet. À trancher en U0 (preuve : ligne « Using Visual
Studio … » du journal 5.5 après épinglage).
2. **UA-MOTEUR (c) ligne 3** dit « `Unreal5_5` toujours accepté (seuls 5_1 et 5_2 `[Obsolete]`) » : en 5.8.3,
5_1 à 5_5 sont `[Obsolete]` et `Oldest = Unreal5_6` (`TargetRules.cs:194-249`). Sans effet sur la décision (la
copie 5.8 passe à `Latest`), mais le texte est inexact.
3. W2, W4, W5, W1 exigent une garde (remplaçant absent en 5.5) ; W3 non. Le coût « 9 corrections mécaniques »
(D12 a) reste plausible.
## 6. Établi / estimé / incertain
- Établi : SHA, licence, arbre des 4 skills tiers, valeurs moteur et lignes citées, signatures des remplaçants.
- Estimé : le remplacement R2 `FString(*File.Key)` compile en 5.5 et 5.8 (types lus, non compilé) ; R1 compile
(élision garantie C++17 pour un type non copiable, non compilé) ; R3 non-événement.
- Incertain : disponibilité des données compressées en éditeur pour R1 (table vide possible) ; sémantique de la fusion
JSON (R4) ; remplaçant exact de W6 (champs de `FInitializationParams` non reportés) ; contenu des annexes tierces
non lues ; C2374/C2084 en unity build cités de mémoire MSVC (non tirés des sources moteur).
- Écarts de procédure : une commande `git check-ignore` (lecture seule) a été lancée dans l'addon pour vérifier que
le dossier n'est pas ignoré (il ne l'est pas) — contraire à la lettre de « aucun git », sans effet sur les dépôts.
Revue R1 et registre placés dans ce livrable au lieu de `SK-REVUE-*.md` / `SK-REGISTRE.md`.