Small loderunner clone for the 2024 game jam
Find a file
2024-05-21 13:56:33 +02:00
assets add hero initialisation 2024-05-21 12:48:43 +02:00
game update makefile with additional sources 2024-05-21 13:56:33 +02:00
scripts add dthompson game template 2024-05-17 23:49:31 +02:00
.gitignore draw level from the tilemap now works 2024-05-19 21:54:30 +02:00
bloatrunner.tiled-project level data and parser. 2024-05-19 18:48:18 +02:00
bloatrunner.tiled-session draw level from the tilemap now works 2024-05-19 21:54:30 +02:00
bootstrap.sh add dthompson game template 2024-05-17 23:49:31 +02:00
bundle.scm add hero initialisation 2024-05-21 12:48:43 +02:00
configure.ac add dthompson game template 2024-05-17 23:49:31 +02:00
guix.scm level data and parser. 2024-05-19 18:48:18 +02:00
LICENSE Initial commit 2024-05-17 15:03:07 +02:00
Makefile.am update makefile with additional sources 2024-05-21 13:56:33 +02:00
pre-inst-env.in add dthompson game template 2024-05-17 23:49:31 +02:00
README.md split todo off from the README 2024-05-21 08:51:21 +02:00
TODO.org add step to publish game 2024-05-21 08:53:22 +02:00

Bloatrunner

A Lode Runner clone where you have to manage your waistline bloat.

Screenshot of Bloatrunner

As a Bloatrunner you have to collect keys to open the gate at the top of the level. However running costs energy, and as in any endurance event energy management and correct fueling is of utmost importance. By running your glycogen reserves in your muscles will deplete and need to be replenished either from food or from fat reserves.

Your running kit has some small pockets to store a few gels or packets of gummi bears for fast energy replenishment. You will find replacements from time to time. In addition there will be other food items distributed over the levels.

However as in real life it seems that most food items are unhealthy and for some reason irresistable so they are consumed immediately. Similarly for some reason it seems that food turns immediately into fat and takes forever to burn off. And too much fat makes you slow and even worse might make passing the finish gate a squeeze or plainly impossible.

And then there are the others, which for some reason can run without getting tired, eat without getting fat, and generally make a nuisance of themselves. Close contact with these makes you lose the will to live and turns you into a couch potato, ceasing to be a Bloatrunner.

A freak accident involving some radioactive meteorite allows you to create craters at will, well, more like potholes. But big enough to let the others fall in so you can pass over their head.

So now, go out, collect the keys and maintain a healthy diet!

Using Guix

We highly recommend using Guix to manage your development environment. Once Guix is installed, getting all of the dependencies you need to develop is easy. Just run guix shell from the root directory of this repository and you'll be good to go!

In a hosted guix you can ensure you are in your profile by setting the environment in a .envrc file

export GUIX_PROFILE="/home/pti/.config/guix/current"
source "$GUIX_PROFILE/etc/profile"
export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale"
use guix -l guix.scm

Building from source

Assuming Guile and Chickadee are installed on your system, a fresh
project can be built like so:

./boostrap.sh
./configure
make -j$(nproc)

After the build system is initialized, only make needs to be run to recompile the Scheme modules.

Note: On hosted guix the configure script might find the host guile version instead of the guix provided one. This can lead to incompatible bytecode errors. To force to use a consistent guile use

./configure GUILE=$(which guile)

to ensure the right version is configured.

Running the game

To run the game from the source checkout, use the pre-inst-env wrapper script:

./pre-inst-env run-game

REPL-driven development

After the game is launched, a Guile REPL server will be running on port 37146. We recommend using the Geiser Emacs extension for connecting to it using M-x connect-to-guile. Once Geiser connects to the REPL, the game can be modified while it runs!

When the environment is set as indicated above and the emacs direnv module is enabled, we can run geiser-guile as usual and everything should work as expected.

To restart the game on crash I use watchexec to observe the folder and restart on crash when the code is updated. That avoids scrolling errors so I can read the error and immediately see if it is fixed on saving.

$ watchexec -e .scm ./pre-inst-env run-game

Bundling

If you are setup to produce redistributable bundles of Chickadee games (see https://dthompson.us/manuals/chickadee/Invoking-chickadee-bundle.html), then you can use chickadee bundle to produce binary release bundles. This is admittedly an area where things really do not "just work" as they should, so do reach out for help if you need it.