diff --git a/.agent/workflows/build.md b/.agent/workflows/build.md new file mode 100644 index 0000000..6a569a1 --- /dev/null +++ b/.agent/workflows/build.md @@ -0,0 +1,17 @@ +--- +description: Build the Juliet project using FastBuild +--- + +This workflow sets up the Juliet build environment and runs `fbuild`. + +1. To build a specific configuration (e.g., msvc-Debug): +// turbo +`cmd /c "misc\shell.bat & fbuild msvc-Debug"` + +2. To build the default (msvc): +// turbo +`cmd /c "misc\shell.bat & fbuild msvc"` + +3. To see all available targets: +// turbo +`cmd /c "misc\shell.bat & fbuild -targets"` diff --git a/.agent/workflows/recompile_shaders.md b/.agent/workflows/recompile_shaders.md new file mode 100644 index 0000000..cfe9859 --- /dev/null +++ b/.agent/workflows/recompile_shaders.md @@ -0,0 +1,9 @@ +--- +description: Recompile shaders for the Juliet project +--- + +This workflow recompiles all shaders using the `recompile_shaders.bat` script. + +1. Recompile all shaders: +// turbo +`cmd /c "misc\shell.bat & misc\recompile_shaders.bat"` diff --git a/USER_STORY.txt b/USER_STORY.txt new file mode 100644 index 0000000..9a14c53 --- /dev/null +++ b/USER_STORY.txt @@ -0,0 +1,56 @@ +# 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.*