Open Source

I’m an open-source evangelist.

I’ve been so, pretty much since my second professional job. I was given the opportunity to make the first project I worked on there open source, and I basically never looked back. There are so many benefits to open source: beter visibility, better recruiting, better testing (both because the community helped test + we wrote more tests), and just generally higher quality. Knowing that other people might be looking at your code at any time is a fantastic way to ensure you release the best code you possible can. And then, of course, there’s the personal satisfaction of knowing that something you built might be of use to someone on the other side of the earth. I spent a lot of my time in that job convincing people to open source their code, and by the time I left, the official policy was open source by default. I’ve remained an evangelist since.

Compared to the greater software world out there, open source in games is pretty limited. Understandably so, given that it’s hard to fit open source into a traditional gaming studio business model: it’s rather hard to sell your game, anyone can download and build it for free. What ends up open source are usually the general frameworks like libgdx and jMonkeyEngine and only rarely more specialized game engines.

Which is a big part of why I was excited when Ink was originally released open source. It was a scripting language with almost all the features that I required, in addition to good tooling support (which I didn’t have time to develop for my own developed language). It is worth noting that I had taken a long hard look at the current ink language’s predecessor (implemented in inklewriter), but had ended up dismissing it as an option – I did not wish to lock my code into some proprietary game engine. Open source really does make everything better. I very quickly created the first version of jInk (a java interpreter for Ink with some additions to fit my requirements), before porting it to Kotlin (mica-ink). Eventually, as Ink evolved and gained some of the features that I needed, I ported my code to using Rafael Garcia’s blade-ink (as far as I am concerned, the “official” Java port of ink).

Unfortunately, I haven’t had a lot of time to do open source work in the past couple of years, especially not since I deprecated mica-ink. However, I finally managed to set a little time aside during the past couple of weeks, and that has allowed me to do a couple of small things that I’ve been wanting to catch up on for a while.

One is to finish the conversion of the storybytes-desktop app to blade-ink. storybytes-desktop is an simple viewer for ink scripts on the desktop; it’s built using Kotlin and TornadoFX and was originally developed as a simple demo for mica-ink. It now uses blade-ink, and can be extremely easily modified if you want to create a small application for viewing an ink script you have written on the desktop.

The other was to update the small storybytes app that I published on Android. This has now been done; it has been re-implemented using blade-ink (meaning it should be able to play any ink json files you might write) and published on Google Play. In addition, the source code has been published on github as storybytes-android, so if you’re interested in developing ink apps on Android, there you have an example.

The source code of both applications are released under the MIT license, in order to be consistent with the rest of the Ink community.

And now, back to work on Pirates and Traders 2.