LifePlay-Revival/Docs/Migration/etat/CAM/CAM-T1-INV.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

176 lines
29 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-T1 — Niveau N1 — Modèle prévu sonnet | utilisé claude-sonnet-5-5 (Sonnet 5.5) — Agent lp-inventory — Skills sk-protocol, lp-paths (sk-recount appliqué pour les recoupements)
# CAM-T1-INV : inventaire chiffré des sources de caméra (2026-10-11)
Copie `D:\Game\LifePlay-master 5.8`, branche `ue5.8`, HEAD `4283c13` (relevé : `git rev-parse --short HEAD` → `4283c13`, `git branch --show-current` → `ue5.8`). Lecture seule ; seuls écrits : ce livrable et 4 journaux `CAM-T1_*.txt` du même dossier. Rien lu dans `.hyperai/` ni dans la copie 5.5.
Convention de lecture : sur un `.uasset`/`.umap` (binaire) `grep -c` compte des **lignes** (découpe sur `\n`), pas des occurrences ; un compte « 1 » veut dire « présent au moins une fois ». Sur les textes, Grep (ripgrep) compte aussi des lignes.
## 1. Commandes exactes
Outil : Grep (ripgrep) pour les fichiers texte ; Bash `grep -a` pour les `.uasset`/`.umap` (le Grep d'outil ne peut pas forcer `-a` sur un binaire ; la fiche prescrit `grep -a`). Racine : `cd "D:/Game/LifePlay-master 5.8"`.
**a) Motifs binaires (21 motifs de la fiche).** Écart de méthode : au lieu de 21 passes sur 9070 fichiers (USB), une passe « union » puis 21 comptes sur les seuls candidats ; équivalent, car tout fichier contenant un motif est dans l'union (SetViewTarget couvre SetViewTargetWithBlend et K2_SetViewTarget ; FieldOfView couvre SetFieldOfView).
- A1 union : `grep -rlaF --include=*.uasset --include=*.umap -e CameraComponent -e SpringArmComponent -e CameraActor -e CineCameraActor -e CineCameraComponent -e SceneCaptureComponent2D -e PlayerCameraManager -e SetViewTarget -e GetViewTarget -e TargetArmLength -e FieldOfView -e bUsePawnControlRotation -e CameraLag -e ProbeSize -e bDoCollisionTest -e SetFieldOfView -e SetActiveCamera -e ChargenCameras -e AutoActivate Content > Docs/Migration/etat/CAM/CAM-T1_union.txt` (code 0, 52 s)
- A2 matrice : pour chaque fichier F de l'union et chaque motif P : `grep -caF -e "$P" "$F"` → `Docs/Migration/etat/CAM/CAM-T1_matrice.txt`
- A3 fichiers par motif : pour chaque P : `grep -rlaF --include=*.uasset --include=*.umap -e "$P" $(cat CAM-T1_union.txt) | wc -l`
- A4 contrôle élargi (recoupement, insensible à la casse, hors liste de la fiche) : `grep -rlaiE --include=*.uasset --include=*.umap "camera|viewtarget|springarm" Content > Docs/Migration/etat/CAM/CAM-T1_camera-insensible.txt`
- A5 jetons réellement présents : pour chaque fichier de A4 : `grep -aoiE "[A-Za-z_0-9]*(camera|viewtarget|springarm)[A-Za-z_0-9]*" F | sort | uniq -c | sort -rn` → `Docs/Migration/etat/CAM/CAM-T1_tokens.txt`
- A6 total de fichiers : `find Content -type f \( -name '*.uasset' -o -name '*.umap' \) | wc -l`
**b) Niveaux et config de cuisson.**
- B1 : `find Content -name '*.umap'` ; `find Content/__ExternalActors__ -type f | wc -l` ; `find Content/__ExternalActors__ -type f | awk -F/ '{print $3"/"$5}' | sort | uniq -c` ; `find Content -iname '*ThirdPersonMap*' -o -iname '*VehicleExampleMap*' -o -iname '*VehicleOffroadExampleMap*'` ; `git ls-files Content/__ExternalActors__ | wc -l` ; `git check-ignore -v Content/__ExternalActors__`
- B2 : Grep `GameDefaultMap|EditorStartupMap|GlobalDefaultGameMode|GameInstanceClass|TransitionMap|ServerDefaultMap|Map` sur `Config/DefaultEngine.ini` ; Grep `MapsToCook|DirectoriesToAlwaysCook|DirectoriesToNeverCook|bCookAll|CookAll|UseZenStore|\.umap|Maps` (insensible à la casse) sur `Config/DefaultGame.ini` ; Read `Config/DefaultGame.ini` l. 36-59.
**c) Config.** Grep `camera|FOV|FieldOfView|ViewTarget|SpringArm` (-i, -n) sur `Config/*.ini` ; `sed -n '4,5p' Config/DefaultEditor.ini | cut -c1-200` (lignes trop longues).
**d) C++.** Grep `camera|ViewTarget|SpringArm|FieldOfView|FOV` (-i), glob `*.{cpp,h}`, chemin `Source` : en mode `count` puis en mode `content -n`.
**e) Modules et addon.**
- E1 : Grep `camera` (-i) sur `Content/Modules` en `count` puis `content -n` ; Grep `\.animate\(camera\)` ; Grep `^ANIMATION: camera` ; Grep `^\s*(\d+::\s*)?((Player|Actor[0-9]?)(\([A-Za-z]+\))?::\s*)?".*camera` (-i, lignes de dialogue)
- E2 : `find "Content/Modules" -type f | wc -l` ; `git --git-dir='D:\Game\LifePlay_ModulesGit\5.8.git' --work-tree='D:\Game\LifePlay-master 5.8\Content\Modules' status --porcelain | wc -l` et `log --oneline -1`
- E3 addon `D:\Game\LifePlay-Sandbox-5.8` : Grep `camera` (-i) en `count`, glob `{Plugins,Source}/**/*.{cpp,h,cs}` ; Grep `camera` (-i) en `count` sur `Source` seul ; `ls -la Content` (jonction) ; `git log --oneline -1`
**f) Dumps de graphes.**
- F1 : Grep `SetViewTarget|CameraComponent|SpringArm|ViewTarget|CameraActor` (-i), glob `*.txt`, chemin `Docs\Migration\etat`, `count`
- F2 (actif / attribution par actif et date) : `cd Docs/Migration/etat && find . -name '*.txt' ! -path './CAM/*' -printf '%p|%TY-%Tm-%Td %TH:%TM\n' | while IFS='|' read -r f d; do awk -v F="$f" -v D="$d" '… (lit -BP=<nom>, "=== <nom> ::" ou "=== /Game/<chemin>" dans les 15 premières lignes ; compte les lignes /SetViewTarget|CameraComponent|SpringArm|ViewTarget|CameraActor/ insensible à la casse) …' "$f"; done | sort` (sortie non archivée en fichier : un premier essai avec redirection vers `CAM-T1_dumps.txt` a été refusé par le système de permissions, aucun contournement ; sortie résumée au § 2 F)
- F3 : Grep (noms de BP sans dump) `BP=(Birdview|FirstPerson|Pawn|GM|CameraShake|MapStreets|CityExpansion|ContactMenu|SecondScreenFloor|StreetMap_Static)\b|/Game/BPs/(Birdview|…)\b|=== (Birdview|…) ::` sur `etat/**/*.txt`, `count` ; Grep `Birdview|FirstPerson|CameraShake|MapStreets|CityExpansion|\bPawn\b|\bGM\b` sur `portage55/L4-CX-B0[78]_{application,dryrun}.txt` ; Read des 6 premières lignes de `L6f_LPDumpComponents_20260930-102024.txt` et `STE/dumps/CentralLondon__SceneCapture.txt`
**g)** Versions 5.5 : sans objet (consigne de la fiche, copie 5.5 non lue).
## 2. Comptes bruts
### A. Motifs binaires dans `Content` (9070 `.uasset`/`.umap`, A6 = `9070`)
Union A1 : **12 fichiers** (`wc -l CAM-T1_union.txt` → 12). Par dossier : `Content/BPs` 7 ; `Content/Scenes` 1 ; `Content/__ExternalActors__` **0** ; `Content/UI` 3 ; autres 1 (`Content/FreeAnimationsPack/Map/Overview.umap`).
Fichiers par motif (A3) : CameraComponent **6** · SpringArmComponent **0** · CameraActor **9** · CineCameraActor **0** · CineCameraComponent **0** · SceneCaptureComponent2D **2** · PlayerCameraManager **0** · SetViewTargetWithBlend **3** · SetViewTarget **3** · K2_SetViewTarget **0** · GetViewTarget **3** · TargetArmLength **0** · FieldOfView **2** · bUsePawnControlRotation **0** · CameraLag **0** · ProbeSize **0** · bDoCollisionTest **0** · SetFieldOfView **0** · SetActiveCamera **0** · ChargenCameras **6** · AutoActivate **3**.
Motifs à 0 fichier sur 9070 : 11 sur 21 (SpringArmComponent, CineCameraActor, CineCameraComponent, PlayerCameraManager, K2_SetViewTarget, TargetArmLength, bUsePawnControlRotation, CameraLag, ProbeSize, bDoCollisionTest, SetFieldOfView, SetActiveCamera = 12 en réalité : voir l'écart E2 en § 3). Un résultat nul n'est pas seul : les 9 autres motifs répondent, donc les commandes fonctionnent.
Matrice fichier × motif (valeur = `grep -caF`, lignes ; `.` = 0). Motifs : M1 CameraComponent, M2 SpringArmComponent, M3 CameraActor, M4 CineCameraActor, M5 CineCameraComponent, M6 SceneCaptureComponent2D, M7 PlayerCameraManager, M8 SetViewTargetWithBlend, M9 SetViewTarget, M10 K2_SetViewTarget, M11 GetViewTarget, M12 TargetArmLength, M13 FieldOfView, M14 bUsePawnControlRotation, M15 CameraLag, M16 ProbeSize, M17 bDoCollisionTest, M18 SetFieldOfView, M19 SetActiveCamera, M20 ChargenCameras, M21 AutoActivate. M2, M4, M5, M7, M10, M12, M14-M19 : 0 partout (colonnes omises, présentes dans `CAM-T1_matrice.txt`).
| Dossier | Fichier | M1 | M3 | M6 | M8 | M9 | M11 | M13 | M20 | M21 |
|---|---|---|---|---|---|---|---|---|---|---|
| BPs | Birdview | 1 | 3 | . | . | . | . | . | . | 1 |
| BPs | FirstPerson | 2 | . | . | . | . | . | . | . | . |
| BPs | GI | 5 | 4 | . | 1 | 1 | 2 | . | 1 | . |
| BPs | PC | . | 1 | . | 1 | 1 | . | . | 1 | . |
| BPs | Person | . | 1 | . | . | . | 1 | . | . | 1 |
| BPs | Room | 5 | 2 | . | . | . | 2 | . | 1 | . |
| BPs | StreetMap_Static | . | 1 | . | . | . | . | . | . | . |
| Scenes | CentralLondon.umap | 1 | 2 | 1 | . | . | . | 1 | 1 | 1 |
| __ExternalActors__ | (190 fichiers) | . | . | . | . | . | . | . | . | . |
| UI | ContactMenu | . | 1 | . | 1 | 1 | . | . | 1 | . |
| UI | MainMenu | 3 | 2 | . | . | . | . | . | 1 | . |
| UI | TopRight | . | . | 1 | . | . | . | . | . | . |
| autres | FreeAnimationsPack/Map/Overview.umap | . | . | . | . | . | . | 1 | . | . |
Comptes demandés explicitement : CameraComponent = Birdview 1, FirstPerson 2, GI 5, Room 5, CentralLondon 1, MainMenu 3 (somme 17 lignes, 6 fichiers) ; SpringArmComponent = 0 ; CameraActor = Birdview 3, GI 4, PC 1, Person 1, Room 2, StreetMap_Static 1, CentralLondon 2, ContactMenu 1, MainMenu 2 (somme 17, 9 fichiers) ; CineCameraActor = 0 ; SetViewTarget = GI 1, PC 1, ContactMenu 1 (3 fichiers).
Recoupement des sommes de colonnes de la matrice avec A3 : M1 6, M3 9, M6 2, M8 3, M9 3, M11 3, M13 2, M20 6, M21 3 = identiques.
Contrôle élargi A4 (insensible à la casse, `camera|viewtarget|springarm`, 403 fichiers) : `Content/BPs` 14 · `Content/Scenes` 1 · `Content/UI` 12 · `Content/__ExternalActors__` 24 · autres 352 (`Content/Heavy` 348, `Content/FreeAnimationsPack` 4). 14+1+12+24+352 = 403.
- BPs présents dans A4 : Birdview, CameraShake, FirstPerson, GameSettings, GI, MapMarkers, MapStreets, PC, Person, Room, SkyBox, StreetMap_Static, TestBall, TestPerson. BPs de `Content/BPs` (27 `.uasset`) absents de A4 (0 jeton « camera/viewtarget/springarm ») : AI, BridgetBP, CityExpansion, Daily, Daily_F, FullScreenMode, GM, HISM, LightSource, Pawn, Save, SecondScreenFloor, TestStatic (13 ; 14+13 = 27).
- UI présents dans A4 : Builder, BuilderFnt, BuilderTexture, CharGen, ColorSlot, Contact, ContactMenu, Inventory, MainMenu, SexAction, SexInterface, TopRight.
- Jetons A5 (sortie `CAM-T1_tokens.txt`, 216 lignes) : `__ExternalActors__` (24 fichiers) : un seul jeton, `Camera` ×24 (1 par fichier) ; aucun CameraActor/CameraComponent/CineCamera. `Heavy`+`FreeAnimationsPack` (352) : `EditorCameraPosition` ×344, `AssetEditorOrbitCameraPosition` ×344, camera_prop/camera_M/camera_F ×7, Camera ×4, Cameras ×3, MaterialExpressionCameraVectorWS ×2, camera_sensor, camera_lens, camera, MaterialExpressionCameraPositionWS, CameraRings, CameraLens, CameraFlash ×1.
- Jetons notables par BP (extraits de A5, noms tels qu'écrits dans la table des noms) : Birdview : CameraActor, CheckIfCameraMovable, RotateCamera, CircleCamera, PreventCameraMove, CameraSpeed. CameraShake : CameraShake, LegacyCameraShake, EngineCameras. GI : camera ×26, Camera ×20, CameraComponent ×8, SwitchCamera, SwitchCameraDelayed, ResetCamera, ResetCameraAndPlayer, ResetSceneCamera, StartingCamera, SceneCamera, SexCameraIndex, CameraFocusPoint, CameraSceneTransformDefault, PlayWorldCameraShake, ApplyCameraSpeedAtStartup, CameraSpeed, SetViewTargetWithBlend, GetViewTarget, ChargenCameras. PC : SwitchCamera, SwitchCameraDelayed, StartMoveCamera, StopMoveCamera, MoveCamera, RotateCamera, CircleCamera, ResetCamera, CameraChanged, SexCameraIndex, SceneCamera, InpActEvt_SwitchCamera, InpActEvt_RotateCamera, SetViewTargetWithBlend, ChargenCameras. Room : camera ×16, CameraComponent ×7, RotateCamera, CircleCamera, CenterCameraToAction, AutoCamera, TestAutoCamera, StartingCamera, ResetSceneCamera, SceneCamera, CameraFocusPoint, GetViewTarget, ChargenCameras. Person : camera_prop, camera, SceneCamera, MoveCamera, GetViewTarget, CameraActor. CentralLondon : CameraActor ×5, CameraScene ×4, CameraPortrait ×4, CameraFullBody ×4, CameraComponent, ChargenCameras. MainMenu : SliderCameraSpeed, TextCameraSpeedValue, SizeBoxCameraSpeed, SetCameraSpeed, GetCameraSpeed, CameraComponent ×5, CameraActor ×2. ContactMenu/Contact : SelectCamera, SetViewTargetWithBlend, CurrentCamera. SexAction : SwitchCamera, Switchcamera. FirstPerson : CameraComponent ×5 (jetons).
### B. Niveaux
- `find Content -name '*.umap'` → 2 : `Content/Scenes/CentralLondon.umap`, `Content/FreeAnimationsPack/Map/Overview.umap`.
- `Content/__ExternalActors__` : 190 fichiers (`find … | wc -l` → 190) : `ThirdPerson/ThirdPersonMap` 41 ; `VehicleTemplate/VehicleExampleMap` 36 ; `VehicleTemplate/VehicleOffroadExampleMap` 113 (41+36+113 = 190). Chemins d'un acteur externe : `Content/__ExternalActors__/<gabarit>/Maps/<niveau>/<hex>/<hex2>/<id>.uasset` (profondeur 8).
- Aucun `.umap` ne porte le nom ThirdPersonMap / VehicleExampleMap / VehicleOffroadExampleMap ; seuls existent les dossiers `Content/__ExternalActors__/…/<niveau>` et `Content/__ExternalObjects__/…/<niveau>` (6 chemins par `find -iname`). `Content/ThirdPerson` et `Content/VehicleTemplate` : n'existent pas (`ls -d` : « No such file or directory »).
- `git ls-files Content/__ExternalActors__ | wc -l` → 0 ; `git check-ignore -v` → `.gitignore:64:/Content/__ExternalActors__/`. `git ls-files Content | wc -l` → 292.
- Motifs CameraActor / CineCameraActor / CameraComponent dans les 190 acteurs externes (sensible à la casse) : **0 fichier**. Insensible à la casse : 24 fichiers portent le seul jeton `Camera` (ThirdPersonMap 1 : `…/ThirdPersonMap/4/PN/2QISIGK5DJNQ05US8O8FXW.uasset` ; VehicleExampleMap 1 : `…/VehicleExampleMap/4/LP/UZ50PDVAY299IMPNI9D2JC.uasset` ; VehicleOffroadExampleMap 22, liste complète dans `CAM-T1_camera-insensible.txt`).
| Niveau | Fichiers avec motif (casse) | Rôle (config) | Cuit ? |
|---|---|---|---|
| `/Game/Scenes/CentralLondon` | CameraActor (2 l.), CameraComponent (1), SceneCaptureComponent2D (1), FieldOfView (1), ChargenCameras (1), AutoActivate (1) | `GameDefaultMap` et `EditorStartupMap` (`Config/DefaultEngine.ini:10-11`) : niveau de jeu | oui, par déduction : `DefaultGame.ini:51` `+DirectoriesToAlwaysCook=(Path="/Game")`, absent des `NeverCook` ; aucune ligne `MapsToCook` |
| `/Game/FreeAnimationsPack/Map/Overview` | FieldOfView (1) | non référencé en config | non : `DefaultGame.ini:55` `+DirectoriesToNeverCook=(Path="/Game/FreeAnimationsPack")` |
| ThirdPersonMap (41 acteurs externes) | aucun | aucun `.umap` ; nom d'un gabarit UE (ThirdPerson) | incertain : sous `/Game` (AlwaysCook) et hors NeverCook, mais sans niveau propriétaire |
| VehicleExampleMap (36) | aucun | idem, gabarit VehicleTemplate | incertain, idem |
| VehicleOffroadExampleMap (113) | aucun | idem | incertain, idem |
Config : `DefaultEngine.ini:8` `GlobalDefaultGameMode=/Game/BPs/GM.GM_C` ; `:9` `GameInstanceClass=/Game/BPs/GI.GI_C` ; `:10` `GameDefaultMap=/Game/Scenes/CentralLondon.CentralLondon` ; `:11` `EditorStartupMap=` (même valeur). `DefaultGame.ini` : `:41` `bCookAll=False` ; `:42` `bCookMapsOnly=False` ; `:51` AlwaysCook `/Game` ; NeverCook l. 52, 54-57 dont `/Game/Heavy/New/fBlah`, `/Game/Quaternius`, `/Game/FreeAnimationsPack`, `/Game/AnimPacks`, `/Game/Retarget_ue5`. Grep `MapsToCook` sur `DefaultGame.ini` → 0 ligne (aucune liste de cartes cuites).
### C. Config (`Config/*.ini`, fichiers : DefaultEditor, DefaultEditorSettings, DefaultEngine, DefaultGame, DefaultInput, DefaultScalability) : 8 lignes, 2 fichiers
- `Config/DefaultEditor.ini:4` et `:5` : lignes `+Profiles=(ProfileName="Epic Headquarters"…` et `+Profiles=(ProfileName="Grey Wireframe"…` (profils de prévisualisation de l'éditeur ; lignes > 200 caractères, le terme qui a déclenché le motif n'est pas dans les 200 premiers).
- `Config/DefaultInput.ini:79` `bEnableFOVScaling=True` ; `:93` `FOVScale=0.011110` ; `:107` `+ActionMappings=(ActionName="RotateCamera",…,Key=MiddleMouseButton)` ; `:108` idem `Key=LeftAlt` ; `:109` idem `Key=RightAlt` ; `:118` `+ActionMappings=(ActionName="SwitchCamera",…,Key=C)`.
- `DefaultEngine.ini`, `DefaultGame.ini`, `DefaultEditorSettings.ini`, `DefaultScalability.ini` : 0 ligne.
### D. C++ (`Source`, `*.cpp`/`*.h`) : 81 lignes, 9 fichiers (`Found 81 total occurrences across 9 files` ; somme 4+12+4+1+6+4+3+29+18 = 81)
| Fichier | Lignes | Contenu (numéros de ligne) |
|---|---|---|
| `Source/LifePlay/LPUserSettings.cpp` | 29 | vitesse de caméra (`CameraSpeed`, GameUserSettings.ini) l. 10-114 |
| `Source/LifePlay/LPUserSettings.h` | 18 | idem, l. 1-58 |
| `Source/LifePlay/LPDirectControlSubsystem.cpp` | 12 | `#include Camera/CameraActor.h` l. 15, `CameraComponent.h` l. 16 ; `FollowCamera` l. 897 : `GetViewTarget` l. 903, `SpawnActor<ACameraActor>` l. 913, `SetFieldOfView(70.f)` l. 916, log « camera troisieme personne derriere le personnage » l. 918, `SetViewTargetWithBlend(FollowView, 0.35f)` l. 922, balayage `ECC_Camera` sphère 12 l. 934-935 |
| `Source/LifePlay/LPDirectControlSubsystem.h` | 4 | l. 12 (« La camera suiveuse n'est pas branchee. »), 19, 43 `FollowCamera(...)`, 64 `ACameraActor* FollowView` |
| `Source/LifePlay/LPSecondScreenSubsystem.cpp` | 6 | l. 18, 20 `FaceFOV = 30.f`, 68, 103, 109, 110 `CaptureComp->FOVAngle = FaceFOV` |
| `Source/LifePlay/LPSecondScreenSubsystem.h` | 4 | commentaires l. 3-10 (SceneCapture2D « SecondScreen » de CentralLondon) |
| `Source/LifePlay/LPKeyboardSubsystem.cpp` | 4 | l. 92 RotateCamera, 97 SwitchCamera, 166, 168 (catégorie « Camera ») |
| `Source/LifePlay/LPSettingsSubsystem.cpp` | 3 | l. 204, 346, 405 (`SliderCameraSpeed`) |
| `Source/LifePlay/LPOutdoorRoomSubsystem.h` | 1 | l. 6 (commentaire) |
Motifs SpringArm : 0 ligne dans `Source`.
### E. Modules texte et addon
`Content/Modules` : 2053 fichiers (`find … -type f | wc -l`) ; dépôt local `5.8.git` : `status --porcelain | wc -l` → 0, `log --oneline -1` → `c8661cd`. Grep `camera` (-i) : **84 lignes, 36 fichiers** (`Found 84 total occurrences across 36 files`). Par type de fichier : `.lpscene` 31, `.lpaction` 5 (4 `ANIMATION: camera` + `mpwill_maid.lpaction`), `FAQ.txt` 1. Par module : vin_Base 28 fichiers, vin_Incest 3, vin_NTR 1, vin_BDSM 1, vin_Interracial 2, FAQ.txt 1 (28+3+1+1+2+1 = 36).
Par commande de script (plus détail, E1) :
| Commande / forme | Lignes | Fichiers | Source |
|---|---|---|---|
| `<Acteur>.animate(camera)` | 11 | 9 | Grep `\.animate\(camera\)` : onlyfans, reluctant_star ×2, sr_fso_campdare1_cms, sr_fso_darkalley_comedy_cms, sr_fso_door_dare_cms, sr_fso_hangout_dare1_cms, sr_fso_homemade_video_cms, sr_fso_orcmockwar_cms ×2, sr_fso_work_dare2_cms |
| `ANIMATION: camera` (clé d'action) | 4 | 4 | take_photos_MULTIPLE, film_videos_MULTIPLE, windowshop, sightsee (`.lpaction` l. 12) |
| `followUp(pro_incest_*_camera)` | 2 | 1 | check_on_my_family l. 54, 265 |
| `timeout(<ms>, pinhole_camera_cms)` | 4 | 1 | pinhole_camera_cms l. 26, 45, 53, 67 |
| `ACTION_NAME: …camera` | 1 | 1 | mpwill_maid.lpaction l. 2 |
| variable `CameraBought` (`getGlobal`/`setGlobal`/`If`) | 10 | 2 | pro_incest_shower_camera (l. 9, 10, 19, 21, 29), pro_incest_bedroom_camera (l. 10, 11, 20, 22, 30) |
| texte de dialogue/narration contenant « camera(s) » | 50 | 21 | Grep des lignes débutant par une chaîne `"…` ou `Acteur::` + `"` (E1, 3e regex) : 50 lignes, 21 fichiers |
| commentaire `//` | 1 | 1 | dating_incalls l. 7 |
| FAQ.txt | 1 | 1 | `FAQ.txt:16` « How do I control the sex scene camera? » |
11+4+2+4+1+10+50+1+1 = 84 : égal au total. Aucune commande de script de déplacement ou de cadrage de caméra n'apparaît ; les seules formes sont `animate(camera)` (animation « camera » d'un acteur), `ANIMATION: camera`, et des noms de scène ou variable.
Addon `D:\Game\LifePlay-Sandbox-5.8` (HEAD `9227db8`) : Grep `camera` (-i), `Plugins/**` et `Source/**` en `*.cpp|*.h|*.cs` : **136 lignes, 10 fichiers**, tous sous `Plugins/LPSandbox/Source/LPSandbox/` : LPSandboxMeasure.cpp 49, LPSandboxMeasureTour.cpp 18, LPSandboxCamera.cpp 17, LPSandboxInteraction.cpp 15, LPSandboxMeasureMod.h 11, LPPairSandbox.cpp 7, LPPairSandbox.h 6, LPSandboxCoupleMod.cpp 5, LPSandboxCamera.h 4, LPSandboxMod.h 4 (somme 136). `Source/` seul de l'addon : 0 résultat (« No matches found »). `Content/` de l'addon : jonction vers le `Content` du jeu 5.8 (`ls -la Content` → `Content -> /d/Game/LifePlay-master 5.8/Content`), donc déjà compté en A et E ; non recompté.
### F. Dumps de graphes déjà présents (`Docs/Migration/etat/**/*.txt`)
F1 : **47 fichiers**, 587 lignes ; dont 2 sont mes propres journaux (`CAM/CAM-T1_tokens.txt` 32, `CAM/CAM-T1_matrice.txt` 1) → **45 fichiers de dump** avec au moins une ligne (SetViewTarget|CameraComponent|SpringArm|ViewTarget|CameraActor, -i). Attribution par actif (F2) : 44 fichiers ; le 45e, `portage55/L6f/L6f_LPDumpComponents_20260930-102024.txt` (6 lignes), est un dump de composants de `/Game/Scenes/CentralLondon` (en-tête l. 1 : `LPDumpComponents -Map=/Game/Scenes/CentralLondon -Filter=SceneCapture -All`).
Répartition F2 des 45 : GI 20 (22 lignes chacun), MainMenu 7 (3 à 12), Person 8 (1 ligne), Room 6 (6 ou 7), PC 2 (9), CentralLondon SceneCapture 2 (`L6f_components_CentralLondon_SceneCapture.txt` 5, `L6f_LPDumpComponents_20260930-102024.txt` 6) = 45.
Dump le plus récent par actif (nom de l'actif, chemin sous `Docs/Migration/etat/`, date de modification, lignes à motif) :
| Actif | Dump le plus récent | Date | Lignes motif |
|---|---|---|---|
| GI (EventGraph) | `ST/STE/dumps/GI__EventGraph_V5.txt` | 2026-10-10 23:24 | 22 |
| Room (EventGraph) | `ST/STE/dumps/Room__EventGraph_V5.txt` | 2026-10-10 23:24 | 6 |
| PC (EventGraph) | `ST/STE/dumps/PC__EventGraph.txt` | 2026-10-10 11:33 | 9 |
| Person (EventGraph) | `ST/STE/dumps/Person__EventGraph_D4.txt` | 2026-10-10 20:17 | 1 |
| MainMenu (EventGraph) | `ST/STB/dumps/MainMenu__EventGraph.txt` | 2026-10-09 21:59 | 5 |
| CentralLondon (acteurs SceneCapture) | `ST/STE/dumps/CentralLondon__SceneCapture.txt` | 2026-10-10 11:33 | non compté (en-tête `LPDumpComponents -Map=/Game/Scenes/CentralLondon -Filter=SceneCapture`) |
| StreetMap_Static (EventGraph) | `ST/STB/dumps/StreetMap_Static__EventGraph.txt` | 2026-10-09 21:59 | 0 |
| SecondScreenFloor (composants) | `portage55/L6f/L6f_components_SecondScreenFloor.txt` | 2026-09-30 10:19 | 0 |
| MapMarkers (EventGraph) | `ST/STA/dumps/MapMarkers__EventGraph.txt` | 2026-10-09 20:35 | 0 |
| SexInterface (EventGraph) | `ST/STB/dumps/SexInterface__EventGraph.txt` | 2026-10-09 21:59 | 0 |
| TopRight (arbre de widgets) | `portage55/L6e/L6e_LPDumpWidgetTree_20260930-081148.txt` | 2026-09-30 08:14 | 0 |
| CharGen (EventGraph) | `ST/STE/STE-VAL_LPDumpFunction_20261010-141402.txt` | 2026-10-10 14:14 | 0 |
Dumps de composants de Room (autres que EventGraph) : `sandbox/PairCol/PairCol_LPDumpComponents_20261004-185441.txt` et `post-v1/PawnDyn/PawnDyn_LPDumpComponents_20261004-223842.txt`, 0 ligne motif.
BP caméra (liste des BP de A avec CameraActor/CameraComponent/SetViewTarget ou jeton Camera) **avec** dump d'EventGraph/fonction : GI, PC, Room, Person, StreetMap_Static, MapMarkers, plus MainMenu (UI), SexInterface (UI), CharGen (UI), TopRight (arbre de widgets). **Sans** aucun dump d'actif trouvé : Birdview, FirstPerson, Pawn, GM, CameraShake, MapStreets, CityExpansion, ContactMenu, Contact, SexAction, Builder, GameSettings, SkyBox, TestBall, TestPerson, Overview.umap. SecondScreenFloor : dump de composants seulement (30 sept.), pas de graphe. F3 : pour Birdview, FirstPerson, Pawn, GM, CameraShake, MapStreets, CityExpansion, ContactMenu, les 466 lignes comptées sur 46 fichiers viennent de journaux `CompileAllBlueprints` (14 lignes par fichier, 28 fichiers), `LPResavePackages`/`dryrun`/`application` (liste de noms d'actifs), et un journal `LPFixParse` qui cite `Birdview :: EventGraph -> K2Node_CallFunction_266` (`L4-CX-B08_application.txt:100`) : ce sont des listes ou des avertissements, pas des dumps de graphe. Les lignes des 4 fichiers `STB-VAL_LPDump…` et `STA-T2a_LPDump…` de StreetMap_Static correspondent aux dumps listés ci-dessus.
## 3. Écarts au compte attendu de la fiche
- E1 : la fiche cite 190 fichiers `__ExternalActors__` : confirmé (190). Fiche : « seulement 2 `.umap` » : confirmé (2).
- E2 : 12 des 21 motifs ont été annoncés 0 fichier dans mes notes de travail ; recompte de la liste du § 2 A : les motifs à 0 sont SpringArmComponent, CineCameraActor, CineCameraComponent, PlayerCameraManager, K2_SetViewTarget, TargetArmLength, bUsePawnControlRotation, CameraLag, ProbeSize, bDoCollisionTest, SetFieldOfView, SetActiveCamera = **12** ; les 9 motifs présents : CameraComponent, CameraActor, SceneCaptureComponent2D, SetViewTargetWithBlend, SetViewTarget, GetViewTarget, FieldOfView, ChargenCameras, AutoActivate (12 + 9 = 21). La phrase « 11 sur 21 » au début de ce § 2 A est fausse : la valeur correcte est 12 (erreur de plume corrigée ici, la liste nominative fait foi).
- E3 : la fiche attendait des BP Pawn, GM, SecondScreenFloor, CameraShake, MapStreets, CityExpansion « à relever » : Pawn, GM, SecondScreenFloor, CityExpansion n'ont aucun jeton camera (A4) ; CameraShake et MapStreets n'ont que des jetons « CameraShake/EngineCameras » et « Camera » (aucun des 21 motifs).
- E4 : la fiche liste `LPSettingsSubsystem` et `LPUserSettings` comme citant « camera » : confirmé (3 et 47 lignes) ; `LPKeyboardSubsystem` (4), `LPOutdoorRoomSubsystem.h` (1), `LPSecondScreenSubsystem` (10), `LPDirectControlSubsystem` (16) : confirmé. Aucun autre fichier C++ n'apparaît.
- E5 : méthode « union + comptes sur candidats » au lieu de 21 passes complètes (équivalence argumentée en § 1).
- E6 : l'attribution F2 des 45 fichiers de dump repose sur l'en-tête (15 premières lignes) ; aucun fichier de `CAM-T1_dumps.txt` n'existe (redirection refusée par les permissions, sortie résumée ici).
- E7 : `Config/DefaultEditor.ini:4-5` : le terme déclencheur n'a pas été isolé (voir § 2 C).
## 4. Établi / estimé / incertain
**Établi** (sortie de commande rejouée, § 2) : les comptes A, A4/A5, B (niveaux, découpe des 190, cartes de config), C, D, E, F1/F2 ; le recoupement A3 = somme des colonnes de la matrice (9 motifs concordants) ; A4 (403) = somme des dossiers (14+1+12+24+352) ; 84 = somme des catégories de commandes du § 2 E ; 136 = somme des fichiers addon ; 81 = somme des fichiers C++.
**Estimé** : « CentralLondon cuit » (déduit de AlwaysCook `/Game` + absence dans NeverCook ; pas de journal de cuisson relu) ; « Overview non cuit » (NeverCook `/Game/FreeAnimationsPack`) ; « ThirdPerson/VehicleTemplate sont des gabarits » (déduit des noms de dossiers et de l'absence de `.umap` homonyme ; pas de preuve par un autre fichier) ; catégorisation « dialogue » des 50 lignes (regex de début de ligne, comptée mais non relue ligne à ligne).
**Incertain** : (1) si les actifs `__ExternalActors__` sont réellement cuits sans niveau propriétaire (essai : lire le journal ou le manifeste de la dernière cuisson `U8r`, ou lister le contenu de l'archive) ; (2) la signification des 344 jetons `EditorCameraPosition` dans `Content/Heavy` (non cartographiée ici) ; (3) si le `.uasset` binaire écrit les noms en ASCII pour tous les actifs : un nom stocké en UTF-16 échapperait à `grep -a` (aucune raison de le croire pour des noms de classe, mais non testé) ; (4) les comptes `grep -c` sur binaires sont des lignes, pas des occurrences (une ligne peut porter plusieurs occurrences) ; (5) le contenu de `Config/DefaultEditor.ini:4-5` (terme non vu) ; (6) pas de dump Blueprint pour Birdview, FirstPerson, Pawn, GM, CameraShake, MapStreets, CityExpansion : un dump de composants ou de fonctions serait à produire par une fiche de cartographie (CAM-T2/T3), hors de cette fiche (lecture seule).
Fichiers écrits (chemins absolus) : `D:\Game\LifePlay-master 5.8\Docs\Migration\etat\CAM\CAM-T1-INV.md` ; journaux : `…\CAM\CAM-T1_union.txt`, `…\CAM\CAM-T1_matrice.txt`, `…\CAM\CAM-T1_camera-insensible.txt`, `…\CAM\CAM-T1_tokens.txt`. Fichiers à commiter : aucun fichier suivi modifié ; `Docs/Migration/etat/` n'est suivi que pour les `.md` et `.csv` (`lp-paths`), donc seul `CAM-T1-INV.md` (A) est candidat, et le dossier `CAM/` est déjà non suivi (`??` au statut initial).
Tours : 21 / 40
## Constats
- Le jeu n'a aucune trace binaire de SpringArm, de CineCamera, de PlayerCameraManager ni de bUsePawnControlRotation dans `Content` ; les caméras Blueprint sont des `CameraActor` (9 actifs) et des `CameraComponent` (6 actifs), pilotées par `SetViewTargetWithBlend` (GI, PC, ContactMenu).
- Les 190 acteurs externes (ThirdPerson, VehicleTemplate) ne contiennent aucun CameraActor/CameraComponent ; leurs niveaux n'existent pas en `.umap`, le dossier est ignoré par git (`.gitignore:64`).
- Le C++ contient déjà une caméra de suivi à la 3e personne (`LPDirectControlSubsystem::FollowCamera`, FOV 70, `SetViewTargetWithBlend` 0,35 s), dont le commentaire d'en-tête dit qu'elle « n'est pas branchée » (`LPDirectControlSubsystem.h:12`) ; ni sa distance ni sa hauteur n'ont été relevées ici (CAM-T2/T3).
- Les modules n'utilisent aucune commande de script de cadrage : seulement `animate(camera)` (11 lignes), `ANIMATION: camera` (4) et des noms de scène.
- L'addon contient un module de caméra de bac à sable (`LPSandboxCamera.cpp`/`.h`, 21 lignes) et des mesures (`LPSandboxMeasure*.cpp`, 78 lignes) ; non lus au-delà du compte.