Fiche COMMUN-15-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-15-TESTS : fiche de tests commune de la build Development commune KEY2 et CAM2 (2026-10-20) Demande de l'utilisateur relayée par Big Boss (`local_104ff22d`), 2026-10-20 : « prépare le cahier de tests ». 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-14-TESTS.md`. ## 1. Build testé | Élément | Valeur | |---|---| | Chemin de la build | `D:\Game\LifePlay_Build_5.8_Development_COM15\Windows\` (lancer `Windows\LifePlay.exe`) | | Exe | `Windows\LifePlay\Binaries\Win64\LifePlay.exe` | | MD5 de l'exe | `631de39314d2f0bd6792cb4dbbddb751`, 335 785 472 octets (= exe lié par KEY2-BUILD-01 à 10:13, UAT « Target is up to date ») | | Date de génération | 2026-10-20 10:23, BuildDebug.ps1 -Config Development -ArchiveDir, code 0, CheckPackage PASS, journal `Saved\Logs\portage\BuildDebug_Development_20261020-102313.log` | | Configuration | Development, commune à plusieurs lots | | Base | HEAD `37e9de8` + sources non commitées de KEY2 et CAM2, validées statiquement par `KEY2-BUILD-01.md` (code 0, 0 erreur, 1 avertissement C4701 connu) et `KEY2-VAL-01.md` (PASS-STATIC) | | Génération | faite (`etat\BOSS\COMMUN-15\COMMUN-15-BUILD.md`) | Sources non commitées couvertes (MD5 relevés par `KEY2-BUILD-01.md` § 1) : `Config/DefaultInput.ini` `1a8e89a1…`, `Source/LifePlay/LPKeyboardSubsystem.cpp` `7501ec6a…`, `Source/LifePlay/LPCameraModeSubsystem.cpp` `f15c2b9b…`. Lots et correctifs couverts : - **KEY2** (K2 à K6 : dispositions QWERTY et AZERTY avec Apply, retrait du pavé, de Equals, de Hyphen et de Tilde pour la vitesse et la scène de test, touche d'action, capture de la souris et des combinaisons, section « Scene », hauteur de la vue, couple sur Y, option « Arrows only », migration `Version=2`, texte d'aide) : `KEY2-SPEC-01.md` (rév. 8), `KEY2-IMPL-01.md` (§ 5 V1 à V23, § 7). - **CAM2** (tangage de C1 à la souris, R-B1f, trace des murs F2-a) : `CAM2-IMPL-01.md` (rév. 5, § 8), `CAM2-SPEC-01.md`. - Contrôles de non-régression rejoués : COMMUN-14.4 et COMMUN-14.13. ## 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 et .2), **avant le premier lancement de la build neuve** : **copier** (pas renommer) `Windows\LifePlay\Saved\Config\Windows\LPKeyboard.ini` de la build vers `LPKeyboard.ini.avant`. Si la build neuve n'a pas d'ancien fichier (aucun lancement antérieur), le cas se joue en copiant celui de la build COMMUN-14 sauvegardée : `D:\Game\LifePlay_Build_5.8_Development\Windows\LifePlay\Saved\Config\Windows\LPKeyboard.ini` ; **indiquer au BILAN laquelle des deux sources a servi**. Le second essai (cas .3) se joue **sans aucun** `LPKeyboard.ini`. | Cas | Fonction ou réglage dans la build ? | Dépend d'un travail non fini ou d'une observation | |---|---|---| | .1 à .15 (KEY2) | oui : code compilé et validé statiquement (`KEY2-VAL-01.md` § 5) | **Aucun essai de comportement n'a eu lieu** : V1 à V23 de `KEY2-IMPL-01.md` § 5 sont reportés (`KEY2-VAL-01.md` § 2). Tous les cas KEY2 sont donc des premiers essais en jeu | | .2 (migration, touche prise) | oui | dépend du contenu de l'ancien fichier : le cas n'est jouable que si Q y est lié à un déplacement (cas de l'ancien fichier de la build COMMUN-14, `KEY2-IMPL-01.md` Constats) | | .13 (« Arrows only ») | oui, sans changement de Blueprint (`KEY2-SPEC-01.md` § 8c, point 2) | le clic droit garde la rotation (décision 13) | | .11, .12 (hauteur, couple sur Y) | oui | **.12 dépend de l'état de la pièce** : le déplacement sur Y n'agit que quand la pièce est cachée (`KEY2-IMPL-01.md` V21) ; si V / X n'agissent pas, noter l'état de la pièce | | .16 (sens du tangage souris) | oui | **dépend du sens de la souris, non établi** : le signe `Pitch += CursorY` vient d'un raisonnement, pas d'un essai (`CAM2-IMPL-01.md` § 8) | | .17 (bornes du tangage) | oui | bornes -60 / +70 à constater ; dépend du cas .16 | | .18 (marche, lacet) | oui | le lacet est existant ; ce qui l'applique à la tête n'a pas été relu (`CAM2-IMPL-01.md` § 8) | | .19 (R-B1f) | oui | jouable seulement si la scène est lancée depuis C1 ; le défaut n'a jamais été observé (`CAM2-SPEC-01.md` § 6, point 7) | | .20, .21 (murs) | correction F2 présente mais **probablement incomplète** | **dépend d'une observation** : attendu probable « inchangé » ; cas d'observation, la cause `GIWall` reste à lire (`CAM2-IMPL-01.md` § 4 point 3 et § 8, « Reste à faire »). Les contacts restent hors essai (inaccessibles pour l'utilisateur, `CAM2-SPEC-01.md` § 6 point 1) | | .22, .23 | 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`. Verdict, Découvreur et Heure restent vides : le BILAN les remplit. « Journal » = `Saved\Logs\LifePlay.log` de la build. ### 3.1 KEY2 | Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure | |---|---|---|---|---|---|---|---|---| | COMMUN-15.1 | KEY2 | Migration `Version=2` ; V7 de `KEY2-IMPL-01.md` ; `KEY2-SPEC-01.md` § 5 et § 10 point 2 | Avant le premier lancement, copier `LPKeyboard.ini` vers `LPKeyboard.ini.avant` (voir § 2 pour la source). Lancer, ouvrir le menu Clavier, fermer le jeu. Comparer `LPKeyboard.ini` à `LPKeyboard.ini.avant` | `[LPKeyboard]` avec `Version=2` ; les 5 liaisons retirées absentes : vitesse haute et basse du pavé (6 et 4), Equals, Hyphen, Tilde (scène de test) ; ActionPanel, CameraHeight G / B, CoupleMoveY V / X **ajoutés si leur touche est libre** (`KEY2-IMPL-01.md` § 7) ; `Layout=Custom` ; les autres liaisons intactes (diff avant / après). Noter laquelle des deux sources de fichier a servi | motif `passe de la version 0 a 2` : 1 ligne, avec « 5 liaisons retirees » ; compte des touches d'axe ajoutées : relevé | | | | | COMMUN-15.2 | KEY2 | Migration, touche prise ; V8 | Si l'ancien fichier lie Q à un déplacement : ouvrir le menu Clavier, repérer la ligne d'ActionPanel et la ligne d'état | ActionPanel sans touche (ligne « (no key) » avec Add) ; ligne d'état « Action Panel has no key: choose a layout and press Apply, or use Add. » ; Apply QWERTY ou AZERTY pose la touche. Si Q est libre dans l'ancien fichier : noter « sans objet » et que ActionPanel est déjà sur Q | sans objet : constat visuel ; le motif du cas .1 sert aussi | | | | | COMMUN-15.3 | KEY2 | Premier lancement QWERTY ; V6, décision 12 | **Second essai**, sans aucun `LPKeyboard.ini` dans la build : lancer, en scène ou en ville tester W A S D, Z, Q et E ; en scène, Q. 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) | | | | | COMMUN-15.4 | KEY2 | K2, Apply ; V9, V10, V11 ; `KEY2-SPEC-01.md` § 10 point 3 | Menu Clavier : ouvrir la liste des dispositions (QWERTY / AZERTY), choisir AZERTY, **Apply**. Tester Z Q S D, W, A (en scène) et E. Puis QWERTY, Apply, mêmes touches. Relever si une ligne « Removed from: … » apparaît. Enfin changer à la main une liaison de déplacement | Liste présente avec les deux choix et un bouton Apply ; texte « Layout: … » suivi. **AZERTY** : Z Q S D déplacent, W n'agit plus, A ouvre le panneau d'action en scène, E interagit. **QWERTY** : W A S D, Z n'agit plus, Q ouvre le panneau. Le fichier montre exactement les 5 liaisons du préréglage changées. Une touche du préréglage liée ailleurs est annoncée (« Removed from: … »). Le changement manuel du déplacement affiche « Layout: custom ». La liste s'ouvre et se ferme sans bloquer le clavier (V18), en page intégrée comme en fenêtre | motif `disposition .* appliquee` : une ligne par Apply | | | | | COMMUN-15.5 | KEY2 | Reset ; V12 | Joueur en AZERTY : Reset. Puis joueur en QWERTY ou custom : Reset | AZERTY : touches par défaut puis AZERTY réappliqué, message « AZERTY layout kept ». QWERTY ou custom : retour au préréglage QWERTY, `Layout=QWERTY` écrit | sans objet : constat visuel et fichier | | | | | COMMUN-15.6 | KEY2 | K6, section « Scene » ; V17 | Menu Clavier : repérer la section « Scene » et ses blocs | Section « Scene » (nom neutre) en 4 blocs : Camera (gauche-droite, bas-haut, molette, rotation de la caméra, changement de caméra, hauteur de la vue), Characters (option « Move couple with », couple sur Y, animation manuelle, rotation), Actions (panneau d'action), Other. Aucun libellé adulte. La caméra apparaît plus bas dans la liste qu'avant (écart E2) | sans objet : constat visuel | | | | | COMMUN-15.7 | KEY2 | K5, capture de la souris ; V13, V14 | 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 | Clic droit, milieu et Ctrl + clic gauche enregistrés ; clic gauche seul **refusé** avec un message, la capture continue (Escape l'annule) ; molette enregistrée comme « Mouse Wheel Up / Down » et affichée (à vérifier : passe le filtre des touches remappables) ; molette sur un axe : message de refus | sans objet : constat visuel | | | | | COMMUN-15.8 | KEY2 | K5, modificateur seul ; V15, V16 | Pendant la capture : appuyer sur Ctrl seul puis le relâcher. Recommencer et presser Ctrl + E. Capturer ensuite une touche lue par le jeu (Y, N, F12, PageDown, clic gauche avec modificateur…) | Ctrl seul : « Left Ctrl saved » au relâchement ; Ctrl + E : enregistré en Ctrl + E, pas Ctrl seul ; touche réservée : avertissement « Also used by the game: … » sans refus | sans objet : constat visuel | | | | | COMMUN-15.9 | KEY2 | Vitesse et pavé ; `KEY2-SPEC-01.md` § 10 point 4 ; V23 | En jeu : Add, puis Subtract ; pavé 4, puis pavé 6 ; Equals, puis Hyphen. Avec Ctrl : 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 du personnage **sans** interaction (estimé d'après le moteur, jamais essayé : s'il y a double déclenchement, le noter) | sans objet : constat visuel | | | | | COMMUN-15.10 | KEY2 | Tilde (§ 5b de la SPEC) | Appuyer sur Tilde (², sur AZERTY), puis sur Insert | Tilde (²) 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-15.11 | KEY2 | Hauteur de la vue ; V20 | En scène, vue de scène : maintenir G, puis B ; aller aux 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. Vitesse (100 cm/s) à juger | sans objet : constat visuel | | | | | COMMUN-15.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, et noter l'état de la pièce (comportement identique à la touche bas-haut de `PC`) | sans objet : constat visuel | | | | | COMMUN-15.13 | KEY2 | Option « Move couple with » ; V22 | Menu Clavier, bloc Characters : basculer l'option sur « Arrows only ». En scène : clic gauche glissé sur le couple, clic droit glissé, flèches. Quitter et relancer le jeu | Clic gauche : plus de prise du couple, 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 la valeur en cours (« Mouse and arrows » / « Arrows only ») | sans objet : constat visuel et fichier | | | | | COMMUN-15.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 d'action ; 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-15.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 ; les lignes existantes sont intactes | sans objet : constat visuel | | | | ### 3.2 CAM2 | Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure | |---|---|---|---|---|---|---|---|---| | COMMUN-15.16 | CAM2 | A1-a, tangage souris ; `CAM2-IMPL-01.md` § 8 | En C1, **hors scène**, monter puis descendre la souris | La tête se lève et se baisse. **Sens à confirmer** : attendu « souris vers le haut = regarder en haut » (signe `Pitch += CursorY`, jamais essayé). Si inversé : noter, la correction tient à une ligne. Noter aussi si la vue de dessus tourne par effet de bord | sans objet : constat visuel | | | | | COMMUN-15.17 | CAM2 | A1-a, bornes | Dans le même mode, pousser la 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-15.18 | CAM2 | A1-a, régression ; `CAM2-SPEC-01.md` § 4.3 point 2 | En C1 hors scène : marcher (ZQSD ou WASD) sans toucher la souris ; puis tourner la souris à l'horizontale | La marche **ne bouge pas la tête** ; le lacet reste inchangé (existant) | sans objet : constat visuel | | | | | COMMUN-15.19 | CAM2 | R-B1f ; `CAM2-IMPL-01.md` § 3 | Lancer une scène **depuis C1**, observer les cheveux et le cou du personnage pendant la scène | Cheveux et cou **non masqués** (le masquage de C1 est levé à l'entrée en scène). Défaut jamais observé avant correctif : noter si la scène a bien été lancée depuis C1 | sans objet : constat visuel | | | | | COMMUN-15.20 | CAM2 | F2-a (trace sur `ECC_Camera`), **observation** ; `CAM2-SPEC-01.md` § 3.3 points 1 et 4 | Création de personnage : en C2 puis C3, tourner autour du personnage contre un mur de pièce, tenter de sortir de la pièce | **Observation** : C2 et C3 traversent-elles encore les murs ? Attendu probable : **inchangé** (correction F2 présumée incomplète). Noter où (C2 ou C3) et si un meuble ou un mur est en cause. C1 et C2 sans régression | sans objet : constat visuel ; capture et heure au besoin | | | | | COMMUN-15.21 | CAM2 | F2-a, **observation** ; `CAM2-SPEC-01.md` § 3.3 point 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 probable : inchangé. La cause (`GIWall`, zone de pièce) reste à lire | sans objet : constat visuel | | | | ### 3.3 Non-régression | Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure | |---|---|---|---|---|---|---|---|---| | COMMUN-15.22 | CG2 | Rejeu de 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-15.23 | TSC1 | Rejeu de COMMUN-14.13 (console de scènes) | Appuyer sur Insert, saisir dans la zone qui s'ouvre le nom de fichier de la scène de départ du tutoriel cité 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 (Insert est gardé par KEY2) | sans objet : constat visuel | | | | Décompte : **23 cas** : KEY2 15 (.1 à .15), CAM2 6 (.16 à .21), contrôles de non-régression 2 (.22 et .23). Relevés communs au journal (hors cas) : `Fatal|Unhandled|Critical error|Assertion failed` = 0 ; `Accessed None` : aucun nouveau (V23). ## 4. Cas témoins | Cas | VAL statique (chemin) | Verdict statique | |---|---|---| | COMMUN-15.1 à .15, .16 à .21 | `Docs\Migration\etat\REL\KEY2\KEY2-VAL-01.md` | PASS-STATIC : build des deux cibles à code 0, 0 erreur, 0 avertissement nouveau ; V1 à V23 de `KEY2-IMPL-01.md` § 5 **reportés** (comportement non validé) | | COMMUN-15.22, .23 | `COMMUN-14-TESTS.md` (cas .4 et .13) | cas rejoués ; verdicts d'origine à lire dans le BILAN de COMMUN-14 | `KEY2-VAL-01.md` § 6 demandait de désigner un cas témoin : la présente fiche tient lieu de cadre. Aucune VAL de comportement n'existe pour KEY2 ni CAM2 : aucun verdict statique ne vaut pour un cas de jeu. Tours : 8 / 40 ## Fichiers à commiter - `Docs/Migration/etat/BOSS/COMMUN-15-TESTS.md` (A).