Roadmap
Phase 0 — Foundation
Goal: Playable skeleton. Architecture that won't need to be torn down.
- Cargo workspace (
faerals-core,faerals-shared,faerals-client) - Core data types:
Species,Zone,Biome,Climate,CreatureInstance - Bevy app: top-down tilemap, player movement, camera
- Zone transitions
- Local save system (SQLite)
- Basic ecosystem tick (Bevy schedule, local)
- Species/zone data loading from TOML files
Phase 0 status note (May 7, 2026)
- Tiled runtime contract implemented (
bg,props,props_collision,collisions,transitions) with animated water support. - Two map-link modes implemented:
transition: fade + spawn on target mapsmooth: streamed neighbor map loading/unloading for exploration continuity
- Tiled map template CLI implemented (
npm run map:new). - Content Studio implemented (
tools/content-studio) for:- Bestiary CRUD against TOML species files
- map tree management + map creation/edit/open-in-Tiled
- multi-layout canvas editing with snapping/grid/zoom + auto adjacency generation
- Smooth overworld chunking is now layout-driven with lazy viewport-proximity load/unload and stream event logging.
- Tileset loading for nested maps is now path-resilient with central filename-based lookup support.
Known issue to fix next
- Collision axis decoupling bug: when moving on both axes, collision on one axis currently cancels the other axis too. Movement resolution should test/apply X and Y independently, then cancel only the colliding axis (or both when both collide).
Phase 1 — MVP
Goal: First complete playable loop. Small scope, fully functional.
Content:
- 3–5 zones
- 15 Faerals
- 2 Sanctuaries (Currents + Archives)
Systems:
- Spawn score + encounter system
- Capture mechanic (Linker bonding flow)
- Basic turn-based combat (no timing mechanics yet)
- Elemental type matchups
- Capacity library + 4 active slots
- Hotswap team management
- Basic Bestiary
- Ecological Journal
- Ecosystem simulation: migrations, extinction, reintroduction
- First Sanctuary (full dungeon: exploration, puzzle, boss)
- Codex unlocked via Sanctuary of Archives
- Field Requests (basic NPC quests)
- Dr. Theo radio contact
- Lifecycle simulation tool for balancing and documentation
- Per-tick heatmap export, animated GIF output, and normalized spawn-rate plots
- Region compatibility scoring for habitat-gated spawn and migration behavior
Phase 2 — Core Game
Goal: Feature-complete single-player experience.
- All 10 Sanctuaries
- 30–40 Faerals
- Full combat: dodge, parry, counter, synergies, AoE, status effects
- All creature roles implemented
- Mutation system
- Breeding / crossbreeding
- Full progression: Archives, Seals, Relics, Certifications
- Full lore and narrative
- Seasonal events and climate anomalies
- Research Commissions system
- Runes and set effects (Sanctuary of Harmony)
- Aquatic exploration (Sanctuary of Tides)
Balance tooling
- Standalone lifecycle model documented in the wiki
- Python simulation scenarios for balanced, overcapture, delayed restoration, and reintroduction cases
- Event logging and progress feedback in the simulation CLI
Phase 3 — Online
Goal: Server-authoritative ecosystem, community features.
-
faerals-servercrate (Axum + PostgreSQL) - Auth service
- Ecosystem simulation migrated to server
- Community ecological events
- Cross-player migration influence
- Creature trading / marketplace (view-only first)
- Worldwide Living Lines restoration tracking
Phase 4 — Platform Expansion
- Desktop builds (Linux, Windows, macOS) polished
- WebAssembly (browser) build
- Mobile (iOS, Android)
- Controller support
Phase 5 — Co-op / PvP
- Co-op exploration
- Casual PvP
- Advanced PvP
- Ranked
- Competitive seasons
PvP is teased throughout the main game as the cultural backdrop the Unchained oppose. It arrives after the full story is playable.
Phase 6 — AI Breeding / Cosmetics
- Controlled AI-assisted sprite variants for mutations and hybrids
- Cosmetic system
Phase 7 — Marketplace + Ranked Seasons
- Player economy (marketplace)
- Ranked competitive seasons
- Season-specific rewards
Localisation
Multi-language support arrives between Phase 2 (full story) and Phase 5 (PvP).
All strings must be externalised from Phase 0 — no hardcoded display text.