Getting Started

This guide walks you through building Universal Game Launcher from source and running it for the first time.


📦 1. Prerequisites


🛠️ 2. Build and Run

From the repository root:

# Install frontend dependencies
npm install

# Start local development server with Tauri desktop window
npm run tauri:dev

# Build production bundle and desktop installer
npm run tauri:build

Note: The Tauri build embeds the compiled SvelteKit frontend, so a fresh clone must compile the frontend before a bare cargo check. Use the project npm scripts (e.g. npm run check) or execute npm run build first.


🏁 3. First Launch & Discovery

When the application launches, it displays the Dashboard and automatically discovers games installed across all supported storefronts:

  1. Automatic Multi-Platform Scan: On startup, the launcher inspects standard installation paths and registry manifests for all installed clients — Steam, Epic Games Store, GOG Galaxy, Ubisoft Connect, EA App, Xbox / Microsoft Store, Battle.net, itch.io, and Amazon Games.
  2. Library View: Navigate to Library from the top title bar menu. The left sidebar presents your full aggregated games list grouped into collapsible platform and console accordions with Authentic Vector SVG Platform Icons (PlatformIcon.svelte) and quick filters (All, Installed, ★ Favorites).
  3. Dedicated Showcase & Unified Media: Click any title in the sidebar to view its high-resolution hero banner, portrait capsule, consolidated tabbed media showcase (🖼️ Screenshots & Art, 🎬 Trailers with modern Steam Akamai MP4 video streaming, and 🎵 Soundtracks), prominent Play Now launch button, and the ⚙ Manage per-game customization modal.
  4. Plugin Settings & Credentials: Optional credentials (such as SteamGridDB for custom community artwork or IGDB for extended taxonomy) can be configured by clicking Plugin Settings in Settings. Each enabled plugin presents its own dedicated tab with live connection verification.

🔒 4. Safe Non-Invasive Architecture

Universal Game Launcher operates completely non-invasively:

  • Zero External File Writes: The launcher never modifies Steam’s internal files (shortcuts.vdf, cloud-storage-namespace-1.json, or appmanifest.acf) and never edits other client databases.
  • No Client Lockout: You never need to close Steam or any other game launcher. Universal Game Launcher runs concurrently with all official clients safely.
  • Local SQLite Persistence: All user overrides, custom tags, favorite flags, and artwork assignments persist locally in database.sqlite (backed by an in-memory Redis KV tier for sub-millisecond retrieval).

🧪 5. Verification & Testing

Both the frontend and backend have strict type checks, automated tests, and headless CLI verification:

# Verify TypeScript types and Svelte diagnostics
npm run check

# Run Rust unit tests
cargo test --manifest-path src-tauri/Cargo.toml

# Run headless CLI library scan and title verification
./src-tauri/target/debug/universal-game-launcher.exe --cli scan

# Full end-to-end verification suite (check, rust, frontend, build)
node scripts/test.mjs check rust frontend build

➡️ Next Steps