magicciv/.project/ROADMAP.md
Claude Code 65fd021343 docs(roadmap): 📝 Update documented feature gaps and planned roadmap items in FEATURE_GAP.md and ROADMAP.md
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-03-26 11:38:24 -07:00

10 KiB
Raw Permalink Blame History

Magic Civilization — Development Roadmap

Fresh build starting from M0. Reference implementation: @magic-civilization.messy/

Early Access Scope ("Age of Dwarves")

Single playable race (Dwarf), no magic, mundane tech paths only. Same complete 4X game built end-to-end — roughly half the work of Age of Dwarves.

Track 2a: Age of Dwarves (EA release)

System Scope
Hex map Full — 20 terrain types, natural wonders, resources, fog of war
Map generation 5 presets (Duel, Team Duel, FFA, FFA-Cross, FFA-Plus)
World simulation Full — climate, flora/fauna, natural events (mundane fauna only)
Units Full — movement, pathfinding, stacking, vision
Cities Full — founding, growth, tile working, production queue, buildings, Deep Forge
Tech web 6 mundane pillars + intersections (no school branches, no fusions)
Combat Full — 1UPT, flanking, ZOC, ranged, terrain, fortification, promotions, siege
Happiness Full — global pool, modifiers, Golden Ages
Victory Domination, Score
AI Basic — 1-3 Dwarf opponents
Save/Load Basic — single slot + auto-save

Track 2b: Age of Dwarves (expansion)

Adds on top of 2a: 3 additional races (High Elf, Human, Orc), M4 (ley lines, mana, corruption), Phase 9 (spells, Archons, summoning, Ascension), magic school tech branches, fusion techs, 2-school lock, Arcane Ascension victory.

Excluded (post-expansion)

12 additional races, 7 additional fusions, diplomacy, social policies, naval combat, Freepeople havens, trade routes, government types, strategic resources, game speed options, Ethereal Plane.


M0: Foundation

Goal: Godot project opens, loads theme pack, shows something on screen. Transpiler pipeline verified.

  • project.godot with autoloads registered
  • .gitignore, export_presets.cfg, gdlintrc
  • All 9 autoloads: EnvConfig, EventBus, GameLogger, DataLoader, GameState, TurnManager, ThemeVocabulary, ThemeAssets, SettingsManager
  • Minimal data: game.json, vocabulary.json, climate_spec.json
  • Main menu scene with "New Game" button
  • pnpm workspace + guide shell
  • Transpiler pipeline: climate GDScript -> TypeScript verified

Done when: godot --headless --quit exits 0. Main menu visible. pnpm dev serves guide. transpile.py --check exits 0.


M1: Climate & Geology

Goal: The inorganic physical world. Temperature, pressure, wind, water, biomes.

  • All terrain/climate/hydrology JSON data (FEATURE_GAP 3.1 additions)
  • Map core: hex_utils.gd, tile.gd, game_map.gd
  • Map generation pipeline (9-stage): landmass, elevation, sea level, relief, temperature, moisture, terrain patches, wind, hydrology
  • Climate physics: temperature, moisture advection, pressure, wind, precipitation
  • Atmosphere: pressure bands, Coriolis, dynamic anomalies
  • Hydrology: Planchon-Darboux depression fill, D8 flow routing, rivers, lakes
  • Biome assignment from climate gradients
  • GDScript<->TypeScript golden vectors (seed 42)
  • Guide climate visualizer (all lenses)

Done when: Rivers flow downhill. Biomes form correctly. Climate deterministic. Golden vectors pass. Guide renders all lenses.


M2a: Ecosystem Engine — Architecture + Proof

Goal: Decompose terrain into geological substrate + computed biomes. Build Lotka-Volterra population dynamics. Prove with 6 species across 5 biomes.

  • Substrate refactor: terrain_id → biome_id, substrate fields, water body identification
  • OOP models (BiomeModel, SpeciesModel, FloraProfile) + DataLoader typed returns
  • SQLite for dynamic population state
  • BiomeClassifier: substrate + climate + flora → biome_id (~5 proof biomes)
  • Flora dynamics: canopy/undergrowth/fungi with cross-effects, succession, desertification
  • Fauna dynamics: Lotka-Volterra, migration, carrying capacity (grass→deer→wolf, phytoplankton→fish→whale)
  • Marine harvest port, NPC buildings (lairs/villages), ecosystem health metric
  • Sprite-gen extended for species + substrate + biome categories
  • Game pack: age-of-dwarves → age-of-dwarves

Done when: Wolf population tracks deer. Fish breed in lakes. Biomes shift with climate. SQLite stores populations. 6 species end-to-end.


M2b: Full Planetary Mundane Ecosystem

Goal: Fill the planet with life. All 25 Earth biomes, all 39 species, full food webs.

  • Remaining 20 biome definitions + complete BiomeClassifier
  • Remaining 33 species authored (13 flora + 10 herbivores + 10 predators)
  • Full food web tuned for population stability (200 turns, 5 seeds)
  • Cross-biome species (bear fishes, eagle hunts across biomes)
  • Full sprite generation: 39 species × 20 variants, 25 biomes × Q1-Q5
  • Guide: all biomes, all species, food web visualization
  • Golden vectors for all species + biomes

Done when: Every hex has appropriate biology. 15+ biomes on standard map. Predator-prey oscillations dampen. All 39 species stable.


M3: Natural Events

Goal: Dynamic disruptions reshape geology and biology.

  • Event dispatch engine: hash_noise() PRNG, frequency/severity rolls
  • Geological events: volcanic eruption, earthquake, tsunami, impact
  • Ecological events: wildfire, drought, plague, pandemic
  • Global events: marine die-offs, solar events, glacial events
  • Weather system
  • Terrain evolution: quality ladder, climate-driven terrain flip
  • Guide event timeline + impact visualization

Done when: Events fire deterministically. Volcanic eruption creates terrain. Wildfire burns forest (regrows via M2). Events match GDScript<->TypeScript.


Phase 5: Map Rendering + Units

Goal: See the world. Move things on it.

  • TileMapLayer renders terrain sprites
  • Camera — pan (WASD/drag/edge scroll), zoom (scroll wheel)
  • Fog of war — unexplored / fog / visible
  • Unit class — type, stats, position, owner, movement
  • Founder + Wanderer at game start
  • Click-to-select, A* pathfinding, animated movement
  • Vision radius, fog updates
  • Turn system — movement refresh, "End Turn" button
  • Village discovery — reward on entry

Done when: Map renders. Camera moves. Units move. Fog clears. Turns cycle.


Phase 6: Cities

Goal: Found cities, grow them, produce things.

  • Founder "Found City" action
  • City class — position, owner, population, worked tiles
  • Tile yield calculation — food/production/trade (modified by M2 ecology)
  • Population growth from food surplus
  • Production queue — units and buildings
  • Building completion effects (including Deep Forge)
  • Unit completion — spawns on map
  • City screen UI
  • Multiple cities per player
  • Happiness system (global pool)
  • Culture + border expansion

Done when: Found a city, assign tiles, build a Spearman, see it appear on map.


Phase 7: Tech Web

Goal: Research techs, unlock things.

  • TechWeb — directed graph from techs.json
  • Science accumulation -> current research
  • Tech completion -> unlock signals
  • Production gating by tech
  • Tech tree UI — 6-pillar mundane web
  • Click to research (if prereqs met)

Done when: Research Construction -> City Walls. Mundane tech progression through all 5 eras.


Phase 8: Combat

Goal: Units fight.

  • 1UPT enforcement + specialist stacking
  • Click enemy to attack
  • CombatResolver — damage formula, variance
  • Flanking, Support, ZOC
  • Ranged (no retaliation, LoS)
  • Terrain defense bonuses
  • Fortification
  • Territory healing gradient
  • Promotions — 4 levels, branching, heal 30% on level-up
  • City siege — city HP, wall penalty, siege bonus
  • Combat preview + result UI
  • Wild creature spawning, combat, lair clearing (mundane fauna)

Done when: Flanking, ZOC, ranged, promotions, siege all work. Lairs can be cleared.


Phase 10: AI & Difficulty

Goal: Play against someone.

  • Hot-seat multiplayer
  • All players are Dwarves with dwarf_heritage origin tech
  • ai_player.gd — 7-phase turn processing
  • ai_city.gd — site eval, build priority
  • ai_tactical.gd — unit movement, attack targeting
  • ai_military.gd — threat assessment, army composition
  • AI difficulty modifiers
  • AI personality system

Done when: Full game: explore -> build -> research -> fight -> win/lose vs AI.


Phase 11: Polish

Goal: Production quality.

  • Generated sprite art (tools/sprite-generation/ pipeline)
  • Sound effects + music
  • Save/load — GameState serialization
  • Victory conditions (Domination, Score)
  • Tile improvements (Farm, Mine, Road) + Engineer unit
  • Gold economy — purchasing, rush-buying
  • Game setup screen — map options, difficulty
  • Minimap — SubViewport, terrain/unit dots, fog overlay
  • Tutorial hints

Milestone Summary

Track 2a: Age of Dwarves (EA)

Phase Name Core Deliverable
M0 Foundation Project opens, data loads, transpiler works
M1 Climate & Geology Temperature, wind, hydrology, biomes
M2a Ecosystem Engine Substrate refactor, trait-based species, Lotka-Volterra, ~10 proof species
M2b Full Ecosystem All 25 biomes, trait-tuned species per biome, population stability
M3 Natural Events Volcanic, weather, wildfire, plague, terrain evolution
5 Map + Units Hex rendering, camera, fog, unit movement, turns
6 Cities Found, grow, produce, Deep Forge
7 Tech Web Research, unlock, 6-pillar mundane web
8 Combat Fight, capture cities, lair clearing
10 AI & Difficulty Play a full game vs Dwarf AI
11 Polish Art, sound, save/load, victory, economy

Track 2b: Age of Dwarves (expansion, deferred)

Phase Name Core Deliverable
M4 Magic World Ley lines, mana, corruption, magical ecology
9 Magic Gameplay Spells, mana, summoning, Ascension
10+ Races 3 additional races, heritage techs, race selection
7+ Magic Tech School branches, fusion techs, 2-school lock

Track 2a = Complete Mundane 4X Track 2b = Magic Expansion