-
Notifications
You must be signed in to change notification settings - Fork 4
10 game scanning
Peterson Fernandes edited this page Aug 9, 2026
·
2 revisions
Automatic detection of games from modern PC storefronts. Related: 07 — Core Services · 11 — Bundled Tools
SimpleLauncher\Services\GameScan\GameScannerService.cs
-
ScanForStoreGamesAsync(:77-97): ensures the "Microsoft Windows" system exists (roms\Microsoft Windows+ images;FileFormatsToSearch = url, lnk, bat; existing system paths reused —:99-170), then runs all scanners in parallel (Task.WhenAll,:87-89). -
IgnoredGameNames(:28-41): Steamworks Common Redistributables, Unreal Engine, Fab UE Plugin, Quixel Bridge, DirectX, Google Earth VR, Spacewar, PC Health Check, Rockstar Games Launcher, Battle.net, Ubisoft Connect. -
Image handling:
TryDownloadImageFromApiAsync(:180-258,GameImageClient, 2 attempts with 5 s retry),FindAndSaveGameImageAsync(:269-293),ExtractIconFromGameFolderAsync(:303-332),FindMainExecutableheuristics (:334-379: name match → contains → largest non-setup/launcher/unins exe),TryGetExeFiles(:381-399, returns null instead of throwing when the folder vanished between theDirectory.Existscheck and enumeration — Microsoft StoreWindowsAppsrace). -
Interface:
IGamePlatformScanner.ScanAsync(GameScannerService, ILogger, windowsRomsPath, windowsImagesPath, ignoredGameNames)— single method, one class per storefront.
| Scanner | Data source | Output |
|---|---|---|
ScanAmazonGames |
SQLite %LOCALAPPDATA%\Amazon Games\Data\Games\Sql\GameInstallInfo.sqlite (read-only) |
.url → amazon-games://play/{id}
|
ScanBattleNetGames |
registry uninstall keys, UID regex Battle.net.*--uid=(.*?), BNetAppDef InternalId→name map |
.url → battlenet://{uid}; classics get .bat launching the exe |
ScanEaGames |
registry HKLM\SOFTWARE\WOW6432Node\Electronic Arts\EA Core\Installed Games
|
.url → origin2://game/launch?offerIds={contentId}
|
ScanEpicGames |
JSON LauncherInstalled.dat (preferred) or Manifests\*.item fallback; filters UE_/Falcon/plugins/editors/engines/DLC |
.url → com.epicgames.launcher://apps/{app}?action=launch&silent=true
|
ScanGogGames |
registry uninstall keys (Publisher GOG.com); DLC via goggame-{id}.info JSON RootGameId
|
.bat launching primary PlayTasks FileTask exe |
ScanHumbleGames |
JSON %APPDATA%\Humble App\config.json → game-collection-4
|
.url → humble://launch/{machineName}
|
ScanItchioGames |
itch apps folder + .itch.toml [[actions]]; pretty name from exe ProductName
|
.bat launching first action exe |
ScanMicrosoftStoreGames |
PowerShell Get-StartApps/Get-AppxPackage (30 s timeout) + game-classification API; logo extraction |
.bat → start "" "shell:AppsFolder\{AppId}"
|
ScanRockstarGames |
registry uninstall regex + RockstarGameDef TitleId map |
.url → rockstargames://launch/{titleId}
|
ScanSteamGames |
registry SteamPath + libraryfolders.vdf (ISteamVdfParser) + appmanifest_*.acf + sourcemods\gameinfo.txt
|
.url → steam://run/{appId}; mods steam://run/{baseAppId}//-game "{mod}"; copies Steam artwork |
ScanUplayGames |
registry HKLM\SOFTWARE\Ubisoft\Launcher\Installs (32 & 64-bit views) |
.url → uplay://launch/{gameId}
|
IconExtractor (Services\GameScan\IconExtractor.cs): P/Invoke icon extraction → PNG files for store-game shortcuts (used when the cover API has no image).
- 01 — Overview (feature list)
- 07 — Core Services
- ManualTests.md §9 — manual verification checklist for the scanners
- Home
- 01 Overview
- 02 Projects And Solution
- 03 Quickstart
- 04 Architecture
- 05 Configuration
- 06 Systems And Launch
- 07 Core Services
- 08 Ui Layer
- 09 Retroachievements
- 10 Game Scanning
- 11 Bundled Tools
- 12 Data Formats
- 13 Logging And Debug
- 14 Testing
- 15 Development
- 16 Updater
- 17 Release Notes
- 18 Emulator Parameters
- Manual Tests
- Parameters