48 lines
4.3 KiB
Markdown
48 lines
4.3 KiB
Markdown
|
|
# PERF : mesures de cadence de la build empaquetée (palier P1)
|
||
|
|
|
||
|
|
2026-10-15, lot OPT0, fiche B2. État : **préparé, à éprouver**. Aucun essai réel n'a été joué : ni le jeu, ni PresentMon n'ont été lancés pour écrire ces scripts. Les statistiques ont été vérifiées sur des CSV synthétiques seulement.
|
||
|
|
|
||
|
|
## Ce qui est prêt
|
||
|
|
|
||
|
|
| Élément | Rôle |
|
||
|
|
|---|---|
|
||
|
|
| `Tools\Perf-P1.ps1` | lance la build, capture PresentMon, ferme le jeu, calcule les statistiques ; `-Simulation` affiche les commandes sans rien lancer |
|
||
|
|
| `Tools\PresentMonStats.py` | lit le CSV de PresentMon 2.6.0, écrit `presentmon-stats.json` et `.md` ; compare à une référence ; juge seulement avec un fichier de seuils |
|
||
|
|
| `Tools\Tests\PresentMonStats.essais.*` | trois CSV synthétiques et un fichier de seuils d'exemple (valeurs sans portée réelle) |
|
||
|
|
| Recette | `lp-perf\recettes\presentmon.md` |
|
||
|
|
|
||
|
|
Chaque mesure va dans `OPT\PERF\<date>-<etiquette>\` : `presentmon.csv`, `presentmon-stats.json`, `presentmon-stats.md`, `lancement.txt`.
|
||
|
|
|
||
|
|
## Gestes de l'utilisateur (aucun agent ne les fait)
|
||
|
|
|
||
|
|
1. **Télécharger PresentMon 2.6.0** (console, `PresentMon-2.6.0-x64.exe`) sur la page officielle de la release : https://github.com/GameTechDev/PresentMon/releases/tag/v2.6.0 . Relever le MD5 et le chemin. Ne pas utiliser 2.5.0 (retirée).
|
||
|
|
2. **Ajouter son compte au groupe « Performance Log Users »** (en français : « Utilisateurs du journal de performances »), puis fermer et rouvrir la session Windows. Sans cela, ou sans session administrateur, PresentMon ne voit pas le processus.
|
||
|
|
3. Vérifier à blanc : `pwsh -NoProfile -File "D:\Game\LifePlay-master 5.8\Tools\Perf-P1.ps1" -Simulation -Etiquette essai -PresentMon "<chemin de PresentMon-2.6.0-x64.exe>"`. Toutes les lignes doivent être `[OK]`.
|
||
|
|
|
||
|
|
## Premier essai : il sert de mesure de référence de l'alpha
|
||
|
|
|
||
|
|
Le premier essai réel mesure la build alpha 2026.10.2.1a (`D:\Game\LifePlay_Build_5.8_ALPHA-2026.10.2.1a_Shipping\Windows\LifePlay.exe`, valeur par défaut de `-Exe`). Il demande une réserve « mesure » à Big Boss (lancer le jeu). Aucune charge de scène n'est imposée par le script : fixer à la fiche la carte, le point de départ et les gestes, et les garder identiques pour toute comparaison.
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
pwsh -NoProfile -File "D:\Game\LifePlay-master 5.8\Tools\Perf-P1.ps1" -Etiquette alpha-ref -PresentMon "<chemin de PresentMon-2.6.0-x64.exe>" -Duree 120
|
||
|
|
```
|
||
|
|
|
||
|
|
À savoir :
|
||
|
|
- Le processus mesuré est `LifePlay-Win64-Shipping.exe`, pas le lanceur `LifePlay.exe` ; le script le gère (`-NomProcessus` pour le forcer).
|
||
|
|
- Pour passer des arguments au jeu sous `pwsh -File`, utiliser la forme `"-Arguments:-windowed -ExecCmds=..."`.
|
||
|
|
- Correctif B2-bis : lancer pwsh **en administrateur** (contrôle bloquant). Le jeu se relançant seul, le script attend le PID Shipping le plus récent avec fenêtre, vivant depuis `-Delai` s (60 par défaut), puis capture avec `--process_id` (`-RepliNom` pour `--process_name`). Le nombre d'événements perdus figure dans `lancement.txt` et `presentmon-stats.md` ; un nombre élevé invalide la mesure.
|
||
|
|
- Si le jeu ne se ferme pas en 15 s, le script le tue et le dit.
|
||
|
|
- À contrôler au premier essai : forme exacte des options de PresentMon sur l'exécutable installé (`--help`), code de sortie de PresentMon, fermeture propre du Shipping.
|
||
|
|
- Le script refuse de lancer si un `presentmon.csv` existe déjà dans la sortie ou si le jeu tourne déjà.
|
||
|
|
|
||
|
|
## Fixer les seuils à partir de cette référence
|
||
|
|
|
||
|
|
Aucun seuil standard n'existe et le script n'en invente aucun : sans `-Seuils`, le verdict est « non jugé » (code 0).
|
||
|
|
|
||
|
|
1. Répéter l'essai de référence au moins 3 fois dans les mêmes conditions ; lire la dispersion des mesures de `presentmon-stats.json`.
|
||
|
|
2. Écrire un fichier JSON de seuils (clés acceptées : `fps_moyen_min`, `fps_1pct_low_min`, `fps_01pct_low_min`, `mediane_ms_max`, `p95_ms_max`, `p99_ms_max`, `saccades_2x_max`, `saccades_50ms_max`, `gpu_busy_ms_max`, `images_min`), valeurs tirées de la référence et de sa dispersion, et décidées par l'utilisateur ou la fiche.
|
||
|
|
3. Les passer par `-Seuils` ; garder la référence avec `-Reference <presentmon-stats.json>` pour lire les écarts.
|
||
|
|
4. Un seuil non évaluable (colonne absente) donne « indéterminé » et le code 2.
|
||
|
|
|
||
|
|
Le premier jeu de chiffres réels fera passer la recette de « préparé, à éprouver » à « éprouvée » (proposition à la fiche).
|