PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
Architecture Decisions

This index records only decisions that remain constraints on current work. Git history carries implementation chronology.

Generic Runner Replaces Fixed-Scene Wrappers

Decision: arbitrary authored scenes run through BulletSketch Play in Viewport, BulletSketch Run Standalone, or tools/scene_runner. An authored lab does not receive a dedicated executable that only hardcodes its scene and wraps ScenePlayLayer.

Consequence: Level Slice, World Sandbox, Behavior Lab, and Combat Lab are content surfaces. A thin executable remains valid only when its source teaches a distinct composition decision, as tracked by the surface taxonomy.

Products Own Session Lifecycle

Decision: a product executable is a composition root over product-owned session rules and interactive adapters. It owns RunSession and the complete product lifecycle rather than delegating its purpose to ScenePlayLayer or the generic runner.

Consequence: title, icon, logger identity, clear color, or a hardcoded shared scene are insufficient product responsibilities. Generic authored-scene execution and optional future product launch integration remain separate.

YAML Content Is Not A Plugin ABI

Decision: YAML assets are editable content schemas owned by engine or framework modules. They are not an ABI for dynamically loaded gameplay plugins.

Consequence: schema compatibility is intentional and format-specific. C++ ownership may change with first-party consumers, while serialized names and tokens change only through an explicit content migration.

Editor Runtime Closure Is Narrow

Decision: the editor bundle packages BulletSketch, the generic runner, and the shared runtime-core allowlist rather than the broad shared depot.

Consequence: authored labs and galleries remain workspace content unless a separate deliverable defines and validates their closures. Future detached content belongs above filesystem alias resolution in a source/catalog/cache model.