LifePlay-Revival/Docs/Migration/etat/CAM/CAM-AUDIT.md
edujiro5972 8084622450 LifePlay UE 5.8 : état de développement au 2026-10-19
Tickets : REP1-T4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-19 22:57:42 +02:00

115 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Fiche CAM-AUDIT — Niveau N2 — Modèle prévu opus | utilisé claude-opus-5-5 — Agent orchestrateur (session « Camera ») — Skills lp-lot, sk-orchestrate, sk-recount
# CAM-AUDIT : inventaire chiffré des caméras de LifePlay (2026-10-11)
Hors gabarit : synthèse de l'orchestrateur demandée par la fiche du lot (phase 1), à partir de CAM-T1-INV, CAM-T2-CART
et CAM-T3-CART, contre-vérifiés (§ 5). Copie `D:\Game\LifePlay-master 5.8`, branche `ue5.8`, HEAD `4283c13`.
Lecture seule : aucun éditeur, MCP, commandlet ni build ; rien écrit hors de `Docs\Migration\etat\CAM\`.
Sources détaillées (preuves `fichier:ligne`) : `CAM-T1-INV.md` (comptes), `CAM-T2-CART.md` (graphes BP),
`CAM-T3-CART.md` (C++ et .ini). Journaux bruts de T1 : `CAM-T1_union.txt`, `CAM-T1_matrice.txt`,
`CAM-T1_camera-insensible.txt`, `CAM-T1_tokens.txt` (ignorés par git).
## 1. Inventaire : toutes les caméras trouvées
| Id | Caméra | Où | Type | Qui l'active, quand | Suit le MC | État | Rôle |
|---|---|---|---|---|---|---|---|
| K1 | **Birdview** (`GI.Birdview`, classe `Birdview_C`) | acteur placé dans `Content/Scenes/CentralLondon.umap` ; BP `Content/BPs/Birdview.uasset` (fils de `CameraActor`) | CameraActor | PC `BeginAutoLoad` au chargement ; GI `ShowRender` (sortie de pièce, de contacts, du constructeur) | non (déplacée par flèches, souris, molette, `PanToBuilding`) | vivante | vue de dessus de la ville (carte) ; projection orthographique probable (chaînes `OrthoWidth`, `CamOrthoZoom`) |
| K2 | **CameraScene** = `GI.ChargenCameras[0]` = `Room.SceneCamera` | acteur placé dans `CentralLondon.umap` (attribution des noms aux index : estimée) | CameraActor | `HideRender(0)` : entrée dans une pièce (`OpenSpace`), constructeur, édition de personnage, scène scriptée ; fin de sexe ; `ResetCamera` | **partiellement** : `Room.AutoCamera` la tourne vers la tête du MC et la recale près de lui, sinon position fixe `CameraSceneTransformDefault` | vivante | caméra de pièce, de scène, de sexe et de CharGen (4 rôles) |
| K3 | **CameraFullBody** ou **CameraPortrait** = `ChargenCameras[1]` | acteur placé dans `CentralLondon.umap` | CameraActor | `OpenContacts` → `HideRender(1)` ; `ZoomCharGen` | non (fixe) | vivante | contacts, CharGen |
| K4 | l'autre des deux = `ChargenCameras[2]` | acteur placé dans `CentralLondon.umap` | CameraActor | `ZoomCharGen` seulement (cycle 0 → 1 → 2 → 0) | non (fixe) | vivante | CharGen (zoom) |
| K5 | **FirstPersonSM** (classe `FirstPerson_C`) | composant de `Content/BPs/Person.uasset` : **un par Person instanciée** (MC et chaque PNJ) ; BP `Content/BPs/FirstPerson.uasset` (fils de `CameraComponent`) | CameraComponent | PC `SwitchCamera` (touche C, bouton « Switch camera ») **pendant le sexe seulement** : attache à la tête de `SexPersons[i]`, puis cible de vue | **oui pendant le sexe** (tête du MC ou du partenaire, selon l'index) | vivante (sexe) | 1re personne (POV) |
| K6 | **FollowView** | C++ `Source/LifePlay/LPDirectControlSubsystem.cpp:897-941` (créée par `SpawnActor`, transitoire) | CameraActor dynamique | **personne** : `FollowCamera` n'est jamais appelée (`.h:12` « La camera suiveuse n'est pas branchee ») | oui si elle tournait (derrière le MC, 340 cm, FOV 70) | **morte** | 3e personne (code préparé, non branché) |
| K7 | **SecondScreen** | acteur `SceneCapture2D` de `CentralLondon` (dossier `Poser/Cameras`) ; déplacé par `LPSecondScreenSubsystem.cpp:59-112` | SceneCapture2D (rendu vers texture) | GI `secondScreen()` à l'entrée en sexe ; C++ à chaque image | non : suit le **contact** de l'appel (80 cm, FOV 30) | vivante | encadré d'appel |
| K8 | **FaceCapture** | acteur `SceneCapture2D` de `CentralLondon` | SceneCapture2D | GI `secondScreen()` (estimé) | non établi | vivante (estimé) | capture de visage |
Hors caméra de vue (classés à part) : `CameraShake_C` (effet de secousse, `PlayWorldCameraShake` à l'événement `Cum`) ;
action d'animation `camera` de Person (accessoire tenu en main) ; Pawn par défaut `Pawn_C` (aucune caméra, vue implicite
avant le premier `SetViewTarget`, estimé) ; jeton `SceneCaptureComponent2D` dans `UI/TopRight` (référence de widget,
non cartographiée) ; addon `LifePlay-Sandbox-5.8` : `LPSandboxCamera` (SpringArm + caméra du pion de bac à sable,
hors jeu, signalé seulement).
## 2. Comptes par catégorie
| Catégorie | Nombre | Détail |
|---|---|---|
| Caméras de vue placées dans le niveau de jeu (CameraActor) | **4** | Birdview, CameraScene, CameraFullBody, CameraPortrait (`CentralLondon.umap`, chaînes `CameraActor` ×6) |
| Caméras de vue portées par un BP (CameraComponent) | **1 classe, N instances** | `FirstPersonSM` sur chaque Person (MC + PNJ présents) |
| Caméras de vue créées par le C++ | **1** (morte) | FollowView |
| Rendus vers texture (SceneCapture2D) | **2** | SecondScreen, FaceCapture |
| SpringArm, CineCamera, PlayerCameraManager propre | **0** | 0 fichier sur 9 070 `.uasset`/`.umap`, 0 ligne en C++ |
| Caméras dans les niveaux gabarits (`__ExternalActors__`, 190 acteurs) et `Overview.umap` | **0** | aucun `CameraActor`/`CameraComponent` ; niveaux non utilisés par le jeu |
| Caméras de rue | **0** | aucune en BP, en C++ ni dans le niveau |
| Caméra de plafond | **0** | — |
| Caméra de 3e personne qui suit le MC (active) | **0** | seule FollowView le ferait, elle est morte |
| Commandes de caméra dans les scripts de modules (`Content/Modules`) | **0** | 84 lignes « camera » : animation, noms de scène, dialogues ; aucun `cameraMove` / `cameraFocus` |
| Activations de vue (`SetViewTargetWithBlend`) | **7 nœuds BP** + 1 C++ (mort) | PC 3, GI 4, Room 0 ; fondu 0 partout ; C++ 0,35 s |
Total des caméras de vue du jeu : **6 sortes** (4 placées, 1 composant multiplié par le nombre de Person, 1 C++ morte),
plus 2 rendus vers texture.
## 3. Comment elles sont réglées (ce qui est établi)
- **Aucun réglage de FOV dans les graphes** : 0 `SetFieldOfView`, 0 `FieldOfView` dans les dumps GI, PC, Room. Seuls
FOV écrits : FollowView 70 (C++, mort), SecondScreen 30 (C++). FOV par défaut du moteur : 90.
- **Profondeur de champ** : `Room.UpdateDOF` écrit `DepthOfFieldFocalDistance` de `SceneCamera` ; MainMenu `SpinBox_0`
et GI écrivent `DepthOfFieldFarBlurSize` de `ChargenCameras[0]`.
- **Vitesse de caméra** : seul réglage du joueur, entier 1-7, défaut 3 (`GameUserSettings.ini`,
`[/Script/LifePlay.LPUserSettings]`), lu par Room pour la molette et les déplacements de `SceneCamera`.
- **Entrées** (`Config/DefaultInput.ini`) : `RotateCamera` (bouton du milieu, Alt), `SwitchCamera` (C), axes
`LeftRight` / `DownUp` (flèches), `ScrollDownUp` (molette), `CursorX/Y` (souris) ; sensibilité 0,07 × FOV
(`bEnableFOVScaling`). Classes PC, pawn et gestionnaire de caméra : portées par `GM_C` (rien dans `Config/`).
- **Placement** : `CameraScene` revient à `GI.CameraSceneTransformDefault` (`ResetSceneCamera`) ; `AutoCamera` la place
à des coordonnées monde codées en dur `(-3131543, -14967213, 75)` + décalage du MC par rapport à
`GI.ActorTransforms[3]` ; Birdview revient à `BirdviewOriginal`.
- **Non établi (CDO non dumpé)** : FOV, transformation et post-traitement de K1-K4, projection de Birdview, transformation
relative et `bAutoActivate` de `FirstPersonSM`, valeurs de `CameraSceneTransformDefault`, `DefaultPawnClass` de `GM_C`.
→ fiche **CAM-T4** (phase 1b, commandlets en lecture seule, copie UE à demander à Big Boss).
### 3b. Réglages relevés par CAM-T4 (phase 1b, commandlets en lecture seule, 2026-10-11 ; détail `CAM-T4-BUILD.md`)
| Caméra | Position (monde) / rotation | FOV | Notes |
|---|---|---|---|
| K2 CameraScene | (-3131132, -14967241, 50) / lacet -180 | 90 (défaut) | `AutoActivateForPlayer = Player0` ; post-traitement : gamma 0,85, DOF, AO ; = `GI.CameraSceneTransformDefault` (même translation) |
| CameraPortrait | (-3131226,75, -14967197, 67) / lacet 175 | 90 | DOF near 4 / far 12 |
| CameraFullBody | (-3131054, -14967290, 6) / lacet 180 | 90 | DOF near 4 / far 24 |
| K1 Birdview (acteur de la carte) | (0, 0, 20000) / tangage -45 | 90 | `bAutoActivate = False` ; projection non affichée par le dump (perspective probable, FOV 90 ; `OrthoWidth` 512 = valeur commune à toutes) |
| K5 FirstPersonSM | relatif à `CharacterMesh0` : (0, 0, 0) / tangage 90, lacet 90 | 90 | composant SCS de Person (8 composants SCS relevés) ; BP `FirstPerson` sans propriété propre |
Classes : `GM_C.DefaultPawnClass = None` (aucun pion par défaut : la vue initiale est celle du PC, ce qui corrige l'estimation
« Pawn_C » de CAM-T2) ; `PlayerControllerClass = PC_C` ; `PC_C.PlayerCameraManagerClass = None` (gestionnaire du moteur).
`CamOrthoZoom` n'est pas un acteur (variable ou nom du script de niveau). Les 3 caméras du studio sont à quelques mètres l'une
de l'autre, au point `(-3131xxx, -14967xxx)` qui est aussi la base du recalage codé en dur de `Room.AutoCamera`.
Graphes dumpés pour la SPEC : Birdview 4 graphes / 366 nœuds ; ContactMenu 34 graphes / 1 430 nœuds ; Person.EventGraph à
HEAD 3 684 nœuds (fichiers `CAM-T4_LPDumpFunction_*.txt`, ignorés par git).
## 4. Surnuméraires, mortes, mal placées (constats, sans décision)
- **Morte** : K6 FollowView (code C++ jamais appelé). Nœuds morts liés aux caméras : minuterie `Room.AutoCamera`
(ROOM:3643-3653), `TestAutoCamera`, poursuite du MC par `SceneCamera` dans Person (PERS:34520-34580), PC
`SetRelativeRotation(FirstPersonSM)` (PC:2055-2062), etc. (liste : CAM-T2 § 3.4).
- **Surnuméraires probables** : `FirstPersonSM` présent sur **chaque** Person alors que la vue 1re personne ne sert qu'en
sexe (une instance par PNJ) ; CameraFullBody et CameraPortrait (deux caméras fixes pour le seul CharGen et les contacts,
qu'un zoom pourrait remplacer).
- **Surchargée** : CameraScene (`ChargenCameras[0]`) sert à la fois de caméra de pièce, de scène, de sexe et de CharGen.
- **Mal placées ou fragiles** : position de `AutoCamera` en coordonnées monde codées en dur ; `Room.CameraFocus` fait
pivoter **l'acteur Room** au lieu de la caméra (ROOM:4435-4439, effet en jeu non vérifié) ; la caméra de pièce ne suit
pas les déplacements du MC (recalage ponctuel par `AutoCamera`, amont non remonté).
- **Rien ne correspond** aux cibles C2 (3e personne qui suit), C3 (plafond) et rues en enfilade.
## 5. Contre-vérification (sk-recount)
| Point recompté par l'orchestrateur | Commande | Résultat |
|---|---|---|
| fichiers par motif dans `Content/BPs`, `Scenes`, `UI`, `FreeAnimationsPack/Map` | `grep -rla --include=*.uasset --include=*.umap <motif> …` | CameraComponent 6, CameraActor 9, SpringArmComponent 0, SetViewTargetWithBlend 3, SceneCaptureComponent2D 2 : = CAM-T1 |
| `FollowCamera` jamais appelée | `grep -rn FollowCamera Source` | 2 lignes (déclaration `.h:43`, définition `.cpp:897`) : = CAM-T3 |
| lignes caméra du C++ (motif de T3) | `grep -rn -i "camera\|ViewTarget\|SpringArm\|FieldOfView\|FOV\|PlayerCameraManager\|SceneCapture\|Possess" Source/LifePlay Source/LifePlayEditorTools --include=*.cpp --include=*.h \| wc -l` | 88 : = CAM-T3 (T1 : 81 avec un motif plus court, écart expliqué) |
| `ApplyCameraSpeedAtStartup` appelée par GI | `grep -n ApplyCameraSpeedAtStartup …/GI__EventGraph*.txt` | `GI__EventGraph.txt:30143`, `_V5.txt:30024` : = CAM-T3 |
| `SetViewTargetWithBlend` dans les dumps de HEAD | `grep -c SetViewTargetWithBlend PC__EventGraph.txt GI__EventGraph_V5.txt Room__EventGraph_V5.txt` | 3 / 4 / 0 : = CAM-T2 |
| caméras nommées dans le niveau | `grep -ao "Cam[A-Za-z_0-9]*\|Birdview[A-Za-z_0-9]*" Content/Scenes/CentralLondon.umap \| sort \| uniq -c` | Birdview, CameraScene, CameraFullBody, CameraPortrait (chacune avec `_ExecuteUbergraph_CentralLondon_RefProperty`), CamOrthoZoom, CameraActor ×6 : = CAM-T2 |
Réserves des livrables : CAM-T1 § 2 A écrit « 11 sur 21 » motifs nuls, la liste et § 3 E2 donnent 12 (la liste fait foi) ;
dump de Person antérieur à HEAD (L6f, 2026-09-30 ; Person commité le 2026-10-09) ; attribution CameraScene /
FullBody / Portrait aux index 0-2 de `ChargenCameras` estimée.
## 6. Fiches
| Fiche | Agent | Verdict de réception | Tours déclarés |
|---|---|---|---|
| CAM-T1-INV | lp-inventory (claude-sonnet-5-5) | acceptée (réserve d'écriture « 11 sur 21 ») | 21 / 40 |
| CAM-T2-CART | lp-cart (claude-opus-5-5) | acceptée | 48 / 60 |
| CAM-T3-CART | lp-cart (claude-opus-5-5) | acceptée | 27 / 60 |
Fichiers à commiter (dépôt du jeu, branche `ue5.8`, au ticket de clôture du lot) : A `Docs/Migration/etat/CAM/CAM-TACHES.md`,
A `CAM-T1-INV.md`, A `CAM-T2-CART.md`, A `CAM-T3-CART.md`, A `CAM-AUDIT.md`, A `CAM-CIBLE.md` (les `.txt` sont ignorés).