Steam Reference
UOS exposes 22 Steam subsystems. Each one wraps a single Steamworks interface (or, for a couple of them, a thin set of related interfaces) and is reachable from Blueprints as a UGameInstanceSubsystem. The core subsystem must initialize successfully before the others do anything.
Quick jump
- -UOSSteamSubsystem - Core lifecycle
- -UOSSteamFriendsSubsystem
- -UOSSteamMatchmakingSubsystem - Lobbies
- -UOSSteamUserStatsSubsystem - Stats + Achievements
- -UOSSteamRemoteStorageSubsystem - Steam Cloud
- -UOSSteamAppsSubsystem - DLC + Build info
- -UOSSteamUtilsSubsystem
- -UOSSteamScreenshotsSubsystem
- -UOSSteamMusicSubsystem
- -UOSSteamParentalSettingsSubsystem
- -UOSSteamRemotePlaySubsystem
- -UOSSteamUserSubsystem - Auth tickets + Voice
- -UOSSteamInputSubsystem - Controller / Steam Input
- -UOSSteamInventorySubsystem
- -UOSSteamUGCSubsystem - Workshop
- -UOSSteamHTTPSubsystem
- -UOSSteamNetworkingSocketsSubsystem - Modern P2P
- -UOSSteamNetworkingUtilsSubsystem
- -UOSSteamNetworkingMessagesSubsystem
- -UOSSteamMatchmakingServersSubsystem - Server browser
- -UOSSteamTimelineSubsystem - 2024 Recording API
- -UOSSteamGameServerSubsystem - Dedicated servers
IsSteamRunning unless you want to hide a UI affordance.UOSSteamSubsystem - Core lifecycle
The core subsystem owns SteamAPI bring-up. It calls SteamAPI_Init on Game Instance startup if UUOSSettings::bEnableSteam is true, pumps SteamAPI_RunCallbacks every tick, and shuts down on teardown. All other Steam subsystems depend on it - without the callback pump, no async result ever surfaces.
Key Blueprint nodes
- -
Is Steam Initialized- true once SteamAPI_Init has succeeded. - -
Is Steam Running/Is Logged On- runtime state checks. - -
Get Local Steam ID/Get Persona Name. - -
Get App ID,Get Current Game Language,Get IP Country,Is Steam Running on Steam Deck. - -
Activate Game Overlay/...To Web Page/...To User/...Invite Dialog.
Gotchas
- -If
steam_appid.txtisn't next to your editor, init will fail. SetbAutoWriteSteamAppIdFile = true. - -App ID 480 (Spacewar) is for testing only. Replace before shipping.
UOSSteamFriendsSubsystem
Friends list, persona names, rich presence, friend invites, and Steam chat. Mirrors ISteamFriends.
Key Blueprint nodes
- -
Get Friend Count,Get Friends(returns array ofFUOSSteamFriend). - -
Get Friend Persona Name,Get Friend Persona State,Get Friend Game Played. - -
Set Rich Presence/Clear Rich Presence- the "X is in Y" string under a friend. - -
Invite User To Game,Reply To Friend Message.
Common flow - rich presence
Set Rich Presence: Key = "status" Value = "Exploring The Forest" Set Rich Presence: Key = "steam_player_group" Value = <yourLobbyId> // groups friends in the same lobby together
connect as a key with a launch-arg string lets friends use Steam's "Join Game" menu to launch your title with that arg.UOSSteamMatchmakingSubsystem - Lobbies
Full Steam lobby lifecycle: create, join, leave, set/get data, invite. Backed by an internal bridge object that holds Steam'sCCallResult instances so async lobby calls survive across ticks.
Key Blueprint nodes
- -
Create Lobby(LobbyType, MaxMembers) - firesOnLobbyCreated. - -
Join Lobby/Leave Lobby. - -
Add Lobby Filter+Request Lobby List- search. - -
Set Lobby Data/Get Lobby Data/Get Lobby Member Data. - -
Invite User To Lobby,Get Lobby Members.
Events
- -
OnLobbyCreated(Success, LobbyId) - -
OnLobbyJoined - -
OnLobbyDataUpdated - -
OnLobbyChatUpdated- member joined / left / kicked / banned. - -
OnLobbyMatchList- search results. - -
OnLobbyInvite,OnGameLobbyJoinRequested.
UOSSteamUserStatsSubsystem - Stats + Achievements
Steam Stats and Achievements. Both flow through the same RequestStats / StoreStats sequence.
Key Blueprint nodes
- -
Request Current Stats- prerequisite for everything else (only on UE 5.5/5.6; UE 5.7 is automatic). - -
Get Stat Int/Set Stat Int/Get Stat Float/Set Stat Float. - -
Get Achievement,Set Achievement,Clear Achievement. - -
Indicate Achievement Progress- progress toast without unlocking. - -
Store Stats- flushes pending stat / achievement changes to Steam.
Store Stats. Without it, Steam keeps the values in memory and discards them on quit. Achievements unlocked but not stored will not show up next launch.UOSSteamRemoteStorageSubsystem - Steam Cloud
Read / write / delete files in Steam Cloud. Synchronous API; useful for save files that should sync across devices.
Key Blueprint nodes
- -
File Write/File Read- byte arrays. - -
File Exists,File Delete,Get File Size,List Files. - -
Is Cloud Enabled For Account/Is Cloud Enabled For App/Set Cloud Enabled For App. - -
Get Quota- total + available bytes.
UOSSteamAppsSubsystem - DLC + Build info
Subscription / DLC / build / install dir / VAC + cybercafe flags.
Key Blueprint nodes
- -
Is Subscribed,Is Subscribed App,Is DLC Installed. - -
Get App Build Id,Get App Install Dir,Get DLC Count,Get Current Beta Name. - -
Install DLC/Uninstall DLC. - -
Get App Owner- useful for family-sharing detection. - -
Is VAC Banned,Is Cybercafe,Is Low Violence.
UOSSteamUtilsSubsystem
Server time, image handles, device introspection.
Key Blueprint nodes
- -
Get Server Real Time- canonical Steam Unix timestamp; trustworthy across timezones. - -
Get Image Size/Get Image RGBA- decode avatar handles into UTexture2D-compatible bytes. - -
Get IPC Call Count,Is Steam Running In VR,Is Steam In Big Picture.
UOSSteamScreenshotsSubsystem
Hook the Steam screenshot key, trigger captures, tag screenshots with location/users.
Key Blueprint nodes
- -
Hook Screenshots/Is Screenshots Hooked- takes the F12 hotkey under your control. - -
Trigger Screenshot- capture the next frame. - -
Tag User,Tag Publish File,Set Location.
UOSSteamMusicSubsystem
Pause / resume / next-track for the user's Steam Music Player.
Key Blueprint nodes
- -
Music Is Enabled,Music Is Playing,Music Get Volume. - -
Music Play,Music Pause,Music Toggle. - -
Music Play Next,Music Play Previous. - -
Music Set Volume.
UOSSteamParentalSettingsSubsystem
Steam Family View checks. Use this to gate sensitive settings (online play, in-game purchases) when the user is in family mode.
Key Blueprint nodes
- -
Is Parental Lock Enabled,Is Parental Lock Locked. - -
Is App Blocked,Is App In Blocklist. - -
Is Feature Blocked- online play, friend chat, library, etc.
UOSSteamRemotePlaySubsystem
Remote Play session info - knowing whether the user is streaming to a phone / tablet so you can adjust UI scaling.
Key Blueprint nodes
- -
Get Session Count,Get Session ID By Index. - -
Get Session Steam ID,Get Session Client Name,Get Session Client Form Factor. - -
Get Session Client Resolution,Send Remote Play Together Invite.
UOSSteamUserSubsystem - Auth tickets + Voice
ISteamUser - auth session tickets, encrypted app tickets, voice capture, NAT type, badge / steam-level lookups, AdvertiseGame.
Auth tickets
- -
Get Auth Session Ticket- bytes to send to your backend / game server for validation against the Steam Web API. - -
Cancel Auth Ticket- call when leaving a session. - -
Request Encrypted App Ticket- opaque blob, firesOnEncryptedAppTicketComplete.
Voice
- -
Start Voice Recording/Stop Voice Recording. - -
Get Available Voice- pulls one chunk of compressed bytes. - -
Decompress Voice- on the receiver, converts back to PCM. - -
Get Voice Optimal Sample Rate- feed to your audio component for lowest CPU.
UOSSteamInputSubsystem - Controller / Steam Input
Steam Input replaces the legacy Controller API. Use this for glyph lookup, action-set switching, and per-controller rumble / LED.
Key Blueprint nodes
- -
Init(bExplicitlyCallRunFrame) /Shutdown. - -
Run Frame- call once per game tick for live state. - -
Get Connected Controllers,Get Input Type For Handle. - -
Get Action Set Handle/Activate Action Set. - -
Get Digital Action Handle/Get Digital Action State. - -
Get Analog Action Handle/Get Analog Action State. - -
Trigger Vibration,Set LED Color. - -
Get Glyph PNG For Action Origin- per-controller artwork for prompts. - -
Show Binding Panel- lets the user re-bind in-game.
UOSSteamInventorySubsystem
Steam Inventory - GetAllItems, ConsumeItem, TriggerItemDrop, item definitions, serialized result blobs for trading / gifting.
Key Blueprint nodes
- -
Get All Items,Grant Promo Items,Consume Item,Trigger Item Drop. - -
Load Item Definitions,Get Item Definition IDs,Get Item Definition Property. - -
Serialize Result- opaque blob you can hand to a peer / your server. - -Result event:
OnResultReady(Success, Items array).
UOSSteamUGCSubsystem - Workshop
Browse, subscribe, and publish Workshop items. The full publish flow is covered:
Query
- -
Query User Items(page, type) - your own published items. - -
Query All Items- the public catalog.
Consume
- -
Subscribe Item/Unsubscribe Item. - -
Get Subscribed Items- array of PublishedFileIds. - -
Get Item Install Info- install folder, size, timestamp. - -
Download Item(highPriority).
Publish (5-step flow)
- -
Create Item->OnItemCreatedwith new PublishedFileId. - -
Start Item Update-> UpdateHandle. - -
Set Item Title,Set Item Description,Set Item Preview,Set Item Content,Set Item Tags. - -
Submit Item Update(changeNote) ->OnItemSubmitted.
UOSSteamHTTPSubsystem
ISteamHTTP - HTTP via Steam's network stack. Useful when talking to Steam-partner backends; most general REST traffic should use FHttpModule instead.
Key Blueprint nodes
- -
Send Request(Method, URL, Headers, Body, RequestTag) - tag is echoed back in the result so you can route responses. - -Result:
OnRequestComplete(Success, StatusCode, Body, RequestTag).
UOSSteamNetworkingSocketsSubsystem - Modern P2P
ISteamNetworkingSockets - the modern Steam P2P transport. Use this for ordered, reliable, NAT-traversed game traffic.
Server flow
- -
Create Listen Socket P2P(virtualPort) -> HSteamListenSocket. - -On
OnConnectionChangedwith state Connecting ->Accept Connection.
Client flow
- -
Connect P2P(peerId, virtualPort) -> HSteamNetConnection.
Both
- -
Send Message(connection, data, flags). Flags = 8 for reliable, 0 for unreliable. - -
Receive Messages On Connection- poll once per tick to drain inbound packets; events fire asOnNetMessage. - -
Close Connection/Close Listen Socket.
UOSSteamNetworkingUtilsSubsystem
Relay status, ping estimates, datacenter lookups for the sockets stack.
Key Blueprint nodes
- -
Init Relay Network Access- call early to warm up ping data. - -
Get Relay Network Status- returns "OK" / "Initializing" / etc. - -
Get Ping To Data Center(3-letter PoP code). - -
Get Local Timestamp- microseconds since process start.
UOSSteamNetworkingMessagesSubsystem
ID-based messaging API - simpler than sockets. Send a message to a SteamID without an explicit connect. Good for chat, RPC-style traffic, and small notifications. For ordered streamed gameplay traffic prefer the sockets subsystem.
Key Blueprint nodes
- -
Send Message To User(peerId, data, flags, channel). - -
Accept Session With User/Close Session With User. - -
Receive Messages- drain a channel; firesOnMessagesReceived. - -
OnSessionRequest- inbound peer wants to talk.
UOSSteamMatchmakingServersSubsystem - Server browser
Classic Source-style server browser. Internet, LAN, Favorites, History modes are all supported.
Key Blueprint nodes
- -
Request Internet Server List(AppId, FilterMap) - typed string filters likemap=de_dust2. - -
Request LAN Server List/Request Favorites Server List/Request History Server List. - -Events:
OnServerResponded(per-server) andOnServerListComplete.
UOSSteamTimelineSubsystem - 2024 Recording API
The Steam Timeline / Recording API lets you tag the game timeline with events the user can review in the recordings tab. Available on Steamworks v1.60+ which means UE 5.7+ in practice.
Key Blueprint nodes
- -
Is Available- false on UE 5.5 / 5.6 (Steamworks 1.57). Branch your UI on this. - -
Set Timeline Game Mode- Playing / Staging / Menus / Loading Screen. - -
Set Timeline State Description,Clear Timeline State Description. - -
Add Timeline Event(icon, title, description, priority, startOffset, duration, clipPriority) - duration 0 = instantaneous, > 0 = ranged.
UOSSteamGameServerSubsystem - Dedicated servers
Run on a server build only. Wraps ISteamGameServer + SteamGameServer_Init/Shutdown. Has its own callback pump (SteamGameServer_RunCallbacks) so it ticks itself.
Boot sequence
- -
Init(IP, GamePort, QueryPort, Mode, VersionString). - -
Set Product,Set Game Description,Set Mod Dir,Set Server Name,Set Map Name. - -
Set Dedicated Server,Set Max Player Count,Set Bot Player Count. - -
Log On Anonymous(most use cases) orLog On(Token) for Steam-registered servers.
Events
- -
OnLoggedOn- server is visible in the master list. - -
OnLogOnFailure(ErrorMessage). - -
OnDisconnected- lost contact with Steam; usually transient.
Mode = AuthenticationAndSecure if your server is public-facing and you want VAC. Mode = NoAuthentication is fine for LAN-only.