67 lines
4.9 KiB
Markdown
67 lines
4.9 KiB
Markdown
# CAM-B2f : correctifs CAM de COMMUN-2 (fiche, 2026-10-13)
|
|
|
|
Origine : `CAM-COMMUN2-DIAG.md` (KO 1 et KO 2). GO de l'utilisateur (« go ») sur le DIAG. Le KO 3 (marche) est dans le
|
|
fichier de STG (`LPDirectControlSubsystem.cpp`) : il n'est pas traité ici, mais renvoyé à Big Boss. Aucune scène de
|
|
sexe n'est modifiée : le correctif 1 ne touche que l'indicateur.
|
|
|
|
## 1. C++ (fait, sans UE ; compilation au build COMMUN-3)
|
|
Sauvegarde avant modification : `D:\Game\LifePlay_Backup_5.5\CAM-B2f\Source\LifePlay\` (`.h` `BF3412C1`, `.cpp`
|
|
`BBCA21B0`) et `CAM-B2c-SPEC-avant-B2f.md`.
|
|
- **KO 1 (A17)** : `POVOn` est lu sur le PC (`PCPOVOn`) au lieu de GI. SPEC B2c § 2 corrigée (`PC.POVOn`).
|
|
- **2b, témoin C2** (`WitnessC2`, journal seulement) :
|
|
- En C2, si `CamRoom` est à moins de 100 cm de la douille `head`, une ligne au plus par seconde :
|
|
`Temoin C2 : camera a N cm de la tete (hauteur ±N) ; sonde Camera : … ; sonde Visibility : … ; boite C2 : marge N cm (largeur X, Y)`.
|
|
- Les deux sondes sont des balayages de sphère de 20 cm sur 250 cm, à plat, de la tête vers la caméra. Elles
|
|
ignorent Room, le joueur et `CamRoom`, comme la sonde de Room. Chacune donne le composant et l'acteur touchés,
|
|
`cache=1` si l'acteur est caché, et « départ déjà dedans » si le balayage commence dans un objet.
|
|
- Empreintes après : `.h` `84F9BA303E1ABD171C506DFBB4ED9F63`, `.cpp` `1DE73AA932AF2A056E1B8528CED4DCAB` (LF, sans BOM).
|
|
|
|
## 2. Room, correctif 2a (à faire par `lp-mcp-bp`, sous jeton UE)
|
|
**Barème** : a0 b1 c1 d0 e1 f1 = 4 → N1, ajusté à N3 (écriture MCP par `lp-mcp-bp`, consigne de Big Boss). S = C3 1
|
|
(procédure `lp-mcp`) + f 1 = 2 < 3 : une fiche. Environ 12 appels. Case C9a : état de Room à relire le jour même
|
|
(MD5 attendu `CA2A9A0BAACA4130FD5C318797F008AE` avant écriture).
|
|
|
|
**Écritures** (préfixe `/Game/BPs/Room.Room:EventGraph.`) :
|
|
1. `.\Tools\Snapshot.ps1 -Lot CAM-B2f` (Room), éditeur fermé ou avant tout appel d'écriture ; MD5 relevé.
|
|
2. `AssetTools.load_asset` `/Game/BPs/Room`.
|
|
3. `get_node_infos` sur `K2Node_CallFunction_459`, `_499`, `_505` (`SphereTraceSingle`) : relever l'index de la
|
|
broche `TraceChannel` (valeur actuelle `TraceTypeQuery2`). Si un nœud n'est pas un `SphereTraceSingle`, ou si la
|
|
valeur diffère : arrêt et compte rendu.
|
|
4. `set_pin_value` `TraceChannel` = `TraceTypeQuery1` sur les 3 nœuds (un appel par message).
|
|
5. Relecture `get_node_infos` des 3 nœuds : `TraceTypeQuery1`, liens inchangés (`ActorsToIgnore` ← MakeArray_5,
|
|
`bIgnoreSelf = true`, rayon 20).
|
|
6. `compile_blueprint` strict (warnings_as_errors) : aucune exception ; puis `save_assets` `/Game/BPs/Room` seul.
|
|
|
|
Rien d'autre : aucun nœud créé ni supprimé.
|
|
|
|
**VAL** : V5 dump Room (`-BP=Room -Fn=* -Pins -Exec`) : `TraceTypeQuery1` sur 459, 499 et 505, et 1260 nœuds
|
|
inchangés ; V6 `CompileAllBlueprints` = référence ; V7 dans le build COMMUN-3 (avec le C++ ci-dessus).
|
|
|
|
## 3. Cas de test pour COMMUN-3
|
|
| N° | Action | Résultat attendu |
|
|
|---|---|---|
|
|
| CAM-17 (repris) | Pendant une scène de sexe, touche C plusieurs fois. | Indicateur « Camera: POV » en vue subjective, « Camera: Scene » revenu à la caméra de scène. |
|
|
| CAM-18 | En C2, dans une pièce avec des PNJ, puis dans la rue près de bancs et de meubles occupés : tourner la caméra autour du joueur (souris). | La caméra reste à sa distance ; elle ne se colle plus au joueur et ne monte plus au-dessus de sa tête sans raison. |
|
|
| CAM-19 | En C2, laisser un PNJ passer entre la caméra et le joueur. | La caméra ne bouge pas ; le PNJ masque la vue un instant. |
|
|
Journal : toute ligne `Temoin C2` se lit avec le DIAG (sonde Camera sur un `Person_C` caché = cause confirmée ; « rien »
|
|
sur les deux sondes avec une marge de boîte faible = effet de la boîte en rue étroite).
|
|
|
|
## 4. Retour arrière
|
|
C++ : recopier les 2 fichiers de `Backup_5.5\CAM-B2f\Source\LifePlay\`. Room : `.\Tools\Restore.ps1 -Lot CAM-B2f`,
|
|
éditeur fermé, sur accord.
|
|
|
|
## 5. Amendement B2f-a (2026-10-13, après arrêt de `lp-mcp-bp` à l'étape 6)
|
|
Constat (`CAM-B2f-IMPL.md`) : les 3 valeurs sont posées en mémoire, mais `save_assets` n'a rien écrit. Room sur le
|
|
disque = instantané `CA2A9A0B`. Cause, lue dans les sources du moteur 5.8 :
|
|
- `set_pin_value` appelle `TrySetDefaultValue(…, false)` et ne marque pas le Blueprint comme modifié ;
|
|
- `save_assets` n'enregistre que les paquets marqués.
|
|
Moyen retenu, avec les seuls outils de la fiche :
|
|
- `create_node` d'un nœud isolé (`Utilitaires|ContrôleDeFlux|Branche`, position éloignée), qui passe par
|
|
`HandleNodeSpawned` et appelle `MarkBlueprintAsModified` ;
|
|
- puis `delete_node` de ce même nœud, qui passe par `RemoveNodes` et le marque aussi.
|
|
Le graphe final reste celui de la fiche : 1260 nœuds, aucun lien touché. Ensuite :
|
|
1. `AssetTools.is_dirty` = vrai ;
|
|
2. relecture de 459, 499 et 505 ;
|
|
3. compilation stricte, puis `save_assets` de Room seul ;
|
|
4. MD5 différent de `CA2A9A0B`.
|
|
Arrêt si `is_dirty` reste faux.
|