It’s no doubt that good tools can help the game development process. This is why we chose Unity, this is why we bought Sprite Manager 2, EZ GUI, and EZ Game Saver, because we wanted to have good tools to make the development process easier, which inevitably gives us more precious time in which to polish our game.
Now, it often occurs that sometimes you can’t buy the tool you need anywhere, so what do you do? You either have to make your own, or decide whether you can live without it. Sometimes you can take a convenience hit to save yourself time developing the tool. But is it quicker to do things manually, or a slightly longer way rather than make a tool to help you? It seems like a straightforward answer – make the tools you need – but it can be a tough call, especially when your resources are spread as thinly as ours are.
This dilemma arose in the form of our conversation system and how we were going to store all text in the game. The easiest solution was to store all the text in XML files, but XML isn’t the most friendly format for designers, or translators, and while you can get visual editors for xml files, I haven’t found this all that useful in the past. The more difficult solution was to store all the text in XML based Excel files, which is the solution I ended up implementing because I saw definite benefit in being able to create dialog rapidly using a friendly interface, though it did take me off development for a day.
Our secondary concern was how to script events to occur during conversations (such as getting score, or branching conversations). To my dismay Unity doesn’t play very well with high level scripting languages like Lua, so my only solution was to create my own script, let’s call it BrawScript, yes, that will do. But this was proving most troublesome – I’d never written a script parser before and I wasn’t looking forward to it, especially because of our tight timeline. Luckily I had a brainwave! Why not write scripts in C# in the Excel file and create separate program that compiled the scripts from the text file into C# script! (Unity can compile C# scripts.) This turned out to be the best solution, and best of all it’s powerful AND fast, because it’s compiled at run time, rather than Just In Time (JIT) like Lua or similar scripts. I get a bit excited about it sometimes. Implementing this took a couple of late nights and half a day to get solid.
So, I might have delved too far into the programming realm in that last bit, but what I’m getting at here is though I spent some of our development time on a tool, we’ve got a powerful and easy to use tool that should allow us to spend more time creating conversations, which will hopefully result in a richer experience as we spend less time mucking around with formatting files and more time simply polishing dialog.