# schillingt/play-zone architecture

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

## Overview

play-zone is a browser game set in Zug: the documented play concept is to deliver packages as a horse courier, then catch foals. The repository also includes Swiss building-data conversion for a game asset. The README establishes that play starts by opening index.html, and the converter excerpt documents its output; the available excerpts do not show how the game loads or uses its assets, so those links are omitted.

Main entry points: [`index.html`](https://github.com/schillingt/play-zone/blob/main/index.html) (Horse World), [`tools/swisstopo_to_game.py`](https://github.com/schillingt/play-zone/blob/main/tools/swisstopo_to_game.py) (Swisstopo converter), [`assets/gebaeude.js`](https://github.com/schillingt/play-zone/blob/main/assets/gebaeude.js) (Building geometry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_game["Browser game"]
  node_game["Horse World<br/>[index.html]"]
  node_deliver["Package delivery<br/>[index.html]"]
  node_foals["Foal catching<br/>[index.html]"]
end

subgraph group_assets["Map assets"]
  node_map["Game map data<br/>[karte.js]"]
  node_buildings["Building geometry<br/>[gebaeude.js]"]
end

subgraph group_prep["Building data preparation"]
  node_converter["Swisstopo converter"]
end

node_player(("Player"))

node_player -->|"opens to play"| node_game
node_game -->|"starts with"| node_deliver
node_game -->|"continues with"| node_foals
node_converter -->|"generates"| node_buildings

click node_game "https://github.com/schillingt/play-zone/blob/main/index.html"
click node_deliver "https://github.com/schillingt/play-zone/blob/main/index.html"
click node_foals "https://github.com/schillingt/play-zone/blob/main/index.html"
click node_map "https://github.com/schillingt/play-zone/blob/main/assets/karte.js"
click node_buildings "https://github.com/schillingt/play-zone/blob/main/assets/gebaeude.js"
click node_converter "https://github.com/schillingt/play-zone/blob/main/tools/swisstopo_to_game.py"

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_game,node_deliver,node_foals toneBlue
class node_map,node_buildings toneAmber
class node_converter toneMint
class node_player toneIndigo
```

## Components

### Browser game

- [Horse World](https://github.com/schillingt/play-zone/blob/main/index.html): `index.html`
- [Package delivery](https://github.com/schillingt/play-zone/blob/main/index.html): `index.html`
- [Foal catching](https://github.com/schillingt/play-zone/blob/main/index.html): `index.html`

### Map assets

- [Game map data](https://github.com/schillingt/play-zone/blob/main/assets/karte.js): `assets/karte.js`
- [Building geometry](https://github.com/schillingt/play-zone/blob/main/assets/gebaeude.js): `assets/gebaeude.js`

### Building data preparation

- [Swisstopo converter](https://github.com/schillingt/play-zone/blob/main/tools/swisstopo_to_game.py): `tools/swisstopo_to_game.py`

### Other components

- **Player**

## Connections

- Player → Horse World: opens to play (evidence: `README.md`)
- Horse World → Package delivery: starts with (evidence: `README.md`)
- Horse World → Foal catching: continues with (evidence: `README.md`)
- Swisstopo converter → Building geometry: generates (evidence: `tools/swisstopo_to_game.py`)
