Having created an entire story line objective tracker using only PlayerPrefs in Unity before, I wanted to look at my options for a more complex data structure for Are We In This Together?
The choice came down to utilizing plugins like a SQL database and/or XML- giving me the oppurtunity to really just go ham on a fully formed data structure that is customized according to our game design.
At the moment, our story writers (Brad, Indigo and I) are making use of these massive excel sheets to create all our story randomization, branching, phase outcomes etc – in laymans terms:
What we want and where we are, is the difference between a pebble and Mount Everest
So I thought, okay – what’s the key to tackling a database that is starting small, but may grow to an insanely complex proportion – The answer -> Divide and Conquer.
Take a step back and look at the data and how it can be categorized.
So I sat down with my handy little post-it notes and jotted down the 5 major things the game needs to always keep track of:
- Characters
- Locations
- Game Session
- Scenarios
- Inventory
and then I pulled up our massive game direction document & stared at it for 20 minutes (This started out as a checklist and then turned into a definition document and now it’s basically just a giant clusterfudge of everything that matters to us for Game Design – probably not the “best” way to do it, but when CNTRL+F is your best friend, you make do).
After the separation, our giant story tables and game direction document didn’t look anywhere near as frightening.
From this point, I could already see myself leaning towards XML as a solution, it’s easy to read and organize, relatively fast to parse out – basically only pull the information I’m really interested in and we aren’t too worried about uniqueness because all the information we need is so structured to the parent it belongs to. Did I really want the extra expense of having a server up? The answer was no, and what tipped me over to XML was mostly the fact that editing an XML file to include a design change, seemed a lot simpler than editing a table.
(Ignore the notion that I was an android developer for 3 years and just have an XML bias because I think it’s pretty – Yes, ignore it.. shhhh)
Here’s my first pass at a character’s data needs:
We could do with more separation for passives and item proficiences in the near future, but I think this gives me enough of a spring board to really just visualize how everything connects together – the characters are the heart of this games randomization – the members in your party affect everything, so it made sense to me, to start with them.
It’s safe to say that I’m excited about getting into the nitty gritty of the games mechanics, but at the same time – I don’t want to dive in too soon before we’ve laid a good groundwork on the background data structure of AWITT.
. Amina Khalique | Technical Director .