# larosanera/morphic-chess architecture

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

- Interactive diagram: https://gitdiagram.com/larosanera/morphic-chess
- Repository: https://github.com/larosanera/morphic-chess

## Overview

Morphic Chess is a Godot chess simulation. Players configure a local game, then play on a generated board using configurable movement rules and layouts. The README documents configuration passing from the title screen into a chess session, along with seeded sessions and the chess-system capabilities shown below. Source excerpts were unavailable, so relationships are limited to those stated in the README; several documented capabilities have no more specific implementation path than their existing scene or data directories.

Main entry points: [`scripts/chess/chessBoardScript.gd`](https://github.com/larosanera/morphic-chess/blob/main/scripts/chess/chessBoardScript.gd) (Board management), [`scripts/main/title_screen.gd`](https://github.com/larosanera/morphic-chess/blob/main/scripts/main/title_screen.gd) (Title screen), [`data/daily_seed.json`](https://github.com/larosanera/morphic-chess/blob/main/data/daily_seed.json) (Daily seed), [`scripts/chess/move_rule.gd`](https://github.com/larosanera/morphic-chess/blob/main/scripts/chess/move_rule.gd) (Movement rules)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Game setup"]
  node_title["Title screen<br/>[title_screen.gd]"]
  node_game_setup["Game configuration<br/>[game_setup.gd]"]
  node_settings["Persistent settings<br/>[settings.gd]"]
  node_seed["Daily seed<br/>[daily_seed.json]"]
end

subgraph group_chess["Chess system"]
  node_board["Board management"]
  node_move_rules["Movement rules<br/>[move_rule.gd]"]
  node_promotion["Pawn promotion"]
  node_move_feedback["Move visualization"]
  node_move_log["Move logging"]
  node_chess_session["Chess session<br/>[chess_board.tscn]"]
end

subgraph group_content["Game content"]
  node_piece_scenes["Piece scenes"]
  node_board_layouts["Board presets"]
end

node_players(("Local players"))

node_players -->|"configure game"| node_title
node_title -->|"passes configuration"| node_chess_session
node_board -->|"loads presets"| node_board_layouts
node_move_rules -->|"define movement"| node_board
node_board -->|"generates pieces"| node_piece_scenes
node_board -->|"promotes pawns"| node_promotion
node_board -->|"visualizes moves"| node_move_feedback
node_board -->|"records moves"| node_move_log
node_seed -->|"provides daily seed"| node_game_setup

click node_title "https://github.com/larosanera/morphic-chess/blob/main/scripts/main/title_screen.gd"
click node_game_setup "https://github.com/larosanera/morphic-chess/blob/main/scripts/main/game_setup.gd"
click node_settings "https://github.com/larosanera/morphic-chess/blob/main/scripts/main/settings.gd"
click node_seed "https://github.com/larosanera/morphic-chess/blob/main/data/daily_seed.json"
click node_board "https://github.com/larosanera/morphic-chess/blob/main/scripts/chess/chessBoardScript.gd"
click node_move_rules "https://github.com/larosanera/morphic-chess/blob/main/scripts/chess/move_rule.gd"
click node_promotion "https://github.com/larosanera/morphic-chess/blob/main/scripts/chess/chessBoardScript.gd"
click node_move_feedback "https://github.com/larosanera/morphic-chess/blob/main/scripts/chess/chessBoardScript.gd"
click node_move_log "https://github.com/larosanera/morphic-chess/blob/main/scripts/chess/chessBoardScript.gd"
click node_piece_scenes "https://github.com/larosanera/morphic-chess/tree/main/Scenes/Chess"
click node_board_layouts "https://github.com/larosanera/morphic-chess/tree/main/assets/board/board_layouts"
click node_chess_session "https://github.com/larosanera/morphic-chess/blob/main/Scenes/Chess/chess_board.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_title,node_game_setup,node_settings,node_seed toneBlue
class node_board,node_move_rules,node_promotion,node_move_feedback,node_move_log,node_chess_session toneAmber
class node_piece_scenes,node_board_layouts toneMint
class node_players toneIndigo
```

## Components

### Game setup

- [Title screen](https://github.com/larosanera/morphic-chess/blob/main/scripts/main/title_screen.gd): `scripts/main/title_screen.gd`
- [Game configuration](https://github.com/larosanera/morphic-chess/blob/main/scripts/main/game_setup.gd): `scripts/main/game_setup.gd`
- [Persistent settings](https://github.com/larosanera/morphic-chess/blob/main/scripts/main/settings.gd): `scripts/main/settings.gd`
- [Daily seed](https://github.com/larosanera/morphic-chess/blob/main/data/daily_seed.json): `data/daily_seed.json`

### Chess system

- [Board management](https://github.com/larosanera/morphic-chess/blob/main/scripts/chess/chessBoardScript.gd): `scripts/chess/chessBoardScript.gd`
- [Movement rules](https://github.com/larosanera/morphic-chess/blob/main/scripts/chess/move_rule.gd): `scripts/chess/move_rule.gd`
- [Pawn promotion](https://github.com/larosanera/morphic-chess/blob/main/scripts/chess/chessBoardScript.gd): `scripts/chess/chessBoardScript.gd`
- [Move visualization](https://github.com/larosanera/morphic-chess/blob/main/scripts/chess/chessBoardScript.gd): `scripts/chess/chessBoardScript.gd`
- [Move logging](https://github.com/larosanera/morphic-chess/blob/main/scripts/chess/chessBoardScript.gd): `scripts/chess/chessBoardScript.gd`
- [Chess session](https://github.com/larosanera/morphic-chess/blob/main/Scenes/Chess/chess_board.tscn): `Scenes/Chess/chess_board.tscn`

### Game content

- [Piece scenes](https://github.com/larosanera/morphic-chess/tree/main/Scenes/Chess): `Scenes/Chess`
- [Board presets](https://github.com/larosanera/morphic-chess/tree/main/assets/board/board_layouts): `assets/board/board_layouts`

### Other components

- **Local players**

## Connections

- Local players → Title screen: configure game (evidence: `README.md`)
- Title screen → Chess session: passes configuration (evidence: `README.md`)
- Board management → Board presets: loads presets (evidence: `README.md`)
- Movement rules → Board management: define movement (evidence: `README.md`)
- Board management → Piece scenes: generates pieces (evidence: `README.md`)
- Board management → Pawn promotion: promotes pawns (evidence: `README.md`)
- Board management → Move visualization: visualizes moves (evidence: `README.md`)
- Board management → Move logging: records moves (evidence: `README.md`)
- Daily seed → Game configuration: provides daily seed (evidence: `README.md`)
