LifePlay-Revival/Docs/Migration/etat/REL/TSC1/TSC1-DIAG-01.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

10 KiB

TSC1-DIAG-01 : la commande de scène par touche « hash » existe-t-elle encore ?

Fiche TSC1-DIAG-01 — Niveau N1 — Session « Lower · TSC1 » — Classe VAL : L (lecture seule). Date : 2026-10-15. Copie UE : BUILD-GO accordé ; éditeur à lancer sur ordre direct de l'utilisateur. Aucune écriture MCP, aucune sauvegarde.

1. Question

Un joueur demande : « in the old game by Vinfamy you could press hash button and bring up a command where you could input a command from any of the modules to play that scene you want, can you do that here ». L'utilisateur demande de vérifier si c'est toujours vrai.

2. Constats statiques (établi, sans éditeur)

  • Action TestScenes : deux liaisons dans Config/DefaultInput.ini : Key=Tilde (l. 121) et Key=Insert (l. 122). Pas de touche « # » ni « hash » nommée.
  • Console moteur : ConsoleKeys=Tilde (l. 168-169) et ConsoleKeys=² (l. 170). Tilde ouvre donc aussi la console d'Unreal sur la copie.
  • Menu des raccourcis : Source/LifePlay/LPKeyboardSubsystem.cpp l. 100 : TestScenes est listé sous le libellé « Test Scenes » ; l. 193-195 : rangé dans la catégorie « Scene ». C'est donc une action de raccourci remappable, pas une commande saisie.
  • Commandes C++ enregistrées (LPDebugSubsystem.cpp, l. 605-634 : memreport-like, CollisionDump, Bookmark, HitchSummary, PersonsDump) : aucune ne lance une scène de module par son nom.
  • Addon LPSandbox : aucune occurrence de TestScene ni de SceneTest dans Plugins.
  • Références binaires : TestScenes dans Content/BPs/PC.uasset ; « TestScene » dans GI.uasset, UI/Action.uasset, UI/MainMenu.uasset, UI/TopRight.uasset (repérage de Big Boss). Le contenu des Blueprints n'est pas lu ici : il l'est par MCP.

3. Résultats de la lecture MCP (2026-10-15, éditeur ouvert, lecture seule, aucune PIE)

Appels : ProgrammaticToolset.execute_tool_script (garde v6) autour de AssetTools.load_asset, BlueprintTools.find_nodes et BlueprintTools.get_node_infos (paquets ≤ 20). Chaque nœud est cité par son refPath. Statut : établi (lu à la source) sauf mention « estimé » ou « incertain ».

3.1 Événement d'entrée TestScenes dans PC (établi)

  • find_nodes titre « TestScenes » dans /Game/BPs/PC.PC:EventGraph → K2Node_InputAction_9 ; get_node_infos : type Entrée|ActionEvents|InputActionTestScenes.
  • Le fil d'exécution part de la broche Released (touche relâchée), pas de Pressed (non connectée) : InputAction_9 → IfThenElse_60 (condition : VariableGet_168 = GI.BuilderOn) ; la branche then (BuilderOn vrai) n'est pas connectée ; la branche else → IfThenElse_36 (condition : CallFunction_118 = Widget|IsVisible sur le widget TopRight, VariableGet_36) → then → CallFunction_119 Widget|SetVisibility(Visible) puis CallFunction_120 Widget|SetKeyboardFocus, tous deux sur VariableGet_37 = variable TestSceneText du widget TopRight, de type Text Box.
  • Donc : la touche affiche une zone de saisie de texte (TestSceneText, dans /Game/UI/TopRight) et lui donne le focus clavier. Ce n'est pas la console moteur. Elle n'agit que si le HUD TopRight est visible et que le mode Builder est inactif (BuilderOn faux).
  • Le second appui ne la referme pas par ce chemin : la fermeture est dans la validation du texte (§ 3.2). PC lit aussi TestSceneText en VariableGet_122 et VariableGet_229, pour des tests IsVisible (CallFunction_39, CallFunction_191), usage non détaillé (incertain).

3.2 Lecture de la commande saisie (établi)

  • /Game/UI/TopRight.TopRight:EventGraph.K2Node_ComponentBoundEvent_245 : OnTextCommitted(TestSceneText). Il passe par SwitchEnum_4 (ETextCommit) : seule la sortie OnEnter est câblée (Entrée valide ; Tab/perte de focus ne lancent rien). Ordre : CallFunction_1179 SetVisibility(Collapsed) sur la zone (VariableGet_517), puis IfThenElse_12.
  • Le texte passe en chaîne (CallFunction_1177, ToString). IfThenElse_12 : condition CallFunction_47 = la chaîne contient un espace.
    • Sans espace (else) → CallFunction_1178 = GI.TestScene(SceneID = texte) (VariableGet_516 = GetGI).
    • Avec espace (then) → CallFunction_48 coupe au premier espace ; la partie gauche va dans SwitchString_0 qui n'a que deux cas : wait (→ VariableSet_129, partie droite convertie en nombre par CallFunction_284) et waituntil (→ IfThenElse_64, partie droite coupée par « / » via CallFunction_1257). Ce sont des sous-commandes de test, leur effet précis n'est pas lu (incertain).
  • GI.TestScene : /Game/BPs/GI.GI:TestScene (K2Node_FunctionEntry_0) est un simple relais vers ExecuteUbergraphGI ; le corps est l'événement personnalisé /Game/BPs/GI.GI:EventGraph.K2Node_CustomEvent_162 « TestScene » (entrées SceneID, Contains). Il vide PersonsAlreadyGot et RelativesAlreadyGot, mélange le tableau Scenes (VariableGet_14125 = GetScenes, tableau de structures Scene), puis boucle (MacroInstance_4184, ForEachLoopWithBreak) : BreakStruct_229 (BreakScene) extrait le FilePath ; CallFunction_1159/CallFunction_1158 en retirent le dossier (split « / » depuis la fin) et l'extension (split « .lpscene » depuis la fin) ; CallFunction_8877 compare sans casse le nom obtenu à SceneID (si Contains est actif, ce sont CallFunction_1160/CallFunction_191 : sous-chaîne / préfixe). En cas d'égalité, CallFunction_75313 et CallFunction_563 (CheckConditionsWho sur les conditions PNJ de la scène) précèdent CallFunction_12136 = PlayScene(FilePath).
  • Format attendu : le nom du fichier de la scène, sans dossier ni extension .lpscene, sur n'importe quel module chargé dans Scenes (nom unique : la première correspondance du tableau mélangé est jouée, donc un nom présent dans deux modules est ambigu — estimé). Une scène dont les conditions PNJ ne conviennent pas n'est pas lancée (estimé, d'après CheckConditionsWho).
  • Exemples réels : /Game/UI/MainMenu.MainMenu:EventGraph.K2Node_CallFunction_58 appelle TestScene(SceneID = "tf_start") et K2Node_CallFunction_37 appelle TestScene(SceneID = "tut_start"). Fichiers correspondants dans Content\Modules\vin_Base : TF\tf_start.lpscene et Scenes\tutorials\tut_start.lpscene (1271 fichiers .lpscene dans Content\Modules). Saisir tf_start ou tut_start est donc le format du jeu lui-même.
  • /Game/UI/TopRight : find_nodes « TestScene » → ComponentBoundEvent_245, CallFunction_1178, VariableGet_517.

3.3 Conditions (établi pour ce qui est lu ; l'absence est limitée aux graphes EventGraph cherchés)

  • Seule condition lue dans PC : GI.BuilderOn faux, plus TopRight visible (§ 3.1).
  • find_nodes avec les titres « Shipping », « Debug », « Packaged », « Editor » dans les EventGraph de /Game/BPs/PC, /Game/UI/TopRight, /Game/UI/MainMenu et /Game/BPs/GI : aucun nœud. Aucune garde de build Shipping ou de mode debug n'est visible dans ces graphes : la commande est donc disponible en build empaquetée (estimé : les fonctions annexes de PC et GI, hors EventGraph, ne sont pas cherchées ; incertain). L'essai de l'utilisateur sur la build empaquetée tranche.
  • Où BuilderOn est positionné : non établi (aucun nœud « BuilderOn » dans l'EventGraph de GI).
  • MainMenu ne conditionne pas la saisie : il appelle seulement TestScene pour deux boutons (tf_start, tut_start).

3.4 Conflit Tilde (établi en statique, § 2)

TestScenes est liée à Tilde (DefaultInput.ini l. 121) et la console moteur à Tilde (l. 168-169) et ² (l. 170). Les deux réagissent à la même touche. Ce que fait l'éditeur de jeu quand les deux coïncident (console prioritaire ou non) n'est pas lu par MCP : incertain, à voir en jeu.

3.5 Touche réelle selon le clavier (estimé : correspondance de disposition, non lue dans le jeu)

  • Insert : Key=Insert, identique sur tous les claviers (établi, l. 122).
  • Tilde est la touche virtuelle OEM_3 de Windows. Sur disposition US, c'est « ~ » ; sur AZERTY français, la même touche virtuelle est celle de « ù » ; sur britannique, celle de « ' @ ». La touche « ² » (AZERTY) n'est pasTilde`, elle ne lance que la console. La touche « # » britannique n'est liée à rien dans l'action (aucune liaison « # »).
  • Conclusion de ce point : seule Insert est sûre ; Tilde dépend de la disposition. À confirmer par essai.

4. Réponse (oui / non / partiel)

Partiel. Oui pour la fonction : une touche (Insert, ou Tilde selon le clavier) ouvre une zone de saisie dont la validation par Entrée lance la scène de n'importe quel module chargé, par son nom de fichier sans extension (ex. tf_start, tut_start). Non pour la touche « hash » : aucune liaison « # », et Tilde se partage avec la console moteur. Preuves : /Game/BPs/PC.PC:EventGraph.K2Node_InputAction_9 → IfThenElse_60 / IfThenElse_36 → CallFunction_119 et CallFunction_120 sur TestSceneText ; /Game/UI/TopRight.TopRight:EventGraph.K2Node_ComponentBoundEvent_245 → CallFunction_1178 ; /Game/BPs/GI.GI:EventGraph.K2Node_CustomEvent_162 → CallFunction_12136 (PlayScene) ; exemples MainMenu CallFunction_58 (tf_start) et CallFunction_37 (tut_start). Non établi : comportement exact en build empaquetée (aucune garde Shipping vue), arbitrage Tilde / console, effet de wait et waituntil.

5. Projet de réponse au joueur (en anglais, 5 lines, sans promesse)

Thanks for the question. A scene command box still exists: press Insert (it is the default key; the "Scene" section of the controls menu lets you change it). Type the scene's file name without folder or ".lpscene" (for example tf_start or tut_start) and press Enter. It looks through the scenes of the loaded modules, and a scene whose character conditions are not met will not start. There is no "#" binding, and Tilde shares its key with the engine console, so its behaviour depends on your keyboard layout. We have read this from the game data only and have not run it in a build yet.

6. Fin

Vérification finale : essai de l'utilisateur, décrit pas à pas (build empaquetée : Insert, saisir tf_start, Entrée).

Fichiers à commiter

  • Docs/Migration/etat/REL/TSC1/TSC1-DIAG-01.md (M).