Files
synthesis/PROGRESS.md
Денис Шкабатур 0d35cdcc73 phase 7: Mycelium — persistent knowledge network connecting runs
- Mycelium graph: nodes/edges/strength, deposit discoveries, weighted extraction
- Fungal nodes: ECS entities on world map with bioluminescent glow animation
- Knowledge system: deposit at nodes (+ auto on death), memory flash retrieval
- Mycosis: visual tint overlay on prolonged node contact, reveal threshold
- Spore shop: 5 Cradle bonuses (health, elements, knowledge boost)
- MetaState extended with MyceliumGraphData, IndexedDB persistence updated
- GameScene: node spawning, glow rendering, E-key interaction, mycosis overlay
- CradleScene: spore shop UI, Mycelium stats, purchased effects forwarding
- 36 new tests (385 total)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 15:47:03 +03:00

135 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Synthesis — Development Progress
> **Last updated:** 2026-02-12
> **Current phase:** Phase 7 ✅ → Ready for Phase 8
---
## Completed
### Phase 0: Project Setup ✅
- [x] Game Design Document (`synthesis-gdd.md`)
- [x] Engine analysis and tech stack selection (`engine-analysis.md`)
- [x] npm project + dependencies (Phaser 3, bitECS, TypeScript, Vite, Vitest)
- [x] TypeScript strict config
- [x] Vite config (HMR, chunk splitting)
- [x] Phaser config (1280x720, pixel-art, arcade physics, top-down)
- [x] BootScene with title screen
- [x] Cursor rules (6 rules: project context, agent workflow, ECS, chemistry, Phaser, data)
- [x] Implementation plan (`IMPLEMENTATION-PLAN.md`)
- [x] Progress tracking (this file)
### Phase 1: Chemistry Engine ✅
- [x] 1.1 Types and interfaces (`src/chemistry/types.ts`)
- [x] 1.2 Element data — 20 real elements (`src/data/elements.json`)
- [x] 1.3 Element registry with lookup by symbol/number (`src/chemistry/elements.ts`)
- [x] 1.4 Reaction engine — O(1) lookup, condition checking, failure reasons (`src/chemistry/engine.ts`)
- [x] 1.5 Reaction data — 34 real reactions (`src/data/reactions.json`)
- [x] 1.6 Compound data — 25 compounds with game effects (`src/data/compounds.json`)
- [x] 1.7 Unit tests — 35 passing (`tests/chemistry.test.ts`)
### Phase 2: ECS Foundation ✅
- [x] 2.1 World setup — bitECS world + time tracking (`src/ecs/world.ts`)
- [x] 2.2 Core components — Position, Velocity, SpriteRef, Health, ChemicalComposition (`src/ecs/components.ts`)
- [x] 2.3 Movement system — velocity-based + bounce (`src/ecs/systems/movement.ts`)
- [x] 2.4 Phaser ↔ bitECS sync bridge — polling-based, creates/destroys/syncs sprites (`src/ecs/bridge.ts`)
- [x] 2.5 Entity factory — createGameEntity/removeGameEntity (`src/ecs/factory.ts`)
- [x] 2.6 Health/damage system — damage, healing, death detection (`src/ecs/systems/health.ts`)
- [x] 2.7 Visual test — 20 colored circles bouncing at 60fps, GameScene (`src/scenes/GameScene.ts`)
- [x] Unit tests — 39 passing (`tests/ecs.test.ts`)
### Phase 3: World Generation ✅
- [x] 3.1 Tilemap system — canvas tileset with per-pixel variation + Phaser tilemap (`src/world/tilemap.ts`)
- [x] 3.2 Biome data — Catalytic Wastes: 8 tile types (`src/data/biomes.json`)
- [x] 3.3 Noise generation — simplex-noise, seeded PRNG (mulberry32), deterministic (`src/world/noise.ts`)
- [x] 3.4 World generator — elevation noise → base terrain, detail noise → overlays (`src/world/generator.ts`)
- [x] 3.5 Resource placement — geysers on acid-shallow zones, mineral veins on ground (`src/world/generator.ts`)
- [x] 3.6 Camera — WASD movement, mouse wheel zoom (0.5x3x), bounds clamping (`src/world/camera.ts`)
- [x] 3.7 Minimap — canvas-based 160x160 overview, viewport indicator, border (`src/world/minimap.ts`)
- [x] Unit tests — 21 passing (`tests/world.test.ts`)
### Phase 4: Player Systems ✅
- [x] 4.1 Player entity + WASD controller (`src/player/input.ts`, `src/player/collision.ts`, `src/player/spawn.ts`, `src/player/factory.ts`)
- [x] 4.2 Inventory — weight-based, element stacking, AMU mass from registries (`src/player/inventory.ts`)
- [x] 4.3 Element collection from world objects — resource entities, proximity interaction, E key (`src/player/interaction.ts`, `src/world/resources.ts`)
- [x] 4.4 Crafting — chemistry engine integration, inventory consume/produce, condition checking (`src/player/crafting.ts`)
- [x] 4.5 Projectile system — throw elements toward mouse, lifetime + tile collision (`src/player/projectile.ts`)
- [x] 4.6 Quick slots — 4 hotkeys, auto-assign on pickup, active slot for throw (`src/player/quickslots.ts`)
- [x] 4.7 HUD — UIScene overlay: health bar, quick slots, inventory info, controls hint (`src/scenes/UIScene.ts`)
- [x] Unit tests — 39 player + 28 inventory + 12 interaction + 11 crafting + 13 projectile + 15 quickslots + 8 UI = 126 tests (222 total)
### Phase 5: Creatures & Ecology ✅
- [x] 5.1 Creature data — 3 species: Crystallids, Acidophiles, Reagents (`src/data/creatures.json`)
- [x] 5.2 AI behavior — FSM: idle → wander → feed → flee → attack (`src/creatures/ai.ts`)
- [x] 5.3 Metabolism — energy drain, feeding from resources, starvation damage (`src/creatures/metabolism.ts`)
- [x] 5.4 Population dynamics — counting, reproduction, initial spawning (`src/creatures/population.ts`)
- [x] 5.5 Life cycle — egg → youth → mature → aging → natural death (`src/creatures/lifecycle.ts`)
- [x] 5.6 Interaction — projectile collision (armor), observation, creature→player melee (`src/creatures/interaction.ts`)
- [x] 5.7 Ecosystem test — populations fluctuate, don't die out (`tests/ecosystem.test.ts`)
- [x] 5.8 GameScene integration — all creature systems in update loop, debug overlay
- [x] ECS components: Creature, AI, Metabolism, LifeCycle (`src/ecs/components.ts`)
- [x] Species registry with string/numeric ID lookup (`src/creatures/types.ts`)
- [x] Creature factory (`src/creatures/factory.ts`)
- [x] Unit tests — 51 creature + 16 interaction + 5 ecosystem = 72 tests (293 total)
### Phase 6: Run Cycle ✅
- [x] 6.1 Spore Cradle — CradleScene: school selection UI, floating spore particles, meta display (`src/scenes/CradleScene.ts`)
- [x] 6.2 Death trigger — player death → camera fade → DeathScene transition (`src/scenes/GameScene.ts`)
- [x] 6.3 Death animation — body decomposes into real elements (65% O, 18% C, 10% H...), element labels, Mycelium threads absorbing particles (`src/scenes/DeathScene.ts`)
- [x] 6.4 Moment Between — WebGL Mandelbrot/Julia hybrid shader with morphing + zoom, canvas fallback for non-WebGL (`src/scenes/FractalScene.ts`)
- [x] 6.5 Meta-progression — Codex (permanent knowledge), spores (currency), run history, IndexedDB persistence (`src/run/meta.ts`, `src/run/persistence.ts`)
- [x] 6.6 Run phases — state machine: Awakening → Exploration → Escalation → Crisis → Resolution, auto-advance on timers (`src/run/state.ts`)
- [x] 6.7 Escalation — creature speed/aggro/damage multipliers, reaction instability, environmental damage at high entropy (`src/run/escalation.ts`)
- [x] 6.8 Crisis: Chemical Plague — chain reaction poisons atmosphere, progressive player damage, toxic green tint overlay, CaO neutralization mechanics (`src/run/crisis.ts`)
- [x] 6.9 School: Alchemist — starting kit (H×5, O×5, C×3, Na×3, S×2, Fe×2), chemical equilibrium principle (`src/data/schools.json`)
- [x] Scene flow: BootScene → CradleScene → GameScene → DeathScene → FractalScene → CradleScene (full loop verified)
- [x] Texture cleanup for multi-run support (tilemap + minimap textures removed before recreation)
- [x] Unit tests — 42 run-cycle + 14 escalation = 56 tests (349 total)
### Phase 7: Mycelium ✅
- [x] 7.1 Mycelium Graph — persistent knowledge network (nodes, edges, deposit/strengthen/query) (`src/mycelium/graph.ts`)
- [x] 7.2 Fungal Nodes — ECS entities on world map, glowing bioluminescent spots, pulsing animation (`src/mycelium/nodes.ts`)
- [x] 7.3 Knowledge Recording — deposit run discoveries into Mycelium (auto on death + manual at nodes) (`src/mycelium/knowledge.ts`)
- [x] 7.4 Knowledge Extraction — memory flashes from past runs, weighted by node strength, Russian text templates (`src/mycelium/knowledge.ts`)
- [x] 7.5 Mycosis — visual distortion (tint overlay) on prolonged fungal node contact, reveals hidden info at threshold (`src/mycelium/mycosis.ts`)
- [x] 7.6 Spore Shop — Cradle integration: spend spores for starting bonuses (extra health, elements, knowledge boost) (`src/mycelium/shop.ts`)
- [x] ECS component: FungalNode (nodeIndex, glowPhase, interactRange) (`src/ecs/components.ts`)
- [x] Data: mycelium config, spore bonuses, memory templates (`src/data/mycelium.json`)
- [x] MetaState extended with MyceliumGraphData, IndexedDB persistence updated
- [x] GameScene integration: node spawning, glow rendering, E-key interaction, mycosis overlay, memory flash display
- [x] CradleScene integration: spore shop UI, Mycelium stats display, purchased effects passed to GameScene
- [x] Unit tests — 36 passing (`tests/mycelium.test.ts`) (385 total)
---
## In Progress
_None — ready to begin Phase 8_
---
## Up Next: Phase 8 — First Archont: Ouroboros
_(See IMPLEMENTATION-PLAN.md for details)_
---
## Blockers
None
---
## Session Log
| # | Date | Phase | Summary |
|---|------|-------|---------|
| 1 | 2026-02-12 | Phase 0 | Project setup: GDD, engine analysis, npm init, Phaser config, BootScene, cursor rules, plan |
| 2 | 2026-02-12 | Phase 1 | Chemistry engine: 20 elements, 25 compounds, 34 reactions, engine with O(1) lookup + educational failures, 35 tests passing |
| 3 | 2026-02-12 | Phase 2 | ECS foundation: world + time, 5 components, movement + bounce + health systems, Phaser bridge (polling sync), entity factory, GameScene with 20 bouncing circles at 60fps, 39 tests passing |
| 4 | 2026-02-12 | Phase 3 | World generation: simplex noise (seeded), 80x80 tilemap with 8 tile types, Catalytic Wastes biome, camera WASD+zoom, minimap with viewport indicator, 21 tests passing (95 total) |
| 5 | 2026-02-12 | Phase 4 | Player systems: WASD movement + tile collision, weight-based inventory, resource collection, crafting via chemistry engine, projectile throw, 4 quick slots, UIScene HUD overlay (health bar, slots, inventory), 126 new tests (222 total) |
| 6 | 2026-02-12 | Phase 5 | Creatures & Ecology: 3 species (Crystallid/Acidophile/Reagent), FSM AI (idle/wander/feed/flee/attack), metabolism (energy drain/feeding/starvation), life cycle (egg→youth→mature→aging→death), population dynamics, projectile-creature collision with armor, creature→player melee, ecosystem simulation test, 72 new tests (293 total) |
| 7 | 2026-02-12 | Phase 6 | Run Cycle: full roguelike loop (Cradle→Game→Death→Fractal→Cradle), school selection (Alchemist), meta-progression (Codex/spores/IndexedDB), run phases with auto-advance, escalation effects (creature aggression/env damage), Chemical Plague crisis with neutralization, death animation (real body composition), WebGL fractal shader, 56 new tests (349 total) |
| 8 | 2026-02-12 | Phase 7 | Mycelium: persistent knowledge graph (nodes/edges/strength), fungal node ECS entities with glow animation, knowledge deposit (auto on death + manual at nodes), memory flash extraction (weighted by strength, Russian templates), mycosis visual effect (tint overlay + reveal threshold), spore shop in Cradle (5 bonuses: health/elements/knowledge), MetaState+IndexedDB persistence updated, GameScene+CradleScene integration, 36 new tests (385 total) |