diff --git a/Docs/Migration/11_Audit_Optimisation.md b/Docs/Migration/11_Audit_Optimisation.md index 1c36685..fcdc4ea 100644 --- a/Docs/Migration/11_Audit_Optimisation.md +++ b/Docs/Migration/11_Audit_Optimisation.md @@ -151,3 +151,91 @@ Règles : Recommandation : commencer par les fonctions du moteur (§7), qui couvrent les besoins identifiés sans dépendance nouvelle. + +## 9. Résultats de la mesure en jeu (2026-10-02) + +Build L7cdj (Development), `LifePlay_profil_O0.bat`, ≈ 12 minutes de jeu sur une machine AMD Ryzen 7 5800H avec carte graphique Radeon : +4 tranches complètes de 9 000 images (36 004 images). Données archivées dans +`D:\Game\LifePlay_Backup_5.5\O0_profil_20261002`, journal `Saved/Logs/portage/O0_profil_20261002.log`. + +> Lancement : la capture CSV doit être démarrée par `-ExecCmds="csvprofile repeat=20, csvprofile frames=9000"`. +> L'option `-csvCaptureFrames` sur la ligne de commande démarre la capture avant l'initialisation du rendu, et le +> moteur s'arrête (`IsRayTracingAllowed() may only be called once RHI is initialized`). + +### 9.1 Régime normal : aucun goulot + +| Mesure (médiane par tranche) | Valeur | +|---|---| +| Temps d'image | **16,7 ms** : le jeu est plafonné à 60 images/s et tient ce plafond | +| Thread de jeu | 3,9 à 4,4 ms | +| Thread de rendu | 7,8 à 8,5 ms (dont ≈ 9 ms d'attente, `EventWait`) | +| GPU | 7,3 à 11,1 ms | + +Il reste environ deux fois de marge sur chaque thread. Les hypothèses G1, G2 et G4 (§4) ne se vérifient +pas en régime normal sur cette machine. + +### 9.2 Le vrai problème : les à-coups du thread de jeu + +| Seuil | Images concernées (sur 36 004) | +|---|---:| +| > 33 ms | 262 | +| > 50 ms | 159 | +| > 100 ms | 112 | +| > 250 ms | 43 | +| > 1 s | 3 (chargement de partie : 31,5 s ; application des réglages : 5,4 s ; 1,7 s) | + +- Les images longues durent **de 0,5 à 0,9 s**, à intervalles irréguliers, plusieurs fois par minute ; le + thread de jeu en est la cause, le rendu restant à 8 ms. +- Dans ces images, le temps va aux **minuteries Blueprint** (`TimerManager`, 38 s cumulées) et aux nœuds + `Delay` (`FlushLatentActions`, 9 s cumulées). +- Ce sont les traitements de `GI` déclenchés par minuterie : passage du temps, IA, recherche de scènes, + génération de personnages avec lecture de fichiers texte et chargement synchrone de maillages. + +**Nouvelle priorité : G6, à-coups des traitements Blueprint sur minuterie.** Le CSV ne nomme pas les +fonctions Blueprint. L'étape suivante est une trace Unreal Insights avec les événements nommés +(`-trace=cpu,frame,loadtime -statnamedevents`), pour identifier les fonctions de `GI` en cause et les +chargements synchrones. + +### 9.3 Mémoire (fin de session, LLM) + +| Catégorie | Mo | +|---|---:| +| Total processus | 3 546 | +| Textures | 624 | +| **Physique (Chaos)** | **463**, dont 124 de structures d'accélération et 92 de maillages de collision (trimesh) | +| UObject | 226 | +| Cibles de rendu | 215 | +| Maillages | 75 | + +La physique occupe presque autant que les textures. Hypothèse : collisions détaillées du maillage de la +ville (`CentralLondon`, 1,08 million de triangles) et des meubles. Ce poste devient le levier mémoire n° 1. + +### 9.4 Lots révisés + +| Ordre | Lot | Justification | +|---|---|---| +| 1 | **O1** build (plugins, `.pdb`) | inchangé : gain sûr de ≈ 350 Mo | +| 2 | **O9** (nouveau) : trace Insights des à-coups, puis correction ciblée (chargement asynchrone, étalement des traitements) | seul défaut ressenti en jeu | +| 3 | **O10** (nouveau) : collisions (ville et meubles) | 463 Mo de physique | +| 4 | O4 textures, O2 compression | mémoire vidéo, taille | +| — | O3, O5, O6 (animation, LOD, morphs) | **reportés** : aucun goulot mesuré en régime normal ; à remesurer sur une machine plus modeste | + +## 10. Bibliothèque Fab de l'utilisateur (lue le 2026-10-02 sur fab.com) + +La bibliothèque compte environ 3 000 produits, dont 302 outils et plugins. Produits utiles au chantier, +**déjà possédés** : + +| Produit | Éditeur | Intérêt pour LifePlay | +|---|---|---| +| Ultimate Optimization Toolkit | IchiQ | mesure et débogage des performances (O9) | +| Optimization Tools plugin | Creative Elicya | outils d'optimisation de niveau | +| Asset Analytics | Mohsen Tabasi | analyse du poids et de l'usage des assets (O7, O8) | +| Dash — Advanced Asset Manager | Polygonflow | gestion et recherche d'assets (O7) | +| Assets Auto Organizer | Beta Projects | réorganisation des dossiers (O7) : **à n'utiliser qu'avec redirecteurs et vérification**, le jeu cherchant les assets par nom | +| Asset Naming Convention Keeper ; Asset Sanitizer | Tobosoksini Games ; MallHockE | conventions de nommage (O7) | +| Ultimate UE5 Project Organizer | Iron Cauldron | modèle d'arborescence (O7) | +| **MetaHuman Crowd Sample** | Epic Games | **exemple officiel de foule optimisée** (budget d'animation, LOD) : référence pour O3/O5 | +| AssetDump: Agents-readable assets | fallingsappy | export lisible des assets pour un agent : pourrait compléter `AuditAssets.py` | + +Rien n'a été acheté, réclamé ni téléchargé. Chaque outil retenu sera évalué dans une copie du projet, +dans un lot dédié, avec l'accord de l'utilisateur. \ No newline at end of file diff --git a/Docs/Migration/Journal_Modifications.md b/Docs/Migration/Journal_Modifications.md index 3d3077b..8d7deb4 100644 --- a/Docs/Migration/Journal_Modifications.md +++ b/Docs/Migration/Journal_Modifications.md @@ -904,3 +904,4 @@ Validation L7c/L7d (2026-10-02, parc, même cadrage) : la nuit reste claire (sol |---|---|---|---|---|---| | CHG-058 | 2026-10-02 | Doc | nouveaux `07_Architecture_5.5.md`, `08_Guide_Developpeur.md`, `09_Commandes_Utiles.md`, `10_Protocole_Operations.md` ; mis à jour `README.md` (migration et racine), `01`, `03`, `04` (bilan §5), `05` (CX-C14 à C18, statuts), `06` (résultat V1), registre (ERR-020) | finalisation de la documentation de migration : architecture finale, guide développeur, commandes, protocole et leçons | `git revert` du commit | | CHG-059 | 2026-10-02 | O0 | nouveaux `Tools/AuditAssets.py`, `Docs/Migration/11_Audit_Optimisation.md` ; lanceur `LifePlay_profil_O0.bat` (build L7cdj, hors dépôt) | audit d'optimisation en lecture seule : inventaire des assets, build livré, leviers et lots proposés ; aucune modification du projet | `git revert` du commit | +| CHG-060 | 2026-10-02 | O0 | `Docs/Migration/11_Audit_Optimisation.md` §9-10 ; lanceur `LifePlay_profil_O0.bat` corrigé (capture par `-ExecCmds`) | résultats de la mesure en jeu (60 images/s tenues, à-coups du thread de jeu dus aux minuteries Blueprint, 463 Mo de physique) ; produits utiles de la bibliothèque Fab ; lots révisés | `git revert` du commit |