- README.md: new — features, quick start, controls, MCP tools, requirements - AGENTS.md: rewritten for pure P/Invoke Vulkan 1.3 (was Raylib/OpenGL) - CORTEX_ENGINE_ARCHITECTURE.md: complete rewrite — current architecture, frame loop, UBO layout, push constants, shadow mapping, PBR, AI/MCP, physics, ImGui, video recording, content, testing - VULKAN_IMPLEMENTATION_PLAN.md: marked as COMPLETE with all 21 phases - scripts/run.sh: updated examples - .gitignore: added Videos/, imgui.ini, cortex.mp4 - Removed tracked imgui.ini and video files
3.5 KiB
3.5 KiB
AGENTS.md — Cortex Engine
Project Overview
Cortex Engine is a C# (.NET 9) AI-Native 3D game engine with a pure P/Invoke Vulkan 1.3 render backend. No wrapper libraries (Silk.NET, Vortice, OpenTK) — direct Vulkan API calls via vkGetInstanceProcAddr/vkGetDeviceProcAddr.
Build Commands
# Build (Debug)
dotnet build CORTEX_ENGINE.sln -c Debug
# Run the engine
./scripts/run.sh
# Run with MCP server (AI control via HTTP/SSE)
./scripts/run.sh -- --mcp-port 5000
# Run tests
dotnet test tests/Engine.Tests/Engine.Tests.csproj -c Debug
Lint / Typecheck
No separate lint command. dotnet build with 0 errors is the standard. Run dotnet build CORTEX_ENGINE.sln -c Debug to verify. 227 xUnit tests cover Vulkan struct sizes, enum values, OBJ loading, vertex layout, shadow mapping, camera controllers, AI commands.
Architecture
- Engine.Core —
IWindow,IInputState,Keyenum,Sdl3Window(SDL3 + Vulkan surface), camera controllers (FreeFly,Orbit), ECS components (Transform,Mesh,Material,Light,Camera,RigidBody),Vertexstruct,Timing - Engine.Graphics — HAL interfaces (
IRenderContext,IRenderer,IScreenshotProvider),RenderBackendFactory,ObjLoader,MeshMath,ProceduralMesh,SceneSerializer - Engine.Graphics.Vulkan — Pure P/Invoke Vulkan 1.3 backend. Vulkan 1.3 features: dynamic rendering, synchronization2, imageCubeArray. Multi-light PBR with cubemap array shadows. ImGui integration. Video recording via FFmpeg pipe.
- Engine.Physics — JoltPhysicsSharp wrapper,
PhysicsWorld,RigidBodycomponent (box/sphere colliders) - Engine.AI —
AiCommandProcessor(7 commands),AiCommandQueue(thread-safe), MCP HTTP server (Kestrel + SSE), stdio MCP server - CortexEngine.App — Entry point, main loop, scene setup, ImGui debug panels
Key Conventions
- Each render backend owns its window (
IWindow). The app gets the window fromIRenderContext.Window. - Input is backend-agnostic via
IInputState+Keyenum. No SDL3 types in app code. - Camera controllers use
IInputState, notInputMappingdirectly. RenderBackendFactory.Create(name, width, height, validation)— backends register by name.- Vulkan types split into
VulkanHandles.cs,VulkanEnums.cs,VulkanStructs.cs— struct sizes verified by tests against C headers. - Push constants: single range,
Vertex|Fragment, 64B (main pipeline) or 160B (shadow pipeline). - Light data in SceneUBO (448B):
mat4 vp+int numLights+int numShadowLights+LightData[8]+shadowParams[4]+ambientColor. - Shadow cubemap array: 24 layers (4 lights × 6 faces),
samplerCubeArrayin shader, 16-tap Poisson disk PCF. vkCmdCopyImageToBufferfor video recording, BGRA format, FFmpeg pipe.- Matrix convention:
view * proj(row-major, norow_majorin GLSL).proj.M22 *= -1for Vulkan Y-down.
Files Not to Edit
src/Engine.Graphics.Vulkan/Shaders/*.spv— compiled SPIR-V, regenerate from.vert/.fragwithglslangValidator -VCORTEX_ENGINE_ARCHITECTURE.md— canonical architecture reference, update only when architecture changes
Environment
- .NET 9 SDK at
$HOME/.dotnet DOTNET_ROOTandPATHmust include$HOME/.dotnet- SDL3 (ppy.SDL3-CS 2026.520.0, bundled native libSDL3.so)
- ImGui.NET 1.91.6.1
- JoltPhysicsSharp 2.21.0
- Vulkan 1.3+ (validation layers recommended for development)
- FFmpeg (for video recording feature)
- glslangValidator (for shader compilation:
sudo apt install glslang-tools) - Display required (X11/Wayland) for Vulkan window