Fiche COMMUN-17-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-17-TESTS : fiche de tests commune de la build Development CAM2 rév. 3 (porte aussi des blocs de KEY2) (2026-10-20) Demande de Big Boss (`local_104ff22d`), 2026-10-20. Cette fiche reprend les 10 cas d'essai de `CAM2-SPEC-01.md` § 12.6 (avec les détails des § 12.8, 12.9 et 12.10), puis les cas de COMMUN-16 restés non joués qui portent sur ce lot ou sur KEY2, et deux non-régressions. 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-16-TESTS.md`. ## 1. Build testé | Élément | Valeur | |---|---| | Chemin de la build | `D:\Game\LifePlay_Build_5.8_Development_COM17\Windows\` (lancer `Windows\LifePlay.exe`) | | Exe | `Windows\LifePlay\Binaries\Win64\LifePlay.exe` | | MD5 de l'exe | `9362bd838ff0e9307619e925ecc9aaa0`, 335 812 608 octets (= exe de la copie, compilé par CAM2-IMPL-02 à 12:39) | | Date de génération | 2026-10-20 12:48, BuildDebug.ps1 -Config Development -ArchiveDir, code 0, CheckPackage PASS, journal `Saved\Logs\portage\BuildDebug_Development_20261020-124651.log` ; Room et PC recuits à 12:47 (Saved\Cooked, sources 12:30-12:31) | | Configuration | Development, commune à plusieurs lots | | Base | HEAD `fa86b6f` + sources et Blueprints non commités de CAM2 rév. 3 (`LPCameraModeSubsystem.cpp`, `LPRoomBoundsCameraModifier.h` et `.cpp`, `Content/BPs/Room.uasset`, `Content/BPs/PC.uasset`) ; builds statiques de `CAM2-IMPL-02.md` (deux compilations « Succeeded », 0 erreur) | | Génération | faite (`etat\BOSS\COMMUN-17\COMMUN-17-BUILD.md`) | MD5 des sources relevés par `CAM2-VAL-02.md` § 3.1 (8 premiers caractères) : `LPCameraModeSubsystem.cpp` `1ba033c7`, `LPCameraModeSubsystem.h` `36feac2a` (inchangé), `LPRoomBoundsCameraModifier.h` `cb3e179f`, `LPRoomBoundsCameraModifier.cpp` `f2812d3b`, `Room.uasset` `2b1cfa2e`, `PC.uasset` `581ca66d`. Lots et correctifs couverts : - **CAM2 rév. 3** (`CAM2-SPEC-01.md` § 12) : tangage de la tête en C1 à la souris par la rotation de contrôle (A1-R, § 12.2) ; borne de la vue de scène par le modificateur de caméra `ULPRoomBoundsCameraModifier` (F2-B, § 12.4), y compris sol et plafond et mur du studio de création ; témoins `C1 souris`, `Borne de vue`, `Camera hors piece` (§ 12.5). Sources : `CAM2-IMPL-02.md`, `CAM2-VAL-02.md` (**PASS avec réserves**, statique). CHG-375 réservé à ce lot (`REPO\NUMEROS.md`), pas encore versé. - **Blocs de KEY2 portés par ce passage** : hauteur de la vue absolue (`CameraHeight`, § 12.8, constantes `SceneFloorMargin` 30 cm et `SceneCeilingMargin` 20 cm) ; `CoupleMoveY` (V / X) partout et flèches haut / bas sur X en pièce visible, option b, avec remise en place de la vue de dessus (§ 12.9, `KEY2-DIAG-02.md`) ; texte d'aide des contrôles en scène (§ 12.10). Deux liaisons de plus dans `Room` et une garde dans `PC` (écarts arbitrés par Big Boss, `CAM2-IMPL-02.md` écart 1 et écart 2 (a) ; `CAM2-VAL-02.md` R6). - **Cas de COMMUN-16 reportés** : .5 (premier lancement QWERTY), .7 (section « Scene »), .8 (capture de la souris), .15 (aide), .19 (scène lancée depuis C1) ; non-régressions COMMUN-16.26 et .27. Constantes à connaître : `C1MouseSign = -1` (sens du POV, **une seule constante à inverser** si l'essai montre le sens contraire), bornes de tangage -60 (bas) et +70 (haut), marge de couple `CoupleWallMargin = 80` cm. ## 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 (`Windows\LifePlay\Saved\Logs\LifePlay.log` de la build). Préparation du cas .13 (premier lancement QWERTY), **avant le premier lancement** : la build ne doit contenir **aucun** `Windows\LifePlay\Saved\Config\Windows\LPKeyboard.ini` (le retirer s'il est présent, après en avoir gardé une copie). Les autres cas se jouent après ce premier lancement. Les cas de la scène (`.4`, `.5`, `.8` à `.12`, `.17`) demandent une scène intime lancée **dans une pièce intérieure visible** ; `.10` demande une scène d'extérieur (pièce cachée). `.3` demande l'écran de création de personnage. | Cas | Fonction ou réglage dans la build ? | Dépend d'un travail non fini ou d'une observation | |---|---|---| | .1, .2 (tangage souris) | oui : code compilé, VAL statique PASS avec réserves (`CAM2-VAL-02.md`) | **Aucun comportement n'a été vu en jeu.** Sens non établi (`C1MouseSign = -1` par raisonnement) : à comparer avec le POV (.2). Liaisons BP de `Room` « relues par l'IMPL », **non relues par MCP** (R6) | | .3 (studio de création) | oui | **R2 de la VAL** : la borne du mur du studio s'applique avec la pièce cachée ; écart léger à la SPEC (c), peut-être voulu : à constater, le témoin le dira | | .4 à .7 (caméra de scène, vues exclues) | oui | jamais essayé en jeu ; le cas d'origine est COMMUN-16.21 (scène intime, vue sortie de la pièce, journal de COM16) | | .8 (G, B) | oui | repli relatif [-40, +150] en pièce cachée ou intérieur introuvable (comportement d'avant) | | .9 à .11 (couple) | oui | R3, R4 de la VAL : sans intérieur calculable, pas de borne ; témoin de cumul surestimé si V / X et flèches sont tenus ensemble. **Garde BP de `PC` jamais relue par MCP** | | .12, .16 (aide) | oui | recompté statiquement : 12 `%s` pour 12 arguments (`CAM2-VAL-02.md` § 4) ; affichage jamais vu | | .13 à .15 (KEY2 reportés) | oui | V6, V13 à V16, V17 de `KEY2-IMPL-01.md` § 5 jamais essayés (`KEY2-VAL-03.md` § 6) | | .17 (R-B1f) | oui | jouable seulement si la scène est lancée depuis C1 ; défaut jamais observé | | .18, .19 | oui | rejeu de COMMUN-16.26 et .27 | ## 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. Les témoins sont écrits au plus une fois par seconde chacun (`CAM2-SPEC-01.md` § 12.5). ### 3.1 CAM2 : tangage de C1 à la souris (cas 1 et 2 de la SPEC) | Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure | |---|---|---|---|---|---|---|---|---| | COMMUN-17.1 | CAM2 | A1-R, § 12.2 ; cas 1 de § 12.6 ; CHG-375 (réservé) | En C1, **hors scène** : monter puis descendre la souris, dans les deux sens ; souris au maximum vers le haut puis vers le bas ; tourner la souris à l'horizontale ; marcher (touches de déplacement) sans toucher la souris ; sortir de C1 (autre caméra) puis y revenir | La tête se lève et se baisse. **Sens à confirmer** : attendu « souris vers le haut = regarder en haut » ; si inversé, noter (une constante à inverser). Arrêt vers **+70°** en haut et **-60°** en bas (environ), pas de retournement. Le lacet reste inchangé, la marche ne bouge pas la tête. En revenant dans C1, la vue est **à l'horizontale** | motif `C1 souris` : au moins 1 ligne (valeurs : `CursorY`, tangage voulu, tangage de contrôle, lacet) ; tangage de contrôle jamais hors [-60, +70] ; pas de ligne de témoin C1 d'excès de tangage | | | | | COMMUN-17.2 | CAM2 | A1-R, sens ; cas 2 de § 12.6 | Lancer une scène en vue POV (tête du personnage) et bouger la souris en haut puis en bas, puis refaire le geste en C1 hors scène | **Le sens de la souris est le même en POV et en C1.** Si C1 est inversé par rapport au POV : noter (une constante, `C1MouseSign`) | sans objet : constat visuel (comparaison des deux sens) | | | | ### 3.2 CAM2 : borne de la vue de scène (cas 3 à 7 de la SPEC) | Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure | |---|---|---|---|---|---|---|---|---| | COMMUN-17.3 | CAM2 | F2-B, studio ; cas 3 de § 12.6 ; réserve R2 de `CAM2-VAL-02.md` | Création de personnage, caméra « C3 Room (old) » : approcher la vue du mur du studio (orbite, travelling) | La vue **reste devant le mur du studio**, ne passe pas derrière. Noter si la vue « colle » au mur (comportement voulu). **R2** : constater que la borne s'applique bien pièce cachée | motif `Borne de vue : active \(Camera: C3 Room \(old\)\)` : au moins 1 ; relever la mention `piece=0 mur du studio=1` si elle figure sur la ligne ; motif `Camera hors piece` : lignes éventuelles, borne franchie « mur du studio » | | | | | COMMUN-17.4 | CAM2 | F2-B, murs ; cas 4 de § 12.6 | Scène intime, pièce intérieure visible, vues `Scene` puis `C3 Couple` : orbite au **bouton droit** autour du couple, en restant près du centre ; puis orbite vers les murs | Près du centre : la vue **reste dans la pièce**, **aucune** ligne `Camera hors piece`. Vers un mur : la vue s'arrête avant le mur, ne le traverse pas. Même constat en `C3 Room (old)` | motif `Borne de vue : active \(Camera: Scene\)` et `\(Camera: C3 Couple\)` : au moins 1 chacun ; motif `Camera hors piece` : 0 ligne tant qu'on reste au centre ; lignes ensuite : borne franchie X ou Y | | | | | COMMUN-17.5 | CAM2 | F2-B, sol et plafond ; cas 5 de § 12.6 ; cas d'origine COMMUN-16.21 | Scène intime, vue `Scene` : orbite au bouton droit **vers le bas**, puis **travelling avant** (touche d'avance de la vue) ; puis orbite vers le haut et travelling avant | La vue **ne passe pas sous le plancher et ne s'y colle pas** (au moins 30 cm au-dessus du sol) ; ne monte pas au-dessus du plafond (20 cm sous le plafond). Aucun coin sombre vu de l'extérieur | motif `Camera hors piece` : lignes éventuelles avec borne franchie `sol` ou `plafond` (corrigée, la vue reste dans la zone) ; relever `MoveCamera` et `avant` | | | | | COMMUN-17.6 | CAM2 | F2-B, régression ; cas 6 de § 12.6 | C2 (Follow) **hors sexe** : se déplacer, tourner. Puis une scène d'extérieur (pièce cachée) : orbite, travelling | C2 : **inchangé**. Scène d'extérieur : **inchangée**, aucune borne, comportement d'avant | motif `Borne de vue : inactive \(Camera: C2 Follow\)` : au moins 1 ; en scène d'extérieur, aucune ligne `Camera hors piece` | | | | | COMMUN-17.7 | CAM2 | F2-B, vues exclues ; cas 7 de § 12.6 | Entrer successivement dans C1, POV (tête du personnage), Overview (carte) et C2 Follow ; dans chacune, bouger la vue | **La vue n'est jamais modifiée** par la borne. Le journal montre l'inactivité en entrant dans chacune de ces vues | motif `Borne de vue : inactive \(Camera: C1 First person\)`, `\(Camera: POV\)`, `\(Camera: Overview\)`, `\(Camera: C2 Follow\)` : au moins 1 chacun ; motif `Camera hors piece` : 0 ligne dans ces vues | | | | ### 3.3 KEY2 porté : hauteur, couple, vue de dessus (cas 8 et 9 de la SPEC) | Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure | |---|---|---|---|---|---|---|---|---| | COMMUN-17.8 | KEY2 (porté par CAM2) | `CameraHeight` absolue, § 12.8 ; cas 8 de § 12.6 | Scène intime, vue `Scene`, pièce intérieure visible : maintenir **B** jusqu'à l'arrêt, puis **G** jusqu'à l'arrêt ; passer en C3 (ou revenir en `Scene`) ; pendant une prise du couple à la souris, presser G | **B** s'arrête à **≈ 30 cm au-dessus du sol** ; **G** s'arrête à **≈ 20 cm sous le plafond** (ou sous le plafond estimé à 3,50 m). Après le recadrage, la caméra est **revenue à sa hauteur d'origine**. Sans effet pendant une prise. Pièce d'extérieur : l'ancienne borne relative s'applique, comme avant | motif `Camera hors piece` : 0 ligne causée par G ou B (mêmes bornes Z que la borne de vue) | | | | | COMMUN-17.9 | KEY2 (porté par CAM2) | `CoupleMoveY` partout et flèches haut / bas, option b, § 12.9 ; `KEY2-DIAG-02.md` ; cas 9 (1) de § 12.6 | Scène intime, **pièce visible** : tenir **V** puis **X** ; tenir la flèche **haut** puis la flèche **bas** ; pousser le couple contre un mur dans chacun des quatre sens | Le couple se déplace sur Y du monde (V +, X -) et sur X du monde (flèche haut +X, bas -X). Le pivot du couple s'arrête à **80 cm** du mur, **sans saccade** (pas de retour en arrière à l'image suivante). La caméra de scène suit le couple | motifs `Scene : CoupleMoveY=` et `Scene : DownUp=` : une ligne au relâchement, avec `Room cachee=0` et `[borne : oui\|non]` ; noter le déplacement cumulé | | | | | COMMUN-17.10 | KEY2 (porté par CAM2) | Pièce cachée, § 12.9 ; cas 9 (2) de § 12.6 | Scène d'**extérieur** (pièce cachée) : tenir **V** puis **X** ; tenir flèche haut puis bas | V / X déplacent le couple **sans borne**. Les flèches se comportent **comme avant** (déplacement par `PC`), **sans pas doublé** | motif `Scene : DownUp=.* ignore \(piece cachee` : au moins 1 (le C++ ne fait rien, `PC` s'en charge) ; `Scene : CoupleMoveY=.*Room cachee=1` : une ligne par appui | | | | | COMMUN-17.11 | KEY2 (porté par CAM2) | Remise en place de la vue de dessus, § 12.9 ; cas 9 (3) de § 12.6 | Noter la place de la carte (Overview). Lancer une scène en pièce visible, tenir les flèches haut / bas et gauche / droite, quitter la scène, rouvrir la carte. Hors scène : flèches sur la carte | Après la scène, la carte est **à la même place qu'avant** ; hors scène, les flèches déplacent la carte comme d'habitude ; la vue de dessus est intacte hors scène. Aucun autre effet | motif `Scene : Birdview remis a sa place` : une ligne à la sortie de scène si un décalage a eu lieu | | | | | COMMUN-17.12 | KEY2 (porté par CAM2) | Texte d'aide, § 12.10 ; cas 10 de § 12.6 | Ouvrir le texte d'aide des contrôles **en scène** ; relire les lignes du couple et des actions | La ligne « Up / Down: move the couple forward / back » est affichée, avec les **touches liées réelles** ; ligne « sideways » avec V / X ; ligne du panneau d'action avec sa touche ; **aucun « ? »** (sauf action sans touche, à noter) ; lignes de la section caméra intactes | sans objet : constat visuel | | | | ### 3.4 KEY2 : cas de COMMUN-16 reportés | Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure | |---|---|---|---|---|---|---|---|---| | COMMUN-17.13 | KEY2 | Reprise de COMMUN-16.5 ; premier lancement QWERTY ; V6, décision 12 | **Premier lancement, sans `LPKeyboard.ini`** dans la build : 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) ; motif `illisible` (ligne « Clavier ») : 0 | | | | | COMMUN-17.14 | KEY2 | Reprise de COMMUN-16.7 ; 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-17.15 | KEY2 | Reprise de COMMUN-16.8 ; 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-17.16 | KEY2 | Reprise de COMMUN-16.15 ; texte d'aide des contrôles (`KEY2-IMPL-01.md` § 7, refondu par § 12.10) | Ouvrir le texte d'aide des contrôles, **dans les menus puis en scène**, après un changement de disposition (AZERTY puis QWERTY, Apply) | Les touches citées sont **celles du menu Clavier** (elles suivent la disposition) ; lignes existantes intactes ; aucun « ? » ; cohérent avec .12 | sans objet : constat visuel | | | | ### 3.5 CAM2 : défaut R-B1f | Cas | Lot | Correctif (CHG / ERR / ticket) | Action de l'utilisateur | Attendu | Contrôle automatique du journal | Verdict | Découvreur | Heure | |---|---|---|---|---|---|---|---|---| | COMMUN-17.17 | CAM2 | Reprise de COMMUN-16.19 ; 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 (sinon « non joué ») | sans objet : constat visuel | | | | ### 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-17.18 | CG2 | Rejeu de COMMUN-16.26 / COMMUN-15.22 (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-17.19 | TSC1 | Rejeu de COMMUN-16.27 / COMMUN-15.23 (console de scènes) | Appuyer sur Insert, saisir la scène de départ du tutoriel citée dans `TSC1-DIAG-01.md` (commande `tut_start`, 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 : **19 cas** : CAM2 8 (.1 à .7, .17 ; cas 1 à 7 de la SPEC § 12.6 en .1 à .7, R-B1f en .17), KEY2 porté 5 (.8 à .12 : cas 8, 9 en trois parties, 10), KEY2 reporté 4 (.13 à .16), non-régression 2 (.18, .19). Les 10 cas de la SPEC sont couverts : 1 → .1, 2 → .2, 3 → .3, 4 → .4, 5 → .5, 6 → .6, 7 → .7, 8 → .8, 9 → .9 à .11, 10 → .12. Relevés communs au journal (hors cas) : `Fatal|Unhandled|Critical error|Assertion failed` = 0 ; `Accessed None` : aucun nouveau ; motif `Camera hors piece` : lire toute ligne (borne franchie, distance au pivot) pour le BILAN ; aucune ligne `Camera hors piece` dans une vue exclue (.7). ## 4. Cas témoins | Cas | VAL statique (chemin) | Verdict statique | |---|---|---| | COMMUN-17.1 à .12 | `Docs\Migration\etat\CAM\CAM2\CAM2-VAL-02.md` | PASS avec réserves (statique, 7 réserves R1 à R7) : build « Succeeded » ×2, 0 erreur, MD5 et fins de ligne conformes, diff conforme à la SPEC § 12 ; liaisons BP « relues par l'IMPL », non relues par MCP ; **comportement non validé** | | COMMUN-17.13 à .16 | `Docs\Migration\etat\REL\KEY2\KEY2-VAL-03.md` et `KEY2-VAL-01.md` | PASS statique ; V1 à V23 de `KEY2-IMPL-01.md` § 5 reportés (aucun comportement vu en jeu) | | COMMUN-17.17 | `CAM2-IMPL-01.md` § 3 | pas de VAL de comportement ; défaut jamais observé | | COMMUN-17.18, .19 | `COMMUN-16-TESTS.md` (cas .26 et .27) | cas rejoués ; verdicts d'origine dans le BILAN de COMMUN-16 / COMMUN-15 | Aucune VAL de comportement n'existe pour ces lots : aucun verdict statique ne vaut pour un cas de jeu. Les points à confirmer par l'utilisateur (`CAM2-VAL-02.md` § 6) qui touchent l'essai : R2 (borne du mur du studio avec pièce cachée, cas .3). Tours : 7 / 40 ## Fichiers à commiter - `Docs/Migration/etat/BOSS/COMMUN-17-TESTS.md` (A).