Fallout-4-Discord-Rich-Presence
Live Fallout 4 player state on Discord. One F4SE DLL — old-gen + Next-Gen — fully INI-templated, crash-safe, with per-state small images and dual buttons.
xt0n1
Developer
Preview
How the card renders on Discord — large image is the T-60 power armor helmet, the small image switches with what you are doing in-game:
The default "Iconic" look, fully editable in the INI:
┌─ Fallout 4 ───────────────────────────────┐
│ Lexie • 100% HP • 1,082,076 caps │ ← details (each field toggleable + templated)
│ ⭐ Level 15 • In Pipboy Menu │ ← state (status, location when relevant)
│ 🎮 02:14 elapsed │
└────────────────────────────────────────────┘
Every status the plugin tracks:
| Group | Shows |
|---|---|
| Lifecycle | Launching game · In Main menu · Started a new game · Loading |
| Menus | Pip-Boy · Workshop · Terminal · Barter · Cooking · VATS · Lockpicking · Level-up · Dialogue · Sleep/Wait · Pause |
| World | Exploring • <location> (exterior location name, interior cell) |
| Combat | Fighting <enemy> • <location> |
| Events | Hacked <terminal> · Built <object> (timed, configurable) |
Requirements
| Requirement | Why | Where |
|---|---|---|
Fallout 4 (PC, x64) on 1.10.163, 1.10.984, 1.11.169 or 1.11.191 | The plugin host | |
| F4SE for your runtime (loads the DLL) | Plugin host runtime | |
| Address Library for F4SE Plugins (All-in-One) | Engine address resolution across versions | |
| Discord desktop client (running, logged in) | The RPC pipe lives only in the desktop app |
Then enable Discord → User Settings → Activity Privacy → "Share your detected activities with others" — otherwise the card stays private to you.
Install
Download the latest ZIP from the Releases page, then pick a path below:
- Drag the ZIP into the Vortex window (or
Mods → Drop file here). - Click Install when Vortex detects the FOMOD.
- Step through the installer — the F4SE plugin is mandatory; the post-install steps are read-only notes.
- Enable the mod in
Mods. - Deploy when Vortex prompts.
The plugin lands at Data\F4SE\Plugins\.
- Top-bar Install a new mod from an archive (leftmost CD icon) → pick the ZIP.
- The FOMOD installer opens. Click through; the F4SE plugin is the only mandatory group.
- Activate the mod in the left pane.
- Make sure your profile's executable target is the F4SE loader (
Run f4se_loader.exe) — otherwise the plugin will never load. MO2 handles the virtualData\F4SE\Plugins\mapping for you.
Extract the release ZIP and copy these files into your Fallout 4 install (the in-game Data\ folder, not Documents):
<Fallout 4>\Data\F4SE\Plugins\discord_rich_presence.dll
<Fallout 4>\Data\F4SE\Plugins\discord_rich_presence.ini
<Fallout 4>\Data\F4SE\Plugins\discord_rich_presence_translation.ini
Launch the game once and the INI is generated/loaded.
[!IMPORTANT] If you previously installed another Fallout 4 Discord Rich Presence plugin shipped as
Discord_Presence_F4SE_Remake.dll, delete that DLL — this plugin detects the conflict at load and refuses to send frames while both are present.
Setup
After the install, the card appears on your profile with the default large image. To get the per-state small icons (Pip-Boy, VATS, combat, explore, menu, mainmenu, loading) you register your own Discord application and upload the bundled art. Takes about three minutes the first time.
-
Launch Fallout 4 once so the INI is loaded.
-
Create your Discord application at
discord.com/developers/applications→New Application→ name it (Fallout 4works). -
Upload the art assets under
Rich Presence → Art Assets. The 8 PNGs ship underdist/discord-assets/— filenames become asset keys, keep them as-is:key image shown when fo4-bigT-60 power armor helmet always (large image) icon_exploreRed Rocket Truck Stop exploring the wasteland icon_combatVault Boy tommy gun combat with hostiles icon_pipboyPip-Boy 3000 Mark IV Pip-Boy menu open icon_vatsVault Boy VATS VATS active icon_menuVault Boy bobblehead other menus (workshop, terminal, dialogue…) icon_mainmenuVault 111 door main menu icon_loadingPip-Boy loading screen loading screens -
Set your AppID in
Data\F4SE\Plugins\discord_rich_presence.iniunder[Main]:[Main] AppID = <your 19-digit application id> -
Restart the game. The card appears with the icons switching live.
Full step-by-step with browser screenshots: docs/discord-app-setup.md.
Highlights
- 🧬 One DLL, every runtime. Single binary loads on old-gen
1.10.163and the entire Next-Gen line. The NG address path was reverse-engineered from the binary because the stock Address Library IDs were renumbered (seedocs/DIAGNOSIS.md). - 🎨 Every line is data, not code. A
{token}template engine renders the details and state lines from your INI, so the layout, separators, labels and icons are yours to edit without a rebuild. - 🟢 Per-status small images + up to two profile buttons (
{label, url}pairs); large image stays on the cover art. - 🗣 Full translation side-file — every visible string overridable; empty strings fall back to English.
- 🛡 Crash-safe. Discord missing, web-client only, or killed mid-session never takes the game down; the plugin reconnects on its own and is rate-limit safe (5 frames / 20 s + state-diff coalescing).
- 🔬 Offline test suite. The full config → template → composer → payload pipeline is covered by 74 Catch2 unit tests; layout changes can be verified without opening the game.
Configuration
The INI is created on first launch at Data\F4SE\Plugins\discord_rich_presence.ini. Full key reference: docs/configuration.md. The layout lives in [Format]:
[Format]
sFieldName = {name}
sFieldLevel = ⭐ Level {level}
sFieldHP = 💉 {hp}%
sFieldCaps = 🪙 {caps}
sFieldSeparator = " • "
sLocationConnector = " in "
[Buttons]
sButton1Label = Project page
sButton1Url = https://github.com/xt0n1-t3ch/Fallout-4-Discord-Rich-Presence
Tokens: {name} {level} {hp} {caps} {location} {enemy} {menu} {event}. Empty tokens collapse and their separator is dropped. Wrap values that need edge spaces in quotes.
Build
git clone https://github.com/xt0n1-t3ch/Fallout-4-Discord-Rich-Presence
cd Fallout-4-Discord-Rich-Presence
git clone --depth 1 https://github.com/microsoft/vcpkg.git "$env:USERPROFILE\vcpkg"
& "$env:USERPROFILE\vcpkg\bootstrap-vcpkg.bat" -disableMetrics
$env:VCPKG_ROOT = "$env:USERPROFILE\vcpkg"
cmake --preset flat-ng-release && cmake --build --preset flat-ng-release # the DLL
Tests are offline and need neither the game nor Discord — they cover the whole config → template → composer → payload pipeline (see tests/index.md):
tools\build-flat-ng-debug.bat
tools\ctest-flat-ng-debug.bat
Compatibility
| Runtime | F4SE | Status |
|---|---|---|
1.11.191 (NG, current) | 0.7.7 | Verified in-game |
1.11.169 / 1.10.984 (NG) | 0.7.6 / 0.7.2 | Same NG address path |
1.10.163 (old-gen) | 0.6.23 | Cross-gen path |
Architecture
src/
Plugin/ F4SE entrypoints, the main-thread Update hook, version data
Game/ CommonLibF4-bound readers, the g_UI resolver, diagnostics, NG address IDs
Presence/ Template engine + Composer + PresenceConfig (pure, fully tested)
Discord/ Pipe RAII + frame protocol + state machine + rate limiter (no SDK)
Config/ INI loader + translation side-file (SimpleIni)
Util/ logger, FNV-1a hash, play-time accumulator
tools/re/ reproducible offline binary scanners used to map the NG addresses
Notes on the rewrite
A clean-room rewrite. Loads on next-gen because the renumbered Address Library IDs are resolved through reproducible offline binary scans; resolves the UI singleton by an exact vtable match instead of a now-broken stock ID; reads game state without the ScrapHeap allocation that had crashed the engine; renders the whole presence through a configurable template engine instead of fixed strings; and ships the entire decision pipeline under offline tests so layout changes are verified without opening the game.
Support
Maintained on personal time. If this earned a place in your load order, the sponsor button at the top of the repository links to GitHub Sponsors, Ko-fi and Buy Me a Coffee. Bug reports, repro saves and pull requests are equally welcome.
Credits
- TommInfinite — design reference for the original F4 Discord Rich Presence remake.
- alandtse & Ryan-rsm-McKenzie — CommonLibF4; ianpatt, behippo, purplelunchbox — F4SE.
License
Apache License 2.0 © 2026 xt0n1