# 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.)

## simplicity

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)
end


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

## abstraction

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:

• caching textures when they are rendered in order to save GPU and memory
• physics in general
• keeping physics on a fixed timestep (so that fast framerates don’t have fast physics)
• keeping physics in sync with the rendering code (so that we don’t get jitter)
• time