Jam postmortem


Goblinville could be described as an ad hoc, informally-specified, bug-ridden, slow implementation of half of Animal Crossing. Spritely participates in the Lisp Game Jam to make interactive artifacts demonstrating our progress building out our tech stack. Since last year's Spring Lisp Game Jam, when we made Cirkoban, we finally got our distributed programming library, Goblins, working in the web browser via Hoot, our Scheme to WebAssembly compiler. So, we really wanted to show off a networked game this time. Generally speaking, making a multiplayer game for a game jam is a bad idea, but Spritely is all about networked communities so that's what we set out to do.

Unfortunately, we really didn't have the kind of time to dedicate to this project that we would have liked. So, we did our best to make more of an interactive demo than an actual game. Our goal was to make something of a spiritual successor to the community garden demo I made when I first joined Spritely. While it's far from a real game, we think Goblinville is a good step towards demonstrating the utility of Spritely's core tech.

What went well

  • Goblins made it easy to describe the game world as a collection of Actors that communicate asynchronously. Initially, the entire world was hosted inside a single web browser tab. When enough things were working, it was easy to push most of the actors into a server process since Goblins actors are called the same way whether local or remote. The OCapN protocol is wonderful.
  • Our Hoot game jam template made it easy to get going quickly at the start of the jam.
  • Using Liberated Pixel Cup style assets allowed us to focus on just the code.

What didn't go well

  • Lack of time. We just didn't have the time to make something that felt polished this time around. We weren't able to start work until the Monday after the jam started, so we only had 7 days instead of 10. Also, I came down with a cold at the end of the week which didn't help my productivity.
  • As expected, multiplayer drastically increases the complexity. What felt like a stable enough world during local testing was quickly shown to be full of performance issues and bugs once it was released to the public and other people started using it. We will have to frequently restart the server, resetting the world each time, to keep things usable during the jam rating period. 
  • No client-side prediction/interpolation to mask lag. This is essential for a networked game to feel good but there was just no time to even try to work on it.
  • Lack of persistence for the game world.

All in all, we think Goblinville is pretty cool, albeit buggy. Thanks to everyone that has tried or will try out Goblinville this week!

Get Goblinville

Leave a comment

Log in with itch.io to leave a comment.