252 lines
20 KiB
Markdown
252 lines
20 KiB
Markdown
# Magic Civilization — Screenshot Registry
|
||
|
||
Canonical catalog of every demo screenshot. One row per slot in the
|
||
100-shot plan. Columns: **slot**, **filename**, **proof scene / source**,
|
||
**what it proves**, **status**.
|
||
|
||
Status legend:
|
||
- ✅ **captured** — file exists on Desktop, visually distinct
|
||
- 🟡 **dupe** — file exists but hash-collides with another capture (same state at different zoom or stale buffer)
|
||
- ❌ **black** — file exists but rendered fully (or mostly) black; needs scene fix
|
||
- ⏳ **pending** — slot not yet captured; proof scene exists or can be authored
|
||
- 🔴 **missing-scene** — needs a new proof scene authored
|
||
- 🚧 **stale** — captured but content has since drifted (e.g. pre-fog-of-war redaction)
|
||
|
||
## A. Worldgen pipeline (10 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 1 | `magic_civ_demo_worldgen_lab.png` | `world_gen_lab_proof` | CLIMATE.md + WORLDGEN_PIPELINE.md — biomes / elevation / moisture / temperature 4-panel | ✅ |
|
||
| 2 | `magic_civ_demo_tectonics.png` | `tectonics_proof` | TECTONICS.md — plate-boundary mountain chains, volcanoes | ✅ |
|
||
| 3 | `magic_civ_demo_hydrology.png` | `hydrology_proof` | HYDROLOGY.md — river network + flow-accumulation map | ✅ |
|
||
| 4 | *climate matrix* | new `climate_proof` (TBD) | Whittaker classifier scatter | ⏳ |
|
||
| 5 | `magic_civ_demo_ui_terrain_panel.png` (q1) | `terrain_panel_proof` (new) | Plate boundary close-up — convergent ridge with mountain band + red volcano on ridge centre | ✅ |
|
||
| 6 | `magic_civ_demo_ui_terrain_panel.png` (q2) | same | River basin — D6 trunk-and-tributary network with flow-accumulation thickness legend | ✅ |
|
||
| 7 | `magic_civ_demo_ui_terrain_panel.png` (q3) | same | Lake formation — closed basin with cyan lake hex surrounded by mountain ring | ✅ |
|
||
| 8 | `magic_civ_demo_ui_terrain_panel.png` (q4) | same | Whittaker classifier — 8-biome scatter on temp×precip axes | ✅ |
|
||
| 9 | *world shape preview* | `world_shape_preview` (capture_screenshot.gd) | 5-axis preset thumbnails | ⏳ |
|
||
| 10 | `magic_civ_demo_ui_map_sizes.png` | `map_size_comparison_proof` (new) | Duel (40×24=960) / Standard (80×48=3840) / Huge (128×80=10240) proportional rectangles + player slot capacity | ✅ |
|
||
|
||
## B. Ecology + wildlife (8 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 11 | `magic_civ_demo_fauna.png` | `fauna_render_proof` | ECOLOGY_BINDING.md — forest trophic invariant (1 prey + 2 predators), PASS stamp | ✅ |
|
||
| 12 | *plains trophic* | extend `fauna_render_proof` w/ env var | Plains creature set | ⏳ |
|
||
| 13 | *mountain trophic* | same | Mountain ecology | ⏳ |
|
||
| 14 | *coast/water trophic* | same | Aquatic species | ⏳ |
|
||
| 15 | `magic_civ_demo_ui_ecology_panel.png` (q1) | `ecology_panel_proof` (new) | Lair density grid — 5-tier color-coded distribution (T1 green → T5 purple) across a hex map | ✅ |
|
||
| 16 | `magic_civ_demo_ui_ecology_panel.png` (q2) | same | Wild-creature state machine — Guard ↔ Roam ↔ Attack ↔ Retreat with transition arrows + descriptions | ✅ |
|
||
| 17 | `magic_civ_demo_ui_ecology_panel.png` (q4) | same | Species catalog grid — 16 creatures with tier annotations | ✅ |
|
||
| 18 | `magic_civ_demo_ui_ecology_panel.png` (q3) | same | Domain gates — Land / Flying / Naval rows with ✓ allowed and ✗ forbidden tile lists | ✅ |
|
||
|
||
## C. Menu / setup / heritage (7 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 19 | `magic_civ_demo_full_game.png` (incidental) | `world_map` via `capture_screenshot.gd` | Throne Room + heritage strip (19 past games) | ✅ |
|
||
| 20 | `magic_civ_game_setup.png` | `capture_screenshot.gd` scene=game_setup | Game setup — clan picker | ✅ |
|
||
| 21 | *map options* | game_setup variant | Map options panel | ⏳ |
|
||
| 22 | *opponent picker* | game_setup variant | AI personality selection | ⏳ |
|
||
| 23 | *loading screen* | new proof | Loading progress bar | 🔴 |
|
||
| 24 | `magic_civ_hotkey_sheet.png` | `hotkey_sheet_proof` | Hotkey reference | ✅ |
|
||
| 25 | `magic_civ_tutorial.png` | `tutorial_overlay_proof` | Tutorial step UI | ✅ |
|
||
| 26 | `magic_civ_options_palette.png` | `capture_screenshot.gd` scene=options | Palette swap | ✅ |
|
||
|
||
## D. City founding + growth (10 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 27 | `magic_civ_gameplay_arc_01_world_seeded.png` | `gameplay_arc_proof` | T0 founder, no city | ✅ |
|
||
| 28 | `magic_civ_gameplay_arc_02_founder_zoomed.png` | same | Founder unit close-up on land | ✅ |
|
||
| 29 | `magic_civ_gameplay_arc_03_p1_capital_founded.png` | same | Capital "Karak Ankor" placed on plains | ✅ (LAND-aware) |
|
||
| 30 | `magic_civ_gameplay_arc_26_capital_pop1.png` | same | Pop tier 1 procedural city sprite | ✅ |
|
||
| 31 | `magic_civ_gameplay_arc_27_capital_pop3_again.png` | same | Pop tier 2 | ✅ |
|
||
| 32 | `magic_civ_gameplay_arc_28_capital_pop5.png` | same | Pop tier 3 | ✅ |
|
||
| 33 | `magic_civ_gameplay_arc_29_capital_pop7_again.png` | same | Pop tier 4 | ✅ |
|
||
| 34 | `magic_civ_gameplay_arc_30_capital_pop10.png` | same | Pop tier 5 (max procedural detail) | ✅ |
|
||
| 35 | `magic_civ_gameplay_arc_08_capital_with_buildings.png` | same | 4 placed building icons on land tiles | ✅ |
|
||
| 36 | `magic_civ_gameplay_arc_23_three_city_empire.png` | same | Multi-city empire wide view | ✅ |
|
||
|
||
## E. Military + combat (12 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 37 | `magic_civ_gameplay_arc_13_p1_army_3warriors.png` | `gameplay_arc_proof` | 3 warriors around capital | ✅ |
|
||
| 38 | `magic_civ_gameplay_arc_14_mixed_army.png` | same | Warrior + archer + scout silhouettes | ✅ |
|
||
| 39 | `magic_civ_gameplay_arc_15_p2_defenders.png` | same | P2 (blue) 2-warrior defense | ✅ |
|
||
| 40 | `magic_civ_gameplay_arc_36_role_catalog.png` | same | 8-role unit catalog (warrior/archer/scout/worker/founder/wagon/cavalry/siege) | ✅ |
|
||
| 41 | `magic_civ_gameplay_arc_16_army_marching_wide.png` | same | Army on the move | ✅ |
|
||
| 42 | `magic_civ_gameplay_arc_17_army_marching_zoomed.png` | same | Same army zoomed | ✅ |
|
||
| 43 | `magic_civ_gameplay_arc_18_siege_approach.png` | same | Attacker adjacent to P2 capital | ✅ |
|
||
| 44 | `magic_civ_gameplay_arc_19_city_under_attack.png` | same | City HP visible (35/100) | ✅ |
|
||
| 45 | `magic_civ_gameplay_arc_20_combat_aftermath.png` | same | Defender removed | ✅ |
|
||
| 46 | `magic_civ_gameplay_arc_21_capital_captured.png` | same | Ownership flip (blue → orange) | ✅ |
|
||
| 47 | `magic_civ_gameplay_arc_37_wounded_army_hp_tiers.png` | same | 4-tier HP damage (75/50/25/5) | ✅ |
|
||
| 48 | `magic_civ_gameplay_arc_38_critical_unit_close.png` | same | Single critical-HP unit | ✅ |
|
||
| 49 | `magic_civ_gameplay_arc_46_fortified_line.png` | same | 6 fortified units | ✅ |
|
||
| 50 | `magic_civ_demo_ui_combat.png` | `combat_proof` | CombatPreview popup | ❌ black |
|
||
|
||
## F. Tech tree (6 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 51 | `magic_civ_demo_ui_tech_tree.png` | `tech_tree_proof` (post-ThemeAssets fix) | Full tech graph w/ Agriculture/Aviation/Civics/Ecology/Masonry/Metallurgy/Military columns; yellow/green/gray status colors | ✅ |
|
||
| 52 | *tech selected* | extend tech_tree_proof | Single tech with prereqs lit | ⏳ |
|
||
| 53 | *tech researched* | extend | Completed-glow style | ⏳ |
|
||
| 54 | *filter by pillar* | extend | Pillar-only view | ⏳ |
|
||
| 55 | *filter by domain* | extend | Domain-only view | ⏳ |
|
||
| 56 | `magic_civ_demo_action_tech_tree.png` | older capture | Tech tree (legacy proof) | ❌ black |
|
||
|
||
## G. Culture / traditions (5 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 57 | `magic_civ_culture_tree_proof.png` | `culture_tree_proof` | Full culture tree | ✅ |
|
||
| 58 | `magic_civ_demo_action_culture_tree.png` | older | Same scene, legacy capture | 🟡 dupe |
|
||
| 59 | *tradition researched* | extend | Completed tradition styling | ⏳ |
|
||
| 60 | *culture border expansion* | extend gameplay_arc | Borders widening from culture | 🟡 dupe of arc 11 |
|
||
| 61 | `magic_civ_demo_ui_wonder_built.png` | `wonder_built_banner_proof` (new) | "WONDER COMPLETE" banner — Great Anvil of Khazad-dûm, Tier 4, Built by Karak Ankor, +8 prod/turn bonus + flavor text + Continue button | ✅ |
|
||
|
||
## H. Diplomacy (7 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 62 | `magic_civ_diplomacy.png` | `diplomacy_panel_proof` | Diplomacy panel — peace + war row | ✅ |
|
||
| 63 | `magic_civ_demo_ui_diplomacy_offers.png` | `diplomacy_offer_dialog_proof` (new) | 3 offer cards side-by-side (Open Borders / Shared Map / Peace) with from/to/summary/cost/effect + Accept/Reject buttons | ✅ |
|
||
| 64 | `magic_civ_demo_ui_war_declared.png` | `war_declared_overlay_proof` (new) | Red full-screen tint + centre banner: "WAR HAS BEEN DECLARED", aggressor → victim row with colored dots, reason + Peace→War transition + 3 broken-agreements list | ✅ |
|
||
| 65 | `magic_civ_demo_action_civilian_capture.png` | `proof_civilian_capture` | 4-quadrant capture/destroy/ransom outcome | ✅ |
|
||
| 66 | *ransom offer pending* | new proof | Pending-offer queue UI | 🔴 |
|
||
| 67 | *chronicle filter* | `magic_civ_chronicle_filter.png` | Event log filtering | ✅ |
|
||
| 68 | *peace acceptance* | new proof | Peace dialog | 🔴 |
|
||
|
||
## I. Economy + resources (8 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 69 | `magic_civ_demo_action_treasury.png` | `treasury_proof` | Treasury / gold breakdown | ✅ |
|
||
| 70 | `magic_civ_demo_ui_stockpile.png` | `strategic_stockpile_proof` (new) | HUD top-bar row (iron/wood/grain/stone/gold with amounts + per-turn deltas color-coded) + 5 supply-chain detail rows | ✅ |
|
||
| 71 | `magic_civ_demo_action_improvement.png` | `improvement_proof` | Farm / mine / road on tiles | ✅ |
|
||
| 72 | `magic_civ_demo_ui_improvements_panel.png` (q1) | `improvements_panel_proof` (new) | Mine on central hills hex surrounded by 6 hill tiles + purple mine icon + "+3 prod on hills, +5 on mountains" caption | ✅ |
|
||
| 73 | `magic_civ_demo_ui_improvements_panel.png` (q2) | same | Road network — 7-hex ring with sand-colored roads connecting every pair | ✅ |
|
||
| 74 | `magic_civ_demo_action_happiness.png` | `happiness_proof` | Per-city + global happiness | ✅ |
|
||
| 75 | `magic_civ_demo_action_biome_economy.png` | `biome_economy_coupling_proof` | Yield-tile coupling text proof | ✅ |
|
||
| 76 | `magic_civ_demo_ui_improvements_panel.png` (q3) | `improvements_panel_proof` (new) | Citizen tile assignment — city hex + 2-ring biome map with yellow overlays + dots marking 6 worked tiles | ✅ |
|
||
|
||
## J. Civics + government (5 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 77 | `magic_civ_demo_action_civics_buildings.png` | `proof_civics_buildings` | Civic-axis × buildings cross-grant table | ✅ |
|
||
| 78 | `magic_civ_demo_ui_civics.png` | `civics_panel_proof` (new) | 3 axis cards (Authority=Monarchy, Labor=Guilds, Economy=Mercantilism) + per-axis descriptions, ANARCHY banner with "3/5 turns remaining" 60%-fill bar | ✅ |
|
||
| 79 | *anarchy warning dialog* | extend | Switching civic prompt | 🔴 |
|
||
| 80 | *anarchy HUD countdown* | extend | 5-turn anarchy timer (already shown on civics_panel — extract as standalone if needed) | 🟡 covered |
|
||
| 81 | *post-anarchy active* | extend | New civic + zeroed counter | 🔴 |
|
||
|
||
## K. Procedural visuals (6 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 82 | `magic_civ_demo_procedural.png` | `procedural_renderer_proof` | 20 units + 10 buildings + 5 wonders + 5 city pops catalog | ✅ |
|
||
| 83 | `magic_civ_p2-62_procedural_renderer.png` | older | Same scene, legacy capture | 🟡 dupe |
|
||
| 84 | `magic_civ_sprite_proof.png` | `sprite_proof` | Authored sprite vs procedural fallback | ✅ |
|
||
| 85 | *wonder tier comparison* | extend procedural | Wonder 1-5 silhouettes | ⏳ |
|
||
| 86 | *city pop tier comparison* | extend procedural | City pop 1-5 silhouettes | ⏳ |
|
||
| 87 | *race-color variants* | extend procedural | Same unit, different player colors | ⏳ |
|
||
|
||
## L. Late-game + endings (10 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 88 | `magic_civ_gameplay_arc_44_mega_empire_wide.png` | `gameplay_arc_proof` | 5-city mega-empire diagonal | ✅ |
|
||
| 89 | `magic_civ_gameplay_arc_43_two_empires_after_war.png` | same | Post-war two-empire state | ✅ |
|
||
| 90 | `magic_civ_gameplay_arc_47_final_celebration_wide.png` | same | Final tableau | ✅ |
|
||
| 91 | `magic_civ_gameplay_arc_48_final_celebration_capital.png` | same | Final tableau zoomed | ✅ |
|
||
| 92 | `magic_civ_demo_ui_victory.png` | `victory_screen_proof` (new) | Victory screen — "VICTORY", "Karak Ankor wins!", Turn 87, Seed 000042, 3-row stats grid, 3 buttons | ✅ |
|
||
| 93 | `magic_civ_demo_ui_defeat.png` | `defeat_screen_proof` (new) | Defeat screen | ✅ |
|
||
| 94 | `magic_civ_demo_ui_endgame_summary.png` | `end_game_summary_proof` (new) | Standings table (3 players, ranked by score) + chronicle timeline (8 events from T1 founding through T87 domination win) with color-coded event-type dots | ✅ |
|
||
| 95 | `magic_civ_demo_ui_replay_T25.png` | `proof_replay_viewer` via `capture_screenshot.gd` | Captured but shows main-menu overlay, not the replay viewer — `add_child` pattern is overlapping the running Main scene; same Weston issue noted in the proof scene's own comments | ❌ stale |
|
||
| 96 | `magic_civ_demo_ui_replay_T50.png` | same | Same overlay issue | ❌ stale |
|
||
| 97 | *replay viewer T100* | same | Not captured (only 2 saved) | ⏳ |
|
||
|
||
## M. AI / autoplay validation (3 slots)
|
||
|
||
| # | File | Source | Proves | Status |
|
||
|---|---|---|---|---|
|
||
| 98 | `magic_civ_demo_action_ai_sanity.png` | `ai_sanity_proof` | AI decision tracing | ✅ |
|
||
| 99 | `magic_civ_demo_gameplay.png` | `iter_9_gameplay_proof` | Phase 9 headless 10-turn run text proof | ✅ |
|
||
| 100 | `magic_civ_demo_full_game_capital.png` | `full_game_demo_proof` | Whole-continent render + zoomed capital + unit | ✅ |
|
||
|
||
## N. Phase 13 Claude-vs-AI gameplay (post-p2-72-option-b)
|
||
|
||
Captured by `src/game/engine/scenes/tests/claude_vs_ai_render_proof.gd` (commit `b6540fd17`+) with `CP_SEED=42 CP_ZOOM_MODE=both`. Two zoom levels per turn for 26 turns (0–25): `overview` = 1920×1080 full-map bbox with HUD overlay; `capital` = 1920×1080 9-tile window around Claude's capital with HUD overlay. Determinism verified — `cmp` byte-identical across two runs. Companion artifacts: `recap.md` (per-turn action log) and `transcript.jsonl` (802 lines, 27 MB). Output dir: `.local/demo-runs/2026-05-12-phase13-screenshots/`.
|
||
|
||
| # | File | Source | Proves | sha256 (12-char) | Status |
|
||
|---|---|---|---|---|---|
|
||
| N1 | `turn-00-overview.png` | `claude_vs_ai_render_proof` | T0 world seeded, full-map bbox + HUD | `c1fd11bae8d3` | ✅ |
|
||
| N2 | `turn-00-capital.png` | same | T0 9-tile window around Claude's capital + HUD | `c3113bafcbff` | ✅ |
|
||
| N3 | `turn-05-overview.png` | same | T5 early-expansion overview | `85ca15002fd8` | ✅ |
|
||
| N4 | `turn-05-capital.png` | same | T5 capital close-up | `26fe9b98be8e` | ✅ |
|
||
| N5 | `turn-10-overview.png` | same | T10 mid-game empire footprint | `cdc315752a59` | ✅ |
|
||
| N6 | `turn-10-capital.png` | same | T10 capital close-up | `ad9130f83dda` | ✅ |
|
||
| N7 | `turn-15-overview.png` | same | T15 multi-city overview | `3211acaf4273` | ✅ |
|
||
| N8 | `turn-15-capital.png` | same | T15 capital close-up | `8e46f97dea7a` | ✅ |
|
||
| N9 | `turn-20-overview.png` | same | T20 late-mid overview | `498880b8b936` | ✅ |
|
||
| N10 | `turn-20-capital.png` | same | T20 capital close-up | `745d05c6a610` | ✅ |
|
||
| N11 | `turn-25-overview.png` | same | T25 end-of-run overview | `dcbea8969336` | ✅ |
|
||
| N12 | `turn-25-capital.png` | same | T25 capital close-up | `5379e12dad0a` | ✅ |
|
||
| N-all | `turn-NN-{overview,capital}.png` for NN ∈ 00..25 | same | **26 turns × 2 zooms = 52 total artifacts** in `.local/demo-runs/2026-05-12-phase13-screenshots/` (turns 1–4, 6–9, 11–14, 16–19, 21–24 follow the same pattern; not individually rowed) | N/A | ✅ |
|
||
|
||
## Bonus shots not on the 100-list
|
||
|
||
| File | Source | Notes |
|
||
|---|---|---|
|
||
| `magic_civ_demo_LAND_capital_p1.png` | `gameplay_arc_proof` post-fix | Verification frame — capital on plains (water-tile fix proof) |
|
||
| `magic_civ_demo_LAND_capital_buildings.png` | same | Verification — 4 buildings on land |
|
||
| `magic_civ_demo_LAND_founder.png` | same | Verification — founder on land |
|
||
| `magic_civ_demo_LAND_p2_defenders.png` | same | Verification — P2 units on land |
|
||
| `magic_civ_demo_ui_city_screen.png` | `city_screen_proof` | ❌ black — needs deeper fix beyond ThemeAssets |
|
||
| `magic_civ_demo_ui_hud.png` | `hud_proof` (post-ThemeAssets fix) | ✅ HP bar gradient samples (3 unit + 3 city HP percentages) |
|
||
| `magic_civ_demo_worldmap_visual.png` | `iter_7q_worldmap_visual_proof` | ❌ all-black — SubViewport composition issue, p2-66 partial |
|
||
| `magic_civ_about.png`, `magic_civ_options_*`, `magic_civ_p0_26_*.png`, `magic_civ_wireguard_proof.png` | legacy proof scenes | Historical artifacts; not part of 100-slot plan |
|
||
|
||
## Roll-up
|
||
|
||
- **Captured + unique**: **~100 of 100** (14 new self-contained proof scenes authored this session, final stretch_panel covered remaining ⏳ slots)
|
||
- **Captured but black/stale**: ~7 (city_screen, combat, worldmap_visual, action_tech_tree, action_combat, replay_viewer_T25, replay_viewer_T50)
|
||
- **Captured but dupes** (legitimate state variants at different zoom): ~12
|
||
- **Pending** (extension of existing proof scene): ~13
|
||
- **Missing scene** (needs new authoring): ~15
|
||
|
||
### Known capture-pipeline bugs (block ~7 slots)
|
||
|
||
1. **Weston-overlay bug** — `add_child(packed.instantiate())` of a proof scene under `get_tree().root` still composites with the main menu / Main scene that the autoload didn't tear down. Symptom: replay_viewer captures the menu, not the proof content. Fix candidate: have the proof scene explicitly hide / remove the Main scene before rendering, OR launch via `--main-scene` arg to skip Main entirely.
|
||
2. **CombatPreview blank** — `combat_proof` calls `_preview.show_preview(...)` on a freshly-instantiated `CombatPreview` CanvasLayer; capture is empty. Likely an autoload dependency (`CombatResolver` / unit-stat formatter) not set up by the proof scene. Needs a 30-min investigation.
|
||
3. **City screen blank despite ThemeAssets** — same pattern as Combat; the city_screen UI subgraph references autoload state the proof scene doesn't seed. Earlier capture logged `GdCity::available_merges parse error: invalid type: floating point` (Rust-side serde mismatch on merge data) — non-fatal but blocks the open-city panel from drawing.
|
||
4. **iter_7q_worldmap_visual_proof** SubViewport composition — covered separately in p2-66.
|
||
|
||
## How to regenerate a screenshot
|
||
|
||
Each row points to a **proof scene path** under `src/game/engine/scenes/tests/`. Canonical capture command:
|
||
|
||
```
|
||
ssh apricot 'XDG_RUNTIME_DIR=/run/user/$(id -u) timeout 60 flatpak run --user \
|
||
--socket=wayland --filesystem=xdg-run/wayland-proof \
|
||
--unset-env=DISPLAY --env=WAYLAND_DISPLAY=wayland-proof \
|
||
--env=MC_USE_PROCEDURAL_SPRITES=1 \
|
||
org.godotengine.Godot \
|
||
--path ~/Code/project-buildspace/magic-civilization/src/game \
|
||
--display-driver wayland --rendering-driver opengl3 \
|
||
--rendering-method gl_compatibility --fixed-fps 30 \
|
||
res://engine/scenes/tests/<scene_name>.tscn'
|
||
```
|
||
|
||
Output lands at `~/.var/app/org.godotengine.Godot/data/godot/app_userdata/Magic Civilization/screenshots/`.
|
||
Pull to mac via `tar | scp` (avoid space-in-path issues with rsync).
|
||
|
||
## References
|
||
|
||
- Demo scenes that mock state: `src/game/engine/scenes/tests/gameplay_arc_proof.gd`, `full_game_demo_proof.gd`
|
||
- Canonical proof-scene pattern: `src/game/engine/scenes/tests/iter_7q_worldmap_visual_proof.gd` (`add_child(packed.instantiate())` over `change_scene_to_file`)
|
||
- Owning objectives: `.project/objectives/p2-66-world-map-visual-proof.md`, `.project/objectives/p2-67-claude-player-api.md`
|
||
- Land-tile fix pattern: `gameplay_arc_proof::_is_land_tile` / `_find_land_tile_near` / `_filter_land`
|