Explicit ownership and simulation order
The simulation library has no raylib dependency. World owns its entities, while the renderer borrows read-only std::span views and consumes gameplay events. RAII handles the window and render texture; value types and standard containers keep lifetime management direct.
- A fixed 60 Hz simulation is separated from interpolated rendering.
- Named update phases make the order of AI, collisions, damage and encounter completion reviewable.
- A dedicated navigation field caches arena occupancy and rebuilds path costs with a bounded BFS.

