99 lines
8.3 KiB
Markdown
99 lines
8.3 KiB
Markdown
# 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`.
|