10-phase linear pipeline: PreInput → Input → Movement → Simulation → Economy → Storyteller → Snapshot → PostSnapshot → Knowledge → TickAdvance. Each system assigned to exactly one phase via .in_set(TickPhase::X). Cross-phase .after()/.before() eliminated — only intra-phase ordering remains. Prevents schedule cycles by construction. SimulationPlugin refactored into sub-plugins by domain: - InputPlugin (player actions, interactions, dialogue dispatch) - MovementPlugin (pathfinding, movement validation, spatial indexing) - SocialPlugin (conversations, sound, voice enrichment, follow state) - EconomyPlugin (tâtonnement tick, IPC query serving) - TimePlugin (chunk streaming, news ticker, tick advancement) All other plugins (NPC, Knowledge, Perception, Storyteller, Settings, Bridge) updated to use TickPhase assignments instead of cross-plugin ordering constraints. BridgePlugin trimmed to bridge I/O concerns only. Part A of #843. Parts B (multi-threaded executor) and C (background workers) follow. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
18 lines
534 B
Rust
18 lines
534 B
Rust
// The Settled Reach - Simulation Server
|
|
// Rust/bevy_ecs simulation server for D-010 client-server architecture
|
|
|
|
pub mod bridge;
|
|
pub mod tick_phases;
|
|
pub mod cause_chain;
|
|
pub mod knowledge;
|
|
pub mod npc;
|
|
pub mod perception;
|
|
pub mod settings;
|
|
pub mod simulation;
|
|
pub mod storyteller;
|
|
pub mod voice;
|
|
// test_world::reset is always compiled (used by simulation::input).
|
|
// Room definitions, constants, and setup_gauntlet are gated behind
|
|
// the "gauntlet" feature (default-on) to allow stripping from release builds.
|
|
pub mod test_world;
|