GitHub project Licence Build status Language grade: C/C++


eszFW is a cross-platform game development framework written in C99. It's mainly aimed at platformer games, but can be used and customized for any other genre. Furthermore, this project is the logical continuation of my older projects Rainbow Joe and Boondock Sam.

It is written in C99 using SDL2 and the TMX Map Format (Tile Map XML).


The documentation can be generated using Doxygen:


A automatically generated version of the documentation can be found here:


This project is in development. I will enhance it gradually, mainly as a tool to my own use. To see it in action, take a look at Tau Ceti: a cross-platform 2D sci-fi themed tech demo which I develop to test this framework.

Tau Ceti Tau Ceti

An Android version of Tau Ceti is available on Google Play:

Get it on Google Play


The abbreviation esz is a tribute to my best friend Ertugrul Söylemez, who suddenly passed away on May 12th, 2018. We all miss you deeply.

Why C?

A question I hear alot is why I'm using C99 for this project instead of a modern language like Rust, Haskell or [insert your preferred language here], because writing games in C99 is neither a easy thing to do nor very common these days (even though many popular and critical acclaimed games are written in C e.g. Doom, Quake and Neverwinter Nights).

The main reason is simple: because I share the view that object-oriented programming creates more problems than it solves. I think that in many cases, object-oriented programming creates confusing coherences and delivers the illusion of higher flexibility, structure and maintainability. If you are more interested in the topic, take a look at this video by Brian Will: Object-Oriented Programming is Bad.

But the more important reason why I chose C99: because I love it. Even though I am currently trying to get on with Haskell (and functional programming in general), I still consider C a fun and challenging language which I also use professionally.

Anyway: I hope you find the code of this project useful. If so, feel free to use it in any way you want. Just consider buying me a beer in case we meet someday.


The program has been successfully compiled with the following libraries:

libxml2 2.9.8
sdl2 2.0.8
sdl2_image 2.0.3
sdl2_mixer 2.0.2
zlib 1.2.11


First clone the repository including the submodules:

git clone --recurse-submodules -j2
cd eszFW

To compile eszFW under Linux use CMake as follows:

mkdir build
cd build
cmake ..

Licence and Credits

This project is licenced under the "THE BEER-WARE LICENCE". See the file for details.

TMX C Loader by Bayle Jonathan is licenced under a BSD 2-Clause "Simplified" Licence. See the file COPYING for details.