LifePlay-Revival/Docs/Migration/etat/sandbox/S7/S7-CART.md
edujiro5972 04b053554f Sandbox addon : brancher le jeu sur LifePlay-Sandbox (plugin LPSandbox).
Charge le plugin via AdditionalPluginDirectories, conserve ShowCouple et les commandlets anim côté jeu, et documente les lots S0–S8 (CHG-212 à CHG-220).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-06 21:10:53 +02:00

5.1 KiB

S7-T3 - Cartographie de conformite du plugin LPSandbox (contrat S7-SPEC)

  • Fiche : S7-T3 | Role : CART | Date : 2026-10-06
  • Cible : D:\Game\LifePlay-Sandbox\Plugins\LPSandbox\Source (modules LPSandbox, LPAnimMeasure)
  • Outil : rg (ripgrep). Compte hors commentaires precise quand applicable.

Resultats des grep exiges

# Motif Portee Resultats Attendu
1 #include <LifePlay.h> / "LifePlay.h" Source/** 0 0
2 LIFEPLAY_API Source/** 0 0
3 "LifePlay" ou "LifePlayEditorTools" (module) *.Build.cs 0 0
4 ^\s*#include.*LifePlay (tout include mentionnant LifePlay) Source/** 0 0
5 LifePlay (mot, tous contextes) Source/** 16 commentaires + 1 nom de section ini (voir ci-dessous)
6 SpawnActor.*Person, ConstructorHelpers, TSubclassOf<, TObjectPtr<APerson Source/** 0 0

Detail #5 (16 hits) : 15 sont des commentaires (provenance, regles de dependance ; ex. LPAnimMeasure.Build.cs:3, LPCoupleSim.h:11). Le 16e est LPAnimRedirect.cpp:37 : GConfig->GetString(TEXT("LifePlay.Anim"), TEXT("Target"), ...) : nom de section d'un fichier .ini (donnee), pas une dependance de code.

Cases du contrat

C1 - Aucun lien vers LifePlay

  • Aucun #include "LifePlay.h" ni header du module jeu (grep #1, #4 : 0).
  • Aucun LIFEPLAY_API (grep #2 : 0).
  • Aucune dependance de module LifePlay / LifePlayEditorTools dans les *.Build.cs (grep #3 : 0 ; LPSandbox -> Core, CoreUObject, Engine, InputCore, SlateCore, LPAnimMeasure, Slate, ImageWrapper, AssetRegistry, Json ; LPAnimMeasure -> Core, CoreUObject, Engine, Json).
  • Aucun chemin Source/LifePlay hors commentaires.
  • Graphe acyclique LPSandbox -> LPAnimMeasure ; LPAnimMeasure sans dependance vers LPSandbox (verifie dans LPAnimMeasure.Build.cs).

C2 - Aucun chargement de graphe GI / Person / Room

  • Aucune reference a GI du jeu : \bGI\b, BPs/GI, BPs/Room, BP_Room -> 0 sur le code (le motif \bRoom\b donne 66 hits : tous des variables locales ALPPairSandboxStage* Room, type du plugin, aucune relation avec le Blueprint Room du jeu).
  • Person : lecture de CDO uniquement. Deux sites, tous deux LoadObject<UClass>(nullptr, *FLPSandboxConfig::Get().PersonBP) puis GetDefaultObject() :
    • LPSandboxRoomBuilder.cpp:119-120 ;
    • LPCoupleSim.cpp:39-40. Aucun SpawnActor de Person, aucun CallFunctionByName. Le seul ProcessEvent du plugin (LPSandboxRoomBuilder.cpp:308) vise BP_Sky_Sphere du moteur.
  • Chemin du Blueprint : Config/LPSandbox.ini [Sandbox.Assets] PersonBP (defaut /Game/BPs/Person.Person_C, LPSandboxConfig.h:15).
  • Lanceur : GameInstanceClass=/Script/Engine.GameInstance (Tools/debug/LifePlay_pair_sandbox.bat) ; le journal runtime confirme Game class is 'LPPairSandboxGameMode' et « profil Person lu ». L'unique LogLifePlay: Error: Coiffures : GI.HairstyleTable ... est emis par le module jeu (categorie LogLifePlay, pas LogLPSandbox) : erreur connue (S3-VAL, S4-VAL, S5-VAL), non liee au plugin.

C3 - SoftObjectPath / config seulement

  • Aucun ConstructorHelpers, TSubclassOf<> ni TObjectPtr<> vers un type du jeu (grep #6 : 0).
  • Un seul litteral /Game/ hors config : LPAnimRedirect.cpp:17 (/Game/Quaternius/UAL), defaut interne documente (S2), surcharge par LPAnimRedirect::SetUALRoot (poussee par le module jeu depuis la config) ; asset de contenu tiers, pas de code du jeu.
  • LoadObject par chaine (config) et AssetRegistry + GetSoftObjectPath().ToString() (LPCoupleSim.cpp:227,236) pour Quaternius.
  • Repli au litteral historique si fichier/cle absents (S1) ; journal LogLPSandbox sur asset introuvable.

C4 - Montage sibling documente

  • Layout sibling + decision « pas de submodule » : 21_Sandbox_Addon.md (section S3) et S3-INT.md.
  • LifePlay.uproject : AdditionalPluginDirectories = ../LifePlay-Sandbox/Plugins ; LPSandbox Enabled: true, Optional: true (S7-T2).
  • Pin consigne : S3-INT.md (maj S7-T4 -> f09c42e).
  • README de l'addon : layout, clone sibling, junction Content (S3).

C5 - Configurations

  • SupportedTargetPlatforms: ["Win64"].
  • LPSandbox : TargetConfigurationDenyList: ["Shipping"].
  • LPAnimMeasure : aucune deny-list.
  • Pas de TargetAllowList: ["Editor"].

Ecarts / observations

# Observation Gravite
1 LoadObject<UClass>(PersonBP) charge le package Person (donnees serialisees) : le contrat C2 interdit l'execution, pas ce chargement ; inevitable pour lire le CDO. Info
2 Section ini [LifePlay.Anim] lue par LPAnimRedirect : couplage de nom (donnee), pas de code. Info
3 Optional: true ne dispense pas du clone sibling pour compiler le jeu (LifePlay.Build.cs -> LPAnimMeasure). Limite (documentee S7-IMPL-L)

Verdict CART : conforme (0 ecart bloquant).