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
3D 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:

Links