This was my first attempt at writing a software 'engine' which dates back to 2003. For other wannabe game developers starting out - don't waste your time writing an engine, make a game. This is especially true today when tools like Unity, UDK, CryEngine, XNA & flash develop are available (for free! - including the compilers).

While 3D accelerators have been around since 1997 (3dfx Voodoo), my first 3D card was (in 2003) a lowly Nvidia Riva TNT2 M64. I wanted to push sprites around as fast as possible, so wrote an 'engine' to do hardware acceleration of 2D sprites on a 3D card. Quake was a strong source of inspiration, so elements like a quake console and ZIP file system were built in.


  • Hardware accelerated 2D quads (including scaling & rotation)
  • A font system & basic animation system (frames) for the quads
  • A virtual file system that reads either from the local file system or a ZIP file transparently
  • Event driven input system with joystick, keyboard & mouse support
  • Quake style console (can set & get global variables)
  • Plugin functionality for different back ends (while in theory other back ends could have been written, only Win32/DirectX8 are implemented)


I have learnt a lot since writing this code, although to my credit it still executes on modern hardware / operating systems ( Win7 Home / GeForce 9800). Note that this code DOES NOT BUILD under Win7 with the Windows 7.1 SDK / Visual Studio 2008. The original platform was Win98 / VC6 / DirectX8. The DirectX8 SDK is required to build and there is a conflict with the windows includes. I lack the requisite motivation to fix these issues. This code is not actively maintained (has not been looked at in almost 10 years) and is provided "AS IS" under the MIT license for educational purposes in the hope it will be useful to someone.

Technologies: VC6 C++, DirectX8


File Attachments: