I’m working on an experimental 3D FPS game engine in C++20, aiming to deeply understand engine internals from first principles rather than just using existing frameworks.
Currently I'm strictly following LearnOpenGL docs.
This project focuses on: Entity-Component-System (ECS) architecture for high performance. OpenGL 4.1 rendering with a PBR pipeline, material system, HDR, SSAO, and shadow mapping. Modular systems: input, physics (Jolt), audio (miniaudio), assets, hot reload. A sample FPS game & debug editor built into the repo.
Repo: https://github.com/jackthepunished/horizon-engine
This isn’t intended to be a commercial rival to any commercial game engines.
it’s a learning and exploration project: understanding why certain engine decisions are made, and how to build low-level engine systems from scratch.
I’m especially looking for feedback on: Architecture choices (ECS design, render loop, module separation) Your thoughts on modern C++ engine patterns
What you’d build vs stub early in a homemade engine
Tips from experienced graphics/engine developers Criticism and suggestions are very welcome — it’s early days and meant to evolve. Thanks for checking it out!
bhdr26k•11h ago
This is a learning-first engine,
The focus so far has been on core architecture: ECS design, render loop, system boundaries, and data flow.
Renderer is OpenGL 4.1, mainly for portability and debuggability; not aiming for cutting-edge features yet.
Physics uses Jolt, audio via miniaudio, with a simple asset pipeline and hot-reload experiments.
Current limitations / things I’m unsure about: ECS ergonomics vs raw performance trade-offs Renderer abstraction depth (how far to generalize without over-engineering) Build times and compile-time vs runtime cost in modern C++ What systems are worth fully building vs stubbing early (animation, scripting, editor tooling)
If you’ve built engines, renderers, or large C++ systems before, I’d especially love: Architecture critiques “I regret doing X early” lessons Suggestions on what to simplify or throw away now Happy to answer any technical questions — thanks for taking the time to look.