Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics

10 days of game engine development

A topic by Aredhele created Aug 04, 2018 Views: 163 Replies: 11
Viewing posts 1 to 4
Submitted (5 edits) (+2)

I had time to work intensively during these 10 days... to create a game engine from scratch. Custom made for the jam.

The engine is for now called "OOM Engine" (OOM stands for "Out Of Memory" ).  This is a 3D game engine made in C++17 with DirectX 9 and OpenGL 3 (not really a cutting edge DX12/Vulkan engine) holding in exactly 350 KB, with all dependencies and without any kind of compression. You can check the sources here.

Implemented features :

  • Import of 3D models from .obj files (OBJ are really easy to read !)
  • JPEG, PNG textures (Supporting both is good because there some cases where one performs better than the other etc.)
  • 3D audio (stereo panning)  .wav and .ogg - ogg is a very good compromise, but libvorbis and libogg have a cost. +100 KB
  • Basic forward rendering pipeline with post-processing (Fog, AA etc.)
  • Working game objects and components 
  • Old school GUI texts using textures instead of font files
  • 3D physics thanks to a really well made and handy physics library
  • Gizmos to debug the engine/game
  • The whole engine is inspired from Unity.

What is not required to run the engine : a virtual machine, an emulator, downloading dependencies when the game starts (that's the case of almost all web browser games)

What is required to run the engine : Windows

Some issues I had :

- Audio...  a real challenge because there are two challenges. How can I play sounds ? Which format for audio files ? The first was the most complicated.

  • I tried with OpenAL -> No, OpenAL is DLL only. That means there is no possible optimization (in size) for the DLL.  If we strip the DLL, the linker will yell for missing symbols, so ... 
  • High level libraries -> No. SDL, SFML etc. have many dependencies (including OpenAL). The problem is still the same.
  • The solution : Using DirectX 9. This dependency (dsound.dll) is Installed on all Windows.
  • For the file format, wav are a way to large.
  •  Ogg files. The best compromise but I had some difficulties to compile libvorbis with libogg.

Some screenshots (placeholders) :

First 3D model import

Grid, Point light and axis gizmos :

Lighting and post processing :

Always better with animations :

3D Sound test :

With sound, better ;) :

And voilà, 5 days and 1 MB available for the game ! 


Wow! The OOM engine looks fantastic! Sort-of reminds me of my N64 days XD

Submitted (1 edit) (+1)

Hey! Thanks!! Yeahh, There are a lot of old school things and we told our 3D artist he only had 300 KB for textures and 3D models x) I think this is the reason why it looks like N64 games ^^


I would’ve paid money to see the look on your artists face the moment he saw how much memory was left.  I couldn’t believe how much memory is used up by most simple audio libraries, let alone 3D!


Ahah and you can't imagine the face of our sound designer when we told him he had 300 KB too (for 16 bit mono ogg sound only)  !
Yes... Audio libraries are heavy and most of them relies on OpenAL under the hood (sometimes DirectX)


Lol! I'm a music/audio guy, and I can imagine XD

Funny, I actually just rewrote my music engine today! Since I'm using .NET Framework, I have access to the wonderful sound of "Console.Beep". It is one instrument, one voice. It is the stuff of dial-up internet dreams 

Submitted (1 edit) (+1)

xD I was tempted to use the Beep function too with this one. But it was limited to one sound at time. If I call the function twice with two different sounds, it will stop the current and start playing the new one... Thanks Windows x) I will play your game for sure!


Thanks! And I look forward to checking out your game!






glad to see I wasnt the only one doing a C++ engine from scratch for the compo!

amazing work!


Yeah! Your previous post about your retro 3D engine motivated me a lot ^^