Open Source


There is going to be a lot of programmer lingo in this post so if you’re not into that kind of thing – be warned! :)

I didn’t go to the Game Developers Conference this year but I did read stuff about what was going on there, for example this article from “The Indie Soapbox Session”. What caught my eye was Steph Thirion‘s talk about open source and how we in the computer game community should become better at sharing our code and helping each other out to improve the tools we use. I have been thinking a little bit along these lines before but never had the guts to actually share anything – mainly because it is so scary! I have also never contributed to an open source project for pretty much the same reason. Anyway, Steph and his talk made me take the plunge and a couple of weeks ago I put most of the libraries we have built for “else { Heart.break() }” up on The gameplay code, art and sound is not up there though, so you can’t try the game (sorry!) Here’s a quick explanation of the different repositories that actually are available:

  • Grimm – A story scripting language that makes it easy to write branching dialogue, to listen for events and conditions in the world, etc. It doesn’t have any dependencies on our own game logic and can be easily extended from the client code. It is heavily tied to our own database system though, which is something that I want to remedy in the future to make it simpler to reuse.
  • Sprak – The programming language we have created to be used by the player inside the game. It is mainly inspired by Python and Ruby. The main goal has been to make it easy to learn and use, hopefully it will also produce better error messages than what is currently the norm. The test suite should give a pretty good view of how the language looks and behave. It will probably change a lot during development though, since we evolve the language as part of the overall play testing. It doesn’t have any dependencies so it can be tried out on its own.
  • Pathfinding – A node based A* implementation.
  • TingTing – A tiny game entity framework. We use it so that we can run all our game logic separate from Unity in a MVC-kinda way. We actually have a working command line interface for the game also, but that’s a story for another day :)
  • Relay – a simple database we use for saving and loading of state. Used heavily by both Grimm and TingTing. We built this when our old, reflection-based save system proved to be too inconsistent. With this solution we can save all the state in the game as one big file if we wish. It makes everything very cohesive and reliable but unfortunately also forces its users into adapting certain paradigms that might not be optimal (specifically inheriting from a special base-object).
  • GameTypes – most of the other libraries use this component for some basic stuff like logging and a few basic data types that we need throughout the game. Should probably be split into a few more pieces but this is a practical solution to keep the number of projects down.

All the code is written by me and my friend Johannes Gotlén during the last 1½ years. If anyone wants to check them out or try to use them for something I would be very excited and I am willing to help out as much as possible! If you just wanna browse the code and give me some thoughts about it, that’d be interesting too.



Explore posts in the same categories: ElseHeartBreak, My Games

6 Comments on “Open Source”

  1. Bought the game, forked the code. Alright!!!!

  2. Alex Bao Says:

    I’m having a wet dream thinking of adventure game with coding. Is there a release date in sight yet?

  3. pootzko Says:

    Man, this is awesome news! I am really glad to see you are going open-source with it. The potential and possibilities of it are even greater this way, and it makes me want to buy it even more. Can’t wait until it’s finished. =)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: