# Juliet Engine: User Stories & Prioritisation ## Priority 1: Critical Stabilization & Core Features ### [US-01] High-Performance Memory Allocation Story: As a developer, I want a MemoryArena and ScratchAllocator for transient engine allocations. Rationale: HIGH PRIORITY. Fundamental for performance and upcoming multithreading. Target: Core Memory Systems ### [US-02] Robust String Struct Story: As a developer, I want a String utility based on buffer + size instead of null-termination. Rationale: Essential for safety and performance; prevents common C-string bugs. Target: String.cpp ### [US-03] Bindless Transformation Cleanup Story: As a developer, I want to remove Vertex Buffer support and related state resets, transitioning the engine to a 100% bindless architecture. Rationale: Simplifies the D3D12 backend and leverages our recent bindless implementation for all rendering tasks. Target: D3D12RenderPass.cpp, D3D12CommandList.cpp ### [US-04] Internal Message Queue Framework Story: As a developer, I want a custom-built internal message queue to handle engine and OS events. Rationale: Decouples event handling from the OS and provides a clean framework for window resizing and input. Target: Core Event System --- ## Priority 2: Performance & Usability ### [US-05] Custom Lightweight Asset Management Story: As a developer, I want a custom-built lightweight system for asset discovery and loading. Rationale: Minimizes external dependencies and fits the custom nature of the engine. Target: JulietApp\main.cpp Refactoring --- ## Priority 3: Infrastructure & Parity ### [US-06] Centralized Asset Management Story: As a developer, I want to load assets (textures, shaders) through a centralized system rather than hardcoded paths. Rationale: Improves project organization and allows for easier deployment/packaging of the application. Target: JulietApp\main.cpp Refactoring ### [US-07] UTF-8 String Support Story: As a developer, I want the engine's string library to support UTF-8 encoding. Rationale: Necessary for internationalization and handling file paths with non-ASCII characters. Target: String.cpp ### [US-08] D3D12 Dynamic Loading (Deprioritized) Story: As a user, I want the application to eventually check for D3D12 support via LoadLibrary. Rationale: Stability feature for later stages of development. Target: D3D12GraphicsDevice.cpp --- ## Decision Point: Phase 4 & Networking *Tasks like SPIR-V toolchain transition and cross-platform networking are currently considered Low Priority compared to engine stability.*