# nfr1e/xeptgame architecture

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

- Interactive diagram: https://gitdiagram.com/nfr1e/xeptgame
- Repository: https://github.com/nfr1e/xeptgame

## Overview

XeptGame is documented as a Unity first-person survival/FPS demo, with XeptKit providing reusable infrastructure and XeptGame assembling it into the game. The main documented runtime path is player input through 3C control to in-game behavior, with AppEntry as the composition root and AppFSM managing application states. The supplied tree does not contain the README-listed Scripts or XeptKit directories, and no source excerpts were provided; paths and wiring below therefore rely on README documentation, and uncertain calls are omitted.

Main entry points: [`Assets/Scripts/Core/AppEntry.cs`](https://github.com/nfr1e/xeptgame/blob/main/Assets/Scripts/Core/AppEntry.cs) (AppEntry), [`Assets/Plugins/XeptKit`](https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit) (Input manager), [`Assets/Scripts/Player`](https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Player) (Player motor HFSM), [`Assets/Scripts/UI`](https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/UI) (Game UI shell)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_game["Game application"]
  node_app_entry["AppEntry<br/>[AppEntry.cs]"]
  node_app_fsm["AppFSM"]
  node_global_input["Global input"]
end

subgraph group_player["Player 3C"]
  node_player_input["Player input"]
  node_player_look["Player look"]
  node_player_motor["Player motor HFSM"]
  node_camera_feel["Camera feel"]
  node_platforms["Moving platforms"]
end

subgraph group_kit["XeptKit infrastructure"]
  node_kit_core["Kit lifecycle"]
  node_kit_events["Events and FSM"]
  node_kit_assets["Asset loading"]
  node_kit_pool["Object pool"]
  node_kit_input["Input manager"]
  node_kit_scenes["Scene manager"]
end

subgraph group_ui["UI and localization"]
  node_ui_manager["UI manager"]
  node_procedural_ui["Procedural UI"]
  node_localization["Localization"]
  node_game_ui["Game UI shell"]
end

node_player_actor(("Player"))
node_addressables["Unity Addressables"]
node_input_system["Unity Input System"]
node_kcc["Kinematic motor"]

node_app_entry -->|"assembles"| node_app_fsm
node_app_entry -->|"assembles"| node_global_input
node_app_entry -->|"initializes"| node_kit_core
node_app_entry -->|"configures"| node_kit_assets
node_app_entry -->|"configures"| node_kit_input
node_app_entry -->|"configures"| node_kit_scenes
node_app_entry -->|"configures"| node_ui_manager
node_app_fsm -->|"uses"| node_kit_events
node_player_actor -->|"provides input"| node_kit_input
node_input_system -->|"supplies events"| node_kit_input
node_kit_input -->|"dispatches"| node_player_input
node_global_input -->|"uses"| node_kit_input
node_player_input -->|"drives"| node_player_motor
node_player_input -->|"drives"| node_player_look
node_player_motor -->|"uses"| node_kcc
node_player_motor -->|"drives feedback"| node_camera_feel
node_platforms -->|"moves against"| node_player_motor
node_kit_assets -->|"loads assets"| node_addressables
node_game_ui -->|"uses"| node_ui_manager
node_ui_manager -->|"uses"| node_procedural_ui
node_game_ui -->|"uses"| node_localization

click node_app_entry "https://github.com/nfr1e/xeptgame/blob/main/Assets/Scripts/Core/AppEntry.cs"
click node_app_fsm "https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Core"
click node_global_input "https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Core"
click node_player_input "https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Player"
click node_player_look "https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Player"
click node_player_motor "https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Player"
click node_camera_feel "https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Player"
click node_platforms "https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Player"
click node_kit_core "https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit"
click node_kit_events "https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit"
click node_kit_assets "https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit"
click node_kit_pool "https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit"
click node_kit_input "https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit"
click node_kit_scenes "https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit"
click node_ui_manager "https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit"
click node_procedural_ui "https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit"
click node_localization "https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit"
click node_game_ui "https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/UI"
click node_kcc "https://github.com/nfr1e/xeptgame/blob/main/Assets/Plugins/KCC/Core/KinematicCharacterMotor.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_app_entry,node_app_fsm,node_global_input toneBlue
class node_player_input,node_player_look,node_player_motor,node_camera_feel,node_platforms toneAmber
class node_kit_core,node_kit_events,node_kit_assets,node_kit_pool,node_kit_input,node_kit_scenes toneMint
class node_ui_manager,node_procedural_ui,node_localization,node_game_ui toneRose
class node_player_actor,node_addressables,node_input_system toneIndigo
class node_kcc toneTeal
```

## Components

### Game application

- [AppEntry](https://github.com/nfr1e/xeptgame/blob/main/Assets/Scripts/Core/AppEntry.cs): `Assets/Scripts/Core/AppEntry.cs`
- [AppFSM](https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Core): `Assets/Scripts/Core`
- [Global input](https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Core): `Assets/Scripts/Core`

### Player 3C

- [Player input](https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Player): `Assets/Scripts/Player`
- [Player look](https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Player): `Assets/Scripts/Player`
- [Player motor HFSM](https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Player): `Assets/Scripts/Player`
- [Camera feel](https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Player): `Assets/Scripts/Player`
- [Moving platforms](https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/Player): `Assets/Scripts/Player`

### XeptKit infrastructure

- [Kit lifecycle](https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit): `Assets/Plugins/XeptKit`
- [Events and FSM](https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit): `Assets/Plugins/XeptKit`
- [Asset loading](https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit): `Assets/Plugins/XeptKit`
- [Object pool](https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit): `Assets/Plugins/XeptKit`
- [Input manager](https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit): `Assets/Plugins/XeptKit`
- [Scene manager](https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit): `Assets/Plugins/XeptKit`

### UI and localization

- [UI manager](https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit): `Assets/Plugins/XeptKit`
- [Procedural UI](https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit): `Assets/Plugins/XeptKit`
- [Localization](https://github.com/nfr1e/xeptgame/tree/main/Assets/Plugins/XeptKit): `Assets/Plugins/XeptKit`
- [Game UI shell](https://github.com/nfr1e/xeptgame/tree/main/Assets/Scripts/UI): `Assets/Scripts/UI`

### Other components

- **Player**
- **Unity Addressables**
- **Unity Input System**
- [Kinematic motor](https://github.com/nfr1e/xeptgame/blob/main/Assets/Plugins/KCC/Core/KinematicCharacterMotor.cs): `Assets/Plugins/KCC/Core/KinematicCharacterMotor.cs`

## Connections

- AppEntry → AppFSM: assembles
- AppEntry → Global input: assembles
- AppEntry → Kit lifecycle: initializes
- AppEntry → Asset loading: configures
- AppEntry → Input manager: configures
- AppEntry → Scene manager: configures
- AppEntry → UI manager: configures
- AppFSM → Events and FSM: uses
- Player → Input manager: provides input
- Unity Input System → Input manager: supplies events
- Input manager → Player input: dispatches
- Global input → Input manager: uses
- Player input → Player motor HFSM: drives
- Player input → Player look: drives
- Player motor HFSM → Kinematic motor: uses
- Player motor HFSM → Camera feel: drives feedback
- Moving platforms → Player motor HFSM: moves against
- Asset loading → Unity Addressables: loads assets
- Game UI shell → UI manager: uses
- UI manager → Procedural UI: uses
- Game UI shell → Localization: uses
