Guess what? Yup, that's yet another game engine/framework.
Highlights
Carefully crafted C99 code.
Self-contained, no additional runtime modules/libraries required (system-wide libraries excluded).
Multi-platform support through cross-compilation (Windows, Linux and Raspberry-Pi -- macOS currently not supported, possibly WebAssembly in the not so distant future).
For the courious ones, this is the current statistics of the game-engine codebase:
#tofuengine is an original software, result of the experience gained from ~30 years in programming on a broad range of platforms (some concept even stems back to ancient platforms like the Amiga and the SNES, and arcane languages like AMOS and Blitz BASIC 2). However, it has also been influenced by modern similar/other software in one way or another. Here's a brief list.
The lovely game-engine logo has been designed by Blort.
Compiling
In order to compile Tofu Engine, a Linux machine in required (either physical or virtual). A Debian-based distribution is suggested, although I've been using Ubuntu during the development. One can issue the following commands to install all the required dependencies:
Of course, git should also be installed to clone the repository.
sudo apt install git
Proceed in creating a local clone of the repository with the command
git clone https://github.com/tofuengine/tofu.git
into a suitable work directory. Move into the tofu directory you've just created and use make to build the executable. You can use the following command-line parameters to control the build process:
BUILD, can be either debug or release with the usual meaning. If not specified, the build is assumed in debug mode.
PLATFORM, can be either linux, windows, or rpi. If not specified, the build is assumed for Linux platform. Please not that while the Windows build is generated on Linux using cross-compiling, the Raspberry-Pi build can be obtained only on a proper Raspberry-Pi board computer.
ARCHITECTURE, can be either x64 or x32. Please note that this is used only for the Windows build as the Linux one is 64-bit only, and the Raspberry-Pi is 32-bit only.
The build artifacts will be placed in the build directory.
Alternatively, if you prefer not to tamper with you system, you can use a Docker container for the build process. For that purpose, a ready-to-use Dockerfile can be found in the extras/docker directory. Use the make docker-create command to build the container and make docker-launch to start it in the current folder.
Sample projects
Along with the game-engine source, there's a bunch of (basic) demo projects. They are located in the demos sub-directory and can be launched using make, passing the name of the project as a target (e.g. make splash).
Tiled-map support w/ camera support (zoom and scrolling).
Animation support w/ frameset DSL (i.e. compiling a string where each token can be a single frame, a range or a "keep-current-frame for some time" command). Each frameset can have its one update period, and will be most likely based upon a timer.
Custom "raw" graphics and sound formats, with on-the-fly LZ4 (stream?) compression.
Game state and display transitions (at which level? Engine or script?).