LifePlay-Revival/Docs/Migration/09_Commandes_Utiles.md
edujiro5972 3c2da7a516 H3a et UI15 : mod d'assets cuit a part (Pocolov 05), gestionnaire de mods sur l'ecran titre
- H3a : version de reference 2026.10.4 (identique au V1.4 publie), mod d'essai LPHairSample
  (ModSources/, cuisson DLC contre 2026.10.4), pipeline de coiffures compatible plugins.
- Activation des modules alignee sur le jeu (module absent = inactif) ; cle .lpmod
  MODULE_DEFAULT_ENABLED (lp_Revival).
- UI15 : entree Mod Manager sur l'ecran titre, retour au menu titre, choix enregistre
  sans toucher a la derniere sauvegarde (LPTitleModManager, SaveModSelection).

Valide en jeu le 2026-10-03 (CHG-101 a CHG-103, ERR-040, ERR-041).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 04:07:11 +02:00

142 lines
7.7 KiB
Markdown

# 09 — Commandes utiles
> Toutes les commandes se lancent depuis `D:\Game\LifePlay-master 5.5`, sous PowerShell 7. Explications :
> `08_Guide_Developpeur.md`. Méthode : `10_Protocole_Operations.md`.
```powershell
$UE = 'D:\Game\Launcher\Engine\UE_5.5\Engine'
$Cmd = "$UE\Binaries\Win64\UnrealEditor-Cmd.exe"
$Proj = 'D:\Game\LifePlay-master 5.5\LifePlay.uproject'
```
**Piège PowerShell** : un argument contenant une virgule ou un point après `=` doit être placé entre
guillemets (`"-Offset=0,-10000000,0"`, `"-Scale=0.1"`), sinon il est découpé et la commandlet reçoit une
valeur fausse.
## 1. État et intégrité
```powershell
git status; git log --oneline -5; git tag --list '*-valide' # où en est-on
.\Tools\CheckIntegrity.ps1 -Modules -Env -Ref427 # données, environnement, référence 4.27 intacts
.\Tools\AssetHeaders.ps1 # 0 paquet UE4 attendu (8563/8563 UE5)
```
## 2. Compilation et build
```powershell
& "$UE\Build\BatchFiles\Build.bat" LifePlayEditor Win64 Development -Project="$Proj" -WaitMutex
& "$UE\Build\BatchFiles\Build.bat" LifePlay Win64 Shipping -Project="$Proj" -WaitMutex
& "$UE\Build\BatchFiles\RunUAT.bat" BuildCookRun -project="$Proj" -platform=Win64 -clientconfig=Development `
-build -cook -iterate -stage -archive -archivedirectory=D:\Game\LifePlay_Build_5.5_<nom> -unattended -utf8output -nop4
(Get-ChildItem D:\Game\LifePlay_Build_5.5_<nom>\Windows\LifePlay\Content -Recurse -Filter *.uasset).Count # T-PKG-01 ≥ 8555
```
## 3. Commandlets
```powershell
# Générique, journal archivé par lot
.\Tools\RunCommandlet.ps1 -Lot <lot> -Commandlet CompileAllBlueprints
.\Tools\RunCommandlet.ps1 -Lot <lot> -Commandlet LPFixStringSearch -Args '-DryRun'
# Directement
& $Cmd $Proj -run=CompileAllBlueprints -unattended -nopause # T-LOAD-01
& $Cmd $Proj -run=LPCheckMeshAssignment -unattended -nopause # T-LOAD-02
& $Cmd $Proj -run=LPDumpFunction -BP=GI -Fn=GeneratePerson -Pins -unattended -nopause
& $Cmd $Proj -run=LPDumpAssets -List=<liste.txt> -Out=<photo.txt> -unattended -nopause
& $Cmd $Proj -run=LPDumpComponents -Map=/Game/Scenes/CentralLondon -Filter=SecondScreen -unattended -nopause
& $Cmd $Proj -run=LPDumpSave "-File=Saved\SaveGames\1.sav" -Out=<f.txt> -unattended -nopause
& $Cmd $Proj -run=LPCheckStreetMap -CSV=Docs/Migration/etat/streetmap.csv -unattended -nopause
& $Cmd $Proj -run=Cook -TargetPlatform=Windows -unattended # T-LOAD-05
# Coiffure : import FBX, conversion, matériaux (protocole complet : 13_Protocole_Coiffure.md)
& $Cmd $Proj -run=pythonscript "-script=<projet>/Tools/HairImportFbx.py fbx=<f.fbx> dest=/Game/Heavy/New5/Hairs/_Work" -unattended -nopause
& $Cmd $Proj -run=LPHairFromStaticMesh -Static=<maillage> -FitHead=<tete> -Out=/Game/Heavy/New5/Hairs/<Nom> -DryRun -unattended -nopause
& $Cmd $Proj -run=pythonscript "-script=<projet>/Tools/HairMaterials.py mesh=/Game/Heavy/New5/Hairs/<Nom> diffuse=<f> strands_opacity=<f> cap_opacity=white cap=<emplacement>" -unattended -nopause
# Gestionnaire de mods sur l'écran titre (UI15, 17_Mods_Ecran_Titre.md)
& $Cmd $Proj -run=LPTitleModManager -DryRun -unattended -nopause
# Mod d'assets (H3, 16_H3_Mods_Paquets.md §5) : version de référence puis cuisson DLC, toujours via cmd /c (version)
# cmd /c '"$UE\Build\BatchFiles\RunUAT.bat" BuildCookRun ... -createreleaseversion=2026.10.4 ...'
# cmd /c '"$UE\Build\BatchFiles\RunUAT.bat" BuildCookRun ... -cook -stage -pak -iostore -compressed -dlcname="<projet>\Mods\<Nom>\<Nom>.uplugin" -basedonreleaseversion=2026.10.4 ...'
# Collections thématiques de l'éditeur (O7d), essai à blanc puis écriture
& $Cmd $Proj -run=pythonscript "-script=$($Proj | Split-Path)/Tools/BuildCollections.py -dryrun" -unattended -nopause
& $Cmd $Proj -run=pythonscript "-script=$($Proj | Split-Path)/Tools/BuildCollections.py" -unattended -nopause
# Diff indépendant d'un rebranchement de nœuds
python Tools\DiffRemplacementNoeuds.py <avant.txt> <apres.txt> CX-B12
```
Réimport scripté d'un correctif (photo, simulation comptée, application, diff, compilation) :
```powershell
.\Tools\ReimportCorrectif.ps1 -Id L4-CX-B02 -Commandlet LPFixEditableTextBoxFont `
-Assets Content\UI\StatMenu.uasset,Content\UI\CharGen.uasset `
-Graphs StatMenu:EventGraph,CharGen:EventGraph -ExpectPattern 'LogLPFixFont: Warning: \w+ ::' -ExpectCount 6
```
## 4. Options de diagnostic du jeu (build Development)
À passer à `LifePlay.exe`, de préférence dans un `.bat` à côté de l'exécutable :
`start "" "%~dp0LifePlay.exe" <options>`. Toutes inactives par défaut. Résultats dans
`Windows\LifePlay\Saved\Logs\LifePlay.log`, catégorie `LogLifePlay`.
| Option | Effet |
|---|---|
| `-LogCmds="LogModdingExtra Verbose"` | trace de chaque `LoadTxt`/`SaveTxt`/`GetAllFilesFromFolder` (comparaison A/B avec 4.27) |
| `-LPDumpVars=A,B` | valeur des variables `A`, `B` de `GI` au démarrage et à la fin (tableaux : un élément par ligne) |
| `-LPTraceScriptEx=<texte>` | à chaque exception de script dont le message contient `<texte>` : fonction, offset, variables locales |
| `-LPTraceLocals=x,y` | ne relever que les variables locales dont le nom contient `x` ou `y` |
| `-LPTraceFunctions=F1,F2` | ne relever que les exceptions levées dans ces fonctions |
| `-LPTraceDepth=N` | relever aussi les N cadres appelants |
| `-LPTraceGIVars=A,B` | relever aussi ces variables de `GI` |
| `-LPTraceMax=N` | nombre maximal de relevés (3 par défaut) |
| `-LPDumpPaths=a.b.c,…` | chemins à relever, depuis `GI` (ex. `Room.WallT.RelativeLocation`) |
| `-LPDumpOnLog=<texte>` | relevé quand une ligne du journal contient `<texte>` (au plus une fois toutes les 5 s) |
| `-LPDumpDelay=S` | délai avant ce relevé (1,5 s par défaut ; le lieu se charge en arrière-plan) |
| `-LPDumpMax=N` | nombre maximal de relevés sur motif (20 par défaut) |
| `-LPDumpEvery=S` | relevé périodique toutes les S secondes |
Commande console : `LifePlay.LogSummary` (bilan de session à la demande).
Exemple (mesure L7l, `LifePlay_releve_L7l.bat`) :
```bat
start "" "%~dp0LifePlay.exe" -LPDumpEvery=5 -LPDumpPaths=CurrentAmenity,Room.RootComponent.RelativeScale3D,Room.WallT.RelativeLocation,PlayerCharacter.CapsuleComponent.RelativeLocation
```
## 5. Journaux
```powershell
.\Tools\LogStats.ps1 <journal> # compteurs, signatures les plus fréquentes
.\Tools\LogStats.ps1 -Compare <journal 4.27>, <journal 5.5> # A/B normalisé par personnage
Select-String <journal> -Pattern '===== LifePlay' # résumé de démarrage et bilan
Copy-Item <build>\Windows\LifePlay\Saved\Logs\LifePlay.log Saved\Logs\portage\<lot>_<objet>_<date>.log # archiver
```
Journal de la référence 4.27 : `D:\Game\LifePlay_Build_427_Dev\WindowsNoEditor\LifePlay\Saved\Logs\LifePlay.log`.
## 6. Sauvegarde et retour arrière
```powershell
git tag <lot>-avant
.\Tools\Snapshot.ps1 -Lot <lot> -Path Content\BPs\GI.uasset, Content\Scenes\CentralLondon.umap
.\Tools\Snapshot.ps1 -Lot <lot> -Path Content\UI -Recurse
.\Tools\Restore.ps1 -Lot <lot> -WhatIf # simuler
.\Tools\Restore.ps1 -Lot <lot> # restaurer (les versions remplacées sont conservées)
.\Tools\Restore.ps1 -Lot <lot> -Only Content\BPs\GI.uasset # un seul fichier
git checkout <lot>-avant -- Source Config # code et configuration
```
## 7. Publication
```powershell
gh auth status # compte actif : edujiro5972
git config user.name; git config user.email # edujiro5972 / 336072401+edujiro5972@users.noreply.github.com
git push origin main <tag>
Get-FileHash <archive.7z> -Algorithm SHA256 # empreinte à publier dans le README
```