config | ||
doc | ||
lib | ||
resource | ||
src | ||
www | ||
.gitignore | ||
.gitmodules | ||
clang_sanitize_ignorelist.txt | ||
favicon.ico | ||
index.html | ||
LICENSE.txt | ||
Makefile | ||
Press_Kit.md | ||
README.md | ||
robots.txt |

Fork it up! Cakefoot is a challenging, single-button dodge ’em up on rails. Pilot a walking cake – hold to accelerate, let go to drift back – and survive against all odds. Featuring 22 epic levels, arcade mode, unlockables, and high scores, Cakefoot is endlessly replayable, and impossible to defeat.
Cakefoot is one of the first games made with the open-source SPACE🪐BOX engine and is free to play online. It is the first game available for the dank.game web games portal.
Modding
The source code is not necessary for changing some parts of the game. For example, levels can be added or edited by editing the file resource/levels.json
. Graphics and sound can be changed by editing texture file paths in config.json
.
Since modding is not well documented yet, it is recommended to copy the entire build to another folder in case any save files get corrupted when running the mod. Additionally, any files modified should be saved to a backup for easy recovery.
Config and assets
Asset swaps, such as textures and sound, and some style edits, such as colors and fonts, are the easiest mods to do. Change the relevant values in config.json. In some cases, the values can even be changed while the game is running just by saving the file changes.
Levels
Levels in levels.json are also easy to add and mod using JSON, but the syntax is not documented yet. The shape of the curve, checkpoints, and enemies are all definable in the level syntax. Make sure to make a backup of the original file if modifying it.
Shaders
There are simple shader files in src/shaders/gl/
. These can be edited to make graphics effects without recompiling the game.
Code
Other changes will require code edits. See the Build section.
Build
Clone both the game code and the SPACE🪐BOX engine code using --recursive
. The engine code will be in lib/sb/
along with documentation and demos.
$ git clone --recursive https://open.shampoo.ooo/shampoo/cakefoot/
Each platform has a corresponding target in the Makefile. There is some documentation in the Makefile itself that should be checked. The current supported platforms are web browsers, Linux, Windows, and MacOS.
Until further documentation is added, one way to get started building for a platform is to first build the box demo for the desired platform in a separate project. This will ensure the dependencies for the game engine are installed.
Once the box demo is confirmed to build, try making a build of Cakefoot. For example, the Linux version can be built with the following command.
$ make Cakefoot-linux.x64
Arcade cabinet
Cakefoot can be configured to run in arcade-only mode. In this mode, there is just a play button on the title screen and no options. When the button is pressed, arcade mode runs. The player plays one round of arcade, adds their name to the high scores list, and returns to the title screen.
An arcade cabinet or custom installation can be built to power-on, launch, and run the game continuously, using just a power button, if the computer Cakefoot is installed on is configured to power on and load the game automatically. There are options specific to the arcade version, including switching between free play and credits for commercial use. On Linux, it is also possible to set up automatic updates over WiFi.
Installation
See Installing Cakefoot as an Arcade Cabinet
Operator's Manual
See Operator's Manual
Press kit
There is a press kit included in Markdown format in the root of the repository. This can be converted into an HTML page using the conversion tool Pandoc. Once Pandoc is installed, run the make target from the terminal to generate a file press.html
in the root folder.
$ make press
The generated page will look like this. To edit the press kit, for example if this repository is being used for a mod or another game, edit the markdown file, CSS rules, metadata, and optionally the template, and re-run the make target.
License
The code is open source under the zlib license, and the assets are released under the Creative Commons BY 4.0 license. This means the game can be legally copied, modified, and used commercially, as long as appropriate credit is given.
See LICENSE.txt for details, including how to provide credit.
Releases
Release versions are available to checkout using tags. This project uses semantic versioning.
- Add an arcade operator's menu for configuring options applicable to the Cakefoot arcade cabinet
- Add a credits system with configurable credit requirements to the arcade-only mode
- Use new config search path feature to include config specific to web, arcade, and demo builds
- Add idle timeout to arcade cabinet build
- Draw pop-up when achievement is unlocked
- Sync all stats and unlocked achievements to Steam when game loads
- Fix achievements and stats menus so they load new data when opened
- Display stats and achievements in sub-menus on the title screen.
- Fix scoreboard text wrapping using upstream text wrapping improvements.
- New background music: each of the four chapters has a new medley of songs
- Positional audio for sound effects based on where the character is on the screen
- Fix bug causing walk backward achievements to trigger prematurely.
- Add achievements and stats, with support for syncing to Steam.
- Store player's fullscreen and sound preferences, and re-apply them when opening the game.
- Create a test program for the Linux version which auto loads and plays the game and checks key output and results.
- Implement CLI, allowing for config JSON to be passed on the command line.
1.1.4
- Check save file format before loading to prevent the game from crashing from a corrupted save file
1.1.3
- Disable logging by default (performance gain in some web browsers from removed
glGetError
calls)
1.1.2
- Draw version string on pause menu
- Enable vsync
1.1.1
- Add Python script for releasing tagged builds as distributables
- Add Itch.io build
- Bug fix: replace the removed "arcade coin" key with the bank vector
1.1.0
- added coin bank to HUD
- coin status saves per level instead of just as a total count of coins
- coin displays over the player's head after it is grabbed until it is collected
1.0.4
- add options sub-menu to title screen: bgm, sfx, fullscreen, and exit
- hide UI when gamepad is in use, enable when mouse is in use
- indicate selected UI button using hue rotation animation
- support for gamepad hat
- support for disconnecting and reconnecting gamepads
- sanitize collected data in WASM build and write files per session
- add function for finding the closest UI button in a given direction
- bug fix: prevent character from moving when level loads or play is resumed from the pause menu
- bug fix: cancel character walking sfx when paused
Contact
Contact me with questions or raise an issue on the repository page. Documentation or any other pull requests are welcome 🙂
Method | Contact information |
---|---|
cocktail.frank@dank.game | |
Web | https://dank.game |
X | https://x.com/diskmem |
PayPal | https://paypal.me/ohsqueezy |