unnamed
A 3D game engine built from scratch in C++ with a deferred OpenGL renderer, ECS architecture, Jolt physics, an integrated editor, and support for multiple graphics APIs.
Claude was used to write all summaries before March 2026, based on git commits and logs
First Triangle
The classic graphics milestone. Set up GLFW window creation, an OpenGL context, and a shader compilation pipeline with error reporting. Vertex and index buffers feeding a minimal shader — the renderer takes its first breath.
Window creation, OpenGL loader via GLAD, and basic render loop.
Vertex and fragment shader loading with compile/link error reporting.
VAO/VBO/EBO setup for submitting geometry to the GPU.
unnamed started as a pure graphics renderer to understand what engines like Unity abstract away. It has since grown into a full engine with its own ECS, physics integration, asset pipeline, and a working in-engine editor.
Everything is written from scratch in C++ and OpenGL, with the following libraries used:
- GLFW — window creation, OpenGL context, input
- GLAD — OpenGL function loader
- GLM — math (vectors, matrices, quaternions)
- Flecs — entity-component-system
- Jolt Physics — rigid body simulation and character controller
- FMOD Studio — spatial audio and mixer
- Dear ImGui — in-engine editor UI
- ImGuizmo — 3D transform gizmos in the viewport
- Assimp — model importing (.glb, .obj)
- stb_image — texture loading
Architecture
- Backend — window, input, timing via GLFW. Backend-agnostic renderer interface; OpenGL implemented, Vulkan in progress.
- Renderer — deferred pipeline with a geometry pass (G-Buffer) and a lighting pass. Instanced rendering, PBR materials via SSBO, skeletal mesh skinning on the GPU.
- ECS — Flecs entity-component-system. Transform hierarchy, rendering, physics, animation, audio, and camera all as composable components and systems.
- Physics — Jolt Physics for rigid body dynamics and a CharacterVirtual player controller.
- Audio — FMOD Studio with spatial audio and four mixer groups.
- Editor — Dear ImGui with scene hierarchy, inspector, asset browser, ImGuizmo gizmos, and play/pause simulation.
- World generation — Marching Cubes terrain extraction from a 3D scalar field, chunked for localised re-meshing.