Zombie Playground is an exciting project I’ve been working on in recent months. Even though this was the second project where we are using Unity3d (the first being Mothhead); this is a completely brand new IP for us, that isn’t tied down to maintaining legacy assets. As such, Zombie Playground offers us a lot of freedom in planning out an efficient pipeline so we can better concentrate on the vision of the game, and less on tedious tasks. I’m responsible for wrangling our said pipeline, documentation, character rigging, and developing tools to assist our small team. We’re still in the early stages of development, and there’s a lot of aspects of the project in WIP-phase, but I want to describe some tools I’ve developed for ZPG that have been coming along nicely.
MayaUnity is our custom exporter to get Maya assets into Unity and encompasses all of our Maya Tools being used for the project. We currently export all of our Maya assets into Unity via the FBX format. Using MayaUnity, I ‘m able to streamline the process of exporting the asset with the proper settings (for example, Unity has trouble FBX2012 files, so we have to make sure FBX is set to export using the 2011 format).
In the case of animations, we currently store all the character animations in one file and separate them by animation layers. We first have to bake all the control rig keyframes onto the skeleton, which is then transferred to a separate character rig that’s pre-optimized for Unity export. These steps are hidden from the user and the end-result is that we’re able to batch export all the animations in one go!
We’ve also are developing an automated space-switcher that offers the animator the ability to have rig objects dynamically switch parents. In previous rigs, I typically would create a preset number of “parents” that can be switched between for particular rig controls. This normally works fine, but often my animator would come back with requests such as “can we have the control follow [insert unforseen possible parent]?”. While I could implement each requested parent, I wanted to try something more and provide a greater degree of freedom when animating the Zombie Playground rigs. This spawned the idea for Everyday Switcher, which is sort of a sandbox parent switch for use in animation. Now, I only have to rig controls to have compatibility with the tool, and I my animator now has more creative freedom without having to constantly ask for permission.
This our pose and animation storage that’s been used in multiple projects at Massive Black, and is one of the most mature tools in the current MayaUnity suite. This was originally just our in-house Python fork of a well-made MEL script, PoseMAN. Over time, I translated the tool to Python, changed the exported pose files to follow XML conventions, and added the ability to save animations. It’s become such a helpful tool for not just our animator’s workflow, but also a means to backup and preserve animation data if the scene were to ever get corrupted.
This is the beginnings of our implementation of a modular rigging system to streamline initial control rig setup and introduction of new rig features with minimal downtime. I’ll save more details for a later post!