-= kpworld.xyz =-

A love letter to engines of days past

KP3D

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.

GitHub Repository


Technical Info

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 (constexpr if/switch, inline if declarations, [[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.