Verification
Use this checklist before releasing DiscordPulse or shipping a game that uses it.
Clean Project Test
- Create a clean Unreal Engine 5.7 Blueprint project.
- Install DiscordPulse under
Plugins/DiscordPulse. - Enable the plugin and restart Unreal.
- Confirm the editor opens without module errors.
- Confirm
Discord Presence Subsystemis available to Blueprint. - Complete the Quick Start.
Repeat with a C++ project if the plugin will be distributed to C++ users.
Canonical Runtime Test
Use:
Standalone play mode
Local Player Controller BeginPlay
Is Local Controller == true
Valid Discord Presence Subsystem
Set Simple PresenceExpected Output Log:
Loaded Discord Social SDK
Discord Presence initialized and connection startedExpected event:
On Discord Activity UpdatedInitialization Tests
| Test | Expected Result |
|---|---|
| Empty Application ID | Invalid Client ID; initialization-failed event fires |
| Non-numeric Application ID | Invalid Client ID |
| Valid ID, Discord open | Initialization returns Success |
| Valid ID, Discord closed, Require Discord Running enabled | Discord Not Running |
| Initialize twice with same ID | Second call returns Success |
| Initialize with a different ID | Subsystem restarts |
| Shutdown twice | Both calls complete without crashing |
Activity Tests
- Initialize with a valid Application ID.
- Call
Set Simple Presence. - Confirm
On Discord Activity Updatedfires. - Confirm the activity appears in Discord.
- Confirm
Get Current Discord Activitymatches the accepted activity. - Test images using known uploaded asset keys.
- Test elapsed time.
- Test a complete button label/URL pair.
- Update only on meaningful game-state changes.
- Clear activity.
Blueprint Lifecycle Tests
| Test | Expected Result |
|---|---|
| Get subsystem from Game Instance Event Init | Returns None; documented unsupported timing |
| Get subsystem from local Player Controller BeginPlay | Valid target |
| Listen server with local-controller guard | Only local controller initializes |
| Dedicated server | Does not initialize DiscordPulse |
| Repeated PIE start/stop | No stale callback or shutdown crash |
Failure Tests
- Call activity before initialization and confirm
Not Initialized. - Use an invalid Application ID and confirm the error event.
- Close Discord after a successful activity update.
- Submit another update and observe error/disconnect behavior.
- Reopen Discord and restart presence.
- Remove the runtime DLL from a test package and confirm clean SDK-load failure.
Invite Tests
Use two Discord accounts when possible:
- Publish party ID, available party size, and join secret.
- Confirm normal activity visibility.
- Accept an invite and confirm
On Discord Join Requested. - Send a join request and confirm
On Discord Join Request Received. - Accept with
Respond To Discord Join Request. - Confirm local dismissal behavior for
NoandIgnore.
Editor Tests
- Standalone play
- New Editor Window PIE
- Listen-server PIE with local-controller guard
- Repeated PIE entry and exit
- Map changes while updating activity
- Editor close while DiscordPulse is active
BuildPlugin Test
Use an output directory outside the source plugin:
Engine\Build\BatchFiles\RunUAT.bat BuildPlugin ^
-Plugin="C:\Source\DiscordPulse\DiscordPulse.uplugin" ^
-Package="C:\PluginPackages\DiscordPulse" ^
-TargetPlatforms=Win64Install the generated package into a clean project and repeat the canonical runtime test.
Packaged Game Test
- Package Win64 Development.
- Confirm
discord_partner_sdk.dllis beside the executable. - Run with Discord open.
- Run with Discord closed.
- Repeat with Shipping.
- Review logs for
LogDiscordPulse.
Release Record
Record for every release:
Plugin version:
Unreal version:
Discord Social SDK version:
Platforms tested:
Blueprint project:
C++ project:
Editor Development:
Game Development:
Game Shipping:
Known limitations: