Skip to content

Online Subsystem Blueprintable - Setup Guide

This guide walks you through setting up Online Subsystem Blueprintable for your project, including platform-specific configuration for Steam and Epic Online Services.

Basic Installation

  1. Download the Plugin

    Get the latest version from your Dashboard

  2. Install to Project

    Extract to YourProject/Plugins/OnlineSubsystemBlueprintable/

  3. Enable Required Plugins

    In Edit → Plugins, enable:

    • Online Subsystem Blueprintable
    • Online Subsystem (if not already enabled)
    • Your target platform plugin (e.g., Online Subsystem Steam)
  4. Activate License

    Go to Edit → Project Settings → Plugins → gameDNA Online Subsystem Blueprintable Enter your license key and click Activate

  5. Restart Editor

    Restart Unreal Editor to ensure all modules load correctly

Project Configuration

DefaultEngine.ini

Add platform configuration to Config/DefaultEngine.ini:

[OnlineSubsystem]
DefaultPlatformService=Steam
[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
; Replace 480 with your actual Steam App ID for production
[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

Steam Setup

Prerequisites

  • Steam account with Steamworks access
  • Steam App ID (use 480 for testing)
  • Steamworks SDK (included with UE Steam plugin)

Step-by-Step Setup

  1. Get Steam App ID

  2. Configure Steam Settings

    In Config/DefaultEngine.ini:

    [OnlineSubsystemSteam]
    bEnabled=true
    SteamDevAppId=480
    bRelaunchInSteam=false
    SteamAppId=480
    GameServerQueryPort=27015
    bVACEnabled=true
    GameVersion=1.0.0.0
  3. Create steam_appid.txt

    Create steam_appid.txt in your project root containing just your App ID:

    480
  4. Configure Achievements (Optional)

    In Steamworks dashboard, define your achievements. The plugin will query them at runtime.

  5. Test Connection

    Create a test Blueprint:

    Event BeginPlay
    → Initialize Online Subsystem (Platform: "Steam")
    → Print: Is Initialized

    Run with Steam client open. Should print “true”.

Steam-Specific Nodes

NodeDescription
Get Steam IDReturns the local player’s Steam ID
Get Steam Persona NameReturns the Steam display name
Open Steam OverlayOpens Steam overlay to a specific page
Get Steam AvatarReturns player’s Steam avatar as texture
Is Steam RunningChecks if Steam client is active

Epic Online Services Setup

Prerequisites

  • Epic Games account
  • EOS Developer Portal access
  • Product, Sandbox, and Deployment configured

Step-by-Step Setup

  1. Create EOS Product

    Visit dev.epicgames.com/portal

    • Create new product
    • Note your Product ID, Sandbox ID, Deployment ID
    • Create a Client under Product Settings
  2. Configure Credentials

    In Config/DefaultEngine.ini:

    [OnlineSubsystemEOS]
    bEnabled=true
    [/Script/OnlineSubsystemEOS.EOSSettings]
    ProductId=prod_xxxxxxxxxxxxxxxx
    SandboxId=sandbox_xxxxxxxxxxxxxxxx
    DeploymentId=deploy_xxxxxxxxxxxxxxxx
    ClientId=xyza7891234567890abcdef
    ClientSecret=your-client-secret-here
    ; Auth scopes
    ScopeFlags=BasicProfile,FriendsList,Presence
  3. Configure Login Methods

    In EOS Developer Portal, enable desired login methods:

    • Epic Account (Epic Games Launcher users)
    • Device ID (anonymous, great for initial testing)
    • External (Steam, PlayStation, etc.)
  4. Test Connection

    Create a test Blueprint:

    Event BeginPlay
    → Initialize Online Subsystem (Platform: "EOS")
    → Login with Device ID
    → On Success: Print "EOS Connected!"

EOS-Specific Nodes

NodeDescription
Login with Epic AccountOAuth login via Epic
Login with Device IDAnonymous device-based login
Login with ExternalLogin using Steam/console credentials
Get EOS Product User IDReturns the PUID
Get EOS Epic Account IDReturns Epic account ID if linked

Runtime Platform Switching

One powerful feature is switching platforms at runtime:

// Check available platforms
Get Available Online Subsystems
→ For Each: Print Platform Name
// Switch to a different platform
Switch Online Subsystem (New Platform: "EOS")
→ On Success:
→ Login with appropriate method
→ On Failure:
→ Print Error Message

Blueprint Setup

Creating a Login Manager

  1. Create Blueprint

    Content Browser → Blueprint Class → Actor → Name: BP_OnlineManager

  2. Add Variables

    • IsInitialized (Boolean)
    • IsLoggedIn (Boolean)
    • CurrentUserId (String)
    • CurrentDisplayName (String)
  3. Initialize on Begin Play

    Event BeginPlay
    → Initialize Online Subsystem
    → Bind: On Initialize Complete
    On Initialize Complete (Success)
    → Set IsInitialized = Success
    → Branch: Success?
    → True: Call Custom Event "DoLogin"
    → False: Print "Failed to initialize: " + Error
  4. Create Login Function

    Custom Event: DoLogin
    → Login With Platform Credentials
    → Bind: On Login Complete
    On Login Complete (Success, UserId, Error)
    → Set IsLoggedIn = Success
    → Branch: Success?
    → True:
    → Set CurrentUserId = UserId
    → Get Player Display Name → Set CurrentDisplayName
    → Print "Welcome, " + CurrentDisplayName
    → False:
    → Print "Login failed: " + Error
  5. Create Public Interface

    Function: GetFriendsList
    → Branch: IsLoggedIn?
    → True: Query Friends List → Return Result
    → False: Return Empty Array
    Function: UnlockAchievement (Input: AchievementId)
    → Branch: IsLoggedIn?
    → True: Unlock Achievement (AchievementId)
    → False: Print "Must be logged in"

Best Practices

  1. Single Manager Instance

    Use a Game Instance subsystem or singleton pattern to ensure only one Online Manager exists.

  2. Handle Disconnections

    Bind to OnConnectionStatusChanged to handle network issues:

    On Connection Status Changed (NewStatus)
    → Branch: NewStatus == "Connected"?
    → False: Show "Connection Lost" UI
  3. Cache Data

    Friends lists and achievements don’t change frequently. Cache results and refresh periodically:

    // Refresh friends every 60 seconds
    Event BeginPlay
    → Set Timer by Function Name ("RefreshFriends", 60.0, true)
  4. Graceful Degradation

    Always have fallback behavior if online features fail:

    Function: SaveGame
    → Try Cloud Save
    → On Failure: Fall back to Local Save

Troubleshooting

Common Issues

IssueSolution
”Steam not running”Ensure Steam client is open
”Invalid App ID”Check steam_appid.txt exists and has correct ID
EOS login failsVerify all credentials in DefaultEngine.ini
Achievements not appearingCheck they’re published in platform dashboard
Friends list emptyEnsure proper scopes/permissions are configured

Debug Logging

Enable verbose logging:

[Core.Log]
LogOnline=Verbose
LogOnlineSubsystemBlueprintable=Verbose
LogOnlineSession=Verbose

Check logs in Window → Developer Tools → Output Log.

Next Steps