Katana Game Engine

Katana is a game engine that’s been in development for a while now, as the pillar behind a game I’ve been working on with a number of others called, Decay. For me, primary goals with developing the engine have mostly been a learning experience in which the focus has been to try to do most of the work myself, avoiding copying down how other engines have implemented similar functionality, which has worked for both better and for worse. This is an area I think Katana sticks out, as I’ve been more focused on improving upon and expanding on back-end systems and less so on the graphical fidelity that you might expect with other engines, though that is an avenue I will be heading into at some stage in the future.


Additionally if you want to check out the work that’s been done already or perhaps contribute, I’ve made Katana’s source-code public already, and as parts of the engine are rewritten I’m gradually releasing my own work in the public domain. The engine currently supports both Windows (x86 / x64) and Linux (x64), and support for Mac OS X is likely but not something I’m focused on right now.


It’s worth mentioning that the engine is currently going through an overhaul, so I can’t show anything substantial other than some old videos from last year, but I’m currently working on tidying up the code for both the camera and viewport into their own clean systems that exist in a more flexible manner, with the hope of allowing you to have multiple cameras and multiple viewports at a time. This is mainly aimed with the editor in mind but should also make it easier to support features such as split-screen.


One of the biggest features that I’m working on for the engine, that’s been quite a huge goal, is to develop an integrated development environment for asset creation. Right now this is at the point where we have a functional material editor that allows you to tweak, change and modify your materials, and since the engine is all doing the work here the same as it would in a standard game, it’s true WYSIWYG. Additionally the engine will automatically reload your changes as necessary, all of which can be tweaked within the editor itself and reconfigured.

A simple model viewer was also completed, but right now I’m rewriting the API between the engine and editor, and I also plan on giving the editor a bit of an overhaul as well.

The following video demonstrates the new audio system that was developed for the engine earlier in the year, this is using OpenAL Soft and the following video demonstrates OpenAL’s Doppler shift effect which the audio system now supports; ignore the crackling as that’s since been fixed.

Additionally, the game code in Katana has been rewritten from the ground up in C/C++, with a number of alterations, refinements and new exposed functionality which wasn’t there originally.

Here’s a quick run down of its features…

  • Abstract SDL2 implementation for both video and input.
  • Universal Platform library to deal with platform-specific tasks.
  • Support for Quake 2’s MD2 model format (with support for IQM, PSK / PSKX and more on the way).
  • Primitive support for Unreal’s 3D format.
  • Unified rendering pipeline.
  • WYSIWYG editor environment.
  • Embedded mode.
  • Video Layer wrapper; intent is to allow for support for multiple graphics APIs.
  • GLSL shaders.
  • Support for large levels.
  • VBO and FBO support.
  • Support for multiple viewports and cameras.
  • OpenAL implementation and an entirely new sound system.
  • Blob and point-based planar shadows.
  • Modified BSP format with BSP2 additions.
  • Custom scripted material system.
  • Support for both TGA, PPM, FTX and PNG image formats (with KTX, DDS and BMP support on the way).
  • Sphere-mapping and texture detail, variable animation rates, multiple skins and contextual parameters.
  • Flexible file system paths.
  • Launcher, Engine, Game and Menu sub-systems.
  • Complete rewrite of game-logic in C/C++ (versus original QuakeC implementation).
  • Some of the code is now published in the public-domain 🙂