SteamPro diagram
SteamPro — architecture & feature overview
Steamworks SDK 1.64 · UE 4.27

SteamPro

Blueprint-first Steamworks integration — interfaces, events, async nodes, and an editor deploy pipeline.

Engine · UE 4.27 SDK · Steamworks 1.64 (bundled) Platforms · Win64 · macOS · Linux Author · Alpha XP
235Blueprint Nodes
14Async Action Nodes
9Runtime Events
23Steam Interfaces
11BP Structs
11BP Enums

Quick Start

  1. Enable the plugin — SteamPro lives in your project's Plugins/ folder; enabled by default.
  2. Run the Steam client and log in. Steamworks requires the desktop client.
  3. Set your App IDProject Settings ▸ SteamPro ▸ SteamPro Runtime ▸ Steam Identifiers ▸ App ID (blank falls back to 480 = Spacewar).
  4. Use it in Blueprint — every interface is a static function library:
Is Steam Running     → Branch
Get Local Steam ID   → Print String
Get Persona Name     → Print String

Browse every node: open BP_SteamPro_Catalog from the Blueprint Gallery — a ready-made Blueprint that catalogs and demonstrates all SteamPro nodes grouped by interface.

Steam IDs are exposed as strings (decimal uint64) since Blueprint has no 64-bit integer pin. Pass them straight back into any function that takes a Steam ID.

Editor / PIE Testing

SteamPro can initialize Steam inside the editor for Play-In-Editor testing. Because the editor isn't launched through Steam, the subsystem (under WITH_EDITOR) publishes the App ID before init: it sets the SteamAppId/SteamGameId environment variables and writes steam_appid.txt next to the editor executable. Configure in Project Settings ▸ SteamPro ▸ SteamPro Runtime.

SettingGroupDefaultPurpose
App IDSteam IdentifiersblankYour real Steam App ID (string) — used for runtime init + deploy
Depot IDSteam IdentifiersblankYour Steam Depot ID (string) for uploading builds
Steam Dev App IDEditor Testing480Fallback App ID in editor when App ID is blank
Initialize In EditorEditor TestingtrueInit Steam during PIE
Force App Id For EditorEditor TestingtruePublish App ID via env var + steam_appid.txt
Keep Alive Between PIEEditor TestingtrueSkip shutdown on PIE end so repeated Play works

Init App ID resolves in order: App ID → Steam Dev App ID → 480. Press Play with Steam running, then read the on-screen panel or the Output Log filtered to LogSteamPro. Shipping builds are unaffected.

Architecture

ModuleTypeRole
SteamProRuntimeLibraries, async nodes, subsystem, events, test harness
SteamProEditorEditor"Deploy to Steam" toolbar button + settings
SteamProSDKThirdPartyWires the bundled SDK 1.64 headers/libs/dll

USteamProSubsystem (Game Instance Subsystem) owns the Steam lifecycle: init on start, RunCallbacks each frame, shutdown on teardown. It exposes IsSteamInitialized and every runtime event delegate.

Feature Summary

All 235 Blueprint nodes, grouped by interface. "Async" counts the latent action nodes within each group.

#InterfaceClass(es)NodesAsync
1Core / Utils / User / Friends / Apps / StatsUSteamProLibrary65
2Cloud / RemoteStorageUSteamProCloudLibrary14
3GameServerUSteamProGameServerLibrary18
4GameServerStatsUSteamProGameServerStatsLibrary9
5InputUSteamProInputLibrary16
6InventoryUSteamProInventoryLibrary + async121
7AuthUSteamProAuthLibrary + async62
8Matchmaking / LobbiesUSteamProLobbyLibrary + async144
9Leaderboardsasync nodes22
10Music & ScreenshotsUSteamProMediaLibrary15
11Networking (P2P)USteamProNetworkingLibrary8
12NetworkingUtilsUSteamProNetworkingUtilsLibrary3
13Parental SettingsUSteamProParentalLibrary6
14PartiesUSteamProPartiesLibrary3
15Remote PlayUSteamProRemotePlayLibrary7
16Matchmaking Servers (browser)USteamProServerBrowserLibrary + async61
17TimelineUSteamProTimelineLibrary5
18VideoUSteamProVideoLibrary2
19VoiceUSteamProVoiceLibrary6
20UGC / WorkshopUSteamProWorkshopLibrary + async153
21HTTPUSteamProHTTPRequest11
22Core controlUSteamProSubsystem2
23Runtime eventsUSteamProSubsystem (delegates)9 ev
Total23514

Blueprint data types — 11 structs (Friend, LobbyMember, LeaderboardEntry, P2PPacket, P2PSessionState, ServerInfo, InventoryItem, WorkshopItem, DigitalActionData, AnalogActionData, ControllerHandle) and 11 enums (persona state, friend flags, avatar size, lobby type, P2P send, leaderboard sort/display/upload/request, UGC query/match type).

Interface Reference

Every function safely no-ops / returns a default if Steam isn't initialized.

Core & Utils

USteamProLibrary

AppID, country, UI language, server time, Big Picture, Steam Deck, overlay enabled, overlay position, VR dashboard.

User

USteamProLibrary

GetLocalSteamID, IsLoggedOn, GetPlayerSteamLevel.

Friends

USteamProLibrary

Persona name/state, friends list, rich presence, overlay (dialog/user/web), avatar→Texture2D, game played, level, relationship, nickname, clans.

Apps

USteamProLibrary

DLC, subscribed, language, build id, install dir, beta name, launch cmdline/params, app owner.

Stats / Achievements / Leaderboards

USteamProLibrary + async

Achievements, int/float stats, store. Async: UploadLeaderboardScore, DownloadLeaderboardEntries, GetNumberOfCurrentPlayers.

Matchmaking / Lobbies

USteamProLobbyLibrary + async

Async: CreateLobby, JoinLobby, RequestLobbyList. Sync: members, data, owner, joinable, invite.

Matchmaking Servers

USteamProServerBrowserLibrary + async

RequestInternetServerList → FSteamProServerInfo list; refresh/cancel/count/details.

Cloud / RemoteStorage

USteamProCloudLibrary

Read/write string & bytes, delete/forget, size/timestamp, enumeration, quota, cloud-enabled.

Auth

USteamProAuthLibrary + async

BeginAuthSession/End/Cancel, license check. Async: GetAuthSessionTicket, GetAuthTicketForWebApi.

Networking (P2P)

USteamProNetworkingLibrary

Send/read packets, accept/close sessions, session state. See OnP2PSessionRequest.

NetworkingUtils

USteamProNetworkingUtilsLibrary

InitRelayNetworkAccess, GetRelayNetworkStatus, GetLocalTimestamp.

Voice

USteamProVoiceLibrary

Record, GetVoiceData (compressed), DecompressVoice (PCM), optimal sample rate.

Input

USteamProInputLibrary

Controllers, action sets/handles, digital/analog data, vibration, LED, binding panel.

Inventory

USteamProInventoryLibrary + async

Items, definitions, consume, promo grants. Async: GetAllItems.

UGC / Workshop

USteamProWorkshopLibrary + async

Subscribed items, state, install/download info, download. Async: Subscribe, Unsubscribe, Query.

HTTP

USteamProHTTPRequest

Async web request: method/url/body/headers → status + body.

Music & Screenshots

USteamProMediaLibrary

Playback control; trigger/hook/write/tag screenshots.

Timeline

USteamProTimelineLibrary

State descriptions, events, game mode (Steam Recording / Game Recording).

RemotePlay

USteamProRemotePlayLibrary

Session count/IDs, client name/form-factor/resolution, Remote Play Together.

Parties

USteamProPartiesLibrary

Active beacons, beacon details.

ParentalSettings

USteamProParentalLibrary

Lock state, app/feature block checks.

Video

USteamProVideoLibrary

GetVideoURL, IsBroadcasting.

GameServer / GameServerStats

USteamProGameServer*Library

Server config, logon, per-user server stats & achievements. Valid only in a game-server process.

Not available: ISteamGameSearch was removed from Steamworks SDK 1.64 (only a leftover callback-ID enum remains), so it cannot be wrapped.

Runtime Events

Get the SteamPro Subsystem and bind these BlueprintAssignable delegates:

EventFires when
OnSteamInitialized(bSuccess)After the first init attempt
OnOverlayActivated(bActive)Steam overlay shown / hidden
OnLobbyJoinRequested(LobbyID, FriendID)User accepted a lobby invite / "Join Game"
OnRichPresenceJoinRequested(FriendID, Connect)Rich-presence "Join Game" (connect string)
OnAvatarImageLoaded(SteamID)An avatar finished downloading
OnDlcInstalled(AppID)A DLC finished installing
OnScreenshotReady(Handle, bSuccess)A screenshot was captured
OnP2PSessionRequest(RemoteID)A peer wants a P2P session — call AcceptP2PSessionWithUser
OnP2PSessionConnectFail(RemoteID, ErrorCode)A P2P session failed

Async Action Nodes

Leaderboards: UploadLeaderboardScore, DownloadLeaderboardEntries  ·  Matchmaking: CreateLobby, JoinLobby, RequestLobbyList, RequestInternetServerList  ·  Stats: GetNumberOfCurrentPlayers  ·  Auth: GetAuthSessionTicket, GetAuthTicketForWebApi  ·  Inventory: GetAllItems  ·  Workshop: SubscribeItem, UnsubscribeItem, QueryWorkshopItems  ·  HTTP: SteamHTTPRequest

Each node exposes On… / OnFailed output execution pins.

Screenshots from BP_SteamPro_Catalog, the ready-made Blueprint that lays out every SteamPro node grouped by interface. Click any image to view it full size.

Core nodes
Core
User nodes
User
Friends nodes
Friends
Apps nodes
Apps
Utils nodes
Utils
Stats nodes
Stats & Achievements
Leaderboards nodes
Leaderboards
Matchmaking nodes
Matchmaking / Lobbies
Server Browser nodes
Server Browser
Cloud nodes
Cloud / RemoteStorage
Auth nodes
Auth
Networking nodes
Networking (P2P)
NetworkingUtils nodes
NetworkingUtils
Voice nodes
Voice
Input nodes
Input
Inventory nodes
Inventory
Workshop nodes
UGC / Workshop
HTTP nodes
HTTP
Music nodes
Music
Screenshots nodes
Screenshots
Timeline nodes
Timeline
Remote Play nodes
Remote Play
Parties nodes
Parties
Parental nodes
Parental Settings
Video nodes
Video
GameServer nodes
GameServer
GameServerStats nodes
GameServerStats
Events
Runtime Events
Test harness
Test Harness
Uncategorized nodes
Uncategorized

Test Harness

Blueprint Catalog BP_SteamPro_Catalog

The recommended starting point for Blueprint users. Open BP_SteamPro_Catalog from the Blueprint Gallery — a ready-made Blueprint that lays out and demonstrates all 235 nodes grouped by interface (Core, Friends, Stats, Lobbies, Cloud, Voice, Workshop, Networking, …). Browse the API, copy node setups, and run any feature interactively. See the Node Gallery above for screenshots.

Multiplayer Dashboard USteamProMultiplayerWidget

Set SteamProTestGameMode as the map's GameMode Override and press Play. A professional, C++-built dashboard appears:

  • Status pill — live connected / offline indicator
  • Local Player — Steam avatar, persona name, SteamID, level, country
  • Friends — full list with presence-colored dots, auto-refreshed every 2s
  • Lobby — Create / Leave / Find / Friends Overlay, with the member list (owner starred)
  • Public Lobbies — browsable list with per-row Join buttons
  • Feature Console — ~30 buttons exercising every other interface (app info, achievements, leaderboards, current players, cloud, voice, workshop, inventory, screenshot, music, timeline, HTTP, auth ticket, relay status, controllers, server browser) with a scrolling log
  • Auto-joins Steam invites and auto-accepts P2P session requests

Simple Panel

USteamProTestWidget — status + Refresh / Run Smoke Test / Overlay / Cloud / Rich Presence buttons.

Smoke Test Actor

ASteamProSmokeTest — drop into a level; auto-runs on BeginPlay, prints on-screen + to LogSteamPro, binds subsystem events. CallInEditor buttons in its Details panel.

Direct Blueprint

Call any USteamPro*Library node from a Level Blueprint or actor.

Deploy to Steam

The SteamProEditor module adds a Steam button (with the plugin icon) to the level-editor toolbar. Its dropdown: Package & Upload, Package Game Only, Upload Existing Build, Deploy Settings. App ID and Depot ID are set once in SteamPro ▸ SteamPro Runtime ▸ Steam Identifiers (shared with runtime). The rest lives in Project Settings ▸ SteamPro ▸ SteamPro Deploy:

SettingNotes
SteamCmd PathPath to steamcmd.exe (download SteamCMD from Valve — not bundled)
Steam UsernameSteam partner account used to upload
Build DescriptionShown in the Steamworks build list
Set Live BranchBranch to auto-set live (empty = do not set live)
Packaged Build DirArchive dir for packaging / content root for upload
Target PlatformDropdown: Windows (Win64) / macOS / Linux
Build ConfigurationDropdown: Debug / DebugGame / Development / Test / Shipping

The uploader generates an app_build_<appid>.vdf and launches SteamCMD in a visible console so you can complete Steam Guard on first login.

Platforms

PlatformSupportedLibrary
Windows 64-bitYESsteam_api64.dll
macOSYESlibsteam_api.dylib
Linux 64-bit (SteamOS / Steam Deck)YESlibsteam_api.so
ConsolesNOUse platform NDA SDKs
iOS / AndroidNOSteam is not a mobile store

Steam Deck runs the Linux build, or the Windows build via Proton.

Troubleshooting

SymptomCause / Fix
Steam running : NOSteam client not running / not logged in; or Dev App ID unset
Blank SteamID / personaSteam not initialized — see above
SteamAPI_Init() failedStart Steam, confirm Dev App ID, keep "Force App Id For Editor" on
No achievements/stats for app 480Expected — define them under your own App ID
2nd PIE shows not initializedKeep "Keep Alive Between PIE" enabled
Toolbar button missingFully close & reopen the editor (UE4 doesn't hot-reload plugin DLLs)
Upload failsSet the SteamCMD path; complete Steam Guard in the console window
Plugin changes don't applyClose editor, delete Binaries/ + Intermediate/, rebuild, reopen

Log categories: LogSteamPro (runtime), LogSteamProEditor (deploy).