DocsUOSSteam

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

Note
Every subsystem early-outs gracefully when Steam isn't running. You don't need to gate your Blueprint logic on 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.txt isn't next to your editor, init will fail. Set bAutoWriteSteamAppIdFile = 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 of FUOSSteamFriend).
  • -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
Note
Setting 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) - fires OnLobbyCreated.
  • -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.
Heads up
Always end a session with 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, fires OnEncryptedAppTicketComplete.

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 -> OnItemCreated with 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 OnConnectionChanged with 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 as OnNetMessage.
  • -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; fires OnMessagesReceived.
  • -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 like map=de_dust2.
  • -Request LAN Server List / Request Favorites Server List / Request History Server List.
  • -Events: OnServerResponded (per-server) and OnServerListComplete.

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) or Log On (Token) for Steam-registered servers.

Events

  • -OnLoggedOn - server is visible in the master list.
  • -OnLogOnFailure (ErrorMessage).
  • -OnDisconnected - lost contact with Steam; usually transient.
Tip
Use Mode = AuthenticationAndSecure if your server is public-facing and you want VAC. Mode = NoAuthentication is fine for LAN-only.