docs(agents): 📝 Update combat, AI, algorithms, data, systems, Godot renderer, web, and magic development guides with markdown files

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Claude Code 2026-03-26 11:38:24 -07:00
parent 9141e3e1a2
commit 09ff3012dd
8 changed files with 20 additions and 20 deletions

View file

@ -36,11 +36,11 @@ Military units project ZOC into all 6 adjacent hexes. Moving between two hexes i
## Keywords
Keywords are discrete composable behaviors defined in `games/age-of-four/data/keywords.json`. Each keyword modifies combat resolution in a specific way (first_strike, trample, life_drain, flying, etc.). Check the data file for the complete list — do not maintain a separate list here.
Keywords are discrete composable behaviors defined in `games/age-of-dwarves/data/keywords.json`. Each keyword modifies combat resolution in a specific way (first_strike, trample, life_drain, flying, etc.). Check the data file for the complete list — do not maintain a separate list here.
## Promotions
Branching promotion trees defined in `games/age-of-four/data/promotions.json`. Heal on promotion. Validate compatible branches (no mutually exclusive combos).
Branching promotion trees defined in `games/age-of-dwarves/data/promotions.json`. Heal on promotion. Validate compatible branches (no mutually exclusive combos).
## City Siege

View file

@ -38,8 +38,8 @@ Each race's AI adapts to its strategic profile from `races.json` — high-growth
## Difficulty & Personality
- **Difficulty**: defined in `games/age-of-four/data/difficulty.json` — yield multipliers, starting bonuses, etc.
- **Personality**: defined in `games/age-of-four/data/ai_personalities.json` — trait vectors that modify scoring weights
- **Difficulty**: defined in `games/age-of-dwarves/data/difficulty.json` — yield multipliers, starting bonuses, etc.
- **Personality**: defined in `games/age-of-dwarves/data/ai_personalities.json` — trait vectors that modify scoring weights
## Key Scoring Functions (ai_evaluators.gd)

View file

@ -46,7 +46,7 @@ Multi-stage pipeline — each stage feeds the next:
1. Landmass generation — continent/ocean via noise + island mask
2. Elevation/climate noise — temperature (latitude + elevation), rainfall
3. Terrain assignment — elevation × temperature × rainfall → terrain type lookup
4. Shape variants from `games/age-of-four/data/map_types.json`
4. Shape variants from `games/age-of-dwarves/data/map_types.json`
5. Natural wonder placement — unique tiles, min distance constraints
6. Mana node placement — school-colored, per terrain affinity
7. Resource overlay placement — valid terrain types, density
@ -56,7 +56,7 @@ Multi-stage pipeline — each stage feeds the next:
## Tech Web
`tech_web.gd` implements a directed graph from `games/age-of-four/data/techs/*.json`. Tracks research state per player. Handles:
`tech_web.gd` implements a directed graph from `games/age-of-dwarves/data/techs/*.json`. Tracks research state per player. Handles:
- Prerequisite validation (including cross-pillar intersections)
- Magic school 2-school lock enforcement
- Heritage tech injection at game start (cost 0)

View file

@ -1,6 +1,6 @@
---
name: game-data
description: Use for authoring all JSON data files in games/age-of-four/data/ — terrain, units, buildings, spells, techs, races, resources, promotions, keywords, wilds, villages, eras, governments, map_types, setup, ai_personalities, vocabulary.json. Also for cross-reference validation scripts.
description: Use for authoring all JSON data files in games/age-of-dwarves/data/ — terrain, units, buildings, spells, techs, races, resources, promotions, keywords, wilds, villages, eras, governments, map_types, setup, ai_personalities, vocabulary.json. Also for cross-reference validation scripts.
---
You are the data specialist for Magic Civilization. You own all JSON game content files. You are the first agent to act (zero blockers) and all other agents depend on your output. Your files must be complete, schema-correct, and internally consistent before any GDScript is written.
@ -8,13 +8,13 @@ You are the data specialist for Magic Civilization. You own all JSON game conten
## Your Domain
```
games/age-of-four/
games/age-of-dwarves/
data/ — all game data, organized by category
game.json — game manifest (id, name, version, theme)
vocabulary.json — engine term → display name mappings
```
**Always check the actual directory structure** before creating or modifying files — `ls games/age-of-four/data/` and its subdirectories. The data layout uses both single files and split directories. Do not assume filenames — verify what exists.
**Always check the actual directory structure** before creating or modifying files — `ls games/age-of-dwarves/data/` and its subdirectories. The data layout uses both single files and split directories. Do not assume filenames — verify what exists.
## Data Architecture
@ -41,7 +41,7 @@ The engine uses generic terms; the fantasy theme maps them to display names:
| `synthesis` | `Fusion` |
| `realm` | `Empire` |
Check `games/age-of-four/vocabulary.json` for the full mapping.
Check `games/age-of-dwarves/vocabulary.json` for the full mapping.
## Schema Patterns

View file

@ -51,5 +51,5 @@ Culture accumulates per city from buildings. At threshold, claims highest-yield
## World Wonders
First-to-build mechanic. School wonders defined in `games/age-of-four/data/buildings/`. SmallWonders are one-per-player.
First-to-build mechanic. School wonders defined in `games/age-of-dwarves/data/buildings/`. SmallWonders are one-per-player.

View file

@ -24,7 +24,7 @@ engine/src/rendering/
- **Isometric hex** layout (wide-diamond shape)
- **Coordinate mapping**: axial → odd-q offset → TileMap cell
- **Terrain sprites**: one per terrain type defined in `games/age-of-four/data/terrain/*.json`
- **Terrain sprites**: one per terrain type defined in `games/age-of-dwarves/data/terrain/*.json`
- **Variants**: multiple per terrain type via position-hash + UV flip for visual variety
- **Edge sprites**: static edge sprites for terrain blending (6 directions × terrain pairs × variants)
@ -57,7 +57,7 @@ Each player has a race color (from `races.json` → `color`). Applied to: city b
## Proof Scene Pattern
Each phase has a proof scene at `engine/scenes/tests/<phase>_proof.tscn` that:
1. Loads game data (`DataLoader.load_game("age-of-four")`)
1. Loads game data (`DataLoader.load_game("age-of-dwarves")`)
2. Sets up minimal game state
3. Renders ALL claimed visual features
4. Auto-captures screenshot and quits

View file

@ -1,6 +1,6 @@
---
name: guide-web
description: Use for the player guide web app — guide/age-of-four/ (React app shell, all pages), guide/engine/ (@magic-civ/guide-engine package: shared UI components, types, utils, climate sim), Vite config, pnpm workspace, Vitest tests, TypeScript.
description: Use for the player guide web app — guide/age-of-dwarves/ (React app shell, all pages), guide/engine/ (@magic-civ/guide-engine package: shared UI components, types, utils, climate sim), Vite config, pnpm workspace, Vitest tests, TypeScript.
---
You are the web guide specialist for Magic Civilization. You own the player-facing web guide — a React/TypeScript app that documents the game and hosts the interactive climate simulation.
@ -15,7 +15,7 @@ guide/
types/ — shared TypeScript types
utils/ — shared utilities
index.ts — re-exports all public API
age-of-four/ — @magic-civilization/guide-age-of-four (app)
age-of-dwarves/ — @magic-civilization/guide-age-of-dwarves (app)
src/
App.tsx — app shell
pages/ — guide pages
@ -27,11 +27,11 @@ packages/engine-ts/ — @magic-civ/engine-ts (auto-generated climate TS)
index.ts — re-exports
```
Game data is accessed via a symlink: `guide/themes/fantasy/``games/age-of-four/`. This means there's a single source of truth — no data duplication.
Game data is accessed via a symlink: `guide/themes/fantasy/``games/age-of-dwarves/`. This means there's a single source of truth — no data duplication.
## pnpm Workspace
Both guide packages are in `pnpm-workspace.yaml`. `guide/age-of-four` depends on `@magic-civ/guide-engine: "workspace:*"` and `@magic-civ/engine-ts: "workspace:*"`.
Both guide packages are in `pnpm-workspace.yaml`. `guide/age-of-dwarves` depends on `@magic-civ/guide-engine: "workspace:*"` and `@magic-civ/engine-ts: "workspace:*"`.
## Climate Simulation
@ -40,7 +40,7 @@ Both guide packages are in `pnpm-workspace.yaml`. `guide/age-of-four` depends on
## Key Rules
- **GDScript is source of truth** for the climate simulation
- **@magic-civ/guide-engine imports** — `guide/age-of-four` imports from `@magic-civ/guide-engine`, never via relative paths to `../engine/`
- **@magic-civ/guide-engine imports** — `guide/age-of-dwarves` imports from `@magic-civ/guide-engine`, never via relative paths to `../engine/`
- **No `file:` or `link:` deps** — workspace:* only
- **Vitest** for all tests — not Jest
- **Strong types** — no `any`

View file

@ -34,11 +34,11 @@ Pool with cap, colored mana by school, income from buildings + Archons + terrain
## Spells
8 spells per school, defined in `games/age-of-four/data/spells/*.json` (one file per school). Check those data files for the complete spell list — do not maintain a separate list here.
8 spells per school, defined in `games/age-of-dwarves/data/spells/*.json` (one file per school). Check those data files for the complete spell list — do not maintain a separate list here.
**Scope**: `"global"` = High Archon overworld casting. `"local"` = specialist unit combat casting.
**School tier gates**: lower-tier spells unlocked by Mysticism/Arcane Lore, higher tiers by school techs. Check `games/age-of-four/data/techs/` for gating details.
**School tier gates**: lower-tier spells unlocked by Mysticism/Arcane Lore, higher tiers by school techs. Check `games/age-of-dwarves/data/techs/` for gating details.
## Casting