Skip to main content

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/)

WidgetPurpose
WB_PartyMenuThe main menu shell: ready button, match settings box, chat, spot icons. Created by Setup PartyMenu Level.
WB_SocialMenuSocial panel container with tabs.
WB_Social_SocialsSteam friends list (invite to party, view profile).
WB_Social_AddFriendsAdd/remove friend tab.
WB_Social_PlayerProfileSelected player profile view.
WB_Social_SteamUserEntree / _ExtendedOne friend row (compact / expanded with actions).
WB_Looking_for_PartyLooking for Party tab (WB_PreferencedLobbyEntry entries). The matchmaking system behind it is still work in progress.
WB_MatchSettingsMenuHost-only match configuration: party size, game mode, map. Writes into lobby data.
WB_TagsPreference tag display.

Chat (Widgets/LobbyTextChat/)

WB_LobbyTextChat + WB_ChatMessage. See Party Chat System.

WidgetPurpose
WB_EscapeMenuEscape menu (leave match alone / with party, open settings). Managed by Handle Escape Menu Widget.
WB_LockerCharacter/skin selection room.
WB_GameInitialization"Match starting" overlay during server start.
WB_HoveredPlayerMenuContext menu when clicking a party member (profile, kick, promote).
WB_MatchHudIn-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/)

WidgetUsed by
WB_PartySpotIconBP_PartySpot widget component: the clickable icon above empty/occupied pedestals; fires OnPartySpotIconClicked/Hovered/UnHovered.
WB_AvatarUserPlateBP_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/:

  • ButtonsThemeData instances (DA_Default, DA_Red, DA_Chocolate, DA_Silver, DA_Select, DA_UnSelect)
  • TextThemeDataAsset instances (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).