Do you know what an outliner is? It’s a kind of text editor that emphasizes working with the structure of a document — like parts, chapters and sections in a book. You can still edit the content normally, but you can also move stuff around more easily, collapse some chunks so you can focus on others and so on. There’s a lot of them out there, likely because it’s not so hard to code a simple one. But few are well-known (or at all), for reasons that I’ll try to explore later.
And that’s too bad, because multi-level information of this kind abounds in games. We just call it dialog trees, tech trees, or skill trees, and we tend to handle it with improvised tools, if not give up and just write some XML by hand. Likely with ad-hoc tags, too, because formats such as OPML are just as obscure as the general-purpose apps that can read and write them.
I played with one of two such tools long ago, but didn’t see the point at the time. That they were mere toys using proprietary formats didn’t help either. But recently a friend (hi, Kantuck!) started using Org Mode, the most powerful and well-known tool of its kind, and sending me files in its native format. While they read just fine as plain text, not being able to see it in tree form felt like I was missing essential nuance. Luckily there’s a much smaller Android app called Orgzly that can import them. Not so many desktop apps, even though parsing the basic structure should be within reach of any programmer (think lists in wiki markup; no seriously, that’s it).
The whole thing got me thinking. Couldn’t game development benefit from a popular outline format and tools to work with it? As it turns out, two such tools exist: with either Ink or ChoiceScript you can write an entire text adventure in a form that eerily resembles Org Mode, once you get past the little details. Both, however, seem designed to be written by hand; maybe Inkle Studios has a visual editor for internal use, but one is not needed.
Imagine if you could convert between the two. Not as in a 1:1 mapping of features; the two engines are different enough in concept. But even just translating the skeleton of a game — the outline proper, as it were — could be useful. Or generating it for both from a common source, perhaps edited with a nice friendly outliner — which could be used for other purposes as well. After all, is a dialog tree in an RPG so unlike a skill tree? Both can be reduced to a hierarchy of nodes, with text, flags and properties attached to each.
In other words JSON. Or S-expressions. Or, again, XML. All of them, formats invented for exactly this kind of purpose, and hardly ever used accordingly.
Of course, you’d still want tools that can tackle the finer points of editing a tech tree versus the rules an AI uses to decide what to do. But simply learning to see all these various aspects of a game as just another kind of outline should help a lot with choosing how to encode them in data files, and how to read them back without duplicating work.
But it’s hard to even think of it when most general-purpose tools of this kind are poorly advertised, have a high barrier to entry and only talk to each other grudgingly if at all, and then through the barely adequate OPML.
Let’s learn to speak the same languages when we talk game development, and not just in the sense of English and C.
The outline of a game by Felix Pleşoianu is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.