Skip to content

walls-of-doom/walls-of-doom

Repository files navigation

Walls of Doom

Walls of Doom is a minimalistic platformer written in ANSI C using SDL 2.

The game should work under Windows, Linux, and everything that SDL 2 supports.

See the GitHub issue tracker and have a look at the releases page.

Because of old decisions, the game is resolution-dependent. You can tweak the settings file to change the window size.

Screenshot

Screenshot

Continuous Integration Status

Travis CI

Build Status

This build servers uses Ubuntu 14.04.3 64-bit, and builds with the following configurations:

Clang         3.5.0
SDL2          2.0.2
SDL2_ttf     2.0.12
SDL2_image    2.0.0
GCC           4.8.4
SDL2          2.0.2
SDL2_ttf     2.0.12
SDL2_image    2.0.0

Semaphore CI

Build Status

This build server uses Ubuntu 14.04 64-bit and builds with the following configuration:

GCC           4.8.4
SDL2          2.0.2
SDL2_ttf     2.0.12
SDL2_image    2.0.0

AppVeyor

Build Status

This build servers builds under Windows using Visual Studio 2015 for Visual Studio 2010, which is required for Windows XP compatibility.

SDL2          2.0.4
SDL2_ttf     2.0.14
SDL2_image    2.0.1

Building and Running

Requirements

Hardware

Because software rendering is supported, a graphics card is not required.

The game needs less than 10 MiB of free memory to run.

Operating System

Windows

Windows is fully supported and self-contained binaries are provided.

  • Windows XP or later is required.
  • The C++ redistributables provided by Microsoft are required.

Linux and BSD

The game works on any Linux or BSD OS with a desktop environment.

macOS

OS X and macOS support is unknown. See the relevant issue.

CMake

You need an installation of CMake in order to build the project.

An ANSI C compiler

The following C compilers are known to work perfectly with the project:

  • GCC 4.8.4 (or newer)
  • Clang 3.7 (or newer)

Older versions of the abovementioned compilers are very likely to work too.

SDL 2

You will need SDL 2, with the TrueType and Image libraries.

Building

$ mkdir build
$ cd build
$ cmake ..
$ make

You can pass -DENV32=1 to CMake to get a 32-bit build on a 64-bit system.

Note that to build the 32-bit version, you need 32-bit versions of all the dependencies.

You can pass -DSANITIZE=1 to CMake to get the LLVM undefined behavior sanitizer.

It is suggested that you pass -DCMAKE_BUILD_TYPE="Release" to CMake if you want a build to play the game, as it will generate more optimized code.

Running the game

$ bash build/walls-of-doom/start-walls-of-doom.sh

Running the tests

$ bash scripts/test.sh

Coding Style

The coding style (LLVM style, but for C) is enforced by LLVM tools.

Running the formatter

$ bash scripts/llvm/reformat.sh

Performing static analysis

$ bash scripts/llvm/analyze.sh

Include Order

  1. Main header
  2. Walls of Doom headers
  3. SDL 2 headers
  4. System headers

This include order should be respected in all source files.

License

It is licensed under the BSD 3-Clause license. See LICENSE.txt for more information.