awesome! glad to hear it! I think Safari 18.2 stable will be out within a week which means it won't be long before all updated macos/ios machines can run hoot programs.
David Thompson
Creator of
Recent community posts
Using watercolor art reminds me of David O'Toole's "Testament of the White Cypress", a game made in Common Lisp ~10 years ago. Check out the png files here to see what I mean: https://gitlab.com/dto/cypress
We're pretty loose about the requirements here, so that sounds fine. What wouldn't be in the spirit of the rules is if the resulting game code you submitted was mostly Rust with just a bit of Lisp on top. One of the reasons for having this jam is to encourage participants to advance what can be done in Lisp, as there are plenty of jams out there for Rust/Godot developers.
It's both okay and recommended to prepare things in advance! A lot of participants make improvements to their own personal libraries/engines before the jam begins. The rules state that you must publish the source for the things you've prepared before the jam starts. That way, participants can judge based on what you did during the jam. If you make a rough sketch of a game now, then make sure you publish that source code and link to it, making it clear that it is the starting point for the work you're doing during the jam. Iterating on an existing game is a perfectly valid form of participation for this jam.
If you are interested in making a web game using Scheme then Hoot is a great option for you! Hoot is a Scheme to WebAssembly compiler that supports most of R7RS-small and some Guile extensions such as delimited continuations (useful for scripting games via coroutines). At Spritely, we recently released version 0.5.0 and updated our game jam template Git repository that has everything you need to get started making 2D games.
The template repository includes:
- Bindings to the necessary web APIs to make an interactive game with HTML5 canvas
- A Makefile for compiling, running a development web server, and generating a .zip bundle for uploading to itch.io
- A very simple Breakout-like example game that demonstrates how to put all the pieces together
Some games made with Hoot for past jams:
- https://davexunit.itch.io/cirkoban
- https://davexunit.itch.io/strigoform
- https://fluxharmonic.itch.io/lambda-dungeon
- https://podatus.itch.io/shields-tyvm
I'll do my best to help anyone that uses Hoot for the jam, whether here in this forum, on the official Spritely forum, or on the #spritely channel on the Libera.Chat IRC network. Have fun! 🦉
The easiest way for me to play this was to clone the Git repo and use Guix:
git clone https://forge.snamellit.com/pti/bloatrunner.git
guix shell -f guix.scm -- bloatrunner
This game feels very 80s with the graphics and music! It's a simple but fun game and I can't tell you how cool it is to see someone else publish a game built with Chickadee. Would be cool to have some more stuff to do in the game but I appreciate how simple the controls are and how easy it is to just start playing. Nice job!
I noticed that turbo.scm does (getenv "APPDIR") and assumes the result is a string. I did not have this variable set at all, so getenv returns #f and the program crashes. As a workaround I launched the game like: APPDIR="" guile turbo.scm
If you do (or (getenv "APPDIR") "") or something that should take care of this problem.
Yeah this is connecting to a baked-in node that Spritely is running during the jam rating period that hosts the rooms and some bots. If multiple people were online at the same time you'd see them. A localhost server is used to provide the web UI. Everything is rather cryptic at the moment, and there isn't much of a game to be had yet, but it's the very beginnings of a p2p virtual world. Extrapolating a bit, you could imagine hosting your own rooms on your machine that other players can visit in a truly p2p way.
Felt kinda like adding another dimension to tetris! I had a really tough time with the controls. I just couldn't get the plate to move in the way I wanted. It's like when a touchpad doesn't scroll in the direction that is intuitive to you or something. At some point my tower got too high and the game stopped dropping blocks. I assume it meant that I lost but it didn't tell me so. :)
I found the above table hard to read. What I really wanted to know was the language breakdown in raw count and percentage form. So, I took the data above and did my own quick calculation:
language | entries | % (rounded) |
guile | 15 | 31 |
fennel | 10 | 21 |
clojure | 5 | 10 |
cl | 5 | 10 |
racket | 4 | 8 |
elisp | 4 | 8 |
s7 | 3 | 6 |
kawa | 1 | 2 |
owl | 1 | 2 |
The various Schemes are all significantly different enough to be considered their own languages.
Seems that the rocks are all that's there besides the player: https://github.com/robgssp/hunt_for_mauve_july/blob/main/game.scm#L128
Had fun with this one! I found that bombs were essential because the maze generation algorithm can generate mazes that can't be completed otherwise. Likewise I also saw gold placed in inaccessible (without bombs) areas. It would be cool if the mazes were always proper mazes and the bombs could be used for strategic shortcuts.
A new genre: the juggling type game! I always enjoy jam games with simple controls that are easy to pick up and play. I do wish the hitboxes were bigger for the player's arms as I felt like I had to be too precise in my movements to keep the juggling going. I'm about as good at juggling in this game as I am in real life (which is to say: not good!) It's so cool that chose to use Hoot for this project!