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

4.9 KiB

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.