# devwithpushkar/orbit-beyond-the-unknown architecture

> Architecture diagram of the GitHub repository devwithpushkar/orbit-beyond-the-unknown, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/devwithpushkar/orbit-beyond-the-unknown
- Repository: https://github.com/devwithpushkar/orbit-beyond-the-unknown

## Overview

ORBIT is a cinematic spacecraft and planetary-exploration game. The main player journey is to commission a ship, navigate campaign destinations, manage supplies and vessel vitals, conduct surface expeditions, track mission progress, and reach one of three endings; campaign state can also be saved and resumed. The graph includes the documented cinematic environments and interface alongside the campaign, state, and persistence layers. Some screen and rendering relationships are only documented or indexed, so unverified links are dashed; source excerpts do not expose every runtime dispatch.

Main entry points: [`src/orbit/render/OrbitGame.java`](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/render/OrbitGame.java) (Game Runtime), [`src/orbit/controllers/OrbitController.java`](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/controllers/OrbitController.java) (Campaign Controller), [`src/orbit/models/GameState.java`](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/GameState.java) (Game State), [`src/orbit/screens/NavigationScreen.java`](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/NavigationScreen.java) (Navigation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Game Entry"]
  node_desktop["Desktop Launcher"]
  node_game["Game Runtime<br/>[OrbitGame.java]"]
end

subgraph group_campaign["Campaign Operations"]
  node_controller["Campaign Controller"]
  node_navigation["Navigation"]
  node_expedition["Exploration"]
  node_cargo["Cargo Hold"]
  node_command["Command Center"]
  node_missioncontrol["Mission Control"]
  node_missionlog["Mission Log"]
  node_ending["Campaign Endings<br/>[EndingScreen.java]"]
end

subgraph group_state["Campaign State"]
  node_stateobj["Game State<br/>[GameState.java]"]
  node_ship["Ship Telemetry<br/>[Spaceship.java]"]
  node_inventory["Inventory<br/>[Inventory.java]"]
  node_planets["Planet Records<br/>[Planet.java]"]
  node_objectives["Mission Objectives"]
  node_flightlog["Flight Recorder<br/>[MissionLog.java]"]
  node_events["Exploration Events"]
end

subgraph group_presentation["Cinematic Presentation"]
  node_scenes["3D Scene Managers<br/>[SceneManager.java]"]
  node_assets["Visual Assets<br/>[AssetManager.java]"]
  node_audio["UI Audio<br/>[AudioManager.java]"]
  node_theme["Holographic UI Theme"]
end

subgraph group_persistence["Persistence"]
  node_save["Save Manager<br/>[SaveManager.java]"]
  node_savefile[("Local Save File")]
end

node_commander(("Commander"))

node_commander -.->|"launches"| node_desktop
node_desktop -->|"starts"| node_game
node_game -->|"uses"| node_controller
node_game -.->|"dispatches"| node_navigation
node_game -.->|"dispatches"| node_command
node_game -.->|"dispatches"| node_cargo
node_game -.->|"dispatches"| node_expedition
node_game -.->|"dispatches"| node_missioncontrol
node_game -.->|"dispatches"| node_missionlog
node_game -.->|"dispatches"| node_ending
node_navigation -->|"requests navigation"| node_controller
node_command -->|"requests operations"| node_controller
node_controller -->|"updates"| node_stateobj
node_controller -->|"saves and loads"| node_save
node_save -->|"reads and writes"| node_savefile
node_stateobj -->|"tracks"| node_ship
node_stateobj -->|"tracks"| node_planets
node_stateobj -->|"tracks"| node_inventory
node_stateobj -->|"tracks"| node_objectives
node_stateobj -->|"records progress"| node_flightlog
node_controller -->|"handles"| node_events
node_controller -->|"records events"| node_flightlog
node_scenes -->|"uses"| node_assets
node_game -->|"uses"| node_audio
node_scenes -->|"uses"| node_theme
node_navigation -->|"renders navigation"| node_scenes

click node_desktop "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/desktop/DesktopLauncher.java"
click node_game "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/render/OrbitGame.java"
click node_controller "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/controllers/OrbitController.java"
click node_navigation "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/NavigationScreen.java"
click node_expedition "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/ExplorationScreen.java"
click node_cargo "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/CargoHoldScreen.java"
click node_command "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/CommandCenterScreen.java"
click node_missioncontrol "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/MissionControlScreen.java"
click node_missionlog "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/MissionLogScreen.java"
click node_ending "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/EndingScreen.java"
click node_stateobj "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/GameState.java"
click node_ship "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/Spaceship.java"
click node_inventory "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/Inventory.java"
click node_planets "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/Planet.java"
click node_objectives "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/MissionObjective.java"
click node_flightlog "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/MissionLog.java"
click node_events "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/ExplorationEvent.java"
click node_save "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/SaveManager.java"
click node_scenes "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/render/SceneManager.java"
click node_assets "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/render/AssetManager.java"
click node_audio "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/render/audio/AudioManager.java"
click node_theme "https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/render/theme/CinematicTheme.java"

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_desktop,node_game toneBlue
class node_controller,node_navigation,node_expedition,node_cargo,node_command,node_missioncontrol,node_missionlog,node_ending toneAmber
class node_stateobj,node_ship,node_inventory,node_planets,node_objectives,node_flightlog,node_events toneMint
class node_scenes,node_assets,node_audio,node_theme toneRose
class node_save,node_savefile,node_commander toneIndigo
```

## Components

### Game Entry

- [Desktop Launcher](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/desktop/DesktopLauncher.java): `src/orbit/desktop/DesktopLauncher.java`
- [Game Runtime](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/render/OrbitGame.java): `src/orbit/render/OrbitGame.java`

### Campaign Operations

- [Campaign Controller](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/controllers/OrbitController.java): `src/orbit/controllers/OrbitController.java`
- [Navigation](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/NavigationScreen.java): `src/orbit/screens/NavigationScreen.java`
- [Exploration](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/ExplorationScreen.java): `src/orbit/screens/ExplorationScreen.java`
- [Cargo Hold](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/CargoHoldScreen.java): `src/orbit/screens/CargoHoldScreen.java`
- [Command Center](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/CommandCenterScreen.java): `src/orbit/screens/CommandCenterScreen.java`
- [Mission Control](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/MissionControlScreen.java): `src/orbit/screens/MissionControlScreen.java`
- [Mission Log](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/MissionLogScreen.java): `src/orbit/screens/MissionLogScreen.java`
- [Campaign Endings](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/screens/EndingScreen.java): `src/orbit/screens/EndingScreen.java`

### Campaign State

- [Game State](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/GameState.java): `src/orbit/models/GameState.java`
- [Ship Telemetry](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/Spaceship.java): `src/orbit/models/Spaceship.java`
- [Inventory](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/Inventory.java): `src/orbit/models/Inventory.java`
- [Planet Records](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/Planet.java): `src/orbit/models/Planet.java`
- [Mission Objectives](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/MissionObjective.java): `src/orbit/models/MissionObjective.java`
- [Flight Recorder](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/MissionLog.java): `src/orbit/models/MissionLog.java`
- [Exploration Events](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/ExplorationEvent.java): `src/orbit/models/ExplorationEvent.java`

### Cinematic Presentation

- [3D Scene Managers](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/render/SceneManager.java): `src/orbit/render/SceneManager.java`
- [Visual Assets](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/render/AssetManager.java): `src/orbit/render/AssetManager.java`
- [UI Audio](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/render/audio/AudioManager.java): `src/orbit/render/audio/AudioManager.java`
- [Holographic UI Theme](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/render/theme/CinematicTheme.java): `src/orbit/render/theme/CinematicTheme.java`

### Persistence

- [Save Manager](https://github.com/devwithpushkar/orbit-beyond-the-unknown/blob/main/src/orbit/models/SaveManager.java): `src/orbit/models/SaveManager.java`
- **Local Save File**

### Other components

- **Commander**

## Connections

- Commander → Desktop Launcher: launches (evidence: `README.md`)
- Desktop Launcher → Game Runtime: starts (evidence: `src/orbit/desktop/DesktopLauncher.java`)
- Game Runtime → Campaign Controller: uses (evidence: `src/orbit/render/OrbitGame.java`)
- Game Runtime → Navigation: dispatches (evidence: `src/orbit/render/OrbitGame.java`)
- Game Runtime → Command Center: dispatches (evidence: `src/orbit/render/OrbitGame.java`)
- Game Runtime → Cargo Hold: dispatches (evidence: `src/orbit/render/OrbitGame.java`)
- Game Runtime → Exploration: dispatches (evidence: `src/orbit/render/OrbitGame.java`)
- Game Runtime → Mission Control: dispatches (evidence: `src/orbit/render/OrbitGame.java`)
- Game Runtime → Mission Log: dispatches (evidence: `src/orbit/render/OrbitGame.java`)
- Game Runtime → Campaign Endings: dispatches (evidence: `src/orbit/render/OrbitGame.java`)
- Navigation → Campaign Controller: requests navigation (evidence: `src/orbit/screens/NavigationScreen.java`)
- Command Center → Campaign Controller: requests operations (evidence: `src/orbit/screens/CommandCenterScreen.java`)
- Campaign Controller → Game State: updates (evidence: `src/orbit/controllers/OrbitController.java`)
- Campaign Controller → Save Manager: saves and loads (evidence: `src/orbit/controllers/OrbitController.java`)
- Save Manager → Local Save File: reads and writes (evidence: `README.md`)
- Game State → Ship Telemetry: tracks (evidence: `src/orbit/models/GameState.java`)
- Game State → Planet Records: tracks (evidence: `src/orbit/models/GameState.java`)
- Game State → Inventory: tracks (evidence: `src/orbit/models/GameState.java`)
- Game State → Mission Objectives: tracks (evidence: `src/orbit/models/GameState.java`)
- Game State → Flight Recorder: records progress (evidence: `src/orbit/models/GameState.java`)
- Campaign Controller → Exploration Events: handles (evidence: `src/orbit/controllers/OrbitController.java`)
- Campaign Controller → Flight Recorder: records events (evidence: `src/orbit/controllers/OrbitController.java`)
- 3D Scene Managers → Visual Assets: uses (evidence: `src/orbit/render/SceneManager.java`)
- Game Runtime → UI Audio: uses (evidence: `src/orbit/render/OrbitGame.java`)
- 3D Scene Managers → Holographic UI Theme: uses
- Navigation → 3D Scene Managers: renders navigation (evidence: `src/orbit/screens/NavigationScreen.java`)
