Skip to content
A city building simulation game
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
Cytopia_ExternLibs @ 90f273f
Cytopia_Resources @ c7286a8
.travis.yml add macOS build (#95) Mar 10, 2019
CMakeLists.txt Add Cytopia_Resources to mac app image resources Mar 16, 2019
Doxyfile add macOS build (#95) Mar 10, 2019 Update Readme Mar 15, 2019
credits.txt Added MB22 to credits.txt Mar 16, 2019
license.txt Add MSI, RPM, ZIP packaging and move cpack configuration to seperate … Feb 16, 2019

alt text

Build Status Discord

Codacy Badge Total alerts Language grade: C/C++

Cytopia is a free, open source retro pixel-art city building game with a big focus on mods. It’s based on a custom isometric rendering engine based on SDL2.

Visit our Projects website at Or our community page for Dev Blogs and our forum

Current Key Features:

  • Custom UI System, based on JSON. Highly moddable
  • SDL2 based rendering engine written in C++
  • Camera panning, zooming, relocating
  • Terrain manipulation
  • Pixel-art graphics made by Kingtut 101 and Pineapples Trix
  • A Qt based tile editor for editing TileData JSON files.

Planned features:

  • Procedural Terrain Generation
  • OpenGL Renderer
  • Gameplay mechanics
  • In-Game Mod downloading mechanism
  • Android / iOS / Mac Support
  • Scripting language for mods (like LUA)

For code documentation see the projects Doxygen Documentation.

If you have questions or if you want to join the project, visit the Projects Discord Server In case you want to support our project on patreon, visit our Patreon Page

Key Features

  • Different zoom levels
  • Relocate camera via rightclick
  • Read settings from json files ( Filename to tile ID / Engine specific Settings )
  • Terrain editing (raise / lower terrain)

Supported Platforms

Linux (clang / g++-5 or higher) Windows



CMake 3.11 or later

QT 5.9 or later (optional, needed for the TileData editor)

WiX Toolset v3.11 (optional, needed for packaging on windows)

Build instructions

Some of our resources are stored in a git submodule. There's also an submodule with extern libraries for windows to ease building. We recommend to add the --recursive parameter during git clone or init To build the TileData editor, you will need a qt installation for your build environment.

For already cloned repositories, use to get the submodules. git submodule update --init --recursive

On Windows, download and install the qt installer and select the appropriate environment during installation (e.g. mscv and set the environment variable Qt5_DIR to your installation directory. set Qt5_DIR=D:\Qt\5.12.0\msvc2017_64

This project uses CMake to manage the build. Please make sure you have installed at least version 3.9 or later. To build the project, create a new build directory, then:


Note: If you're on windows, you might want to specify a generator for Visual Studio, like:

cmake -G "Visual Studio 15 2017 Win64"<PATH_TO_REPOSITORY>

This will configure the build. If any dependencies are missing, you will receive an error here.

On windows, please use git submodule init in your repository to download the sdl dependencies.

If you are using Windows and have manually installed SDL2, you will need to update your PATH environment variable to point to it.

On macOS, you have to provide SDL Libraries. This can be done via brew:

  • Install brew (
  • Install SDL Libraries brew install sdl2 sdl2_image sdl2_mixer sdl2_ttf

Note: If you want to change your install directory (per default it's set to ../install) add the definition -DCMAKE_INSTALL_PREFIX=/foo/bar to your cmake call.

Build Instructions: Once the build is configured, you can then compile it using:

cmake --build .

To install the project,

cmake --build . --target install

Create a package (MSI, RPM, DEB, DMG, ZIP)

cmake --build . --target package

Coding guidelines

Please use the clang-format (.clang-format file is provided in the root of the repository), if you want to contribute in order to format your code according to our coding guidelines.

If you are on a linux system, you can use:

find . -regex '.*\.\(hxx\|cxx\)' -not -path '*/ThirdParty/*' -exec clang-format -style=file -i {} \;  

Work-in-Progress Screenshot

alt text alt text

You can’t perform that action at this time.