# utkarshdalal/gamenative architecture

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

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

## Overview

GameNative is an Android app for installing and running owned PC games locally, with library access across several stores, cloud saves, compatibility configuration, and touch/controller support. The principal flow is account/library access, game installation, setup in a compatibility container, then launch through the native runtime. The graph includes documented capabilities whose implementations are not represented in the sampled excerpts; those paths and connections are kept broad where the tree or excerpts do not establish exact wiring.

Main entry points: [`app/src/main/java/app/gamenative/MainActivity.kt`](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/MainActivity.kt) (App entry), [`app/src/main/java/app/gamenative/service/download/GameDownloadService.kt`](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/service/download/GameDownloadService.kt) (Download coordination), [`app/src/main/java/app/gamenative/service/gog/GOGService.kt`](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/service/gog/GOGService.kt) (GOG service), [`app/src/main/java/app/gamenative/db/PluviaDatabase.kt`](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/db/PluviaDatabase.kt) (Local game state)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Android app"]
  node_activity["App entry<br/>[MainActivity.kt]"]
  node_preferences["App settings<br/>[PrefManager.kt]"]
  node_library["Game library"]
  node_compat["Known configs"]
  node_controls["Touch and controller"]
  node_db[("Local game state<br/>[PluviaDatabase.kt]")]
end

subgraph group_stores["Store access"]
  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_cloud["Cloud saves<br/>[GOGService.kt]"]
end

subgraph group_runtime["Install and runtime"]
  node_downloads["Download coordination"]
  node_downloader["Store download engines"]
  node_containers["Game containers"]
  node_proot["Linux process runtime"]
  node_bootstrap["Steam bootstrap<br/>[SteamBootstrap.kt]"]
end

subgraph group_native["Native graphics"]
  node_renderer["Vulkan renderer"]
  node_virgl["Virgl renderer<br/>[virgl_server.c]"]
end

node_player(("Player"))
node_storeapis{{"Store platforms"}}
node_androidgpu{{"Android graphics"}}

node_player -->|"uses"| node_activity
node_activity -->|"shows games"| node_library
node_activity -->|"configures"| node_preferences
node_activity -->|"accesses"| node_steam
node_activity -->|"accesses"| node_epic
node_activity -->|"accesses"| node_gog
node_activity -->|"accesses"| node_amazon
node_steam -->|"syncs library"| node_storeapis
node_epic -->|"syncs library"| node_storeapis
node_gog -->|"syncs library"| node_storeapis
node_amazon -->|"syncs library"| node_storeapis
node_steam -->|"stores state"| node_db
node_epic -->|"stores state"| node_db
node_gog -->|"stores state"| node_db
node_amazon -->|"stores state"| node_db
node_steam -->|"registers downloads"| node_downloads
node_epic -->|"registers downloads"| node_downloads
node_gog -->|"registers downloads"| node_downloads
node_amazon -->|"registers downloads"| node_downloads
node_downloads -->|"starts transfers"| node_downloader
node_downloads -->|"updates state"| node_db
node_activity -->|"manages storage"| node_containers
node_player -->|"selects container"| node_containers
node_activity -.->|"applies configs"| node_compat
node_player -->|"operates game"| node_controls
node_bootstrap -->|"starts runtime"| node_proot
node_proot -->|"renders through"| node_renderer
node_proot -.->|"renders through"| node_virgl
node_renderer -->|"uses graphics"| node_androidgpu
node_virgl -.->|"uses graphics"| node_androidgpu
node_gog -->|"syncs saves"| node_cloud
node_cloud -->|"transfers saves"| node_storeapis

click node_activity "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/MainActivity.kt"
click node_preferences "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/PrefManager.kt"
click node_library "https://github.com/utkarshdalal/gamenative/tree/master/app/src/main/java/app/gamenative/data"
click node_compat "https://github.com/utkarshdalal/gamenative/tree/master/app/src/main/java/app/gamenative/data"
click node_controls "https://github.com/utkarshdalal/gamenative/tree/master/app/src/main/java/app/gamenative"
click node_db "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/db/PluviaDatabase.kt"
click node_steam "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/service/SteamService.kt"
click node_epic "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/service/epic/EpicService.kt"
click node_gog "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/service/gog/GOGService.kt"
click node_amazon "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/service/amazon/AmazonService.kt"
click node_downloads "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/service/download/GameDownloadService.kt"
click node_downloader "https://github.com/utkarshdalal/gamenative/tree/master/app/src/main/cpp/gn-download/rust/src/store_dl"
click node_containers "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/utils/ContainerStorageManager.kt"
click node_proot "https://github.com/utkarshdalal/gamenative/tree/master/app/src/main/cpp/proot/src"
click node_bootstrap "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/SteamBootstrap.kt"
click node_cloud "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/service/gog/GOGService.kt"
click node_renderer "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/cpp/winlator/VulkanRendererContext.cpp"
click node_virgl "https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/cpp/virglrenderer/server/virgl_server.c"

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_activity,node_preferences,node_library,node_compat,node_controls,node_db toneBlue
class node_steam,node_epic,node_gog,node_amazon,node_cloud toneAmber
class node_downloads,node_downloader,node_containers,node_proot,node_bootstrap toneMint
class node_renderer,node_virgl toneRose
class node_player,node_storeapis,node_androidgpu toneIndigo
```

## Components

### Android app

- [App entry](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/MainActivity.kt): `app/src/main/java/app/gamenative/MainActivity.kt`
- [App settings](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/PrefManager.kt): `app/src/main/java/app/gamenative/PrefManager.kt`
- [Game library](https://github.com/utkarshdalal/gamenative/tree/master/app/src/main/java/app/gamenative/data): `app/src/main/java/app/gamenative/data`
- [Known configs](https://github.com/utkarshdalal/gamenative/tree/master/app/src/main/java/app/gamenative/data): `app/src/main/java/app/gamenative/data`
- [Touch and controller](https://github.com/utkarshdalal/gamenative/tree/master/app/src/main/java/app/gamenative): `app/src/main/java/app/gamenative`
- [Local game state](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/db/PluviaDatabase.kt): `app/src/main/java/app/gamenative/db/PluviaDatabase.kt`

### Store access

- [Steam service](https://github.com/utkarshdalal/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/utkarshdalal/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/utkarshdalal/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/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/service/amazon/AmazonService.kt): `app/src/main/java/app/gamenative/service/amazon/AmazonService.kt`
- [Cloud saves](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/service/gog/GOGService.kt): `app/src/main/java/app/gamenative/service/gog/GOGService.kt`

### Install and runtime

- [Download coordination](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/service/download/GameDownloadService.kt): `app/src/main/java/app/gamenative/service/download/GameDownloadService.kt`
- [Store download engines](https://github.com/utkarshdalal/gamenative/tree/master/app/src/main/cpp/gn-download/rust/src/store_dl): `app/src/main/cpp/gn-download/rust/src/store_dl`
- [Game containers](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/utils/ContainerStorageManager.kt): `app/src/main/java/app/gamenative/utils/ContainerStorageManager.kt`
- [Linux process runtime](https://github.com/utkarshdalal/gamenative/tree/master/app/src/main/cpp/proot/src): `app/src/main/cpp/proot/src`
- [Steam bootstrap](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/java/app/gamenative/SteamBootstrap.kt): `app/src/main/java/app/gamenative/SteamBootstrap.kt`

### Native graphics

- [Vulkan renderer](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/cpp/winlator/VulkanRendererContext.cpp): `app/src/main/cpp/winlator/VulkanRendererContext.cpp`
- [Virgl renderer](https://github.com/utkarshdalal/gamenative/blob/master/app/src/main/cpp/virglrenderer/server/virgl_server.c): `app/src/main/cpp/virglrenderer/server/virgl_server.c`

### Other components

- **Player**
- **Store platforms**
- **Android graphics**

## Connections

- Player → App entry: uses
- App entry → Game library: shows games
- App entry → App settings: configures
- App entry → Steam service: accesses
- App entry → Epic service: accesses
- App entry → GOG service: accesses
- App entry → Amazon service: accesses
- Steam service → Store platforms: syncs library
- Epic service → Store platforms: syncs library
- GOG service → Store platforms: syncs library
- Amazon service → Store platforms: syncs library
- Steam service → Local game state: stores state
- Epic service → Local game state: stores state
- GOG service → Local game state: stores state
- Amazon service → Local game state: stores state
- Steam service → Download coordination: registers downloads
- Epic service → Download coordination: registers downloads
- GOG service → Download coordination: registers downloads
- Amazon service → Download coordination: registers downloads
- Download coordination → Store download engines: starts transfers
- Download coordination → Local game state: updates state
- App entry → Game containers: manages storage
- Player → Game containers: selects container
- App entry → Known configs: applies configs
- Player → Touch and controller: operates game
- Steam bootstrap → Linux process runtime: starts runtime
- Linux process runtime → Vulkan renderer: renders through
- Linux process runtime → Virgl renderer: renders through
- Vulkan renderer → Android graphics: uses graphics
- Virgl renderer → Android graphics: uses graphics
- GOG service → Cloud saves: syncs saves
- Cloud saves → Store platforms: transfers saves
