2.6 KiB
A computer game
This is a simple game where you play as a bouncy square rock that has a grappling hook. It can use the grappling hook to swing to the end of the cave. There is no reward for doing so, but there is a timer.
Description and Features
- Entirely written in C using only the SDL2 graphics and audio libraries.
- Procedurally generated cave environment using a random walk and procedurally generated colour palettes.
- Cute synthesized sound effects using integer overflow a la bytebeat.
- 2D Graphics using the SDL2 API, no assets are used aside from the font.
- Point mass elastic physics with elastic collisions.
- Separating Axis Theorem collision test for convex polygons.
- Framerate independent physics uses a fixed timestep and completes as many steps as neccessary to catch up to each frame.
- Physics runs in a separate thread and state is managed using shared memory and locks.
- Player physics interactions use forces applied to physics bodies which are integrated into impulses and positions.
- Grappling hook.
Installation
Prebuilt Binary
See the releases tab.
On Linux and other Unix-Like operating systems you will need to install the SDL2 package from your package maintainer.
# on Fedora
sudo dnf install SDL2
Build Instructions
On Linux / Unix
Install the libSDL2 runtime and SDL2
development packages from your package distributor. On Fedora, this
is the SDL2
and SDL2-devel
packages.
git clone --recurse-submodules https://git.topost.net/alistair/space_game.git
(if you forget --recurse-submodules
you can use, git submodule init
, git submodule update
.)
For Linux
make clean
make target=linux
For Windows
You have to have mingw and the mingw libsdl library (I think).
sudo dnf install mingw64-SDL2 mingw64-SDL2_image mingw64-SDL2_ttf mingw64-winpthreads mingw64-winpthreads-static
Run setup.sh to download the SDL2 static libraries and SDL2.dll
.
./setup.sh
make clean
make target=windows
FreeBSD
You need to download the header files and put them in the source folder, with
the folder name SDL2. You also need the sdl2
and gmake
packages.
Something like this:
cd /tmp && wget https://www.libsdl.org/release/SDL2-2.0.12.zip && unzip SDL2-2.0.12.zip
mv /tmp/SDL2-2.0.12/include $source_dir/SDL2
pkg install sdl2 gmake
cd $source_dir
gmake
With debug flags
Append debug=true
to the make command.