This simple library demonstrates how one may integrate Discord's rich presence to their application (e.g. for game Lineage 2).
- Microsoft Visual C++ Redistributable 2015-2022 x64
- in case you don't want your users to install this package you may statically link it:
- open
L2DiscordPresence (project) properties
- select
Configuration -> Release
&Platform -> Win32
- go to
C/C++ -> Code Generation
- select
Runtime Library -> Multi-threaded (/MT)
- press
Ok
- open
- in case you don't want your users to install this package you may statically link it:
- navigate to Discord Developer Portal - Application:
- if you've already created Discord app => open it there & skip other steps in this section
- otherwise create new discord application:
- press
New Application
in the bottom right corner of the page - set some
Name
for your application (TestAppDemo
in the preview). E.g. server name/website likesoverygoodserver.org
- read & agree to their terms, press
Create
- you'll be redirected to your new Discord app
- press
- open
OAuth2 -> General
:- inside
Redirects
section pressAdd Redirect
- fill new field with
http://127.0.0.1
- press
Save Changes
in the bottom half of the page
- inside
- open
Rich Presence -> Art Assets
(you may skip this step in case you don't need any pics for your application):- press
Add Image(s)
& select some image(s) (minimum image resolution is 512x512) you wish to use for your application - set some name(s) for your image(s)
- press
Save Changes
in the bottom half of the page - THERE'S A CATCH: due to caching on the Discord's servers your image(s) may disappear (e.g. if you refresh this page). Don't panic and try to add them again, it's okay. Wait for a while (~5 mins) and they'll appear on their own
- press
- now you are ready to go
- clone this repo
- open Visual Studio 2022 (v143 toolset; Win 10.0+ SDK) solution
L2DiscordPresence.sln
- open
L2DiscordPresence/main.cpp
- set
APP_ID
to your Discord's application ID, which you may find in Discord Developer Portal - Application - customize acitivity message in function
updateActivity
(you may comment outAssets
andTimestamps
sections if you don't want to display them):- look at the preview in the description
TestAppDemo
= name of your Discord applicationvery details
= first row of text (activity.details
)such state
= second row of text (activity.state
)big pic
= name of the Art Asset from your Discord application (assets.large_image
)hover text for big pic
= some additional text when you hover cursor over it (assets.large_text
)small pic
= name of the Art Asset from your Discord application (assets.small_image
)hover text for small pic
= some additional text when you hover cursor over it (assets.small_text
)
- set
- build project
L2DiscordPresence
withRelease
configuration forx86
platform - grab built
L2DiscordPresence.dll
(from$(OutDir)
, e.g.bin/VS_L2DiscordPresence_Release-Win32
) with its dependencydiscord_game_sdk.dll
(usedv3.2.1
from Discord Developer Portal - Docs) - inject/import
L2DiscordPresence.dll
somehow to the target application- if you have access to source code of the target application - simply link this dll & call
Anchor
somewhere - in case you don't (e.g. for game Lineage 2) - it's up to you how you manage to do it
- if you have access to source code of the target application - simply link this dll & call
- launch Discord app, then launch the target application & you should see customized activity message "Playing a game"
- you have to be online in Discord
Display currenct activity as a status message
inSettings -> Activity Privacy -> Activity Status
should be enabled
In this repo for game Lineage 2 (tested on Essence 362p) you may find modified ogg.dll
which imports Anchor
function from L2DiscordPresence.dll
, thus triggering DllMain
. So you can copy ogg.dll
, L2DiscordPresence.dll
and discord_game_sdk.dll
to your client's system folder (replace ogg.dll
) and that's it.