Skip to content

Help code a platform

Wesley edited this page Jun 28, 2026 · 8 revisions

Help code a platform

Most platform work is research: find which files and registry values change between two remembered logins. That research maps into Platforms.json.

Video walkthrough:

Platform guide video

What to find

Account switching uses saved login state:

  • Files and folders in AppData, ProgramData, Documents, or the install folder.
  • Registry keys or values.
  • JSON, SQLite, LevelDB, or config fields that identify the current account.

The goal is to switch from Account A to Account B by restoring local data, without using the platform's logout button.

Compare folders

Best for AppData and LocalAppData configs.

  1. Sign in as Account A with remember-login enabled.
  2. Copy likely folders to a backup folder.
  3. Sign in as Account B.
  4. Compare the live folder with the backup in WinMerge.
  5. Record files that differ or exist on only one side.

Common roots:

  • %AppData%
  • %LocalAppData%
  • %ProgramData%
  • Documents

Compare registry snapshots

  1. Sign in as Account A.
  2. Use RegistryChangesView to create a snapshot.
  3. Sign in as Account B.
  4. Compare the snapshot with the current registry.
  5. Filter by vendor names such as GOG, Epic, or Riot.

Record full key paths, value names, value types, and which values contain account ids or tokens.

Monitor live I/O

Process Monitor shows file and registry access while logging in or out.

Example filters:

Rule Action
Process Name is GameLauncher.exe Include
Operation is TCP Receive Exclude
Operation is TCP Send Exclude

Log in and out two or three times. Look for .json, .cfg, .vdf, .db, leveldb, and HKCU\Software\{Vendor} paths.

Test manually

  1. While Account A is logged in, copy candidate files to BackupA\.
  2. Close the platform completely.
  3. Delete or rename candidate files from the live system.
  4. Start the platform, sign in as Account B, then copy candidates to BackupB\.
  5. Close the platform, restore BackupA, and start it again.

If the launcher opens as Account A, those files are swap candidates. Mark which files are required and which are cache-only.

Find a stable account id

The switcher needs one stable id per account.

Search changed files for:

  • Email address
  • Username
  • Numeric user id
  • JWT fragments
  • Fields named last user, accountId, userId, or similar

Tools:

Document the file path and regex. These become UniqueIdFile and UniqueIdRegex.

Fix a broken platform

Launchers move files after updates.

  1. Open {UserData}/Platforms.json.
  2. Check whether the listed paths still exist.
  3. Re-run folder, registry, or Procmon checks.
  4. Open a GitHub issue with:
    • Platform name and broken version
    • Old paths and new paths
    • Required files for a successful swap
    • Unique id path or regex, if known

Add a platform in JSON

  1. Copy a similar platform block from Platforms.json.
  2. Edit Identifiers, ExeLocationDefault, ExesToEnd, LoginFiles, and the unique id keys.
  3. Read Templated platform guide.
  4. Test through {UserData}/Platforms.custom.json.
  5. Add the SVG icon.
  6. Open a pull request.

Platform icons

Path:

frontend/public/img/platform/{Platform Name}.svg

Requirements:

  • Single merged path
  • id="FG"
  • No hard-coded fill on the path
  • viewBox="0 0 500 500"
  • Expanded outlines, not stroke-only shapes

Go extensions

Use JSON unless the platform needs code to resolve its account id.

Platform File
Rockstar internal/basic/platforms/rockstar.go
EA Desktop internal/basic/platforms/ea_desktop.go
GeForce Now internal/basic/platforms/geforce_now.go

Research-only contributions

If you do not want to open a PR, open an issue with the file and registry lists. A contributor can convert the research to JSON.

Clone this wiki locally