PAX Countdown, Day 12 – Wrestling with Maya
This is one of the continuing PAX Coundown series, if you want all the gory details from the start, you can begin your journey here.
Yesterday was all about fighting with Maya, and mostly losing. Maya is the main 3D modeling and animation tool we use,1 and modern characters and the tools to create and edit them are complicated enough that sometimes the smallest stuff takes the longest.
You’ll remember The Goal: we’re trying to get all the new characters into SpyParty and playable by PAX at the end of August, along with the new UI flow so that people who sit down to play get a completely different experience than previous years.
Ms. B’s Arm
Well, since we’re all unique skeletons and animations, that’s a lot of data-wrangling, and unfortunately I spent 6 hours on one “small” problem yesterday, and still came away empty-handed:
Something about Ms. B’s arm rig is causing this pop whenever her hand controller is attached to anything. We investigated many different theories, and there are still a bunch of things to try after PAX, and no shortage of interesting clues (like her hand angle changes when you move her shoulder even if the hand controller is constrained to an object, unlike the rest of the characters), but we had to finally give up, and John manually counter-animated the pop and drift in all the statue animations. Modern animation rigs are basically little machines, and the construction of Ms. B’s machine is faulty somehow. It goes on the post-PAX list. It’s not clear we could have fixed it without messing up all her existing animations anyway. Welcome to game development.
As an example clue, the green shape in this next image should be a circle, not an ellipse. There’s no non-uniform scale on this controller, nor is there in any of its parents. Was there some scale that actually got frozen into this node? Is something else happening? One of the alignment MEL scripts I wrote was injecting shear into nodes it was aligning due to precision issues after multiple alignments, but this ellipsoid stayed after I fixed that. Sigh.
Here’s a cute shot I took while trying to debug the alignment script.
Batch Processing
The other big thing I did yesterday was write some batch processing scripts to correct some errors that didn’t need a human to fix them. We work in a few different places, including my laptop, John’s laptop at the office, and John’s desktop at his apartment, and so we use SUBST to make the S drive point to the root of the SpyParty Perforce repository for our content data, this way any absolute paths are always on S: and theoretically everything “just works”. Except when it doesn’t. John nagivates his drive by links/shortcuts a lot of the time, so there’ll be a shortcut to
S:/project/spyparty/source_content/characters
or whatever so he can quickly hop over there when loading a file. Well, one of his shortcuts was in terms of his local disk directory, so it was something like
C:/Users/John/SpyParty/Trunk/project/spyparty/source_content/characters
which obviously doesn’t exist anywhere but on that single machine. Then a file with these links would get copied to start a new animation, or he’d use that link to navigate to another directory in a file that already worked, or whatever. Maya prompts you to find the missing references on file load, but if you don’t save in the right way it won’t save the remapped reference, and eventually the evil links metastasized into about 100 files. Opening, checking out, and fixing 100 files manually takes hours. I came to loathe C:/Users/John during this process, but hopefully it’s banished forever. The animations are batch processed, and he found the evil shortcut and fixed it.
Similarly, some of the animations were started from the walk cycles for each character, and walk cycles have the character’s global move node translating while you’re working on the walk to get the feet to stick. Then, you mute that channel to export the animation in one place. Well, sometimes the character would be offset from the origin when the animation was done, and so the exporter decided that the character needed to be a couple meters in front of where it should be. You can see the results in the second half of the video from yesterday. Yet another script fixed these 45 animations.
What’s that you say? You want to be a game developer and make 3D video games?
The Testing “Plan”
So far, I have Mr. A and Ms. J mostly working in the game. The lighting is all wrong, and there are plenty of bugs, but it’s a start.
I think what I’m going to do is shove all the 10 new characters in the game, start 10 new threads in the Bugs Forum, one for each, and then put a setting in the game to enable them in all the old art levels and crowdsource the testing and tuning to the players in the beta.2 They’ll look pretty out-of-place, but I need to get them tested as quickly as possible, and my beta testers are the best.
To do this I’m going to have to finish up the half-implemented new UI flow, because right now the game on my computer doesn’t really work. That’ll be another source of lots of bugs, but better sooner than finding them at PAX!
I’m going to try to do this early next week, maybe even Monday, to maximize the testing time.
Teaser
In addition to getting the new art in the game, which is the super ultra mega priority, I’m also messing around with something special for PAX. I’m not sure I’ll do it, but it involves printing stuff, so I’m forced to hit some print deadlines and spend some money before I’m even sure it’ll work, or else it simply won’t happen. More details on this tomorrow. Here’s a teaser pic: