# 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 %}

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gamelauncher.cloud/help/reference/architecture.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
