# ragnarok93/gamenative architecture

> Architecture diagram of the GitHub repository ragnarok93/gamenative, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ragnarok93/gamenative
- Repository: https://github.com/ragnarok93/gamenative

## Overview

GameNative is an Android app for installing and running owned PC games locally, with cloud saves and game-specific configuration. The main workflow is user sign-in and library sync, game installation, launch in a compatibility container, then gameplay through Android input and graphics. Store-specific services cover Steam, Epic, GOG, and Amazon; additional branches provide community configurations, workshop content, mod installation, and cloud saves. The README documents these capabilities, but sampled source is partial, so edges below show only broad documented interactions rather than detailed internal call sequences.

Main entry points: [`app/src/main/java/app/gamenative/MainActivity.kt`](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/MainActivity.kt) (Android app), [`app/src/main/java/app/gamenative/SteamBootstrap.kt`](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/SteamBootstrap.kt) (Steam bootstrap), [`app/src/main/java/app/gamenative/service/SteamService.kt`](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/SteamService.kt) (Steam service), [`app/src/main/java/app/gamenative/service/epic/EpicService.kt`](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/epic/EpicService.kt) (Epic service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_library["Accounts and library"]
  node_app["Android app<br/>[MainActivity.kt]"]
  node_steam["Steam service<br/>[SteamService.kt]"]
  node_epic["Epic service<br/>[EpicService.kt]"]
  node_gog["GOG service<br/>[GOGService.kt]"]
  node_amazon["Amazon service<br/>[AmazonService.kt]"]
  node_api["GameNative API<br/>[GameNativeApi.kt]"]
end

subgraph group_install["Install and extend"]
  node_install["Store installers<br/>[SteamService.kt]"]
  node_workshop["Workshop content<br/>[WorkshopManager.kt]"]
  node_mods["Mod importing"]
  node_modlogic["Mod pipeline"]
end

subgraph group_runtime["Launch and runtime"]
  node_launch["Launch readiness<br/>[LaunchReadiness.kt]"]
  node_bootstrap["Steam bootstrap<br/>[SteamBootstrap.kt]"]
  node_proot["Linux process runtime<br/>[proot.c]"]
  node_native["Native graphics<br/>[vulkan_jni.cpp]"]
end

subgraph group_play["Gameplay support"]
  node_controls["Touch and controller"]
  node_fixes["Game configurations"]
  node_cloud["Cloud saves<br/>[GOGService.kt]"]
end

subgraph group_state["Local state and services"]
  node_db[("App database<br/>[PluviaDatabase.kt]")]
  node_containers["Container storage"]
end

node_user(("Player"))
node_stores(("Game stores"))
node_community(("Community services"))

node_user -->|"uses"| node_app
node_app -->|"signs in and syncs"| node_steam
node_app -->|"syncs library"| node_epic
node_app -->|"syncs library"| node_gog
node_app -->|"syncs library"| node_amazon
node_steam -->|"requests account and games"| node_stores
node_epic -->|"requests account and games"| node_stores
node_gog -->|"requests account and games"| node_stores
node_amazon -->|"requests account and games"| node_stores
node_app -->|"fetches community data"| node_api
node_api -->|"requests configs"| node_community
node_app -->|"starts installation"| node_install
node_install -->|"persists install state"| node_db
node_app -->|"manages subscribed content"| node_workshop
node_app -->|"starts mod import"| node_mods
node_mods -->|"dispatches import work"| node_modlogic
node_app -->|"checks launch readiness"| node_launch
node_launch -->|"prepares game launch"| node_bootstrap
node_bootstrap -->|"runs game process"| node_proot
node_bootstrap -->|"initializes graphics"| node_native
node_app -->|"configures input"| node_controls
node_app -->|"applies game fixes"| node_fixes
node_app -->|"syncs saves"| node_cloud
node_app -->|"manages containers"| node_containers
node_app -->|"reads and writes app data"| node_db

click node_app "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/MainActivity.kt"
click node_steam "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/SteamService.kt"
click node_epic "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/epic/EpicService.kt"
click node_gog "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/gog/GOGService.kt"
click node_amazon "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/amazon/AmazonService.kt"
click node_api "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/api/GameNativeApi.kt"
click node_install "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/SteamService.kt"
click node_workshop "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/workshop/WorkshopManager.kt"
click node_mods "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/NexusModImportService.kt"
click node_modlogic "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/mods/LocalModImportPipeline.kt"
click node_launch "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/launch/LaunchReadiness.kt"
click node_bootstrap "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/SteamBootstrap.kt"
click node_proot "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/cpp/proot/src/cli/proot.c"
click node_native "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/cpp/winlator/vulkan_jni.cpp"
click node_controls "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/gamefixes/GameInputCompatibility.kt"
click node_fixes "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/gamefixes/GameFixesRegistry.kt"
click node_cloud "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/gog/GOGService.kt"
click node_db "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/db/PluviaDatabase.kt"
click node_containers "https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/utils/ContainerStorageManager.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_steam,node_epic,node_gog,node_amazon,node_api toneBlue
class node_install,node_workshop,node_mods,node_modlogic toneAmber
class node_launch,node_bootstrap,node_proot,node_native toneMint
class node_controls,node_fixes,node_cloud toneRose
class node_db,node_containers,node_user,node_stores,node_community toneIndigo
```

## Components

### Accounts and library

- [Android app](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/MainActivity.kt): `app/src/main/java/app/gamenative/MainActivity.kt`
- [Steam service](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/SteamService.kt): `app/src/main/java/app/gamenative/service/SteamService.kt`
- [Epic service](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/epic/EpicService.kt): `app/src/main/java/app/gamenative/service/epic/EpicService.kt`
- [GOG service](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/gog/GOGService.kt): `app/src/main/java/app/gamenative/service/gog/GOGService.kt`
- [Amazon service](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/amazon/AmazonService.kt): `app/src/main/java/app/gamenative/service/amazon/AmazonService.kt`
- [GameNative API](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/api/GameNativeApi.kt): `app/src/main/java/app/gamenative/api/GameNativeApi.kt`

### Install and extend

- [Store installers](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/SteamService.kt): `app/src/main/java/app/gamenative/service/SteamService.kt`
- [Workshop content](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/workshop/WorkshopManager.kt): `app/src/main/java/app/gamenative/workshop/WorkshopManager.kt`
- [Mod importing](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/NexusModImportService.kt): `app/src/main/java/app/gamenative/service/NexusModImportService.kt`
- [Mod pipeline](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/mods/LocalModImportPipeline.kt): `app/src/main/java/app/gamenative/mods/LocalModImportPipeline.kt`

### Launch and runtime

- [Launch readiness](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/launch/LaunchReadiness.kt): `app/src/main/java/app/gamenative/launch/LaunchReadiness.kt`
- [Steam bootstrap](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/SteamBootstrap.kt): `app/src/main/java/app/gamenative/SteamBootstrap.kt`
- [Linux process runtime](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/cpp/proot/src/cli/proot.c): `app/src/main/cpp/proot/src/cli/proot.c`
- [Native graphics](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/cpp/winlator/vulkan_jni.cpp): `app/src/main/cpp/winlator/vulkan_jni.cpp`

### Gameplay support

- [Touch and controller](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/gamefixes/GameInputCompatibility.kt): `app/src/main/java/app/gamenative/gamefixes/GameInputCompatibility.kt`
- [Game configurations](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/gamefixes/GameFixesRegistry.kt): `app/src/main/java/app/gamenative/gamefixes/GameFixesRegistry.kt`
- [Cloud saves](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/service/gog/GOGService.kt): `app/src/main/java/app/gamenative/service/gog/GOGService.kt`

### Local state and services

- [App database](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/db/PluviaDatabase.kt): `app/src/main/java/app/gamenative/db/PluviaDatabase.kt`
- [Container storage](https://github.com/ragnarok93/gamenative/blob/master/app/src/main/java/app/gamenative/utils/ContainerStorageManager.kt): `app/src/main/java/app/gamenative/utils/ContainerStorageManager.kt`

### Other components

- **Player**
- **Game stores**
- **Community services**

## Connections

- Player → Android app: uses
- Android app → Steam service: signs in and syncs
- Android app → Epic service: syncs library
- Android app → GOG service: syncs library
- Android app → Amazon service: syncs library
- Steam service → Game stores: requests account and games
- Epic service → Game stores: requests account and games
- GOG service → Game stores: requests account and games
- Amazon service → Game stores: requests account and games
- Android app → GameNative API: fetches community data
- GameNative API → Community services: requests configs
- Android app → Store installers: starts installation
- Store installers → App database: persists install state
- Android app → Workshop content: manages subscribed content
- Android app → Mod importing: starts mod import
- Mod importing → Mod pipeline: dispatches import work
- Android app → Launch readiness: checks launch readiness
- Launch readiness → Steam bootstrap: prepares game launch
- Steam bootstrap → Linux process runtime: runs game process
- Steam bootstrap → Native graphics: initializes graphics
- Android app → Touch and controller: configures input
- Android app → Game configurations: applies game fixes
- Android app → Cloud saves: syncs saves
- Android app → Container storage: manages containers
- Android app → App database: reads and writes app data
