Discord Rich Presence in pure GDScript. No GDExtension, no DLLs, no Game SDK. One little script, nothing to enable in the editor.
Why and how is this different from other addons ? I made this for my game Ekonia Online because I ship a single binary file, and every existing Godot addon for Rich Presence wraps the Discord Game SDK: several MB of native libraries to put next to your game executable, for a feature that is in fact some JSON on a local pipe. Also, Discord deprecated most of the Game SDK.
Quick start
Copy addons/discord_rich_presence/ into your project, create an application on the Discord Developer Portal, then:
var presence := DiscordRichPresence.new()
presence.app_id = "1234567890123456789"
add_child(presence) # An autoload is the perfect parent: the connection lives as long as the node.
presence.set_activity({
"details": "In the Fungus Cave",
"state": "Level 12",
"timestamps": {"start": int(Time.get_unix_time_from_system())},
"assets": {"large_image": "your_art_asset_key"},
})
The dictionary goes to Discord as-is, so buttons and every future field work without addon changes. The full list of fields is in the Discord doc: https://docs.discord.com/developers/topics/rpc
Platform support
- Windows: yes
- macOS and Linux: yes, bridged through the system
nc - Web, Android, iOS: does nothing, Discord has no RPC on these platforms
You do not need any platform check on your side. Discord being absent is never an error: the node retries every 20s and sends the last activity again after a reconnect.
More
The protocol, the API reference and the four Godot pitfalls this addon works around are in the README: https://github.com/SlayHorizon/discord-rich-presence-godot
On Godot 4.3, use v1.0 (Windows only).
The Godot logo in the icon is by Andrea Calabró, CC-BY 4.0.
Changelog for version v1.2
2026-09-20 12:32:14
No changelog provided for this version.