# dplayerxax/geoworld architecture

> Architecture diagram of the GitHub repository dplayerxax/geoworld, 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/dplayerxax/geoworld
- Repository: https://github.com/dplayerxax/geoworld

## Overview

GeoWorld is a Unity tower-defense game in which players shape a 3D block surface to influence enemy routes, turret placement, economy, faction synergies, and music. The principal flow runs from level selection into a build phase, then wave combat, upgrade selection, and either another wave or a level outcome. The README documents additional map, save, dialogue, minigame, audio, and presentation systems. Several subsystem implementations are not present in the sampled source or visible tree excerpt, so their nodes use supported enclosing paths and uncertain wiring is omitted.

Main entry points: [`Assets/Scripts/Construct/GameFlowManager.cs`](https://github.com/dplayerxax/geoworld/blob/master/Assets/Scripts/Construct/GameFlowManager.cs) (Game Flow), [`Assets/Scripts/Audio`](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts/Audio) (Game Audio), [`Assets/Scenes/LevelSelect.unity`](https://github.com/dplayerxax/geoworld/blob/master/Assets/Scenes/LevelSelect.unity) (Level Select), [`Assets/Scripts`](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts) (Enemy Units)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_world["World and Flow"]
  node_level_select["Level Select<br/>[LevelSelect.unity]"]
  node_run_config["Run Handoff"]
  node_game_flow["Game Flow<br/>[GameFlowManager.cs]"]
end

subgraph group_combat["Building and Combat"]
  node_placement["Block Placement"]
  node_grid["Grid System<br/>[GridSystem.cs]"]
  node_pathfinding["Surface Routing"]
  node_synergy["Synergy Evaluation"]
  node_waves["Wave Generation"]
  node_enemies["Enemy Units"]
  node_turrets["Turret Combat"]
  node_upgrades["Wave Upgrades"]
end

subgraph group_meta["Meta and Extras"]
  node_save[("Save System")]
  node_map["World Map"]
  node_gallery["Gallery<br/>[Gallery.unity]"]
  node_dialogue["Dialogue Runner"]
  node_minigame["Minigames"]
end

subgraph group_presentation["Audio and Presentation"]
  node_audio["Game Audio"]
  node_wwise["Wwise Runtime"]
  node_sky["Reactive Sky"]
  node_ui["Game UI"]
end

node_player(("Player"))

node_player -->|"selects level"| node_level_select
node_level_select -->|"writes selection"| node_run_config
node_run_config -->|"provides run"| node_game_flow
node_player -->|"places blocks"| node_placement
node_placement -->|"edits grid"| node_grid
node_game_flow -->|"evaluates routes"| node_pathfinding
node_game_flow -->|"evaluates board"| node_synergy
node_game_flow -->|"starts waves"| node_waves
node_waves -->|"spawns"| node_enemies
node_enemies -->|"follows routes"| node_pathfinding
node_turrets -->|"attacks"| node_enemies
node_game_flow -->|"offers after wave"| node_upgrades
node_player -->|"chooses card"| node_upgrades
node_player -->|"manages saves"| node_save
node_player -->|"explores"| node_map
node_map -->|"hosts level nodes"| node_level_select
node_player -->|"views unlocked art"| node_gallery
node_player -.->|"starts conversations"| node_dialogue
node_player -.->|"enters diversion"| node_minigame
node_audio -->|"posts events"| node_wwise
node_audio -->|"drives reactions"| node_sky
node_game_flow -->|"reports game state"| node_audio
node_player -->|"uses controls"| node_ui

click node_level_select "https://github.com/dplayerxax/geoworld/blob/master/Assets/Scenes/LevelSelect.unity"
click node_run_config "https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts"
click node_game_flow "https://github.com/dplayerxax/geoworld/blob/master/Assets/Scripts/Construct/GameFlowManager.cs"
click node_placement "https://github.com/dplayerxax/geoworld/blob/master/Assets/Scripts/Construct/PlacementController.cs"
click node_grid "https://github.com/dplayerxax/geoworld/blob/master/Assets/Scripts/Construct/GridSystem.cs"
click node_pathfinding "https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts/Construct"
click node_synergy "https://github.com/dplayerxax/geoworld/blob/master/Assets/Scripts/Construct/Synergy/SynergyEvaluator.cs"
click node_waves "https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts"
click node_enemies "https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts"
click node_turrets "https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts"
click node_upgrades "https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts"
click node_save "https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts"
click node_map "https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts"
click node_gallery "https://github.com/dplayerxax/geoworld/blob/master/Assets/Scenes/Gallery.unity"
click node_dialogue "https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts"
click node_minigame "https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts"
click node_audio "https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts/Audio"
click node_wwise "https://github.com/dplayerxax/geoworld/tree/master/Geo%20world"
click node_sky "https://github.com/dplayerxax/geoworld/blob/master/Assets/Scripts/Audio/BackgroundReactor.cs"
click node_ui "https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts"

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_level_select,node_run_config,node_game_flow toneBlue
class node_placement,node_grid,node_pathfinding,node_synergy,node_waves,node_enemies,node_turrets,node_upgrades toneAmber
class node_save,node_map,node_gallery,node_dialogue,node_minigame toneMint
class node_audio,node_wwise,node_sky,node_ui toneRose
class node_player toneIndigo
```

## Components

### World and Flow

- [Level Select](https://github.com/dplayerxax/geoworld/blob/master/Assets/Scenes/LevelSelect.unity): `Assets/Scenes/LevelSelect.unity`
- [Run Handoff](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts): `Assets/Scripts`
- [Game Flow](https://github.com/dplayerxax/geoworld/blob/master/Assets/Scripts/Construct/GameFlowManager.cs): `Assets/Scripts/Construct/GameFlowManager.cs`

### Building and Combat

- [Block Placement](https://github.com/dplayerxax/geoworld/blob/master/Assets/Scripts/Construct/PlacementController.cs): `Assets/Scripts/Construct/PlacementController.cs`
- [Grid System](https://github.com/dplayerxax/geoworld/blob/master/Assets/Scripts/Construct/GridSystem.cs): `Assets/Scripts/Construct/GridSystem.cs`
- [Surface Routing](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts/Construct): `Assets/Scripts/Construct`
- [Synergy Evaluation](https://github.com/dplayerxax/geoworld/blob/master/Assets/Scripts/Construct/Synergy/SynergyEvaluator.cs): `Assets/Scripts/Construct/Synergy/SynergyEvaluator.cs`
- [Wave Generation](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts): `Assets/Scripts`
- [Enemy Units](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts): `Assets/Scripts`
- [Turret Combat](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts): `Assets/Scripts`
- [Wave Upgrades](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts): `Assets/Scripts`

### Meta and Extras

- [Save System](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts): `Assets/Scripts`
- [World Map](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts): `Assets/Scripts`
- [Gallery](https://github.com/dplayerxax/geoworld/blob/master/Assets/Scenes/Gallery.unity): `Assets/Scenes/Gallery.unity`
- [Dialogue Runner](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts): `Assets/Scripts`
- [Minigames](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts): `Assets/Scripts`

### Audio and Presentation

- [Game Audio](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts/Audio): `Assets/Scripts/Audio`
- [Wwise Runtime](https://github.com/dplayerxax/geoworld/tree/master/Geo%20world): `Geo world`
- [Reactive Sky](https://github.com/dplayerxax/geoworld/blob/master/Assets/Scripts/Audio/BackgroundReactor.cs): `Assets/Scripts/Audio/BackgroundReactor.cs`
- [Game UI](https://github.com/dplayerxax/geoworld/tree/master/Assets/Scripts): `Assets/Scripts`

### Other components

- **Player**

## Connections

- Player → Level Select: selects level
- Level Select → Run Handoff: writes selection
- Run Handoff → Game Flow: provides run
- Player → Block Placement: places blocks
- Block Placement → Grid System: edits grid
- Game Flow → Surface Routing: evaluates routes
- Game Flow → Synergy Evaluation: evaluates board
- Game Flow → Wave Generation: starts waves
- Wave Generation → Enemy Units: spawns
- Enemy Units → Surface Routing: follows routes
- Turret Combat → Enemy Units: attacks
- Game Flow → Wave Upgrades: offers after wave
- Player → Wave Upgrades: chooses card
- Player → Save System: manages saves
- Player → World Map: explores
- World Map → Level Select: hosts level nodes
- Player → Gallery: views unlocked art
- Player → Dialogue Runner: starts conversations
- Player → Minigames: enters diversion
- Game Audio → Wwise Runtime: posts events
- Game Audio → Reactive Sky: drives reactions
- Game Flow → Game Audio: reports game state
- Player → Game UI: uses controls
