Asteroids built on a handmade engine for learning.
Go to file
Doyle Thai b3760aa3fc Re-enable collision and implement game lose screen 2016-12-18 19:48:14 +11:00
data Add particle emitter on asteroid destroy 2016-11-26 21:06:41 +11:00
extern Add web assets for readme 2016-11-30 22:37:08 +11:00
src Re-enable collision and implement game lose screen 2016-12-18 19:48:14 +11:00
.gitattributes Initialise repo 2016-06-03 15:07:40 +10:00
.gitignore Basic audio with stb_vorbis decoding and openal 2016-07-25 22:10:50 +10:00
Dengine.sln Initialise repo 2016-06-03 15:07:40 +10:00
Dengine.vcxproj Remove strings.[h|c] files. Combined into common 2016-11-29 01:44:03 +11:00
Dengine.vcxproj.filters Remove strings.[h|c] files. Combined into common 2016-11-29 01:44:03 +11:00 Update with demo and revised milestones 2016-11-30 22:58:09 +11:00


Dengine is a 2d game engine developed with OpenGL and low-level libraries in C. The main goal of Dengine is to facilitate learning from many aspects of Computer Science. Alongside Dengine a game is being built which guides the development of features for the game. Dengine is inspired by Handmade Hero, with a focus on developing as many features with minimal libraries, such that it is not too time-consuming and counter-productive to do so.

Asteroids Demo


Features/research that has been implemented at one point in the making of the engine.

  • Asset Management (load data into intermediate formats)
  • Audio API from OpenAL
  • Basic 2D Game Mathematics/Physics (Vector, Trig, Explicit Euler)
  • Collision Detection (Single Axis Theorem, Minkowski Sum/Diff, AABB)
  • Debug Services & Displays
  • Entity Component Systems
  • IMGUI Systems
  • Input Parsing
  • Push-Buffer Memory Systems
  • Small Size Array Optimisations
  • Standard Library Replacements (e.g. atoi, strlen, itoa, string)
  • Texture Atlas Support, Runtime Font Packing
  • OpenGL 2D Rendering Pipeline & Batching Render Calls


Dengine is currently being developed using Visual Studio 2015. You can build the project by executing the build.bat in the src folder, or simply opening the project in Visual Studio and compiling.

Additionally, an OpenAL-Soft DLL is required which can be downloaded from the Window pre-built binaries of OpenAL here.

NOTE: Assets are not included in the repository. This only excludes audio as game assets are rendered with vertexes.


  • GLEW: Cross platform OpenGL wrapper.
  • GLFW: Cross platform OpenGL Application creation.
  • STB: Single file utility libraries by Sean Barrett.
  • OpenAL-Soft: Software implementation of the OpenAL 3D audio API.