GameCake is a single exe cross platform game engine, a command line build of Lua(JIT) with embedded bindings to many libraries.
To run some of the sample games, the source of which you can find on https://github.com/xriss/gamecakejam try the following
snap install gamecake gamecake.jam
You should connect up the snap interfaces for maximum functionality so the recommended install procedure for gamecake is
snap install gamecake snap connect gamecake:joystick snap connect gamecake:alsa
At its most basic gamecake can be used as a replacement for lua or luajit and should support exactly the same command line options. Extra functionality is provided by embeded lua libraries that can be required by lua scripts without any further configuration or even on the commandline with the -l option. For instance we switch to the fun64 harness by running.
gamecake -lfun filename.lua
This runs the provided filename.lua inside the fun64 harness rather than as a normal standalone lua file. Notice how this extra functionality is built on top of the standard lua commandline.
Gamecake also accepts zips as inputs, automatically mounting them internally then starting them as gamecake apps. Or fun64 text files whose filenames must end with .fun.lua to automatically run this lua file inside a fun64 harness, see https://xriss.github.io/fun64/ for fun64 example files. Fun64 is a single text file game sketch format, similar in scope to pico8 and created as a teaching tool.
The simplest way to get something to happen using gamecake is to download a fun64 file and run it, here is a basic hello world fun64 example.
# download helloworld.fun.lua from a gist wget https://gist.github.com/xriss/cd4951d249936329a0e08a79c111d17e/raw/e0cb07b045760a9f37a137a360142d659feca29d/helloworld.fun.lua # run helloworld.fun.lua gamecake helloworld.fun.lua
We also ship a couple of gamecake based command line utilities, grd which allows command line access to the internal bitmap manipulation functions, mostly exposing code that is used inside our swankypaint pixel art application.
and midi that performs the same functions as aconnect as well as providing an easy way to modify midi messages, adjust velocity of notes etc etc as they pass through the alsa midi ecosystem.
You can get a nice list of alsa midi ports and how they are wired up by running