Sunday Wombo Combo #6

Tina Ng
oneleif
Published in
6 min readMar 16, 2020

This week, majority of the world is either entering shutdown mode, or close to doing it. In technology scenes, we haven’t stopped living in interesting times, with new hardware and software popping out like hotcakes. However, the spotlight that’s aiming at web technology has never been brighter than now, as a result of the COVID-19 pandemic. With most people having to stay at home nowadays, we are relying on online communications more than ever.

It’s always a good time to learn web technology, but now is the time to truly make the most out of the internet. Whether you are a student whose semester has been cancelled, or someone who has to be isolated from work, why not consider picking up a development skill or two at oneleif? Or you can check out my freshly baked Wombo Combo below, to see what I have been up to while the world is going mad.

How To Stay Awake Writing GDD (Caffeine Free)

Photo by philippe collard on Unsplash

While the world is going mad, I spent my last week slowly picking up where I left off in my game dev assignment. I’ve finished a Royal Game of Ur board game in Unity for the assignment, so that’s the fun part done. The rest of the assignment is documentation about the game — known as Game Design Document (GDD), or, the not fun part.

GDD is like an API of a programming language, but for your game. This is where you specify exactly what game mechanics are involved, all the keybindings and controls, the story in-depth with a storyboard, game progression, rewards and punishments, plus everything else related to the making of your game. Everything.

It’s daunting to write, but if you know the fickle feeling of ideas being trapped in your head, GDD is the place to solidify your ideas. If you work in a team, or outsource QA and some stages of your game development, it’s even more important to have a thorough GDD, so that everyone is on the same page about the vision of your game.

Here are some quick tips to help you avoid the dread of writing a GDD:

Use a template

6 years ago at the time of writing, Benjamin “Headclot” Stanley shared a GDD template on Unity forum. The thread is still being seen today, with last reply from February 2020. Between now and the beginning of the thread, other people have replied with an alternative version, a Scrivener version and a LaTeX version. The structure hasn’t changed much, and conveys everything any developers could possibly mention about their dream games. Just scroll through the thread, pick your template flavor and fill in the blanks. Using a template will feel like you genuinely get to talk about your game with passion.

Write it in stages

You don’t have to fill out the entire template from the get-go. At the beginning of your development, fill out what you know first. That’s usually either the story or game mechanics. GDD is a living document throughout your project. Changes are inevitable and you shouldn’t suffer the pressure of having to make it perfect.

Play the game in your mind as you write

Remember, you have started your game project because you know it will be fun. Games largely exist to entertain. It would be a shame to lose your passion for a fun game because the writing of GDD gets you down. Always remember why you wanted to make this game, play it in your head, and slowly fill in the GDD template like that. It will feel more like you are talking to someone about your exciting new idea, except you are now putting your ideas down onto writing so that they are becoming real.

Write Game Dialogues with Ink Script

With writing as my hobby, all my game ideas naturally come with plenty of dialogues. I’ve participated two game jams last year, where I made a point-n-click adventure and a turn-based village management game. Both games involved a lot of dialogues, particularly the point-n-click which was downright an interactive novel.

I made both games in Unity to maintain practice with my game dev course. Unity is a fantastic game engine, but it doesn’t come with friendly bulk text handling. You see, when I think of implementing dialogues in games, I naturally think of an approach similar to a database — all the dialogues are in a separate file, could be text or JSON, and (in my head) Unity would just pull in the required lines straight from the file.

The reality for Unity is a lot more complex than what I wanted. JSON serialization in Unity is not feature-complete for now. It cannot parse nested objects, for instance. You’d have to write your own helper function to loop into the nested data. The overall experience with text data handling in Unity is a hacky, janky one.

Then I discovered Ink by Inkle. It is a simple scripting language made for creating choose-your-own-adventure games. You write in Ink as if you’re writing a LaTaX document, but with comprehensive support for dialogue options, conditional handling and scene management. You can have the entire dialogue of your game in one file, or split into different files. It’s a joy to write game dialogues with Ink. My struggle with game dialogues in Unity ended when I realised that Ink comes with a Unity plugin.

Inky Editor for writing and playing dialogues on the go. (https://www.inklestudios.com/ink/)

My game assignment, the Royal Game of Ur board game, contains dialogue as well, because story is part of the marking criteria. This project became my first to use Ink-Unity integration plugin. It worked like a charm. Here’s what it looks like in game:

Here’s the text in Ink, dumped into my Unity project as an asset:

And here’s the script in Unity:

“story” is the Ink asset / the dialogues I’ve written in Inky Editor, where I also export my dialogue as a JSON that I dump into my Unity project. Ink plugin comes with its own functions for choosing dialogue option and moving onto the next one, which I’ve used above. Since I don’t have dialogue option in this case (you don’t talk back, you only listen), I made it so that the next dialogue option is always the one at index 0, which is [Continue].

Writing my dialogue this way is cleaner and easier than writing my own JSON from scratch. Inky Editor is also a joy to use — you can write and play your dialogues as a text adventure game in real time. It has syntax highlighting and suggestions. It’s a fantastic tool for dialogue-heavy games, which I tend to end up making.

I feel like I have more to say this week, but that’s probably because of the other pending articles I have yet to write, outside of Wombo Combo. Stay tuned and pray that I don’t get too busy with work and house chores. Once I find the time, I will make up for these pending articles! While you wait, say hi at oneleif and share what your lock down plans will be, or find some inspirations from us to make the most out of your free time!

--

--

Tina Ng
oneleif
Writer for

Unity, Javascript, PC and 3DS gamer, storyteller, traveler.