src/projects/engine-3d/page.tsx
workspace/projects/engine-3d

Custom C++ 3D Engine & Luau VM

Graphics & Scripting
Role

Solo Engine Developer & Systems Architect

Timeline

Sep 2023 - Mar 2024

-- Preview

engine-3d.png
Custom C++ 3D Engine & Luau VM

-- Description

Developed a custom low-level 3D game engine using Vulkan API with a strict focus on Data-Oriented Design. Focused on a low-overhead Vulkan rendering pipeline, emphasizing Data-Oriented Design (DOD) to maximize CPU cache spatial coherence. The Entity Component System (ECS) architecture, implemented using the EnTT library, was utilized for the deterministic separation of game state and logic, enabling high-performance, zero-cost iteration over massive structural datasets. Built a non-linear scene graph based on spatial relational components and integrated it with the continuous collision detection engine of the ReactPhysics3D library. Dynamic spatial transformations are reconciled via a custom three-phase pipeline (kinematic propagation, numerical physics update, and upward verification pass for raycasting vectors). The native runtime was extended with a fully sandboxed Luau VM with asynchronous function binding, enabling safe behavior hot-reloading in real-time without re-linking binaries. Tooling includes runtime dynamic type reflection, allowing the custom ImGui-based editor to automatically instantiate inspector panels and explorers for arbitrarily declared, memory-allocated components. Real-world durability is achieved via a custom snapshot serialization algorithm coupled with a heap manager abstraction that restores deserialized stale pointers within the physics engine.

-- Technologies

C++VulkanEnTT (ECS)ReactPhysics3DLuau VMImGuiCMake

Challenges

Ensuring spatial cache coherence in dynamic rendering structures, managing three-phase physics-scripting-rendering synchronization without state drift, and reconstructing alocation pointers after loading memory snapshots.

Solutions

Employed a strict Entity Component System (ECS) using EnTT to enforce memory linearity, developed a custom deterministic frame lifecycle manager, and implemented a pointer-mapping translation table during the deserialization pass.

-- Snippet

engine-3d.luau
local p = workspace:FindFirstChild("CustomEngine3D")

// EOF - Built with Next.js, Tailwind CSS & Framer Motion