post jammin

As the voting for this Spring's Lisp game jam comes to an end I wanted to reflect a little on the jam, my favorite games, my game's development process, and just my thoughts in general.

A couple of weeks ago I wasn't planning to enter (or even knew about) the jam. But given the current state of the world I had a lot more free time on my hands than usual, and the one person I follow on the Fediverse posted about the upcoming jam

the biannual #lisp game jam is coming up in about a week:
I've always had a lot of fun participating; if you've never done a jam before this is a good one to start with since it runs for ten days and doesn't require crunch or staying up all night like people do with the 2-day ones.

Now this sounded perfect for me because (a) it gave me plenty of time to work on something and (b) I had plenty of time to work on something. Clearly this was a win-win. This wouldn't be my first game jam, since that Ludum Dare 11  (11? holy cow) years ago I've dabbled with different languages and tools, worked on a few games and played with a few Lisps. But as a hobby programmer I had never really finished a game, and I hadn't programmed for a year or two much at all, so I was kind of excited to crack into it again and see what would happen. 

Before I talk about my game I want to highlight my favorite games of this jam. There were over twenty entries and I managed to play all of them, though not without some (to be expected for a jam) technical issues. In no particularorder:


The dev describes Compile as a zach-like, which derives from the Zachtronics games like SpaceChem and more notably TIS-100 (I"m not an expert here, I only sort of know about these games! But they look very cool). I've never written any kind of assembly instructions so the controls were a little impenetrable to me at first, but once I got the hang of it I got really into it! I'm still working on this one. For some reason the game display worked better in Chrome for me than Firefox, but it could just be my laptop's display resolution which dates to some time before the Cretaceous. 

Wet Dog

This piece is only one scene, but that's not too uncommon for jams. However I thought the dev had a deft touch here with the visuals and the way they got the mood and emotion across. I hope they get to work on something more substantial. 

Apocalypse Meow

I really liked the combination of physics-y controls and schematic visuals in this game. It also had a nice degree of polish, and of course a great title.

Tremendous Quest IV

TQIV is a fun conversation RPG with some light management sim gameplay on top, but the really cool thing about it IMO is how all the elements interplay and support each other. The design is just really cohesive and there are some fun surprises which I won't spoil here. It also does a great job of fitting the theme of the jam (as much as there was one, i.e. it's a Lisp jam). I'm also a big fan of games that explore alternative kinds of game systems beyond the usual and combines them in interesting ways like this one does.

In the end though I have to say my favorite game of the jam was Amethyst Waters

It's an incredibly polished submarine-em-up with great visuals, sound and music, and fun gameplay. I've also already learned a ton from it by loading its cart into TIC-80, the tool used to make it.

TIC-80 is a fantasy console, sort of an emulator of hardware that never existed but that evokes the retro feeling of games from 20+ years ago. Since I haven't been keeping up on the game dev world for the last 6-7 years I hadn't heard of fantasy consoles at all, but I dig the look and feel of the games made for it. Not really for any nostalgic reasons I tell myself, though maybe that's really the case, but I just enjoy the vibrancy of the experience .

I decided to use TIC-80 for the jam because it was an all-in-one tool, I wanted to minimize my ramp-up to getting stuff working, and I could use Fennel, a new-ish Lisp-y language that compiles to Lua. To make things even simpler I did everything in TIC-80, even though there are templates for using TIC-80 and Fennel in a perhaps more productive development environment. However I knew I had gone down the rabbit hole before trying to get new tools and environments set up and I didn't want to deal with any of that for this jam. Although working in the TIC-80 editor was a little rough at times it really wasn't too bad (for the size of game I was making, only about 300 LOC) and in fact I quite liked some of the affordances it creates by default, mainly that you really can only work on one small function at a time (just because the pixel resolution is so small). Or maybe my eyesight is just that terrible and I like coding in an 18 point font. Regardless, everything in the tool works well together and I think it helped a lot in me getting something sort of done by the deadline.

In the week leading up to the jam I had a few ideas for a game, and I settled on something to do with generative algorithms after I read an article on art with a genetic algorithm. I thought I could have creatures represented as binary trees of lisp forms, where the forms would be a simple arithmetic expression like (sin x), and the creatures could mutate, swapping code and assuming new visual and behavioral features.

However after thinking about it I realized a few things. One, there was no way I would get something like that playable in a week. Two, even if I did, it wasn't clear to me that players would even really know what was happening. I remembered reading something long ago by Jeff Lait, the maker of the roguelike POWDERand many other cool roguelikes, who said that your RL could have all sorts of involved systems and complex mechanics, but if it wasn't understood by the player then you really had to ask yourself if it was necessary. That isn't to say there couldn't be other reasons to shave that yak, but for my purposes with this jam -- trying to get something finished -- it seemed counter-productive. So instead I settled for a much simpler concept. Which was lucky for me, because I barely sort-of finished it anyway!

My game Xenoamob is a simple action capture-the-flag-ish thing. I didn't finish many of the planned features, such as a resource mining mechanic to resupply your rover's defensive units, multiple levels, some physics for movement, a timer when you reached the survey point to give a chance for the creatures to reach you, creature AI to more intelligently follow the player, more involved mutation/replication with different sprites for the creatures and different abilities, a level start animation where your rover flies down from a dropship, and so on. Also the code is kind of a mess with state mutating everywhere and a half-baked game mode implementation. Overall though I'm happy with what I ended up with. I realized I'm definitely more comfortable with code and learning new APIs now, and the simplicity of Fennel and Lua in that regard worked well.

Participating in the jam also rekindled my interest in programming in general, especially in generative art and the demoscene, and I've already found some interesting projects to look into. Will all this last once I don't have all this free time on my hands? Hard to say, but I don't think any creative production is really ever fruitless. As it's been said by better writers than me:

Nowadays, in spite of all the resources that are becoming so readily available to the ordinary man, life can be very empty. Whatever our material resources, it is still we ourselves who have to make our lives and we can only do this by using our own creative energies. The biggest, best resource is in ourselves. When we are working with all the skill it is in us to give, we are ploughing a furrow that will enfold living seed and bring good work to fruition. We are preparing a harvest for our later years that will have in it the good things we have found by the way, the living interests that have nourished us, the challenges accepted, the defeats surmounted and turned into triumphs. And if these things lead to more good work, leisured good work full of enjoyment, they will round out and complete that maturity of personality which enables a man to stand sturdily on his own feet and lead his own life still.

Files Play in browser
Apr 20, 2020
xeno.tic 49 kB
Apr 19, 2020

Get xenoamob

Leave a comment

Log in with to leave a comment.