« Back to article list

Lisp Gamejam Postmortem

Table of Contents

Prelude

This article is about the 2016 Lisp Gamejam experience, and the question/answer format matches their suggested postmortem to some degree (with some variation of my own).

I don't have any detailed language breakdowns in this initial article draft - if you want to see some of the syntax/code for yourself, view the full shebang at:

https://github.com/ahungry/alluring-allegory

<img src="alluring-allegory.png"> <img src="alluring-allegory.gif">

A new game target arrives

Recently (early January) came across a Lisp based gamejam (http://itch.io/jam/january-2016-lisp-game-jam).

Being a fan of Lisp (in particular Common Lisp) and hobbyist game development, I felt compelled to see what I could come up with in a week or so.

In the past, I've had some larger efforts in creating games which are still works in progress years later, the first being a tactics based multiplayer browser game (http://tactics.ahungry.com) and the second being a first person, ray-casted multiplayer roguelike game (http://pseudo.ahungry.com).

Knowing how easily a game scope can creep, I wanted to make sure this effort had a well defined start, end, and game type.

Choosing the game for the jam

Given what I knew, I decided to go with a short visual novel type game (like a choose your own adventure book).

I would have liked to have had time (and the skill) to write an interesting story completely on my own, however I realized doing so was going to take a bit longer than a week.

Luckily, there are many (hundreds of thousands) of public domain books nowadays, so breaking one apart (and adding alternate story paths that I would create from scratch) proved to be the way to go.

Development tools

To begin with, my development environment of choice is GNU Emacs, with the Common Lisp programming language.

Common Lisp has a great package system called 'quicklisp', which gave me easy access to game development libraries.

The tools I went with were lispbuilder-sdl (which still uses the sdl library, not the newer sdl2) and opengl, as well as my own syntax library Glyphs (https://github.com/ahungry/glyphs), although my usage of it in this project was a bit more sparingly than in some others that I use it in.

Creating the assets

While I don't have many (well, only one) sprite for the game, I drew it in Krita, a wonderful GNU/Linux drawing application. I find it much better than both GIMP and mtPaint (a minimal paint application I do enjoy), as the Krita integration with WACOM style tablets works great off the bat and with minimal configuration.

To create the background used, I found a picture of a beach I had, and ran it through the following ImageMagick filter to produce the sketched black and white look:

convert beach.png -colorspace gray -sketch 0x20+120 beach-sketch.png

The background audio was produced via RoseGarden, which is another fun GNU/Linux utility. Unfortunately, the tunes are built using sheet music, and I don't know how to read sheet music, so the small looping audio was mostly done as a guess and check effort until something sounded decent.

Why (Common) Lisp?

Well, why not? Obviously, being a lisp gamejam, Common Lisp is a good choice to go with.

Since Common Lisp is (in my opinion) the best lisp around, I went with what I knew and love. Common Lisp has some of the following great features:

What went wrong?

Initially, I would have to say the interest in a visual novel is niche at best, and in one that is not anime romance/love story, or built over a very long time with amazing illustrations, audio, and story, the amount of peole who will want to play (or even try it out) seem to be much less than that of my other games.

Also - even on it's best day, of just requiring downloading some source, and quickloading it to try out the game, the barrier of entry to get people to try it out is much much more difficult than a web based game where people can just visit an URL and play.

What did I learn?

I learned that I still enjoy Common Lisp as much as ever, the people in #lispgames on Freenode are friendly and helpful as usual, and in the future I'll try putting together a game that doesn't try to be so out-there/niche in it's target audience (I'm thinking of a browser basd javascript/parenscript card game next).

What challenges did Lisp present in making the entry?

I can't say that Common Lisp provided any challenge in making the entry - using the language is fun in every way.

Past experience with Common Lisp and gamedev

I've been a loyal user of Common Lisp for, at this point (<2016-01-10 Sun>) for around 4 years or so in a casual capacity.

For gamedev experience, I've been doing it for about a year longer than my Common Lisp experience (again, in a very casual capacity).

While I love both, as they are night hobbies (and daytime is programming in other languages), I do find I'll run into periods of burnout, where I don't clack at the keyboard for a month or two, before I get the gamedev bug and start producing something fun.

Discuss

<div id="disqus_thread"></div> <script type="text/javascript"> * * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * * var disqus_shortname = 'ahungry'; // required: replace example with your forum shortname

* * * DON'T EDIT BELOW THIS LINE * * * (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); </script> <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> <a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>