Monday, 9 February 2015

Sprint Update 09.02.2015 - XML Heaven

Some nice progress on editor tools and paving the way for player modding of NPCs and data content in the game…and we managed to get out of the proverbial ‘indie-office’ (our sofas, indie co-working, London Gamespace etc.) and into the real world for a bit too!

The Future of the Darknet


We were lucky enough to get asked along to Cybersalon’s :'The Future of the Dark Net’ to present the story behind Off Grid and it’s inspiration to a more-than-sold-out audience, and take part in a fairly lively panel with Jamie Bartlett, Gareth Owens, Wendy Grossman, and Bjarni Einarsson. It was an interesting discussion to be a part of, with some hot topics covered on the night, you can check out the video here… And, if you get a chance, pop along to a Cybersalon event soon. They are brilliant, we really love the folks who put them on and the work they do, so show them some love!

Everyone’s GOAPing

So back to what kept us indoors this sprint then. We swapped out all the guards in the prototype level to now use the new GOAP AI system and movement scripts. They are smarter and don’t run like hungry leopards any more, so along with the continually extending data mechanics the game is feeling more tactical even in this stage of infancy. Pretty exciting!

After you…

One of the things that has been bugging us for a while is that our guards have never bothered waiting for doors to open - they were so darn impatient!

Not a complicated problem, but the old AI was already obtuse enough that finding a way to get the guards to pause to wait while the door opens, while also keeping all the other systems working wasn’t going to happen. With the new AI things are much easier, and we could fairly easily make the gaurds wait while still maintaining their plans and continuing to monitor their surroundings. a small think you might think, but the ability to make NPCs wait while in the middle of completing a goal adds a lot more flexibility to their behaviors.


With work on messages systems and NPC personalities being one of the predominant themes of the last two sprints, we decided to spend a little time getting down and dirty with making this data entry a little less unwieldy. YAWN, I hear you say! Yep but waaay better than having to manually click and open fields, never did copy/paste feel so good! Fell free to skip to the end if this isn’t your thing!

Anyone who has ever attempted to put large amounts of data into a list via the Unity Inspector window will attest that it can be pretty darnn tiresome, and so we decided to move the library of NPC SMS templates into XML files from our previous ScriptableObject library so that it could all be formatted, copy pasted and saved more easily. The additional benefit is it makes this come a step closer to the eventual goal of making this open and moddable to players. The likelihood is that the system will change dramatically before that point, especially as we move towards Lua scripts instead of just storing data to give players more power, but ultimately it’s another nice step towards that goal.

As well as the main message templates, we decided to make the process of fleshing out the personalities of each guard more efficient, by moving NPC BackgroundInfo (personality details like names, likes, dislikes, mood etc.) to XML and add a custom editor so we can load & save the data from inside Unity as well as directly by editing the XML files.

The next task for the SMS system will be procedurally generating typos on purpose, and tying it to motivation/tiredness to add an extra dimension of variation in the procedural messages.

Of course the best way of testing all this data entry tools work, is to enter data! So we spent a bit of time coming up with template messages and variations, and wrote up a fuller set of personality variants for each guard to test the extensibility of the procedural message writing. On first glance in a build it looks to be working nicely, but the best way to test it will be getting a better handle on the Unity Test Tools framework we set up last sprint and do some integration testing to print out all the the potential message variants in the console/commandline and see how they read at a glance. That’ll be a first port of call for next sprint!

…And more TOOLS

As one of our reasons for using XML files was to expose them to the players, we needed to make sure the files will stay outside of the .asset files Unity packages put all content into. Making that work of course meant setting up a custom build script that moves all the XML files into the correct place in the build. And while doing that, we also had a nice chance to implement couple of other things to make our build process smoother, so now version numbering is handled automatically, and the build script also removes read-only tags from files (CoherentUI seems to dislike playing back video content from a read-only marked file, and due to us using version control all files are read-only unless we check them out first). This scripts is also making sure each platform’s build only includes sound bank files for that exact platform, as Unity’s own build was including all soundbanks in all builds. That’s gigabytes of unneeded files, so the builds are now quite a lot smaller. As a final touch, we also added the “Build All” option so we can get latest version built for all platforms with a single click, without having to sit around the computer to switch build options and start the process again for each platform. Highly recommended if you plan on supporting multiple platforms!

So, not that many exciting new features this time, but after our last two sprints that had loads and loads of big changes to the game, it was time to work on some tools stuff. And making things easier to work on, to add more content, and in the end for the players and modders to play around with, is always worth doing!

“More news next time… on the Off Grid Sprint Update!”

No comments: