LifePlay-Revival/Docs/Migration/etat/BOSS/COMMUN-16-TESTS.md

125 lines
20 KiB
Markdown
Raw Normal View History

Fiche COMMUN-16-FIT — Niveau N1 — Modèle prévu sonnet | utilisé claude-sonnet-5-5 — Agent lp-writer (rôle A-DOC) — Skills sk-protocol, lp-doc, lp-lot
# COMMUN-16-TESTS : fiche de tests commune de la build Development commune KEY2, CAM2 et STM1 (2026-10-20)
Demande de Big Boss (`local_104ff22d`), 2026-10-20. L'essai COMMUN-15 a été suspendu par le bug des touches (`KEY2-DIAG-01.md`) ; cette fiche reprend ses cas KEY2 et CAM2, ajoute les cas du correctif et ceux de l'eau de Londres (STM1). Fiche **non prête** : la build est en cours de génération. Rédigée sans copie UE, sans MCP, sans lancer le jeu. Aucun contenu de jeu : chaque action est décrite par sa fonction ; la section du menu des contrôles s'appelle « Scene » et les scènes intimes sont dites « scène ». Forme reprise de `COMMUN-15-TESTS.md`.
## 1. Build testé
| Élément | Valeur |
|---|---|
| Chemin de la build | `D:\Game\LifePlay_Build_5.8_Development_COM16\Windows\` (lancer `Windows\LifePlay.exe`) |
| Exe | `Windows\LifePlay\Binaries\Win64\LifePlay.exe` |
| MD5 de l'exe | `01f69a34dc83cb31c50426b6673ac781`, 335 796 224 octets (= exe de la copie, lié par KEY2-BUILD-02 à 10:57 ; UAT « Target is up to date ») |
| Date de génération | 2026-10-20 11:09, BuildDebug.ps1 -Config Development -ArchiveDir, code 0, CheckPackage PASS, journal `Saved\Logs\portage\BuildDebug_Development_20261020-110712.log` ; M_LP_Water cuit (/Game toujours cuit) |
| Configuration | Development, commune à plusieurs lots |
| Base | HEAD `37e9de8` + sources non commitées de KEY2, CAM2 et STM1 ; builds statiques : `KEY2-BUILD-02.md`, `KEY2-VAL-03.md` (PASS, 0 erreur, 0 avertissement nouveau) et `STM1-B4-FIN.md` (code 0 éditeur et Development, VAL statique PASS avec réserves) |
| Génération | faite (`etat\BOSS\COMMUN-16\COMMUN-16-BUILD.md`) |
Sources non commitées couvertes (MD5 relevés par `KEY2-VAL-03.md` § 3) : `Source/LifePlay/LPKeyboardSubsystem.cpp` `7960e871…`, `Source/LifePlay/LPSettingsSubsystem.cpp` `5ff9f26d…` ; STM1 : `Source/LifePlay/LPCityWaterSubsystem.h` `deb58ec1…`, `.cpp` `ec0946c5…` (`STM1-B4-FIN.md` § 6b).
Lots et correctifs couverts :
- **KEY2** (K2 à K6 : dispositions QWERTY et AZERTY avec Apply, retrait du pavé, de Equals, de Hyphen et de Tilde, touche d'action, capture de la souris, section « Scene », hauteur de la vue, couple sur Y, option « Arrows only », migration `Version=2`, texte d'aide) : `KEY2-SPEC-01.md`, `KEY2-IMPL-01.md` (§ 5 V1 à V23). **Correctif KEY2-DIAG-01** : (1) le menu Clavier intégré aux réglages restait « ouvert » pour toute la partie (marche coupée, nom de la caméra masqué, personnage enfoncé non relevé) ; (2) le fichier de touches n'était jamais relu (clé `+ActionMappings`), donc migration jamais jouée et touches non gardées au redémarrage ; (3) fermeture des réglages pendant une capture : capture annulée. Sources : `etat\REL\KEY2\KEY2-DIAG-01.md` § 2 à § 5, `KEY2-VAL-03.md`.
- **CAM2** (tangage de C1 à la souris, R-B1f ; murs : **correction non faite**, observation seulement) : `CAM2-IMPL-01.md` (§ 8), `CAM2-SPEC-01.md`, `etat\CAM\CAM2\CAM2-CART-03.md`.
- **STM1** (eau de Londres, sous-système de pose `ULPCityWaterSubsystem`, critères P3, P4, P5 de `STM1-SPEC-03.md`) : `etat\REL\STM1\STM1-B4-FIN.md`, `STM1-SPEC-03.md`. Motif de journal : `[LPCity] EAU`.
- - Contrôles de non-régression rejoués : COMMUN-15.22 (garde C5, ex COMMUN-14.4) et COMMUN-15.23 (console de scènes, ex COMMUN-14.13), devenus .26 et .27.
## 2. Faisabilité
Machine calme : réserve « mesure » non requise (aucun cas de performance). Sauvegarde et copie d'essai : **à faire à la remise de la build** (copie de la sauvegarde du joueur avant l'essai). Lancement et journal : à compléter à la remise (`Saved\Logs\LifePlay.log` de la build).
Préparation du cas de migration (cas .1), **avant le premier lancement** : le témoin `Windows\LifePlay\Saved\Config\Windows\LPKeyboard.ini` est **déjà en place** dans la build (ancien fichier de COMMUN-15, forme `+ActionMappings`, 55 lignes d'après `KEY2-DIAG-01.md` § 3). **Copier** (pas renommer) ce fichier vers `LPKeyboard.ini.avant` avant de lancer. Le cas .5 se joue au **second essai**, après retrait de `LPKeyboard.ini`.
| Cas | Fonction ou réglage dans la build ? | Dépend d'un travail non fini ou d'une observation |
|---|---|---|
| .1 à .5 (KEY2-DIAG-01) | oui : code compilé, VAL statique PASS (`KEY2-VAL-03.md`) | **Aucun comportement n'a été vu en jeu** : `KEY2-VAL-03.md` § 6 reporte V1 à V23 et la relecture du diff de DIAG-01. Premiers essais en jeu |
| .1 (migration) | oui | n'est jouable que si le témoin est bien l'ancien fichier (version 0, forme `+ActionMappings`) ; sinon le noter |
| .6 à .15 (reste de KEY2) | oui | V1 à V23 de `KEY2-IMPL-01.md` § 5 jamais essayés ; **.12 dépend de l'état de la pièce** (V / X n'agissent que pièce cachée, V21) |
| .16, .17 (tangage souris) | oui | **sens non établi** (`Pitch += CursorY`, raisonnement) ; le tangage était sans doute coupé par la garde « menu » de la cause 1, à reconfirmer (`KEY2-DIAG-01.md` § 2 point 4) |
| .18 (marche, lacet) | oui | lacet existant, relecture de l'application à la tête non faite (`CAM2-IMPL-01.md` § 8) |
| .19 (R-B1f) | oui | jouable seulement si la scène est lancée depuis C1 ; défaut jamais observé |
| .20, .21 (murs) | **correction non faite** | **observation seulement** : attendu « inchangé » ; la cause `GIWall` reste à lire (`CAM2-CART-03.md`) |
| .22 (rue extérieure) | oui (cause 1 corrigée) | dépend de trouver un personnage enfoncé dans la rue ; sinon noter « non joué » |
| .23 à .25 (STM1) | oui : sous-système compilé et VAL statique, **jamais vu en jeu** (`STM1-B4-FIN.md` « État ») | **Z réel de l'eau inconnu** : lu en jeu (repli carte − 298 cm), journal `[LPCity] EAU` ; réserves R1, R3 à R8 de la VAL non corrigées ; **présence en build empaquetée** (`DoesPackageExist`, R5) jamais essayée |
| .26, .27 | oui | rejeu de COMMUN-14.4 et COMMUN-14.13 |
## 3. Cas
Contrôle automatique : motif cherché dans le journal de jeu, lancé avant la remise par `Tools\EssaiJournal.ps1` quand il existe. Verdict, Découvreur et Heure restent vides : le BILAN les remplit. « Journal » = `Saved\Logs\LifePlay.log` de la build.
### 3.1 KEY2 : correctif KEY2-DIAG-01 (ordre de jeu)
| Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure |
|---|---|---|---|---|---|---|---|---|
| COMMUN-16.1 | KEY2 | Cause 2 de KEY2-DIAG-01 (relecture) ; migration `Version=2` | **Avant le premier lancement**, copier `Windows\LifePlay\Saved\Config\Windows\LPKeyboard.ini` (témoin déjà en place, ancien fichier COMMUN-15) vers `LPKeyboard.ini.avant`. Lancer, ouvrir le menu Clavier, fermer le jeu. Comparer les deux fichiers | Journal : « Clavier : … passe de la version 0 a 2 : N liaisons retirees … » puis « Clavier : X actions et Y axes relus » ; **jamais** « illisible ». Fichier : `Version=2`, pavé 4 et 6, Equals, Hyphen, Tilde (scène de test) retirés ; `Layout=Custom` ; ActionPanel, CameraHeight G / B, CoupleMoveY V / X ajoutés si leur touche est libre ; les autres liaisons intactes (diff avant / après) | motif `passe de la version 0 a 2` : 1 ligne ; motif `illisible` (ligne « Clavier ») : 0 ; motif `actions et .* axes relus` : au moins 1 | | | |
| COMMUN-16.2 | KEY2 | Cause 1 de KEY2-DIAG-01 (`IsMenuOpen`) | Réglages, onglet Clavier : l'ouvrir, puis fermer les réglages. En jeu : marcher (ZQSD ou WASD selon le fichier), observer l'écran | La marche **répond** ; le **nom de la caméra** revient à l'écran ; plus aucune ligne « marche coupee (menu clavier) » hors du menu (pendant le menu ouvert, la marche peut rester coupée) | motif `marche coupee (menu clavier)` : 0 ligne après la fermeture des réglages (relever l'heure de fermeture) | | | |
| COMMUN-16.3 | KEY2 | Cause 1 (chemin restant, capture annulée à la fermeture) | Onglet Clavier : Change sur une touche, **sans appuyer sur aucune touche**, fermer les réglages. Marcher | La capture est annulée ; la marche répond ; le nom de la caméra reste affiché. Pendant la capture (réglages ouverts), la marche est coupée | motif `marche coupee (menu clavier)` : 0 ligne après la fermeture | | | |
| COMMUN-16.4 | KEY2 | Cause 2 (touches gardées au redémarrage) ; `KEY2-DIAG-01.md` § 5 point 4 | Menu Clavier : disposition AZERTY, **Apply**. Quitter le jeu, relancer, rouvrir le menu Clavier, tester Z Q S D | Après relance : « Layout: AZERTY », touches AZERTY gardées ; fichier `Layout=AZERTY` relu | motif `Layout=AZERTY` dans le fichier : 1 ; motif `illisible` : 0 | | | |
| COMMUN-16.5 | KEY2 | Premier lancement QWERTY ; V6, décision 12 | **Second essai**, en retirant `LPKeyboard.ini` (aucun fichier dans la build) : lancer, tester W A S D, Z, Q (en scène : panneau d'action) et E (interaction). Fermer, lire le fichier créé | W A S D déplacent ; Z (avancer) et Q (gauche) n'agissent plus pour le déplacement ; Q ouvre le panneau d'action en scène ; E interagit ; menu Clavier : « Layout: QWERTY » ; fichier créé avec `Layout=QWERTY`, `Version=2`, `CoupleDrag=Mouse` | motif `Layout=QWERTY` dans le fichier : 1 (fichier, pas journal) | | | |
### 3.2 KEY2 : le reste (repris de COMMUN-15)
| Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure |
|---|---|---|---|---|---|---|---|---|
| COMMUN-16.6 | KEY2 | K2, Apply, Reset ; V9 à V12 | Menu Clavier : liste des dispositions (QWERTY / AZERTY), choisir AZERTY, Apply, puis QWERTY, Apply ; changer à la main une liaison de déplacement ; en AZERTY, Reset ; en QWERTY ou custom, Reset | Liste avec deux choix et bouton Apply ; AZERTY : Z Q S D, W n'agit plus, A ouvre le panneau, E interagit ; QWERTY : W A S D, Z n'agit plus, Q ouvre le panneau ; « Removed from: … » si une touche était liée ailleurs ; changement manuel : « Layout: custom » ; liste ouverte et fermée sans bloquer le clavier (V18), page intégrée comme fenêtre. Reset en AZERTY : défauts puis AZERTY réappliqué, « AZERTY layout kept » ; Reset en QWERTY ou custom : `Layout=QWERTY` écrit | motif `disposition .* appliquee` : une ligne par Apply | | | |
| COMMUN-16.7 | KEY2 | K6, section « Scene » ; V17 | Menu Clavier : repérer la section « Scene » et ses blocs | Section « Scene » en 4 blocs : Camera (gauche-droite, bas-haut, molette, rotation, changement de caméra, hauteur de la vue), Characters (« Move couple with », couple sur Y, animation manuelle, rotation), Actions (panneau d'action), Other. Aucun libellé adulte | sans objet : constat visuel | | | |
| COMMUN-16.8 | KEY2 | K5, capture de la souris et de la molette ; V13 à V16 | Pendant la capture d'une action : clic droit ; bouton du milieu ; Ctrl + clic gauche ; clic gauche **seul** ; molette haut puis bas. Pendant la capture d'un axe : molette. Ctrl seul puis relâché ; Ctrl + E ; une touche lue par le jeu (Y, N, F12, PageDown) | Clic droit, milieu et Ctrl + clic gauche enregistrés ; clic gauche seul **refusé** avec un message (Escape annule) ; molette enregistrée « Mouse Wheel Up / Down » ; molette sur un axe : refus ; Ctrl seul : « Left Ctrl saved » au relâchement ; Ctrl + E enregistré en Ctrl + E ; touche réservée : avertissement « Also used by the game: … » sans refus | sans objet : constat visuel | | | |
| COMMUN-16.9 | KEY2 | Vitesse et pavé ; V23 | En jeu : Add, puis Subtract ; pavé 4, puis pavé 6 ; Equals, puis Hyphen. Ctrl + C puis Ctrl + E, comparés à C seul et E seul | Add et Subtract changent la vitesse ; pavé 4 et 6 ne règlent **que les favoris** ; Equals et Hyphen n'agissent plus sur la vitesse. Ctrl + C ouvre la ville sans changer de caméra ; Ctrl + E ouvre la fiche sans interaction (estimé, jamais essayé : noter un double déclenchement) | sans objet : constat visuel | | | |
| COMMUN-16.10 | KEY2 | Tilde (² sur AZERTY) et Insert ; § 5b de la SPEC | Appuyer sur ² (Tilde), puis sur Insert | ² n'ouvre **que** la console du moteur ; Insert ouvre la zone de saisie de scène ; aucun double déclenchement | sans objet : constat visuel | | | |
| COMMUN-16.11 | KEY2 | Hauteur de la vue ; V20 | En scène, vue de scène : maintenir G, puis B ; extrêmes ; passer en C3 puis revenir ; pendant une prise du couple à la souris, presser G | G monte, B baisse la vue, arrêt autour de +150 / -40 cm ; remise à zéro à l'entrée en scène et au passage en C3 ; sans effet pendant une prise à la souris | sans objet : constat visuel | | | |
| COMMUN-16.12 | KEY2 | Couple sur Y ; V21 | En scène : V puis X | Le couple se déplace sur Y du monde par pas de 5 par image (V +, X -), **seulement si la pièce est cachée** ; sinon rien, noter l'état de la pièce | sans objet : constat visuel | | | |
| COMMUN-16.13 | KEY2 | Option « Move couple with » ; V22 | Bloc Characters : basculer sur « Arrows only ». En scène : clic gauche glissé sur le couple, clic droit glissé, flèches. Quitter, relancer | Clic gauche : plus de prise, le clic reste au jeu ; clic droit : rotation conservée ; flèches : déplacent encore le couple ; `CoupleDrag=Keys` relu après redémarrage ; le bouton affiche « Mouse and arrows » / « Arrows only » | sans objet : constat visuel et fichier | | | |
| COMMUN-16.14 | KEY2 | Panneau d'action ; V19 | En scène : Q (QWERTY) puis, après Apply AZERTY, A ; Ctrl + Q ; hors scène ; menu ouvert ; saisie dans le filtre du panneau | La touche bascule le panneau ; Ctrl + Q ne le bascule pas ; rien hors scène ni menu ouvert ; une saisie dans le filtre ne le rebascule pas | motif `panneau d'action bascule` : une ligne par bascule, aucune hors scène | | | |
| COMMUN-16.15 | KEY2 | Texte d'aide des contrôles (`KEY2-IMPL-01.md` § 7) | Ouvrir le texte d'aide des contrôles en scène | 3 nouvelles lignes : hauteur de la caméra, couple sur le côté, panneau d'action ; les touches citées sont celles du menu Clavier ; lignes existantes intactes | sans objet : constat visuel | | | |
### 3.3 CAM2
| Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure |
|---|---|---|---|---|---|---|---|---|
| COMMUN-16.16 | CAM2 | A1-a, tangage souris ; `CAM2-IMPL-01.md` § 8 | En C1, **hors scène**, monter puis descendre la souris (après .2 : la garde « menu » est levée) | La tête se lève et se baisse. **Sens à confirmer** : attendu « souris vers le haut = regarder en haut ». Si inversé : noter (une ligne à corriger). Noter si la vue de dessus tourne par effet de bord | sans objet : constat visuel | | | |
| COMMUN-16.17 | CAM2 | A1-a, bornes | Même mode : souris au maximum vers le haut puis vers le bas | Arrêt vers +70° en haut et -60° en bas (environ) ; pas de retournement | sans objet : constat visuel | | | |
| COMMUN-16.18 | CAM2 | A1-a, régression ; `CAM2-SPEC-01.md` § 4.3 point 2 | En C1 hors scène : marcher sans toucher la souris ; puis tourner la souris à l'horizontale | La marche **ne bouge pas la tête** ; le lacet reste inchangé | sans objet : constat visuel | | | |
| COMMUN-16.19 | CAM2 | R-B1f ; `CAM2-IMPL-01.md` § 3 | Lancer une scène **depuis C1**, observer les cheveux et le cou du personnage | Cheveux et cou **non masqués**. Noter si la scène a bien été lancée depuis C1 | sans objet : constat visuel | | | |
| COMMUN-16.20 | CAM2 | Murs F2, **observation** (correction non faite) ; `CAM2-CART-03.md` § 2 et § 3 | Création de personnage : en C2 puis C3, tourner contre un mur de pièce, tenter de sortir de la pièce | **Observation** : C2 et C3 traversent-elles les murs ? Attendu : **inchangé** (aucune correction). Noter où (C2 ou C3) et le mur ou meuble en cause ; heure et capture au besoin | sans objet : constat visuel | | | |
| COMMUN-16.21 | CAM2 | Murs F2, **observation** ; `CAM2-CART-03.md` § 2.2 | En scène, en C2 puis C3, tourner contre un mur de la pièce | **Observation** : la caméra traverse-t-elle le mur ? Le couple reste-t-il visible ? Attendu : inchangé | sans objet : constat visuel | | | |
### 3.4 Rue extérieure
| Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure |
|---|---|---|---|---|---|---|---|---|
| COMMUN-16.22 | KEY2 | Cause 1 de KEY2-DIAG-01 (`PlayerBusy` de la pièce extérieure ; ancien ERR-128) ; `KEY2-DIAG-01.md` § 5 point 6 | Après une visite de l'onglet Clavier (cas .2), aller dans la rue extérieure là où le personnage est enfoncé dans le sol | Le personnage est **relevé** (plus enfoncé) | motifs `Piece exterieure : .* releve de` ou `ecarte de` : au moins 1 ligne ; noter si aucune (personnage non enfoncé : « non joué ») | | | |
### 3.5 STM1 : eau de Londres
| Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure |
|---|---|---|---|---|---|---|---|---|
| COMMUN-16.23 | STM1 | P3 de `STM1-SPEC-03.md` ; `STM1-B4-FIN.md` § 6b | Nouvelle partie ou Continuer à **Londres**, mode par défaut : regarder la Tamise (caméra de la ville), tourner et déplacer la vue. **Capture** | Tamise **bleue**, calée sur les quais (écart visuel < 5 m), **sans scintillement** avec le pavé. Noter le Z de l'eau relevé au journal | motif `\[LPCity\] EAU CentralLondon .*Z eau=` : 1 ligne par chargement de carte ; lire « Z eau » et la source (plan relu ou repli) ; ligne « EAU Z corrige » éventuelle | | | |
| COMMUN-16.24 | STM1 | P4 de `STM1-SPEC-03.md` | Mode classique de la carte à Londres. **Capture** | L'eau est **visible aussi** en mode classique | motif `\[LPCity\] EAU CentralLondon` : présent | | | |
| COMMUN-16.25 | STM1 | P5 de `STM1-SPEC-03.md` | Charger une autre ville sans eau (et, si possible, une ville dont la carte de départ est factice) | Rien d'anormal : aucune eau, ville inchangée | motif `\[LPCity\] EAU .* aucun asset d'eau` : 1 ligne pour la ville ; aucune erreur `LogLPCity` | | | |
### 3.6 Non-régression
| Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure |
|---|---|---|---|---|---|---|---|---|
| COMMUN-16.26 | CG2 | Rejeu de COMMUN-15.22 / COMMUN-14.4 (garde C5) | Menu principal, puis ouvrir le menu de forme du corps **sans** ouvrir l'écran de création de personnage | Aucune erreur d'accès à une propriété du créateur | motif `property chargen` : 0 | | | |
| COMMUN-16.27 | TSC1 | Rejeu de COMMUN-15.23 / COMMUN-14.13 (console de scènes) | Appuyer sur Insert, saisir la scène de départ du tutoriel citée dans `TSC1-DIAG-01.md` (sans dossier ni extension), puis Entrée | La zone de saisie s'affiche avec le focus clavier ; la scène démarre | sans objet : constat visuel | | | |
Décompte : **27 cas** : KEY2 16 (.1 à .15 et .22 : correctif DIAG .1 à .5, reste .6 à .15, rue .22), CAM2 6 (.16 à .21), STM1 3 (.23 à .25), non-régression 2 (.26 et .27).
Relevés communs au journal (hors cas) : `Fatal|Unhandled|Critical error|Assertion failed` = 0 ; `Accessed None` : aucun nouveau.
## 4. Cas témoins
| Cas | VAL statique (chemin) | Verdict statique |
|---|---|---|
| COMMUN-16.1 à .5, .22 (relecture, menu intégré) | `Docs\Migration\etat\REL\KEY2\KEY2-VAL-03.md` | PASS (statique) : builds code 0, 0 erreur, MD5 et fins de ligne conformes ; **comportement non validé** ; relecture du diff de DIAG-01 non faite |
| COMMUN-16.7 à .15, .16 à .21 | `Docs\Migration\etat\REL\KEY2\KEY2-VAL-01.md` | PASS-STATIC ; V1 à V23 de `KEY2-IMPL-01.md` § 5 reportés |
| COMMUN-16.23 à .25 | `etat\REL\STM1\STM1-B4-VAL.md` | PASS avec réserves (statique) ; aucun essai visuel |
| COMMUN-16.26, .27 | `COMMUN-14-TESTS.md` (cas .4 et .13) | cas rejoués ; verdicts d'origine dans le BILAN de COMMUN-14 |
Aucune VAL de comportement n'existe pour ces lots : aucun verdict statique ne vaut pour un cas de jeu. Pour CAM2, les cas .20 et .21 sont des observations, sans correction à valider.
Tours : 8 / 40
## Fichiers à commiter
- `Docs/Migration/etat/BOSS/COMMUN-16-TESTS.md` (A).