# easy-games/airship architecture

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

- Interactive diagram: https://gitdiagram.com/easy-games/airship
- Repository: https://github.com/easy-games/airship

## Overview

Airship is a Unity package for building and running multiplayer games with Luau scripting, authentication, asset/package loading, and editor authoring tools. The runtime tree suggests a player workflow from startup and bundle loading into game scripting and networked play; the editor tree adds script/TypeScript authoring, configuration, and publishing tools. Authentication, analytics, and server hosting are additional capabilities. The README only documents local package setup, and sampled source is incomplete, so links between major runtime stages are shown only where supported rather than assuming a full execution pipeline.

Main entry points: [`Runtime/Code/Luau/LuauCore.cs`](https://github.com/easy-games/airship/blob/main/Runtime/Code/Luau/LuauCore.cs) (Luau runtime), [`Runtime/Code/Http/Public/HttpManager.cs`](https://github.com/easy-games/airship/blob/main/Runtime/Code/Http/Public/HttpManager.cs) (HTTP services), [`Runtime/Code/Bootstrap/ClientBootstrap.cs`](https://github.com/easy-games/airship/blob/main/Runtime/Code/Bootstrap/ClientBootstrap.cs) (Client bootstrap), [`Runtime/Code/Luau/ThreadManager.cs`](https://github.com/easy-games/airship/blob/main/Runtime/Code/Luau/ThreadManager.cs) (Luau threads)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Game runtime"]
  node_startup["Startup"]
  node_client_bootstrap["Client bootstrap<br/>[ClientBootstrap.cs]"]
  node_bundle_loader["Bundle loading"]
  node_bundle_system["Bundles and assets"]
  node_luau_runtime["Luau runtime<br/>[LuauCore.cs]"]
  node_luau_threads["Luau threads<br/>[ThreadManager.cs]"]
  node_luau_api["Unity script API"]
end

subgraph group_authoring["Editor authoring"]
  node_editor_tools["Unity authoring tools"]
  node_typescript["TypeScript tooling"]
  node_publishing["Game publishing<br/>[Deploy.cs]"]
end

subgraph group_services["Identity and services"]
  node_http["HTTP services<br/>[HttpManager.cs]"]
  node_authentication["Authentication<br/>[AuthManager.cs]"]
  node_auth_ui["Login UI"]
  node_analytics["Analytics"]
end

subgraph group_network["Multiplayer"]
  node_network_state["Networked state"]
  node_network_prefabs["Prefab collections"]
  node_mirror["Mirror networking<br/>[NetworkManager.cs]"]
end

node_game_developer(("Game developer"))
node_external_services(("External services"))

node_game_developer -->|"authors game"| node_editor_tools
node_game_developer -->|"runs game"| node_startup
node_luau_threads -->|"calls plugin"| node_luau_runtime
node_luau_runtime -->|"exposes APIs"| node_luau_api
node_network_state -->|"uses networking"| node_mirror
node_authentication -->|"requests services"| node_http
node_auth_ui -->|"submits login"| node_http
node_analytics -.->|"uploads data"| node_external_services
node_publishing -.->|"deploys game"| node_external_services
node_client_bootstrap -.->|"fetches packages"| node_external_services

click node_startup "https://github.com/easy-games/airship/blob/main/Runtime/Code/Bootstrap/AirshipEntryPoint.cs"
click node_client_bootstrap "https://github.com/easy-games/airship/blob/main/Runtime/Code/Bootstrap/ClientBootstrap.cs"
click node_bundle_loader "https://github.com/easy-games/airship/blob/main/Runtime/Code/Bootstrap/ClientBundleLoader.cs"
click node_bundle_system "https://github.com/easy-games/airship/tree/main/Runtime/Code/Bundles"
click node_luau_runtime "https://github.com/easy-games/airship/blob/main/Runtime/Code/Luau/LuauCore.cs"
click node_luau_threads "https://github.com/easy-games/airship/blob/main/Runtime/Code/Luau/ThreadManager.cs"
click node_luau_api "https://github.com/easy-games/airship/tree/main/Runtime/Code/LuauAPI"
click node_http "https://github.com/easy-games/airship/blob/main/Runtime/Code/Http/Public/HttpManager.cs"
click node_authentication "https://github.com/easy-games/airship/blob/main/Runtime/Code/Auth/AuthManager.cs"
click node_auth_ui "https://github.com/easy-games/airship/tree/main/Runtime/Code/CoreUI/LoginHttp"
click node_analytics "https://github.com/easy-games/airship/blob/main/Runtime/Code/Analytics/AnalyticsRecorder.cs"
click node_network_state "https://github.com/easy-games/airship/blob/main/Runtime/Code/Network/StateSystem/AirshipNetworkedStateManager.cs"
click node_network_prefabs "https://github.com/easy-games/airship/blob/main/Runtime/Code/Bundles/NetworkPrefabCollection.cs"
click node_mirror "https://github.com/easy-games/airship/blob/main/ThirdParty/Mirror/Core/NetworkManager.cs"
click node_editor_tools "https://github.com/easy-games/airship/tree/main/Editor/AirshipEditors"
click node_typescript "https://github.com/easy-games/airship/tree/main/Editor/TypescriptServices"
click node_publishing "https://github.com/easy-games/airship/blob/main/Editor/Publish/Deploy.cs"

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_startup,node_client_bootstrap,node_bundle_loader,node_bundle_system,node_luau_runtime,node_luau_threads,node_luau_api toneBlue
class node_editor_tools,node_typescript,node_publishing toneAmber
class node_http,node_authentication,node_auth_ui,node_analytics toneMint
class node_network_state,node_network_prefabs,node_mirror toneRose
class node_game_developer,node_external_services toneIndigo
```

## Components

### Game runtime

- [Startup](https://github.com/easy-games/airship/blob/main/Runtime/Code/Bootstrap/AirshipEntryPoint.cs): `Runtime/Code/Bootstrap/AirshipEntryPoint.cs`
- [Client bootstrap](https://github.com/easy-games/airship/blob/main/Runtime/Code/Bootstrap/ClientBootstrap.cs): `Runtime/Code/Bootstrap/ClientBootstrap.cs`
- [Bundle loading](https://github.com/easy-games/airship/blob/main/Runtime/Code/Bootstrap/ClientBundleLoader.cs): `Runtime/Code/Bootstrap/ClientBundleLoader.cs`
- [Bundles and assets](https://github.com/easy-games/airship/tree/main/Runtime/Code/Bundles): `Runtime/Code/Bundles`
- [Luau runtime](https://github.com/easy-games/airship/blob/main/Runtime/Code/Luau/LuauCore.cs): `Runtime/Code/Luau/LuauCore.cs`
- [Luau threads](https://github.com/easy-games/airship/blob/main/Runtime/Code/Luau/ThreadManager.cs): `Runtime/Code/Luau/ThreadManager.cs`
- [Unity script API](https://github.com/easy-games/airship/tree/main/Runtime/Code/LuauAPI): `Runtime/Code/LuauAPI`

### Editor authoring

- [Unity authoring tools](https://github.com/easy-games/airship/tree/main/Editor/AirshipEditors): `Editor/AirshipEditors`
- [TypeScript tooling](https://github.com/easy-games/airship/tree/main/Editor/TypescriptServices): `Editor/TypescriptServices`
- [Game publishing](https://github.com/easy-games/airship/blob/main/Editor/Publish/Deploy.cs): `Editor/Publish/Deploy.cs`

### Identity and services

- [HTTP services](https://github.com/easy-games/airship/blob/main/Runtime/Code/Http/Public/HttpManager.cs): `Runtime/Code/Http/Public/HttpManager.cs`
- [Authentication](https://github.com/easy-games/airship/blob/main/Runtime/Code/Auth/AuthManager.cs): `Runtime/Code/Auth/AuthManager.cs`
- [Login UI](https://github.com/easy-games/airship/tree/main/Runtime/Code/CoreUI/LoginHttp): `Runtime/Code/CoreUI/LoginHttp`
- [Analytics](https://github.com/easy-games/airship/blob/main/Runtime/Code/Analytics/AnalyticsRecorder.cs): `Runtime/Code/Analytics/AnalyticsRecorder.cs`

### Multiplayer

- [Networked state](https://github.com/easy-games/airship/blob/main/Runtime/Code/Network/StateSystem/AirshipNetworkedStateManager.cs): `Runtime/Code/Network/StateSystem/AirshipNetworkedStateManager.cs`
- [Prefab collections](https://github.com/easy-games/airship/blob/main/Runtime/Code/Bundles/NetworkPrefabCollection.cs): `Runtime/Code/Bundles/NetworkPrefabCollection.cs`
- [Mirror networking](https://github.com/easy-games/airship/blob/main/ThirdParty/Mirror/Core/NetworkManager.cs): `ThirdParty/Mirror/Core/NetworkManager.cs`

### Other components

- **Game developer**
- **External services**

## Connections

- Game developer → Unity authoring tools: authors game
- Game developer → Startup: runs game
- Luau threads → Luau runtime: calls plugin
- Luau runtime → Unity script API: exposes APIs
- Networked state → Mirror networking: uses networking
- Authentication → HTTP services: requests services
- Login UI → HTTP services: submits login
- Analytics → External services: uploads data
- Game publishing → External services: deploys game
- Client bootstrap → External services: fetches packages
