Paul Engine

A custom C++ game engine, currently undergoing complete re-write.

Project Overview

Paul Engine is my long term personal project. A custom C++ game engine built using OpenGL. It started as a simple C++ port of a C# engine I built during university, but quickly evolved into something far more complex and ambitious.

It represents my growth as a programmer and my mindset for learning. From scrappy and experimental beginnings focussed on features, to deliberate architecture and clean code.

Timeline & Evolution

The Teardown Branch

Earlier this year, I created a new branch in the project repo called teardown. I deleted everything and started fresh, applying everything I had learned. The goal is to rebuild all the features from the original version but with a much stronger design, as well as some much needed features.
This rewrite introduces:

Progress Comparison

Feature Original Teardown (WIP)
ECS ✅ ✅
2D Batch Renderer ❌ ✅
Basic 3D Renderer ✅ ❌
3D Indirect Renderer ❌ ✅
Forward Render Pipeline ✅ ✅ Ongoing
Deferred Render Pipeline ✅ 🔧 In Progress
Forward+ Render Pipeline ❌ ❌ Planned
Advanced Graphics Features ✅ 🔧 In Progress
Editor ❌ ✅ Ongoing
Runtime ❌ ✅ Ongoing
Material System ⚠️ Messy ✅
Mesh System ⚠️ Messy ✅
Serialization ❌ ✅ Ongoing
GPU API Agnostic ❌ ✅ Ongoing
Asset Handling ⚠️ Messy ✅ Ongoing
2D Physics System ❌ ✅
3D Physics System ⚠️ Messy ❌ Planned
Skeletal Animations ✅ ❌ Planned
AI Pathfinding ✅ ❌ Planned
Particle System ✅ ❌ Planned
Audio System ✅ ❌ Planned
Runtime UI ⚠️ Messy ❌ Planned

Showcase

Original version:

Teardown version:

Progress Reports

Links