Quick Start

Quick Start

This guide creates the smallest reliable Blueprint setup and proves that Discord accepted the activity.

Before You Start

Confirm:

  • DiscordPulse is enabled and Unreal Editor was restarted.
  • Discord desktop is open and logged in.
  • You have the numeric Discord Application ID.
  • Unreal Play Mode is set to Standalone for the first test.

1. Choose The Startup Blueprint

Use the Player Controller class assigned by your Game Mode.

For multiplayer projects, Discord Rich Presence must run only for the local player. A Player Controller provides the Is Local Controller check needed for this.

Do not use Blueprint Game Instance Event Init. In UE 5.7, that event runs before Game Instance Subsystems are created.

2. Create The Startup Flow

Player Controller: Event BeginPlay
  -> Is Local Controller
  -> Branch
       False: stop
       True:
         -> Get Game Instance Subsystem
              Class = Discord Presence Subsystem
         -> Is Valid
              Is Not Valid:
                -> Print String "DISCORD SUBSYSTEM INVALID"
              Is Valid:
                -> Print String "DISCORD SUBSYSTEM VALID"
                -> Continue setup

The Is Valid check is important. An unexecuted Blueprint enum output may still display its default Success value.

3. Bind Diagnostic Events

From the valid subsystem target, bind:

On Discord Initialization Failed
  -> Print Error Message

On Discord Error
  -> Print Error Message

On Discord Activity Updated
  -> Print String "DISCORD ACTIVITY UPDATED"

Bind these before initialization so no asynchronous result is missed.

4. Initialize Discord

Initialize Discord Presence
  ApplicationId = "123456789012345678"
  OptionalSteamAppId = ""
  Auto Register = false
  Require Discord Running = false

Branch on the returned result:

Result == Success
  False -> Print Get Last Discord Error
  True  -> Set Simple Presence

5. Publish The First Activity

Set Simple Presence
  Details = "Playing My Game"
  State = "Main Menu"

The immediate result only confirms local submission. On Discord Activity Updated confirms that Discord accepted the activity.

Complete Flow

Event BeginPlay
  -> Is Local Controller
  -> Branch (True)
  -> Get Game Instance Subsystem (Discord Presence Subsystem)
  -> Is Valid
  -> Bind On Discord Initialization Failed
  -> Bind On Discord Error
  -> Bind On Discord Activity Updated
  -> Initialize Discord Presence(ApplicationId)
  -> Branch: Result == Success
       False -> Print Get Last Discord Error
       True:
         -> Set Simple Presence("Playing My Game", "Main Menu")
         -> Branch: Result == Success
              False -> Print Get Last Discord Error

Expected Output

The Unreal Output Log should include:

Loaded Discord Social SDK
Discord Presence initialized and connection started

Your debug event should print:

DISCORD ACTIVITY UPDATED

If the subsystem is invalid or no activity-updated event fires, use Troubleshooting.

Next Steps