UI & Widgets Overview
Map of the widget hierarchy in Content/SteamPartyMenu/Widgets/ and how widgets talk to the systems.
Communication Pattern
Widgets never hard-reference game classes. They:
- get components via
BP_SPM_Library(GetPartyManager,Get Player Data) - bind to Party Manager event dispatchers (
OnPartyReadyCheckUpdate,OnPartyMemberCountChange, ...) - receive lifecycle calls through
BPI_WidgetManagment:WM_RefreshSocialTab,WM_RefreshPartyMembersList,WM_SetWidgetIconSpotIndex,WM_ConstructExtSocialProfile,WM_CreateMatchHUD,WM_HandleLeavingWidget,WM_SetActiveSocialWidgetIndex
Widget Map
Party & Social (Widgets/SocialMenu/)
| Widget | Purpose |
|---|---|
WB_PartyMenu | The main menu shell: ready button, match settings box, chat, spot icons. Created by Setup PartyMenu Level. |
WB_SocialMenu | Social panel container with tabs. |
WB_Social_Socials | Steam friends list (invite to party, view profile). |
WB_Social_AddFriends | Add/remove friend tab. |
WB_Social_PlayerProfile | Selected player profile view. |
WB_Social_SteamUserEntree / _Extended | One friend row (compact / expanded with actions). |
WB_Looking_for_Party | Looking for Party tab (WB_PreferencedLobbyEntry entries). The matchmaking system behind it is still work in progress. |
WB_MatchSettingsMenu | Host-only match configuration: party size, game mode, map. Writes into lobby data. |
WB_Tags | Preference tag display. |
Chat (Widgets/LobbyTextChat/)
WB_LobbyTextChat + WB_ChatMessage. See Party Chat System.
Menus (Widgets/OtherMenus/)
| Widget | Purpose |
|---|---|
WB_EscapeMenu | Escape menu (leave match alone / with party, open settings). Managed by Handle Escape Menu Widget. |
WB_Locker | Character/skin selection room. |
WB_GameInitialization | "Match starting" overlay during server start. |
WB_HoveredPlayerMenu | Context menu when clicking a party member (profile, kick, promote). |
WB_MatchHud | In-match party HUD, created via PMI_CreateMatchHUD / WM_CreateMatchHUD. |
Settings (Widgets/SettingsMenu/)
WB_SettingsMenu hosts tabs WB_GraphicsSettings, WB_AudioSettings, WB_AccountSettings (+ modular WB_SettingDetails). They read/write through BPI_PlayerDataInterface and apply via BP_SPM_Library helpers.
In-World Widgets (Widgets/ActorsWidgets/)
| Widget | Used by |
|---|---|
WB_PartySpotIcon | BP_PartySpot widget component: the clickable icon above empty/occupied pedestals; fires OnPartySpotIconClicked/Hovered/UnHovered. |
WB_AvatarUserPlate | BP_NamePlate: member name above avatars. |
Player HUD (Widgets/PlayerHUD/)
WB_PlayerHUD + WB_Crosshair, managed by BPC_PlayerHUD.
Modular Building Blocks (Widgets/Modular/)
Reusable themed controls used across all menus: B_Button, B_wIcon_, B_OnlyIcon_, B_Frame_Icon, B_Selection_wValue, B_SelectionScalar_wValue, ComboBox_, WB_Text_Default, WB_ToolTip, plus notifications WB_LobbyInvite and WB_NetworkingNotification.
Theming
Modular buttons and text read their style from theme data assets in Blueprints/Structures/DataAssets/Themes/:
ButtonsThemeDatainstances (DA_Default,DA_Red,DA_Chocolate,DA_Silver,DA_Select,DA_UnSelect)TextThemeDataAssetinstances (fonts, sizes, colors; e.g.DA_DefaultTheme,DA_IvoryBig,DA_OutfitSemiBold)
To re-skin the entire UI, create your own theme instances and swap them on the modular widgets; no widget internals need editing. Widget-side async loading helpers live in BPML_SPM_Widgets (Load and Set Texture 2D Asset, Load And Play Sound 2D, Get Steam User Data, Get Validated Lobby ID).