11 KiB
CAM-B2p-I-SPEC : aide des contrôles du sexe derrière une icône « i » du panneau des actions (DIAG + SPEC, 2026-10-14)
Demande de l'utilisateur, relayée par Big Boss : « utilise l'icone information à coté de faq pour afficjer les
informations sur les controles en lieu et place du texte. ce texte appartient à la zone de filre ». Lecture seule ;
aucune IMPL sans GO. Le build COMMUN-12 tournait chez STG pendant la DIAG : ni éditeur ni commandlet. La DIAG
repose sur les octets des assets (grep -a, noms et chaînes), le dump du PC de B2p-G
(CAM-B2p-G-PC-VAL_LPDumpFunction_20261014-135527.txt) et le C++. Les points marqués à confirmer se liront par
MCP ou LPDumpFunction après le build.
1. DIAG
1.1 Les 4 lignes : SexInterface, TextBlock_1
- Établi : les 4 phrases (« Click any mouse button for action menu », « (NEW!) Hold any mouse button to rotate
camera », « (NEW!) Scroll mouse wheel or press WASD to move camera », « (NEW!) Hold Shift while doing any of the
above to rotate / move the people instead ») ne sont que dans
Content/UI/SexInterface.uasset(recherche dans toutContent,Source,Config). Ce sont des chaînes de l'asset, sans table de localisation (aucun dossierContent/Localization;DefaultGame.ini:38-40:InternationalizationPreset=English,CulturesToStage=en). - Établi :
SexInterfacen'a que deux blocs de texte,TextBlock_0(liaison de visibilitéGet_TextBlock_0_Visibility) etTextBlock_1(liaison de texteGet_TextBlock_1_Text, avecConv_StringToText). - Établi (dump du PC) : le PC montre
SexInterface.TextBlock_1en même temps que le panneau des actions et le cache avec lui :- ouverture :
LeftMouseSexOn→IfThenElse_10.else→CallFunction_154SetVisibility(Visible)surTextBlock_1→CallFunction_124Cursor.MoveCursorToMouse(l. 3021-3043, 997-1000) ; - fermeture :
CallFunction_1394SetInputMode_GameOnly→CallFunction_38SetVisibility(Hidden)surTextBlock_1(l. 1171-1176, 4003-4007). C'est pourquoi l'utilisateur voit ce texte comme une partie de la zone du filtre.
- ouverture :
- Estimé fort, à confirmer :
TextBlock_1porte les 4 lignes.Get_TextBlock_1_Textpeut aussi rendre un autre texte (l'asset contient « Close to cumming, keep going to 100… » et la variableCumText). Le graphe de la liaison sera lu parLPDumpFunction -BP=SexInterface -Fn=Get_TextBlock_1_Text_0 -Pins -Exec.
1.2 Le panneau des actions : Cursor
- Établi : le champ « Type keyword to filter actions » est l'
EditableTextBoxSearchActiondu widgetContent/UI/Cursor.uasset(Cursor_C,PC.CursorREF). Ses boutons nommés :MoveHomeButton,RandomButton,ShuffleActor,StripAllButton,TranslateButton,ActionButton, et deux boutons à appui et relâcher (ComponentBoundEvent_2à_5). Les libellés « << » et « >> » sont des textes de l'asset. - Établi :
TranslateButtonappelle la traduction Google de GI (https://translate.google.com/?sl=en&tl=zh-CN), vers le chinois. - Estimé, à confirmer : le bouton « ? » est
RandomButton(action au hasard ; le texte d'aide d'origine dit « press Space to change to a random… »). Il a déjà un rôle : on ne le réutilise pas. Le soutien-gorge estStripAllButton. - À confirmer : le parent de
SearchAction(l'asset aHorizontalBox_0,WrapBox,ScrollBox_3,CanvasPanel), où l'icône sera insérée.
1.3 L'icône FAQ
- Établi :
MainMenuaFAQButton,FAQBack,FAQSectionet la texture/Game/Heavy/New/info(Content/Heavy/New/info.uasset, 13 866 octets), la seule texture « info » du menu. Elle est cuite, puisqueMainMenula référence. - Estimé fort, à confirmer : c'est l'image de
FAQButton(le cercle avec un i). Vérification par MCP :get_widgetdu bouton, ou une ligne au premier essai.
1.4 Langue
- Établi : le jeu est en anglais seulement (preset ICU
English, seule la cultureenest cuite). Toute l'interface, y compris les ajouts C++ (« Keyboard », « Camera: C3 Couple »), est en anglais. « Selon le jeu » donne donc l'anglais. Une détection du français par la culture ne marcherait pas, faute de donnéesfrcuites.FPlatformMisc::GetDefaultLanguage()(langue du système) serait possible, mais ce n'est pas la langue du jeu.
1.5 LPReadableText
- Établi (
LPReadableTextSubsystem.h:1-12) : ce sous-système ne restyle que lesSpinBoxet lesText Box. Il ne touche ni une info-bulle ni unTextBlock. Il n'est pas nécessaire : une info-bulle UMG a déjà son fond sombre et son texte clair ; une boîte d'aide créée en C++ reçoit son style à la création (blanc, contour noir, fond sombre, comme l'indicateur de caméra).
1.6 Contrôles réels pendant le sexe (B2p-C à B2p-H)
| Action | Contrôle | Source |
|---|---|---|
| Vue suivante : Scene → C3 → yeux de chaque partenaire → Scene | C (SwitchCamera) |
B2p-G (PC G-d) |
| Tourner autour du couple, avancer ou reculer (Scene, C3) | axes MoveRight et MoveForward (ZQSD sur le clavier de l'utilisateur) |
B2p-C |
| Regarder autour (vue des yeux) | mêmes axes | B2p-C |
| Tourner la caméra | bouton tenu hors du couple, et la souris | PC MoveCamera |
| Déplacer le couple, sur le sol ou un lit | glisser au clic gauche sur le couple | B2p-D, H |
| Tourner le couple | glisser au clic droit sur le couple | B2p-D |
| Déplacer le couple au clavier | flèches (LeftRight et DownUp) |
Room (B2p-R, O1) |
| Monter ou descendre le couple | molette (ScrollDownUp, Room) |
estimé (COMMUN-11 : molette, Z +9) |
| Ouvrir ou fermer le panneau des actions | Espace ou clic molette | B2p-G (PC G-g), H5 |
| Voie d'origine du jeu | Maj + bouton tenu + souris | Room, laissée par B2p-D |
2. SPEC
2.1 Option 1, recommandée : C++ seul (LPCameraModeSubsystem), sans asset ni nœud
Précédent : LPKeyboardSubsystem::AttachButton (LPKeyboardSubsystem.cpp:578-601) ajoute un bouton UMG à la volée
dans un widget du jeu.
- I-a, icône : pendant le sexe, quand le
Cursor_Cdu jeu est à l'écran, une fois par instance :- un
UButtonLPControlsHelp(fond transparent), contenant unUImagede la texture/Game/Heavy/New/info(LoadObject<UTexture2D>), de la taille des autres icônes du panneau (24 à 32 px, à régler sur la capture) ; - inséré dans le parent de
SearchAction, juste après lui ; - si le parent n'est pas un panneau connu ou si la texture manque : rien n'est inséré, une ligne au journal.
- un
- I-b, survol :
ToolTipText= texte d'aide (§ 2.3), l'info-bulle native d'UMG. - I-c, clic : affiche ou cache une boîte d'aide (
UBordersombre etUTextBlockblanc avec contour, police 14) sous le panneau, au même endroit que les 4 lignes. Elle se cache aussi quand le panneau se ferme. - I-d, les 4 lignes : la liaison
Get_TextBlock_1_Textest retirée sur l'instance (TextBlock_1deGI.SexInterface) et le texte est vidé, une fois par instance. Le PC peut le rendre visible, il n'affiche rien, sans clignotement. Si § 1.1 montre que la liaison rend aussi le texte de jouissance, on ne la retire pas : on cache le bloc seulement quand il porte l'aide (comparaison avec le début « Click any mouse button »). C'est à trancher après le dump. - I-e, touches lues : les noms de touches viennent des mappages en cours (
UInputSettings:MoveForward,MoveRight,SwitchCamera,Pause,LeftRight,DownUp). Un remappage par le menu Keyboard est donc suivi, et l'utilisateur voit Z Q S D. - Hors du sexe, rien ne change : on ne touche ni l'icône ni le texte. L'icône reste dans l'instance du
Cursor, mais le panneau n'est ouvert que pendant le sexe ; à confirmer pour d'autres usages duCursor, et la cacher hors sexe si besoin. - Coût : environ 150 à 200 lignes de C++, 2 h d'écriture et 30 min de VAL statique. 0 nœud, pas d'UE-GO hors du build. Une lecture MCP courte (lp-mcp, environ 6 appels, sous UE-GO, lecture seule) pour confirmer § 1.1 à 1.3 avant l'IMPL ; sinon, le C++ écrit au journal ce qu'il trouve, et le premier essai tranche.
2.2 Option 2 : Blueprint par MCP (non recommandée)
Cursor: ajouter un bouton et une image dans l'arbre du designer. Il faut un outil MCP d'édition de l'arbre des widgets, non vérifié dansunreal-mcp(aucun lot ne l'a fait).SexInterface: changerGet_TextBlock_1_Text(environ 3 nœuds) ou la visibilité.- PC : retirer
CallFunction_154(1 coupure et 1 lien). - Coût estimé : environ 25 à 40 appels, 3 assets touchés, et une langue figée dans l'asset.
2.3 Texte d'aide proposé (anglais, langue du jeu ; <…> = nom de touche lu à l'exécution)
CAMERA
<C>: next view (Scene > C3 couple close-up > each partner's eyes)
<Z><S>: move closer / away <Q><D>: orbit around the couple (eyes view: look around)
Hold a mouse button away from the couple and move the mouse: rotate the camera
COUPLE
Left-drag the couple: move it (floor or bed only)
Right-drag the couple: turn it
Arrow keys: move the couple Mouse wheel: raise / lower
ACTIONS
<Space> or middle click: show / hide this panel
Variante française, si l'utilisateur la préfère (constante du C++, pas une détection) :
CAMÉRA
<C> : vue suivante (Scene > C3 plan du couple > yeux de chaque partenaire)
<Z><S> : avancer / reculer <Q><D> : tourner autour du couple (vue des yeux : regarder)
Bouton de souris tenu hors du couple + souris : tourner la caméra
COUPLE
Glisser le couple au clic gauche : le déplacer (sol ou lit seulement)
Glisser le couple au clic droit : le tourner
Flèches : déplacer le couple Molette : monter / descendre
ACTIONS
<Espace> ou clic molette : afficher / cacher ce panneau
La ligne « Molette » reste à confirmer à l'essai (§ 1.6) ; on la retire si la molette ne déplace pas le couple.
3. Risques
- R1 : le parent de
SearchActionest unCanvasPanel(placement absolu) : l'icône exige un ancrage calculé. On le lit avant l'IMPL. - R2 :
TextBlock_1porte aussi le texte de jouissance (§ 1.1) : I-d devient conditionnel. - R3 : une instance de
Cursorrecréée (changement de scène) : l'insertion se refait, par nom (LPControlsHelp), commeAttachButton. - R4 : les infobulles UMG apparaissent après un délai (0,5 s environ) : le clic reste le moyen sûr.
4. Essais proposés (après le build qui suivra le GO)
- CAM-86 : panneau ouvert, l'icône « i » est à côté du filtre, avec la même image que FAQ ; les 4 lignes ont disparu.
- CAM-87 : le survol montre l'aide ; le clic l'affiche et la cache ; la fermeture du panneau la cache.
- CAM-88 : après un remappage (Keyboard), l'aide montre les nouvelles touches.
- CAM-89 : hors du sexe, aucun changement, et le texte de jouissance est toujours affiché s'il existe.
5. Questions pour le GO
- Option 1 (C++ seul) ?
- Langue : anglais (langue du jeu), ou la variante française ?
- Lecture MCP courte avant l'IMPL (sous UE-GO, environ 6 appels), ou confirmation au premier essai ?