Open source game appreciation month: Ink

It seems it’s open source game appreciation month!

Since that’s the case, we wanted to give a shout out to all the open source tools we use! Of course there are so many, and December only has a few weeks so we decided to focus on three of our most important open source tools – Ink for interactive dialogues, Godot Engine for code, and Krita for art.

This weeks shout out goes to ink, a wonderful markup language for writing interactive fiction. It’s perfect for character dialogues, but we also use it for stage directions during the dialogues and even triggers for characters scene behaviour.

What we love most about it is the fact that it’s easily readable by a writer, even when it has many different options. Check out this snippet for example:

Philippe and André talking about Charles, the player chooses one of the * options that André says.

This is a much more complex example than basic Ink but it also shows its power.

Ignoring the codey part and starting from line 12, you not only see that there after a few starting dialogues there are 3 options to choose from (indicated by * stars) and what the answer is for each of them, but you can also send function calls to the engine running the game.

In our example, the {s(“A”)} and {s(“P”)} functions change the portrait, voice, and animation of the character currently speaking (especially useful in a tavern where a dozen characters interrupt each other constantly!)

The most wonderful fact is that it’s simultaneously human readable and computer readable and when the dialogue writing starts it has almost zero overhead (just text with an occasional symbol here and there to denote some function or something).

This is how it looks in-game:

On the programming side of things, the folks at Inkle studios unfortunately don’t directly provide an integration package for the Godot Game Engine. Luckily the community has our backs and we would like to give a shout out to Frédéric Maquin who has kindly supplied the FOSS community with a direct port for Godot!

Leave a Reply

Your email address will not be published. Required fields are marked *