KP3D is a sector-based 3D game engine I've been developing in my spare time. It's a more modern approach to sector-based map systems for games, taking heavy inspiration from engines like Ken Silverman's Build, but with modern hardware-accelerated graphics.
The engine is written in C++17 and exclusively uses OpenGL. Some other libraries are also used to make the development process less soul crushing, namely:
- SDL2: Platform independence
- SDL2_mixer: Audio
- GLEW: OpenGL extensions
- HJSON: Engine configuration
- FreeType: Font rendering
- spdlog: Logging
- stb_image: Image loading
- Dear ImGui: Editor GUI
I know it's a lot, but the idea is to write the key features of the engine first, then replace the above libraries with my own stuff later on.
Also, when I say it's written in C++17, please take it lightly. I use some new features (
[[nodiscard]], etc.) but the engine isn't structured like most modern C++ projects.
Why write your own engine?
I get asked this a lot. The simple answer is "I don't like Unity", but the long answer is that I wanted to write a love letter to old school FPS engines. Features like the "sectors-on-steroids" level design system, you can't really get out-of-the-box using modern tech. I wanted to create a pleasant modding experience, and in my humble opinion that's the Achilles' heel of an engine like Unity. This is not a one-size-fits-all engine. It aims to do one thing and do it well, while remaining accessible to developers and players alike. I can't say I really care how long it takes, as it's basically a side project for whenever I'm not entering game jams left and right (or working on Grape's Adventure, which actually uses KP3D!)
Game development is a hobby for me, not a job. This is how I enjoy my hobby.
Why are you mixing Doom and Quake resources in your test builds?
I often get asked about this as well, surprisingly. I don't really have anything to say apart from them being test resources. Quake 3 assets to test 3D viewmodels, Doom assets to test sector rendering.