Skip to content
This repository has been archived by the owner. It is now read-only.
A classic 2D platformer game in the spirit of the 1990s.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This project is no longer maintained.

Rainbow Joe


Rainbow Joe is a classic 2D platformer game in the spirit of the 1990s written in C using SDL2 and the TMX Map Format (Tile Map XML). It is also a constantly evolving project I work on to exercise C programming and to learn about the basic concepts of game development.

Follow-on project: Boondock Sam.

Last but not least: follow-on project of Janitor Jamboree which I have discarded.


The quite odd game title was generated using The Video Game Name Generator.

Why C?

A question I hear alot is why I'm using C for this project instead of a modern language like Rust, Haskell or [insert your preferred language here], because writing games in C is neither a easy thing to do nor very common (these days).

The main reason is obvious and I already mentioned it in the introduction: to get exercise in C programming. And writing a game in C seemed like a fun way of getting some.

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


Click to open in full-resolution.


Dependencies and how to compile

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

To compile Rainbow Joe under Linux simply enter:


If you're on NixOS enter:


To generate the documentation using doxygen enter:



There are also Windows builds that can be found here: Releases.


A:      move left
D:      move right
ESCAPE: pause
LSHIFT: hold to run
SPACE:  jump / unpause
1:      set default zoom level
2:      zoom out
3:      zoom in
F:      hold to move camera freely
UP:     move camera up
DOWN:   move camera down
LEFT:   move camera left
RIGHT:  move camera right
Q:      quit


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.

inih by Ben Hoyt is licensed the New BSD licence. See the file LICENSE.txt for details.

Magic Cliffs Environment by Luis Zun aka ansimuz. Licenced under CC BY 4.0.

All other graphic, sound & music resources are dedicated to public domain and have been found on

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.