> **Historique 4.27** — Ce document décrit le portage UE 4.27 → 5.5 (V1). Il n'est plus mis à jour : moteur et outils actuels dans `27_Plan_Migration_UE58.md` et `Tools/Engine.ps1`.
| `populateClothes4` lit un 4ᵉ champ absent | **écarté** | 16 occurrences en 4.27 comme en 5.5 |
| `GetAssetByObjectPath` cassé | **écarté** | 2 720 résolutions réussies sur 2 776 ; les 56 échecs sont tous `Daz/Michael/hairs/other/Pubes05-06`, chemin faux en 4.27 aussi |
| Liaisons perdues sur `SetSkinnedAssetAndUpdate` | **écarté** | 8 broches non connectées en 5.5 **et** les mêmes 8 en 4.27 — ce sont des effacements volontaires |
| Chargement des données texte | **écarté** | **18 tables identiques au caractère près** entre les deux builds packagées |
| Énumération des presets cassée | **écarté** | 5.5 énumère 141 `.lpcharacter`, 27 féminins, 17 masculins, et en charge 282 |
| **R-03 comme cause** | **écarté** | symptôme identique après annulation |
---
## 5. Pièges de méthode — à lire avant de reprendre
Quatre bases de comparaison se sont révélées fausses au cours de la session, coûtant
plusieurs heures. Elles sont listées ici pour ne pas être retrouvées à la dure.
### 5.1 Le mode éditeur `-game` n'est pas représentatif
`UnrealEditor.exe <projet> -game` **casse l'affichage des personnages dans les deux
versions**, y compris en 4.27 dont la build packagée fonctionne. Toute mesure d'exécution
prise par ce biais est sans valeur.
**Ne comparer que des builds packagées, même configuration.**
### 5.2 Shipping ne journalise pas
Unreal compile la journalisation à zéro en Shipping. Pour tracer, il faut
`-clientconfig=Development`. C'est pour cela que la build 4.27 qui fonctionnait
(`LifePlay_Build_2026.9`, Shipping) a dû être repackagée en Development.
### 5.3 Les journaux doivent atteindre le même point du jeu
Plusieurs comparaisons ont porté sur des sessions dont l'une n'avait **jamais généré de
personnage** (`index SPAWN = 0`). Vérifier systématiquement ce compteur avant de conclure,
et **normaliser par le nombre de personnages**.
### 5.4 La build qui fonctionne ≠ le projet dont elle est issue
Le projet 4.27 produit une build packagée qui marche **et** une session éditeur cassée. Ne
pas confondre les deux.
### 5.5 Erreur de motif de recherche
Un comptage annoncé « 0 habillage de PNJ en 5.5 contre 52 en 4.27 » était **faux** (motif
`grep -oE` mal formé) ; le vrai chiffre est 12. Toujours recouper un écart catégorique par
un second comptage formulé autrement.
---
## 6. Outillage construit (réutilisable)
Dans `Source/LifePlayEditorTools/`, toutes sur le même patron (`-DryRun`, rapport, correction,
recompilation, resauvegarde) :
| Commandlet | Rôle |
|---|---|
| `LPCheckMeshAssignment` | **balaye toutes les broches marquées `bOrphanedPin`** — c'est l'outil qui a trouvé le défaut AssetRegistry ; à relancer après toute montée de version |
| `LPDumpFunction` | vide un graphe Blueprint (`-BP=GI -Fn=getRandomEthnicity -Pins`, ou `-Fn=*` pour tout) — **compilé aussi dans le projet 4.27**, permet le diff de graphes entre versions |
| `LPFixAssetRegistryPins` | recâble les 5 broches AssetRegistry perdues |
| `LPFixDeprecatedNodes` | R-03 / R-04 — **à ne pas relancer tel quel**, voir §7.1 |
| `LPFixOrphanBoundEvents` | R-05 |
| `LPFixZeroScaleActors` | R-06 |
| `LPCheckStreetMap` | valide les 280 villes |
Helpers C++ dans `Source/LifePlay/` : `LPAssetRegistryHelpers` (dont