# ADR 0001: Roadmap Architecture ## Status Accepted ## Context The project is a Bevy FPS foundation with a runtime game, shared authoring data, and an in-process editor. The long-term goal is a server-authoritative multiplayer FPS that can also serve as a reusable Bevy engine/editor toolkit. The architecture needs to keep early editor work productive while avoiding choices that would make later deterministic simulation, networking, and web support expensive. ## Decision Keep the current `game`, `shared`, and `editor` crates for M0/M1, but treat them as stepping stones toward a stricter split: - `shared` owns reflectable authoring types and scene hydration until it can be renamed or split into a scene-focused crate. - `game` owns native client presentation, player input, rendering, audio, UI, and glue. - `editor` owns native editor tooling and editor-only dependencies. - Future deterministic gameplay moves out of `game` into a simulation crate that can be reused by the native client, a headless server, and tests. - Future network protocol types move into a protocol crate shared by client and server. - Runtime app startup/windowing stays narrow and reusable so both the game and editor launch consistently. ## Consequences This preserves the current M1 editor velocity while setting boundaries for later milestones. Gameplay code should avoid depending on editor systems, and reusable authoring/simulation code should avoid native-only editor dependencies. The project will add CI and focused local verification now, then expand tests around determinism, scene migration, and networking as those crates appear. ## Follow-Ups - M2 extracts deterministic simulation and input-as-intent systems. - M3 adds the server-authoritative networking spike and chooses the production netcode stack. - M5 formalizes scene schema versioning and migrations.