GitHub project Licence Build status Codacy Badge Open Source Helpers


eszFW is a cross-platform game engine written in C. It's aimed at platformer games. This project is the logical continuation of my older projects Rainbow Joe and Boondock Sam.


  • It runs on all platforms supported by SDL2.
  • Fully reentrant engine core.
  • The dependencies can be limited to SDL2.
  • Support for two different TMX loaders: libTMX and cute_tiled.


The documentation can be generated using Doxygen:


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

Code style

You are invited to contribute to this project. But to ensure a uniform formatting of the source code, you will find some rules here:

  • Follow the C11 standard.
  • Do not use tabs and use a consistent 4 space indentation style.
  • Use lower snake_case for both function and variable names.
  • Try to use a consistent style. Use the existing code as a guideline.


This project currently undergoes a complete overhaul.

If you wanna see the previous version in action, take a look at Tau Ceti: a sci-fi themed tech demo which I develop to test this engine.

Tau Ceti Tau Ceti

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

Get it on Google Play

C is dead, long live C

Even though hardly any games are written in C nowadays, there are a few noteworthy titles that meet this criterion e.g. Doom, Quake, Quake II, and Neverwinter Nights.

This project should show that it is still possible and that C (and procedural programming in general) is often underestimated.

With that in mind: C is dead, long live C!


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.


The program has been successfully compiled and tested with the following libraries:

SDL2 2.0.12
libxml2 2.9.10 (optional)
zlib 1.2.11 (optional)


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

You can also use eszFW with libTMX instead of cute_tiled. Just enable the respective CMake option:

cmake -DUSE_LIBTMX=ON ..

Licence and Credits

cute_tiled by Randy Gaul is licensed under the zlib licence.

TMX C Loader by Bayle Jonathan is licensed under a BSD 2-Clause "Simplified" Licence.

This project and all further listed libraries are licensed under the "The MIT License". See the file for details.

buffer by TJ Holowaychuk.

cwalk by Leonard Iklé.

picolog by James McLean.