fulgid techy things & other things by Noah Muth

My Ideal 2D Game Engine

This post is part of my Thirty Days of Things, an attempt to post one article on this blog every day for 30 days.

Yesterday I talked about my general dissatisfaction with game engines that I’ve explored in the past. In the spirit of constructive criticism, today I’ll try to describe what I would want in my perfect game engine.

(Since 3D games are so much more complicated and have different needs than 2D ones, I’ll stick to describing what I would want from an engine to make 2D games.)


First and foremost, it should be easy to toss out a prototype project. Something I like about Love2D is that this is all the code you need to get started:

function love:draw()
  love.graphics.print("Hello world!", 400, 300)

For comparison, I just spent 15 minutes trying to compile a “Hello world” program with SDL and gave up.


Getting the right level of abstraction is an impossible tightrope to walk, but I’ll do my best. These are the things that I would like my perfect engine to manage for me:

These are the things I would like to manage myself:

“maybe I should build it myself” (a.k.a the trap)

It’s dangerous to think about this, because the more I think about it the more I’m tempted to start building my own engine. But that’s a rabbit hole that doesn’t lead to producing anything useful. Just search GitHub for “2d game engine” if you need proof of that.