# Architecture

Learn how **Game Launcher Cloud** delivers your games to players seamlessly. \
This guide explains the complete journey from uploading a build to players launching your game.

{% hint style="info" %}
**Simple Overview**: We handle all the technical complexity - you just upload your game, and we make sure it reaches your players instantly, anywhere in the world.
{% endhint %}

***

## How It Works: The Complete Flow

### The Developer Journey

{% @mermaid/diagram content="graph TB
Start\[You Have a Game] --> Upload\[Upload Your Game]

```
Upload --> Process[⚙Cloud Processing]
Process --> Compress[🗜Automatic Compression]
Process --> Scan[Virus Scanning]
Process --> CDN[Global CDN Distribution]

CDN --> Configure[Configure Launcher]
Configure --> Brand[Add Logo & Branding]
Configure --> News[Create News]
Configure --> Settings[⚙Set Auto-Update]

Settings --> Distribute[Distribute to Players]
Distribute --> Download[Players Download Launcher]
Download --> Check[Check Latest Version]
Check --> Play[Download & Play]
Play --> AutoUpdate[Auto-Updates]

style Start fill:#4f46e5,stroke:#4338ca,stroke-width:3px,color:#fff
style Upload fill:#10b981,stroke:#059669,stroke-width:2px,color:#fff
style Configure fill:#f59e0b,stroke:#d97706,stroke-width:2px,color:#fff
style Distribute fill:#ec4899,stroke:#db2777,stroke-width:2px,color:#fff
style Play fill:#8b5cf6,stroke:#7c3aed,stroke-width:3px,color:#fff" %}
```

**Simple Process**

Upload once → We distribute globally → Players download from nearest server → Auto-update forever

***

## The Player Experience

### What Happens When a Player Opens Your Launcher?

{% @mermaid/diagram content="stateDiagram-v2
\[\*] --> LauncherStarts: Player Opens Launcher
LauncherStarts --> ConnectAPI: Connect to Cloud API
ConnectAPI --> CheckAuth: Verify Authentication
CheckAuth --> FetchConfig: Fetch Configuration
FetchConfig --> VersionCheck: Compare Versions

```
VersionCheck --> UpToDate: Local = Cloud Version
VersionCheck --> UpdateAvailable: New Version Found

UpToDate --> ShowNews: Display News Feed
UpdateAvailable --> DownloadUpdate: Download From CDN

DownloadUpdate --> VerifyFiles: Hash Verification
VerifyFiles --> Install: Extract & Install
Install --> ShowNews

ShowNews --> ReadyToPlay: Player Clicks Play
ReadyToPlay --> LaunchGame: Start Game Process
LaunchGame --> [*]: Player Enjoys Game" %}
```

**What the launcher does:**

* Connects to our secure API
* Downloads your custom branding and appearance
* Checks what version of the game is installed
* Shows your latest news and announcements

**Smart Update Detection:**

* Compares local game version with latest cloud version
* Only downloads files that changed (delta patching)
* Shows download progress with speed and ETA
* Verifies file integrity after download

**Optimized Downloads:**

* Player automatically connects to closest server
* Maximum download speed with CDN
* Resume capability if connection drops
* Background downloads while browsing news

**Launch Process:**

* Quick file integrity check
* Launch with custom parameters (if configured)
* Monitor game process
* Report session analytics (playtime, crashes)

{% @mermaid/diagram content="sequenceDiagram
participant P as Player
participant L as Launcher
participant API as Cloud API

```
P->>L: Clicks "Play" Button
L->>API: Verify Game Files
API-->>L: Downloads/Patches Files
L-->>L: Game Process Started
L->>API: Track Session Start


P->>L: Closes Game
L->>API: Report Session (45 min)
API->>API: Update Analytics" %}
```

***

## Platform Architecture

### Simple System Overview

{% @mermaid/diagram content="graph TB
subgraph Players\["YOUR PLAYERS"]
Desktop\[Desktop Launchers<br/>Windows / Mac / Linux]
end

```
subgraph API["GAME LAUNCHER CLOUD API"]
    Auth[Authentication &<br/>User Management]
    Builds[Build Management &<br/>Version Control]
    News[News & Content<br/>Delivery]
    Analytics[Analytics &<br/>Tracking]
end

subgraph Storage["DATA STORAGE"]
    direction LR
    DB[(PostgreSQL<br/>Database<br/>Railway)]
    CDN[Cloudflare R2<br/>File Storage<br/>Global CDN]
end

Desktop -->|HTTPS/TLS| API
API -->|Query/Store| DB
API -->|Upload/Retrieve| CDN
Desktop -->|Fast Download| CDN

style Desktop fill:#8b5cf6,stroke:#7c3aed,stroke-width:2px,color:#fff
style API fill:#3b82f6,stroke:#2563eb,stroke-width:2px,color:#fff
style DB fill:#10b981,stroke:#059669,stroke-width:2px,color:#fff
style CDN fill:#f59e0b,stroke:#d97706,stroke-width:2px,color:#fff" %}
```

**Frontend Layer**

Angular 19 web dashboard with TypeScript, Tailwind CSS, and reactive signals

**Backend Layer**

ASP.NET 10 REST API with C#, hosted on Linode with auto-scaling

**Database Layer**

PostgreSQL on Railway with automatic backups and JSON support

**Storage Layer**

Cloudflare R2 with global CDN for lightning-fast downloads worldwide

***

## Technology Stack

### What Powers Game Launcher Cloud

| Component             | Technology              | Why We Use It                                  |
| --------------------- | ----------------------- | ---------------------------------------------- |
| **Backend API**       | ASP.NET 10 (C#)         | Fast, reliable, cross-platform server          |
| **Database**          | Railway - PostgreSQL    | Powerful relational database with JSON support |
| **File Storage**      | Cloudflare R2           | Global CDN for lightning-fast downloads        |
| **Web Dashboard**     | Angular 19 + TypeScript | Modern, reactive admin interface               |
| **Desktop Launchers** | Avalonia C# .NET        | Excellent performance on Windows/Mac/Linux     |
| **VPS**               | Linode Akamai           | Creating patches and store the Backend         |

{% hint style="success" %}
**All managed for you**: We handle servers, scaling, backups, and security so you can focus on your game.
{% endhint %}

***
