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

12 KiB
Raw Blame History

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).