diff --git a/CLAUDE.md b/CLAUDE.md index 68be215b..18f7b40e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -19,11 +19,13 @@ Fantasy 4X turn-based strategy game (Civ5 + Master of Magic + Magic: The Gatheri The engine is **genre-agnostic**. All game content and display text comes from game packs. The fantasy game "Age of Dwarves" is the default. See `docs/engine/ABSTRACTION.md` (to be written). +**Godot is the primary runtime. GDScript + JSON is the source of truth for everything.** The TypeScript in `packages/` and `guide/` exists only to serve the web guide — it is secondary, generated, and must never be the canonical location for game data or logic. When creating new systems, data structures, or content packages: design for Godot/GDScript first, with JSON data files in the engine tree (`engine/` or `games/`). The TS side consumes those same JSON files through bundler imports. Never create TypeScript-only packages for game content that Godot needs to read. + - UI labels resolve through `ThemeVocabulary.lookup(engine_key)` — never hardcode theme strings - Sprites resolve through `ThemeAssets.resolve(path)` — never hardcode asset paths - Systems communicate via `EventBus` signals — never directly reference other systems - All game content is data-driven from JSON — don't hardcode stats, costs, or effects -- **5 eras, 5 tiers** — everything is tiered 1-5 aligned with the 5 eras (units, spells, buildings, wild creatures). Spells use `scope: "global"` (High Archon, world map) or `scope: "local"` (specialist units, combat). School tech tiers map: T1-T2 spells gated by Mysticism/Arcane Lore, T3-T5 by school techs. +- **10 eras, 10 tiers** — eras and event tiers use a 1-10 scale. Era count and names are game-pack-driven (defined in `eras.json`, not the engine). Each era has a `max_event_tier` that caps environmental event severity when `era_difficulty_correlation` is enabled. Units, spells, buildings use content tiers defined by the game pack. Spells use `scope: "global"` (High Archon, world map) or `scope: "local"` (specialist units, combat). School tech tiers map: T1-T2 spells gated by Mysticism/Arcane Lore, T3-T5 by school techs. ## Documentation diff --git a/baseline-after-configs.png b/baseline-after-configs.png new file mode 100644 index 00000000..fd407eec Binary files /dev/null and b/baseline-after-configs.png differ diff --git a/baseline-sim-complete.png b/baseline-sim-complete.png new file mode 100644 index 00000000..7b81c791 Binary files /dev/null and b/baseline-sim-complete.png differ diff --git a/baseline-t100-check.png b/baseline-t100-check.png new file mode 100644 index 00000000..503d6ae6 Binary files /dev/null and b/baseline-t100-check.png differ diff --git a/baseline-terrain-fixed.png b/baseline-terrain-fixed.png new file mode 100644 index 00000000..df0d848a Binary files /dev/null and b/baseline-terrain-fixed.png differ diff --git a/baseline-terrain-tab.png b/baseline-terrain-tab.png new file mode 100644 index 00000000..881aa48c Binary files /dev/null and b/baseline-terrain-tab.png differ diff --git a/climate-sim-after-fix.png b/climate-sim-after-fix.png new file mode 100644 index 00000000..cb947ae5 Binary files /dev/null and b/climate-sim-after-fix.png differ diff --git a/climate-sim-verification.png b/climate-sim-verification.png new file mode 100644 index 00000000..a93c8967 Binary files /dev/null and b/climate-sim-verification.png differ diff --git a/hadean-1200h.png b/hadean-1200h.png new file mode 100644 index 00000000..f4a8b44e Binary files /dev/null and b/hadean-1200h.png differ diff --git a/hadean-atmo-verified.png b/hadean-atmo-verified.png new file mode 100644 index 00000000..9b8cbdfa Binary files /dev/null and b/hadean-atmo-verified.png differ diff --git a/hadean-chart-1.png b/hadean-chart-1.png new file mode 100644 index 00000000..ecac503d Binary files /dev/null and b/hadean-chart-1.png differ diff --git a/hadean-check-1.png b/hadean-check-1.png new file mode 100644 index 00000000..22b2b800 Binary files /dev/null and b/hadean-check-1.png differ diff --git a/hadean-check-2.png b/hadean-check-2.png new file mode 100644 index 00000000..8959c3f6 Binary files /dev/null and b/hadean-check-2.png differ diff --git a/hadean-check-3.png b/hadean-check-3.png new file mode 100644 index 00000000..957dae74 Binary files /dev/null and b/hadean-check-3.png differ diff --git a/hadean-check-4.png b/hadean-check-4.png new file mode 100644 index 00000000..de992d4d Binary files /dev/null and b/hadean-check-4.png differ diff --git a/hadean-dashboard-scrolled.png b/hadean-dashboard-scrolled.png new file mode 100644 index 00000000..ae02fd04 Binary files /dev/null and b/hadean-dashboard-scrolled.png differ diff --git a/hadean-dashboard-t500.png b/hadean-dashboard-t500.png new file mode 100644 index 00000000..fa830577 Binary files /dev/null and b/hadean-dashboard-t500.png differ diff --git a/hadean-final-verify.png b/hadean-final-verify.png new file mode 100644 index 00000000..9b8cbdfa Binary files /dev/null and b/hadean-final-verify.png differ diff --git a/hadean-fullpage.png b/hadean-fullpage.png new file mode 100644 index 00000000..9b8cbdfa Binary files /dev/null and b/hadean-fullpage.png differ diff --git a/hadean-panels-expanded.png b/hadean-panels-expanded.png new file mode 100644 index 00000000..897d14b8 Binary files /dev/null and b/hadean-panels-expanded.png differ diff --git a/hadean-scrolled2.png b/hadean-scrolled2.png new file mode 100644 index 00000000..9b8cbdfa Binary files /dev/null and b/hadean-scrolled2.png differ diff --git a/hadean-stats-section.png b/hadean-stats-section.png new file mode 100644 index 00000000..9b8cbdfa Binary files /dev/null and b/hadean-stats-section.png differ diff --git a/hadean-terrain-chart-wide.png b/hadean-terrain-chart-wide.png new file mode 100644 index 00000000..c88c1e73 Binary files /dev/null and b/hadean-terrain-chart-wide.png differ diff --git a/hadean-terrain-chart.png b/hadean-terrain-chart.png new file mode 100644 index 00000000..b4e6d0c8 Binary files /dev/null and b/hadean-terrain-chart.png differ diff --git a/hadean-verification-t500.png b/hadean-verification-t500.png new file mode 100644 index 00000000..fa830577 Binary files /dev/null and b/hadean-verification-t500.png differ diff --git a/hadean-wide-t1.png b/hadean-wide-t1.png new file mode 100644 index 00000000..af5486ca Binary files /dev/null and b/hadean-wide-t1.png differ diff --git a/layer-pressure-v2.png b/layer-pressure-v2.png new file mode 100644 index 00000000..2b41f114 Binary files /dev/null and b/layer-pressure-v2.png differ diff --git a/layer-pressure.png b/layer-pressure.png new file mode 100644 index 00000000..a5081562 Binary files /dev/null and b/layer-pressure.png differ diff --git a/layer-terrain-cartographic.png b/layer-terrain-cartographic.png new file mode 100644 index 00000000..a735d487 Binary files /dev/null and b/layer-terrain-cartographic.png differ diff --git a/layer-terrain-rivers-t500.png b/layer-terrain-rivers-t500.png new file mode 100644 index 00000000..207e8f76 Binary files /dev/null and b/layer-terrain-rivers-t500.png differ diff --git a/layer-wind-pressure-contrast.png b/layer-wind-pressure-contrast.png new file mode 100644 index 00000000..eabfec83 Binary files /dev/null and b/layer-wind-pressure-contrast.png differ diff --git a/layer-wind-pressure-t500.png b/layer-wind-pressure-t500.png new file mode 100644 index 00000000..6045506b Binary files /dev/null and b/layer-wind-pressure-t500.png differ diff --git a/layer-wind-pressure-tuned.png b/layer-wind-pressure-tuned.png new file mode 100644 index 00000000..c6c42e53 Binary files /dev/null and b/layer-wind-pressure-tuned.png differ diff --git a/layers_terrain_only.png b/layers_terrain_only.png new file mode 100644 index 00000000..de25f9f6 Binary files /dev/null and b/layers_terrain_only.png differ diff --git a/layers_terrain_plus_temp.png b/layers_terrain_plus_temp.png new file mode 100644 index 00000000..106851e8 Binary files /dev/null and b/layers_terrain_plus_temp.png differ diff --git a/overlay-current-state.png b/overlay-current-state.png new file mode 100644 index 00000000..ae899364 Binary files /dev/null and b/overlay-current-state.png differ diff --git a/overlay-fresh.png b/overlay-fresh.png new file mode 100644 index 00000000..122876e6 Binary files /dev/null and b/overlay-fresh.png differ diff --git a/overlay-loaded.png b/overlay-loaded.png new file mode 100644 index 00000000..e0def640 Binary files /dev/null and b/overlay-loaded.png differ diff --git a/project.godot b/project.godot index ecf44845..f8bf91e0 100644 --- a/project.godot +++ b/project.godot @@ -16,11 +16,13 @@ EnvConfig="*res://engine/src/autoloads/env_config.gd" SettingsManager="*res://engine/src/autoloads/settings_manager.gd" EventBus="*res://engine/src/autoloads/event_bus.gd" DataLoader="*res://engine/src/autoloads/data_loader.gd" +BiomeRegistry="*res://engine/src/autoloads/biome_registry.gd" ThemeVocabulary="*res://engine/src/autoloads/theme_vocabulary.gd" ThemeAssets="*res://engine/src/autoloads/theme_assets.gd" GameLogger="*res://engine/src/autoloads/game_logger.gd" GameState="*res://engine/src/autoloads/game_state.gd" TurnManager="*res://engine/src/autoloads/turn_manager.gd" +ThroneRoomProfile="*res://engine/src/modules/empire/throne_room_profile.gd" SpriteManifest="*res://engine/src/autoloads/sprite_manifest.gd" ScreenCapture="*res://engine/scenes/tests/capture_screenshot.gd" diff --git a/sim-abiotic-check.png b/sim-abiotic-check.png new file mode 100644 index 00000000..76239203 Binary files /dev/null and b/sim-abiotic-check.png differ diff --git a/sim-abiotic.png b/sim-abiotic.png new file mode 100644 index 00000000..28c1fab3 Binary files /dev/null and b/sim-abiotic.png differ diff --git a/sim-full.png b/sim-full.png new file mode 100644 index 00000000..2a98c390 Binary files /dev/null and b/sim-full.png differ diff --git a/sim-hadean-300.png b/sim-hadean-300.png new file mode 100644 index 00000000..e21cf71c Binary files /dev/null and b/sim-hadean-300.png differ diff --git a/sim-hadean-after-registry-fix.png b/sim-hadean-after-registry-fix.png new file mode 100644 index 00000000..629c1c25 Binary files /dev/null and b/sim-hadean-after-registry-fix.png differ diff --git a/sim-hadean-bottom.png b/sim-hadean-bottom.png new file mode 100644 index 00000000..a8b50a24 Binary files /dev/null and b/sim-hadean-bottom.png differ diff --git a/sim-hadean-canopy-fix-full.png b/sim-hadean-canopy-fix-full.png new file mode 100644 index 00000000..e03b3310 Binary files /dev/null and b/sim-hadean-canopy-fix-full.png differ diff --git a/sim-hadean-canopy-fix-loaded.png b/sim-hadean-canopy-fix-loaded.png new file mode 100644 index 00000000..7cc74e4d Binary files /dev/null and b/sim-hadean-canopy-fix-loaded.png differ diff --git a/sim-hadean-canopy-fix-scrolled.png b/sim-hadean-canopy-fix-scrolled.png new file mode 100644 index 00000000..a1f71dac Binary files /dev/null and b/sim-hadean-canopy-fix-scrolled.png differ diff --git a/sim-hadean-canopy-fix.png b/sim-hadean-canopy-fix.png new file mode 100644 index 00000000..7f149f75 Binary files /dev/null and b/sim-hadean-canopy-fix.png differ diff --git a/sim-hadean-check.png b/sim-hadean-check.png new file mode 100644 index 00000000..10dfe614 Binary files /dev/null and b/sim-hadean-check.png differ diff --git a/sim-hadean-final-clean.png b/sim-hadean-final-clean.png new file mode 100644 index 00000000..cdae3881 Binary files /dev/null and b/sim-hadean-final-clean.png differ diff --git a/sim-hadean-final-map.png b/sim-hadean-final-map.png new file mode 100644 index 00000000..7f54ce39 Binary files /dev/null and b/sim-hadean-final-map.png differ diff --git a/sim-hadean-fixed-chart.png b/sim-hadean-fixed-chart.png new file mode 100644 index 00000000..e391eb8b Binary files /dev/null and b/sim-hadean-fixed-chart.png differ diff --git a/sim-hadean-fixed-chart2.png b/sim-hadean-fixed-chart2.png new file mode 100644 index 00000000..714bfb6b Binary files /dev/null and b/sim-hadean-fixed-chart2.png differ diff --git a/sim-hadean-fixed-paused.png b/sim-hadean-fixed-paused.png new file mode 100644 index 00000000..56b202e9 Binary files /dev/null and b/sim-hadean-fixed-paused.png differ diff --git a/sim-hadean-fresh.png b/sim-hadean-fresh.png new file mode 100644 index 00000000..1c178d32 Binary files /dev/null and b/sim-hadean-fresh.png differ diff --git a/sim-hadean-hills-fix-full.png b/sim-hadean-hills-fix-full.png new file mode 100644 index 00000000..53fbbdfc Binary files /dev/null and b/sim-hadean-hills-fix-full.png differ diff --git a/sim-hadean-hills-fix.png b/sim-hadean-hills-fix.png new file mode 100644 index 00000000..53fbbdfc Binary files /dev/null and b/sim-hadean-hills-fix.png differ diff --git a/sim-hadean-reclassified-chart.png b/sim-hadean-reclassified-chart.png new file mode 100644 index 00000000..aec50030 Binary files /dev/null and b/sim-hadean-reclassified-chart.png differ diff --git a/sim-hadean-reclassified.png b/sim-hadean-reclassified.png new file mode 100644 index 00000000..daf605dd Binary files /dev/null and b/sim-hadean-reclassified.png differ diff --git a/sim-hadean-scrolled.png b/sim-hadean-scrolled.png new file mode 100644 index 00000000..eb4ca28e Binary files /dev/null and b/sim-hadean-scrolled.png differ diff --git a/sim-hadean-v3-400.png b/sim-hadean-v3-400.png new file mode 100644 index 00000000..66d7d84c Binary files /dev/null and b/sim-hadean-v3-400.png differ diff --git a/sim-hadean-v3.png b/sim-hadean-v3.png new file mode 100644 index 00000000..0f8becdd Binary files /dev/null and b/sim-hadean-v3.png differ diff --git a/sim-hadean-v4.png b/sim-hadean-v4.png new file mode 100644 index 00000000..5e8febb1 Binary files /dev/null and b/sim-hadean-v4.png differ diff --git a/sim-hadean-v5.png b/sim-hadean-v5.png new file mode 100644 index 00000000..ee4771ac Binary files /dev/null and b/sim-hadean-v5.png differ diff --git a/sim-hadean-verified.png b/sim-hadean-verified.png new file mode 100644 index 00000000..6eec9651 Binary files /dev/null and b/sim-hadean-verified.png differ diff --git a/sim-initial.png b/sim-initial.png new file mode 100644 index 00000000..ad6beef1 Binary files /dev/null and b/sim-initial.png differ diff --git a/sim-loaded.png b/sim-loaded.png new file mode 100644 index 00000000..01f62033 Binary files /dev/null and b/sim-loaded.png differ diff --git a/sim-loader-geology-phase.png b/sim-loader-geology-phase.png new file mode 100644 index 00000000..2fa96f49 Binary files /dev/null and b/sim-loader-geology-phase.png differ diff --git a/sim-loader-redesign.png b/sim-loader-redesign.png new file mode 100644 index 00000000..12d42b97 Binary files /dev/null and b/sim-loader-redesign.png differ diff --git a/sim-reload.png b/sim-reload.png new file mode 100644 index 00000000..118b0c86 Binary files /dev/null and b/sim-reload.png differ diff --git a/sim-wide.png b/sim-wide.png new file mode 100644 index 00000000..45e6a294 Binary files /dev/null and b/sim-wide.png differ diff --git a/sim-worker-fix-verify.png b/sim-worker-fix-verify.png new file mode 100644 index 00000000..7bebc9af Binary files /dev/null and b/sim-worker-fix-verify.png differ diff --git a/spritegen.db b/spritegen.db new file mode 100644 index 00000000..e69de29b diff --git a/trophic-cascade-after-fix.png b/trophic-cascade-after-fix.png new file mode 100644 index 00000000..f9aef599 Binary files /dev/null and b/trophic-cascade-after-fix.png differ diff --git a/trophic-cascade-initial.png b/trophic-cascade-initial.png new file mode 100644 index 00000000..4e6de949 Binary files /dev/null and b/trophic-cascade-initial.png differ