132 lines
13 KiB
Markdown
132 lines
13 KiB
Markdown
Fiche CAM-CIBLE — Niveau N2 — Modèle prévu opus | utilisé claude-opus-5-5 — Agent orchestrateur (session « Camera ») — Skills lp-lot, sk-orchestrate
|
||
# CAM-CIBLE : écart à la cible et plan de réduction proposé (2026-10-11)
|
||
|
||
Hors gabarit : proposition de l'orchestrateur (phase 1). **Rien n'est décidé ici** : chaque choix revient à l'utilisateur
|
||
(§ 4). Base : `CAM-AUDIT.md` (identifiants K1-K8). Copie `D:\Game\LifePlay-master 5.8`, HEAD `4283c13`.
|
||
|
||
## 1. Cible de l'utilisateur (citée)
|
||
« Je souhaite que 3 caméra suivent les mouvments du MC. 1 caméra à la première personne. caméra à la 3ième personnes, lors
|
||
de l'initialisation, elle est situé à 1,75m du MC est regarde toujours dans sa direction, elle suit ses ses déplacvements..
|
||
La 3ièmé caméra est collé au plafon au centre est observe la salle ou elle est toujours à moins de 3m de haut du MC. les
|
||
caméras de rues prennent toujours les rues en enfilades. »
|
||
|
||
## 2. Écart, cible par cible
|
||
| Cible | Existant le plus proche | Écart |
|
||
|---|---|---|
|
||
| **C1** 1re personne du MC | K5 `FirstPersonSM` (composant `FirstPerson_C` de Person), attaché à la tête par PC `SwitchCamera` | n'existe **que pendant le sexe** ; vise aussi les partenaires (`SexPersons[i]`) ; une instance par Person ; regard souris par `AddWorldRotation` |
|
||
| **C2** 3e personne, 1,75 m, regarde le MC, le suit | K6 FollowView (C++, mort : 340 cm derrière, visée pawn + 50 cm, FOV 70, collision, lissage) ; K2 CameraScene + `Room.AutoCamera` (regarde la tête du MC, recalage ponctuel) | **aucune caméra active** ne suit le MC ; FollowView a déjà la mécanique (suivi, collision, lissage) mais distance 3,40 m, ne tourne que depuis Birdview pendant la marche, et n'est appelée par personne |
|
||
| **C3** plafond, centre de la salle, < 3 m au-dessus du MC | aucun | à créer ; le plafond `WallT` des pièces est à Z relatif 2040 × échelle 0,2-0,4 = **4,1 à 8,2 m** au-dessus de la racine de Room (calcul, CAM-T3 § 3.5) : la règle « < 3 m au-dessus du MC » contredit « collée au plafond » dans la plupart des pièces |
|
||
| **Rues en enfilade** | aucune ; K1 Birdview = vue de dessus de la ville (carte) ; 7 lieux extérieurs = des Room à échelle Z 0,01 | à définir : le jeu n'a pas de rue 3D parcourue ; les routes `UStreetMap` existent en 2D (`RoadPoints`, sans hauteur), elles pourraient donner l'axe d'une rue |
|
||
| **Moins de caméras** | 6 sortes de caméras de vue (4 placées, 1 composant × N Person, 1 C++ morte) | voir § 3 |
|
||
|
||
## 3. Plan de réduction et de repositionnement proposé (options)
|
||
|
||
### 3.1 Bilan proposé (à valider)
|
||
| Caméra | Proposition | Motif |
|
||
|---|---|---|
|
||
| K6 FollowView (C++) | **réutiliser pour C2** (distance 175 cm, déclenchement hors Birdview) ou supprimer | mécanique de suivi déjà écrite, jamais branchée |
|
||
| K5 FirstPersonSM | **devient C1** ; option : ne garder que l'instance du MC (POV des partenaires supprimée) ou garder l'existant | une instance par PNJ, utilisée seulement en sexe |
|
||
| K2 CameraScene | **remplacée par C2 / C3** pour la pièce ; reste pour les scènes scriptées si elles sont gardées | surchargée (pièce, scène, sexe, CharGen) |
|
||
| K3, K4 CameraFullBody / CameraPortrait | garder pour le CharGen (hors jeu) ou fusionner en une caméra + zoom | ne suivent pas le MC, hors cible |
|
||
| K1 Birdview | garder comme carte de la ville (hors cible « MC ») ou en tirer les caméras de rue | vue de navigation de la ville |
|
||
| K7, K8 SceneCapture | hors lot (rendus vers texture, pas des vues) | — |
|
||
| C3 plafond | **à créer** | aucune base |
|
||
| Rues | **à créer** selon la définition retenue (Q1) | aucune base |
|
||
Résultat visé si tout est retenu : en jeu, **C1 + C2 + C3** (+ caméras de rue) au lieu de CameraScene, FollowView morte et
|
||
N instances `FirstPersonSM` ; Birdview et les caméras de CharGen restent à part.
|
||
|
||
### 3.2 Deux voies d'implémentation (phase 2)
|
||
- **Voie A — C++ (sous-système `LPCameraSubsystem`, nouveau)**, sur le modèle de `LPDirectControlSubsystem` et
|
||
`LPSecondScreenSubsystem` (ticker, acteurs transitoires, « aucun Blueprint n'est modifié ») : crée C1 (attachée au socket
|
||
`head` du MC), C2 (reprise de `FollowCamera`, 175 cm), C3 (centre de la boîte de la pièce, Z = min(plafond − marge,
|
||
Z du MC + 300 cm), regard vers le MC) ; commutation par une touche. Avantages : pas d'écriture dans GI, Room, PC, Person
|
||
(assets que STE vient de commiter), réversible par git, compilable et testable. Risques : coexistence avec les
|
||
`SetViewTargetWithBlend` des BP (Birdview, `HideRender`, fin de sexe) qui reprendraient la vue ; il faut une règle
|
||
de priorité.
|
||
- **Voie B — Blueprint par MCP** : modifier `Person` (C1), `Room` / `PC` (C2, C3, commutation), niveau `CentralLondon`
|
||
(caméras de rue). Avantage : intégré aux BP existants. Risques : écritures dans des assets partagés avec STE et U8
|
||
(GI, Room, Person, carte), instantanés et gel de la copie UE, recuisson ; `.umap` modifié (niveau de jeu).
|
||
- **Mixte** : C++ pour C1/C2/C3, et seulement les points d'entrée BP indispensables (par ex. `HideRender` / `SwitchCamera`).
|
||
- **Avis d'arbitrage de Big Boss (2026-10-11)** : voie A sans conflit avec les autres lots (compilation et build ordinaires
|
||
dans la file) ; voie B touche les assets de STE (GI, Room) et invalide le candidat Shipping d'U8 : seulement après la porte
|
||
T11 d'U8 ou sur un gel décidé par l'utilisateur. CAM-T4 inscrite au rang 2, derrière le BUILD-FIN d'U8. Choix : utilisateur.
|
||
- **Contrainte de file (Big Boss, 2026-10-11)** : après T11, STE écrit aussi dans GI (IMPL C0, `GI.destroyDummy`) ; CAM et
|
||
STE passent l'un après l'autre (instantané et commit chacun), ordre fixé par Big Boss ; la SPEC de phase 2 doit lister
|
||
précisément les fonctions de GI touchées par CAM.
|
||
|
||
### 3.3 Étapes proposées (chacune sur décision)
|
||
1. **CAM-T4 (phase 1b, lecture seule, copie UE)** : commandlets pour fixer les réglages non établis (§ 5).
|
||
2. **CAM-SPEC** : spécification exécutable de la voie retenue (fichiers, ordre, repli, critères de VAL).
|
||
3. **CAM-IMPL** (instantané `Tools/Snapshot.ps1 -Lot CAM`, ticket `TAG CAM-avant`), **CAM-BUILD**, **CAM-VAL**
|
||
(agent distinct), test en jeu par l'utilisateur (pièce, rue, scène, sexe, CharGen, sauvegarde et rechargement),
|
||
puis **DOC** (CHG) et ticket au gardien.
|
||
|
||
## 4. Questions à trancher par l'utilisateur
|
||
- **Q1 Rues** : qu'appelles-tu « rue » dans le jeu ? (a) la vue de la ville Birdview ; (b) les 7 lieux extérieurs (Room
|
||
« dehors ») ; (c) une nouvelle vue 3D au niveau du sol le long des routes `StreetMap`. Et « en enfilade » = caméra placée
|
||
au bout de la rue, regard dans l'axe de la rue : d'accord ?
|
||
- **Q2 C2, 1,75 m** : distance horizontale au MC, distance totale, ou hauteur de la caméra ? Hauteur de visée (tête,
|
||
poitrine) ? Placée derrière le MC (regard dans le sens de sa marche) ?
|
||
- **Q3 C3, plafond** : quand le plafond est à plus de 3 m au-dessus du MC (cas de la plupart des pièces : 4 à 8 m au-dessus
|
||
de la racine), quelle règle prime : « collée au plafond » ou « < 3 m au-dessus du MC » ? Proposition : hauteur =
|
||
min(plafond, MC + 3 m), au centre de la pièce, regard vers le MC.
|
||
- **Q4 Commutation** : la touche C (`SwitchCamera`) passe-t-elle C1 → C2 → C3 hors sexe ? Pendant le sexe, garde-t-on
|
||
le cycle actuel des vues POV des partenaires ?
|
||
- **Q5 C1** : vue 1re personne du **MC seul** (on retire `FirstPersonSM` des PNJ), ou garder la POV des partenaires ?
|
||
- **Q6 Caméras hors cible** : Birdview (carte de la ville) et les 3 caméras du CharGen / contacts restent-elles telles
|
||
quelles, ou entrent-elles dans la réduction ?
|
||
- **Q7 Voie d'implémentation** : A (C++ seul, aucun BP modifié), B (BP par MCP) ou mixte ?
|
||
- **Q8 Scènes scriptées** : les commandes `cameraMove` / `cameraFocus` / `cameraLock` (aucun module livré ne s'en sert)
|
||
doivent-elles continuer à piloter une caméra (laquelle) ?
|
||
- **Q9 Défauts constatés** : le pivot de l'acteur Room par `CameraFocus`, les chaînes mortes (minuterie `AutoCamera`,
|
||
suivi mort dans Person) et le code `FollowCamera` entrent-ils dans le lot CAM ?
|
||
- **Q10 Phase 1b** : d'accord pour CAM-T4 (≈ 15 min de copie UE, lecture seule, derrière U8) ?
|
||
|
||
### 4b. Réponses de l'utilisateur (2026-10-11, citées)
|
||
Second message : « 6 oui. Q2 oui Q3 à partir du sol Q8 oui. a 10 oui »
|
||
« la rue est une des vue exterieur 2, 1,75m du MC est en hauteur la taille du MC + 50cm. 3 on colle réellement au plafond
|
||
sauf en extérieur. ou on est à 3,80m. 4 oui. 5 les deux. par modification des Blueprints. 8 oui. 9 oui. Explique le 6 un peu mieux »
|
||
| Q | Décision lue | Reste à préciser |
|
||
|---|---|---|
|
||
| Q1 | (b) rue = une des vues extérieures (les 7 lieux extérieurs, Room à échelle Z 0,01) | — |
|
||
| Q2 | C2 à 1,75 m du MC ; hauteur de la caméra = taille du MC + 50 cm ; regard vers le MC | confirmé (« Q2 oui ») |
|
||
| Q3 | C3 réellement collée au plafond en intérieur (la règle « < 3 m » tombe) ; en extérieur, à 3,80 m **au-dessus du sol** | confirmé (« Q3 à partir du sol ») |
|
||
| Q4 | oui : touche C = C1 → C2 → C3 hors sexe ; cycle POV actuel gardé pendant le sexe | — |
|
||
| Q5 | les deux : POV du MC et des partenaires | — |
|
||
| Q6 | « 6 oui » : recommandation retenue : Birdview gardée telle quelle ; CameraFullBody et CameraPortrait gardées pour le CharGen et les contacts (fusion non retenue) ; CameraScene perd son rôle de pièce (remplacée par C1-C3), garde le CharGen | lecture de l'orchestrateur du « oui » |
|
||
| Q7 | **voie B, Blueprints**, **après la porte T11 d'U8** (« a ») | — |
|
||
| Q8 | oui : les commandes de scène (`cameraMove`, `cameraFocus`, `cameraLock`) pilotent **C2** | confirmé (« Q8 oui ») |
|
||
| Q9 | oui : `CameraFocus`, chaînes mortes et `FollowCamera` dans le lot | — |
|
||
| Q10 | **oui** : CAM-T4 (phase 1b) accordée | BUILD-DEMANDE envoyée à Big Boss |
|
||
|
||
### 4c. Réponses de l'utilisateur aux questions de la SPEC (`CAM-SPEC.md` § 4, Q1-Q20), 2026-10-11, citées
|
||
« q4 lissage et évitement, le reste oui » ; puis « approuvé » (amendement de la SPEC et suite).
|
||
- **Q4** : C2 en **poursuite lissée avec évitement des murs** (portage en BP de la mécanique de `FollowCamera` :
|
||
minuterie, balayage anti-collision, interpolation), au lieu de l'attache rigide proposée → amendement de la SPEC (CAM-T5b).
|
||
- **Toutes les autres propositions de la SPEC sont retenues** : Q1 derrière le MC, 175 cm à l'horizontale ; Q2 taille = tête
|
||
− sol + 10 cm ; Q3 regard vers la tête ; Q5 C3 intérieure fixe, rotation qui suit le MC ; Q6 enfilade au bout opposé au MC ;
|
||
Q7 C2 à l'entrée, mode gardé non sauvegardé ; Q8 étape hors POV = caméra de pièce ; Q9 constructeur et édition de
|
||
personnage gardent CameraScene ; Q10 flèches / molette / souris sans effet en pièce (premier passage) ; Q11 C1 masque
|
||
cheveux, soleil, mur, pas de regard souris ; Q12 scène hors pièce → C2 ; Q13 `cameraMove` détache C2, lock inchangé ;
|
||
Q14 `AutoCamera` supprimée ; Q15 `FollowCamera` C++ supprimée ; Q16 sonde B0 accordée ; Q17 post-traitement de
|
||
CameraScene copié ; **Q18 Person non touchée** ; Q19 un seul `CameraActor` pour C2 et C3 ; Q20 retour à l'utilisateur
|
||
si le MCP échoue.
|
||
- **Redump `-Pins -Exec`** de Birdview, ContactMenu, Person (≈ 3 min, lecture seule) : accordé (« le reste oui »).
|
||
|
||
## 5. Phase 1b proposée : CAM-T4 (commandlets en lecture seule, copie UE)
|
||
Options vérifiées dans `Source/LifePlayEditorTools/LPDumpComponentsCommandlet.h:8-11` et `LPDumpCDOCommandlet.cpp:24-30`.
|
||
| # | Commande (`-run=`) | But |
|
||
|---|---|---|
|
||
| 1 | `LPDumpComponents -Map=/Game/Scenes/CentralLondon -Filter=Camera -All` | transform, FOV, post-traitement de CameraScene, CameraFullBody, CameraPortrait |
|
||
| 2 | `LPDumpComponents -Map=/Game/Scenes/CentralLondon -Filter=Birdview -All` | position, projection, `OrthoWidth` de Birdview |
|
||
| 3 | `LPDumpComponents -BP=Birdview -All` | composants et défauts de la classe |
|
||
| 4 | `LPDumpComponents -BP=Person -All` | `FirstPersonSM` : transform relatif, FOV, `bAutoActivate` |
|
||
| 5 | `LPDumpComponents -BP=FirstPerson -All` | défauts de la classe C1 |
|
||
| 6 | `LPDumpCDO -Class=/Game/BPs/GM.GM_C -Out=… -Props=DefaultPawnClass,PlayerControllerClass` | classes par défaut |
|
||
| 7 | `LPDumpCDO -Class=/Game/BPs/PC.PC_C -Out=… -Props=PlayerCameraManagerClass` | gestionnaire de caméra |
|
||
| 8 | `LPDumpCDO -Class=/Game/BPs/GI.GI_C -Out=… -Props=CameraSceneTransformDefault` | position par défaut de la caméra de pièce |
|
||
| 9 | `LPDumpFunction -BP=Birdview -Fn=*` | graphe de Birdview (relais vers Room, suivi éventuel) |
|
||
| 10 | `LPDumpFunction -BP=ContactMenu -Fn=*` | `SelectCamera`, `ReturnFromChargen` |
|
||
| 11 | `LPDumpFunction -BP=Person -Fn=EventGraph` | redump à HEAD (le dump L6f date d'avant le commit `ee2821a`) |
|
||
Lancement par `lp-builder` via `Tools/RunCommandlet.ps1` (journaux dans `etat\CAM\`), après `BUILD-GO` de Big Boss ;
|
||
aucun asset écrit (MD5 de Person, GI, Room, PC, Birdview et de `CentralLondon.umap` relevés avant et après).
|