# ramaureirac/godot-tactical-rpg architecture

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

- Interactive diagram: https://gitdiagram.com/ramaureirac/godot-tactical-rpg
- Repository: https://github.com/ramaureirac/godot-tactical-rpg

## Overview

This repository is a Godot 4.3 tactical-RPG template. The principal gameplay loop is player input and camera/selection control, followed by grid-based pawn movement and turn-based combat against basic enemy AI. Its major documented capabilities also include configurable camera behavior, controller support, map recognition, and a toggleable debugger. The README describes a shared model-and-module architecture. No source excerpts were provided, so runtime connections below are dashed and unverified; paths identify components from the tree, not inspected call sites.

Main entry points: [`data/modules/tactics/level/tactics_level.gd`](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/tactics_level.gd) (Tactical Level), [`data/modules/tactics/controls/controls.gd`](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/controls/controls.gd) (Tactical Controls), [`data/modules/tactics/level/pawn/pawn.gd`](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/pawn/pawn.gd) (Combat Pawns), [`data/modules/tactics/level/participants/tactics_participant.gd`](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/participants/tactics_participant.gd) (Participants)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry_control["Input and Control"]
  node_main["Game Entry<br/>[main.gd]"]
  node_input_capture["Input Capture<br/>[input_capture.gd]"]
  node_controls["Tactical Controls<br/>[controls.gd]"]
  node_camera["Tactical Camera<br/>[camera.gd]"]
end

subgraph group_world_combat["Tactical World"]
  node_level["Tactical Level<br/>[tactics_level.gd]"]
  node_arena["Arena Grid<br/>[tactics_arena.gd]"]
  node_tile["Grid Tiles<br/>[tactics_tile.gd]"]
  node_pawn["Combat Pawns<br/>[pawn.gd]"]
  node_participant["Participants"]
  node_player_actor["Player Unit<br/>[tactics_player.gd]"]
  node_opponent["Enemy AI"]
  node_map_assets["Example Maps<br/>[test_level.tscn]"]
end

subgraph group_models["Models and Config"]
  node_stats["Unit Stats<br/>[stats_res.gd]"]
  node_turns["Turn and Combat Logic<br/>[turn.gd]"]
  node_camera_model["Camera Services<br/>[service.gd]"]
  node_debug["Debug Config<br/>[debug.gd]"]
  node_config["Tactics Config<br/>[tactics_config.gd]"]
end

subgraph group_interface["Interface"]
  node_hints["Input Hints<br/>[input_hints.gd]"]
end

node_player(("Player"))

node_player -.->|"provides input"| node_input_capture
node_input_capture -.->|"feeds controls"| node_controls
node_controls -.->|"controls gameplay"| node_level
node_controls -.->|"controls view"| node_camera
node_camera -.->|"uses services"| node_camera_model
node_level -.->|"uses arena"| node_arena
node_arena -.->|"uses tiles"| node_tile
node_level -.->|"manages units"| node_participant
node_participant -.->|"specializes as"| node_player_actor
node_participant -.->|"specializes as"| node_opponent
node_player_actor -.->|"uses pawn"| node_pawn
node_opponent -.->|"uses pawn"| node_pawn
node_pawn -.->|"uses stats"| node_stats
node_pawn -.->|"combat and turns"| node_turns
node_main -.->|"starts gameplay"| node_level
node_level -.->|"loads maps"| node_map_assets
node_controls -.->|"shows controls"| node_hints
node_config -.->|"configures camera"| node_camera_model
node_config -.->|"configures debug"| node_debug

click node_main "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/main.gd"
click node_input_capture "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/ui/input/input_capture.gd"
click node_controls "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/controls/controls.gd"
click node_camera "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/camera/camera.gd"
click node_level "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/tactics_level.gd"
click node_arena "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/arena/tactics_arena.gd"
click node_tile "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/arena/tile/tactics_tile.gd"
click node_pawn "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/pawn/pawn.gd"
click node_participant "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/participants/tactics_participant.gd"
click node_player_actor "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/participants/player/tactics_player.gd"
click node_opponent "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/participants/opponent/tactics_opponent.gd"
click node_stats "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/models/world/stats/stats_res.gd"
click node_turns "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/models/world/combat/participant/service/turn.gd"
click node_camera_model "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/models/view/camera/tactics/service/service.gd"
click node_debug "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/models/config/debug.gd"
click node_config "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/models/config/tactics_config.gd"
click node_hints "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/ui/hints/input_hints.gd"
click node_map_assets "https://github.com/ramaureirac/godot-tactical-rpg/blob/development/assets/maps/level/test_level.tscn"

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_main,node_input_capture,node_controls,node_camera toneBlue
class node_level,node_arena,node_tile,node_pawn,node_participant,node_player_actor,node_opponent,node_map_assets toneAmber
class node_stats,node_turns,node_camera_model,node_debug,node_config toneMint
class node_hints toneRose
class node_player toneIndigo
```

## Components

### Input and Control

- [Game Entry](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/main.gd): `data/main.gd`
- [Input Capture](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/ui/input/input_capture.gd): `data/modules/ui/input/input_capture.gd`
- [Tactical Controls](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/controls/controls.gd): `data/modules/tactics/controls/controls.gd`
- [Tactical Camera](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/camera/camera.gd): `data/modules/tactics/camera/camera.gd`

### Tactical World

- [Tactical Level](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/tactics_level.gd): `data/modules/tactics/level/tactics_level.gd`
- [Arena Grid](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/arena/tactics_arena.gd): `data/modules/tactics/level/arena/tactics_arena.gd`
- [Grid Tiles](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/arena/tile/tactics_tile.gd): `data/modules/tactics/level/arena/tile/tactics_tile.gd`
- [Combat Pawns](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/pawn/pawn.gd): `data/modules/tactics/level/pawn/pawn.gd`
- [Participants](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/participants/tactics_participant.gd): `data/modules/tactics/level/participants/tactics_participant.gd`
- [Player Unit](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/participants/player/tactics_player.gd): `data/modules/tactics/level/participants/player/tactics_player.gd`
- [Enemy AI](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/tactics/level/participants/opponent/tactics_opponent.gd): `data/modules/tactics/level/participants/opponent/tactics_opponent.gd`
- [Example Maps](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/assets/maps/level/test_level.tscn): `assets/maps/level/test_level.tscn`

### Models and Config

- [Unit Stats](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/models/world/stats/stats_res.gd): `data/models/world/stats/stats_res.gd`
- [Turn and Combat Logic](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/models/world/combat/participant/service/turn.gd): `data/models/world/combat/participant/service/turn.gd`
- [Camera Services](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/models/view/camera/tactics/service/service.gd): `data/models/view/camera/tactics/service/service.gd`
- [Debug Config](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/models/config/debug.gd): `data/models/config/debug.gd`
- [Tactics Config](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/models/config/tactics_config.gd): `data/models/config/tactics_config.gd`

### Interface

- [Input Hints](https://github.com/ramaureirac/godot-tactical-rpg/blob/development/data/modules/ui/hints/input_hints.gd): `data/modules/ui/hints/input_hints.gd`

### Other components

- **Player**

## Connections

- Player → Input Capture: provides input
- Input Capture → Tactical Controls: feeds controls
- Tactical Controls → Tactical Level: controls gameplay
- Tactical Controls → Tactical Camera: controls view
- Tactical Camera → Camera Services: uses services
- Tactical Level → Arena Grid: uses arena
- Arena Grid → Grid Tiles: uses tiles
- Tactical Level → Participants: manages units
- Participants → Player Unit: specializes as
- Participants → Enemy AI: specializes as
- Player Unit → Combat Pawns: uses pawn
- Enemy AI → Combat Pawns: uses pawn
- Combat Pawns → Unit Stats: uses stats
- Combat Pawns → Turn and Combat Logic: combat and turns
- Game Entry → Tactical Level: starts gameplay
- Tactical Level → Example Maps: loads maps
- Tactical Controls → Input Hints: shows controls
- Tactics Config → Camera Services: configures camera
- Tactics Config → Debug Config: configures debug
