Skip to content

🕹️A little note, There are changes on Orbs quest detection mechanism on some games #48

Description

@markterence

A little note

Heads up: this is a bit of a long read and I did not fully proof read so sentences/wording may be hard to understand or may have spelling errors.

March 15, 2026

Hello everyone, I am back for a while checking the issues, had to be real... it's overwhelming, as you may have clearly noticed that I had been inactive on this repo for a long long while, and I will say it... 😅

I had been busy on IRL work (centralizing auth system) and got "hooked" on the games like Arc Raiders, Monster Hunter Wilds's Title Update 4, played KCD1 (Kingdom Come Deliverance) for the first time, then Windrose Demo, and many other games like Endfield... and maybe many more.

It got me hooked for many months that I become: sleep-work-game night and planned my day-offs to: sleep-and-game💀. That's all.

Although the last October update (it was October right?) on this tool has been a little useful for a while, I was coding on it a bit on refactoring stuffs when I boot on Windows (I use Linux EndeavourOS+JaKool's Hyprland config as daily-driver for work and gaming stuff I rarely boot on my Windows 11 , but this repo is easier to code in Windows because of the Exe stuff), and then some updates came out on Discord's end which I did expected to happen. they changed on how some quests work and it may be on a rollout, they know the tricks

Also, thanks to @adamhlt and for everyone for assisting in issue discussions and providing helpful guidance to other users and those who provide questions.
Also to the gamers out there hahaha. I am just reading a bunch of issues and comments right now :) ahaha, welp ¯\\_(ツ)_/ sheet happens hahaha. it depends how easy to trick the new quest detection mechanism or if it can be done with less effort or better "can it be done with zero or less risk".

As for the development of this tool, I will be continuing to work this as I also use it myself (if i find time and gaming wont interfere, I also had other hobby projects that I want to explore too), however with the changes on how Discord is doing the game detection (Which is for sure will change a lot as Discord Orb quest is one of their marketing/partner tool, pretty sure companies are paying on quests as an Ad space.), it will be a bit of a problem and development may pause for a while until we can figure out how to complete them without actually having do download big big games or maybe not able to run games because of not meeting the system requirements.

💨cough... cough, Crimson Desert is almost there... I want will to play it. 🤦


What has changed on how discord doing it?

Discord still seems to base on the executable, but on top of that it does another layer of checks. (A simple dummy exe or RPC wont do)

I looked up into the Detectable JSON that Discord was using and most new games/apps no longer ship with the executables field. Some games still do ship with the executables field, but most of them and other new ones will probably don't have it. This is a big change on how the game detection works and quest completion, and it is a bit of a problem for the tool as it relies on the executables field to do the "faking" of the game executable.

Image

Simple tool I ran locally, which I use to inspect gamelist and it's metadata obtained from discord. ( I will upload code to public too and a host it online, but needs performance improvements first.)

What does that mean?... It means that the game detection is no longer "directly" looking up into the executable path of the game. This lead me to question... "Where?" and "How?".

@adamhlt also has pointed that on their comment here: #40 (comment) and here #40 (comment), and here as well #45 (comment) which is what is happening right now as Discord updated how Orbs quest is being detected.

Also there is a rare case #23 (comment) where discord did not include the executable name and the other variation of the game worked.


The app is currently using the available fields in a gamelist that was obtained from Discords resources (API), basically we fetch a gamelist from Discord directly, and there is around 23000+ games on that list at this time of writing, so when Discord didn't provide the exe's, there will be no exe's to fake/simulate. So here what I can tell right now based on my observation and what can or could happen on how Discord may change the detection mechanism when doing the Orbs quest.

Discord is changing, I imagine and predicted (hope I was wrong as I have no factual sources) but my observation tells me that..., there will be a time where a game will have direct integration through Discord Quest, like there will be a baked SDK inside the game itself and will interact with Discord on the server-side, either though the Social SDK https://docs.discord.com/developers/discord-social-sdk/getting-started or the Activities API https://docs.discord.com/developers/activities/overview making some circumvention hard or impossible.

Steam game (Workarounds)

  1. I am not well versed on Steam's folder structure, so the outline below may not provide some exact details on where to get what, specially the main exe file.
  2. I mainly use Steam to get my games because of regional pricing on Video Games and it's not that slow (so exclusive quest that are only integrated on other store platforms like XBOX PC, Epic, etc. that can't be done with a dummy EXE may be impossible, but as someone who want to complete discord quest, hopefully there are other people in the internet that will share how :))

These are manually done. If you need a dummy exe, just copy the dummy exe, it's on the ./data folder along the discord-quest-completer.exe. You can copy any of these ./data/discord-quest-completer-dummy.exe or ./data/src-win.exe and rename them to match the exe that the game on steam you want to simulate.

Image

Right now the new detection mechanism is complicated as it now integrates with the Distribution platform such as Steam (Which right now can still have a workaround, however modification is now heavy as it needs a little spoofing on the Steam's acf file).

I provided some outline on how it works manually below, so we can get an idea on how it actually happens. This information is expanded from a discussion on Reddit1.

What you need:

  • Windows 11 (maybe 10 can work but I am not sure)
  • Steam must be installed.
  • Steam acf file must be present, which is located in C:\Program Files (x86)\Steam\steamapps\ folder (default).

What I tried that worked (as of 2026, March 15):

  1. The quest progress will start counting even if Steam is closed.
  2. Using the dummy executable will work.
  3. Dummy executable and game folder must be on the Steam installation directory, which is C:\Program Files (x86)\Steam\steamapps\common\ by default.
  4. Any acf file can work, but make sure to edit the main fields such as appid, name, and installdir to match the real game's metadata on Steam.
  5. You can run the dummy executable directly without running Steam or running it from the Steam library (mabye its just on me, but the quest progress moves even if Steam is not open). Just make sure that the dummy executable is in the correct folder and the acf file is properly edited.

Example step by step.

(Optional. But you want to disable automatic downloads on Steam, this is just a measure if Steam automatically fixes the acf files.)

Image
  1. Quickly go the installation directory of Steam games, which is C:\Program Files (x86)\Steam\steamapps\common\ by default. For my case, I have a custom installation directory, so I will go to D:\Games\Steam\steamapps\common\.
Image
  1. Create the acf file in the steamapps folder. The filenmae format is: appmanifest_APPID.acf, replace APPID with the game's Steam AppID. For example, for Marathon, the AppID is 3065800, the file name should be appmanifest_3065800.acf. You can find the game's AppID on SteamDB. That's how I manually get it for now.

  2. Create the folder of the game you want, for example, Marathon (it must be correct, since discord no longer gives it on some games, we had to guess or find it from other sources manually like SteamDB2 ). SteamDB also prodives info on the install dir name.

  3. Put the dummy executable in the game folder, for example, Marathon/Marathon.exe for Marathon.

NOTE: I obtained the exe name from the Depot and looked for .exe (https://steamdb.info/depot/3065801/), later I found out that there is https://steamdb.info/app/3065800/config/ which provides default launch options for a steam game haha

Image
  1. Try and Test, run the exe directly, as for some reason this happened on me if I try to launch it within the Steam client, so you need to start the exe on the folder itself.
Image

Snippet of acf file

This snippet is from Path of Exile but the appid in this example is 3065800 which is for Marathon, so you can edit the name and installdir to match the real game and game folder.

For what I know, SteamDB also provides the installdir field when you check the game their site.

"AppState"
{
	"appid"		"3065800"
	"universe"		"1"
	"LauncherPath"		"C:\\Program Files (x86)\\Steam\\steam.exe"
	"name"		"The name of the game"
	"StateFlags"		"6"
	"installdir"		"The folder name of the game"
	"LastUpdated"		"1765561425"
	"LastPlayed"		"1765481714"
	"SizeOnDisk"		"59134564089"
	"StagingSize"		"0"
	"buildid"		"21157139"
	"LastOwner"		"21157139"
	"DownloadType"		"4"
	"UpdateResult"		"0"
	"BytesToDownload"		"199982468"
	"BytesDownloaded"		"0"
	"BytesToStage"		"0"
	"BytesStaged"		"0"
	"TargetBuildID"		"21676404"
	"AutoUpdateBehavior"		"0"
	"AllowOtherDownloadsWhileRunning"		"0"
	"ScheduledAutoUpdate"		"1769724695"
	"InstalledDepots"
	{
		"238961"
		{
			"manifest"		"179342197692768044"
			"size"		"58883804081"
		}
		"238962"
		{
			"manifest"		"5817941124950561902"
			"size"		"250760008"
		}
	}
	"UserConfig"
	{
		"language"		"english"
	}
	"MountedConfig"
	{
		"language"		"english"
	}
}

Chance of automating the Steam workaround?

I could experiment on automating it.. However it does need to touch the user's steam game installation folder (like what if it corrupted their steam folder or it automatically downloaded a big free-to-play game or a game that the user don't want to install on Steam, since we are dealing with the acf files 😄).

So, I still want to find ways to isolate it from the user's real Steam games folder, and hope it gets the quest detected.

Also, it will be harder to test as quests that can't be completed with the simple dummy exe trick, are few right now and there might be more of it in next coming days... but the proofing the workaround and providing it as automated can't be delivered on time. (There may be other existing tools that can do this)

Discord internal API request

As far as I can tell, this "can't" be bypassed as payloads being sent are signed, meaning editing the human readable JSON payload and sending it to Discord's API won't work. This also falls under "Self-botting" and is against Discord's TOS, also I am not recommending anyone to do this as this is one of the earlier methods that other people use (Inspect Element and paste some code). I will not be providing any code snippet for this as it is risky, mostly for non-technical users, however, I will provide some information on how I think it works.

  • This maybe same as their old implementation but when a quest is started, it sends a request to Discord's API. /api/v9/activities with the following interesting payload:

First of all, HTTP Headers

Header Value Example Description
authorization REDACTED This is the user's Discord session. Anyone who have this can impersonate the user and do anything that the user can do, so be careful with this. This is the reason some of your Discord friends got hacked and sends random messages or worse. (They probably pasted some code on Inspect Element or used sus extensions and bada-bim bada-boom, they got hacked. Free Steam Gift Cards Claim Now!, you know it.)
x-super-properties REDACTED I don't know, but it is shaped like a JWT/base64 token (Its a long characters), purpose is unknown.
x-installation-id 1451409609632911453.xxxx-yyyy This got me curious, but this is in format of app_id.signature that is probably used for validating the request to prevent spoofing. I dont know how they signed the x-installation-id, but it is similar on normal HMAC or signed opaque tokens work

Next is the Request body, which is in JSON format.

// I was checking out the quest for Apex Legends
{
  "application_id": "542075586886107149",
  "token": null,
  "duration": 0,
  "share_activity": true,
  "closed": false,
  "exePath": "apex legends/r5apex.exe",
  "voice_channel_id": null,
  "session_id": "REDACTED",
  "media_session_id": null
}

If successfully forging/recreating this request (assuming the only key is to properly sign the x-installation-id and matching the request body), the quest will start and progress will begin even without using any dummy executable.

Related Issues/Discussions

Footnotes

  1. https://www.reddit.com/r/DiscordQuests/comments/1rhvwn9/method_for_completing_the_quests_for_marathon_and/

  2. https://steamdb.info/

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions