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.
  • It uses the Tiled Map Editor as its main tool to develop games.


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 a previous version in action, take a look at the demo application.

demo demo

An Android version 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


The easiest way to get eszFW up and running is Visual Studio 2019 with C++ CMake tools for Windows installed. Just open the project inside the IDE and everything else is set up automatically.

Alternatively just use MSYS2 with CMake and a compiler of your choice.


To compile eszFW and the included demo application, simply use CMake e.g.:

mkdir build
cd build
cmake ..

If you wanna compile 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.

cwalk by Leonard Iklé.

picolog by James McLean.

Demo application

Warped City by Luis Zuno. Dedicated to public domain.

Every other work that is not explicitly mentioned here is also under public domain.