Building enemies in Assault Android Cactus, particularly bosses, is complicated by the reliance on animation. Sometimes animation lengths drive game logic, or are used as an intuitive way to block state (still playing the "pull off your own head and throw it at player" animation? Okay then, don't bother walking forwards) so there's a bit of a chicken and the egg situation where I need animations to build gameplay, and gameplay to tune animations.
For enemies I'll generally go ahead and animate everything (sometimes roughly) so I have it available to build with. For bosses, where so much iteration is required, I try to animate a minimum set and rely much more on the boss sliding around and looking dumb while I figure out the attacks.
Still, there are animations I know I'm going to use, so I start with those. First of all, this guy needs to introduce himself!
|yes his head is meant to look like a webcam, it's commentary on surveillance|
From that I get an Idle pose (well okay I worked out the four legged idle pose first and made the spawn animation meet up with it) and from the Idle pose I can start working on my other connecting animations, like walk cycles (I originally animated a four directional walk, but it's starting to look unnecessary) his melee attack and phase changes.
Assault Android Cactus has strong themes threaded through it but I'm also trying to avoid cookie cutter progression and even if there are standard things that a boss has to do, I'd prefer to use it as an opportunity to to put a different spin on the concept and deepen the personality of the opponent. Embryo's melee attack had a large tell, makes himself un-shootable then inflicts damage. Vespula doesn't bother with the tell, but interrupts her attack patterns. For this guy, we thought making his melee passive would be interesting, eventually settling on it being electrical based, driven by those massive plates at center of his body.
|yes he sends the androids flying using alternating current, it's commentary on Thomas Edison|
I borrowed some of the style and visual elements from Coral's plasma field - not only does it save a bit of time R&Ding a whole new effect, but it ties the technology together. Ever notice that Coral's plasma field generator is sporting a blue and grey colour scheme just like Aubergine, Helo and other residents of the security deck? It's a bit like how the Reaper's teleport effect is visually similar to the way Helo teleports back to you when he gets stuck behind walls. The point is, I spend way too much time thinking about this stuff, and now the new boss can electrocute people! Success!
The plan is for him to transition through about three distinct phases. Phase one is very defensive. He's slow, has giant surfboard shields to block bullets and relies on keeping you busy with other abilities. But once you get through that, it's go time, son!
|yes he detaches the bolts with sheer lateral force, it's commentary on poor quality threading|
During the animation the shields are swapped for a separated version with colliders and given impulses to send them flying in a visually pleasing way, very similar to how the exploding crates work in other parts of the game. In the same way the debris bounces across the stage but doesn't collide with anything but itself. (as it's just a visual effect)
With the load lightened, he's now a bit more agile, which means I need a run cycle! I realise I've shown model progress a few times on this blog now, but haven't really done anything similar with animation. Run cycles are kind of fun, there's a bunch of different ways to approach them, here's how I did this one.
|Gotta Go Fast!|
Animating quadrupeds is reliant on the timing of the legs, so I start by focusing on when the legs are contacting the ground. (32 frame animation, keyframes spaced evenly on fours) For animal run cycles, I generally find myself referencing Muybridge (I've got the hardcovers but the image sheets seem easy to find online anyway) and based the timings roughly off a horse gallop. At this point I've put little care into the poses, the back feet stay perfectly flat (the front feet only tilt to avoid hyper extension)
In the next pass, I work on the feet - I let the back feet curve back then get carried forwards into a flick, and a bit of ground flick on the front feet. I also animate the clavicles to allow the front legs to reach their targets more naturally. All four limbs are still IK at this point so I can focus on their raw movement.
I start refining the motion. I give the body some movement (nothing major, I focus on the kick from the back legs, and some drop before the front legs come into contact with the ground) and work on the momentum of the legs, particularly looking for points where the legs slow down or speed up unnaturally and trying to push it backwards or forwards into other keyframes. I'm also working on followthrow, particularly on the back legs. Rough but functional.
A hasty 'polish pass'. I refine and exaggerate the body movement, fix up clicks in the legs and adjust where the feet penetrate each other too much. As a result, his front legs become narrower and his rear legs become wider, he now runs a little bit more like a dog, which is interesting. It's clear from his frame that he gets almost all of his power from his hind legs, his front legs are mostly to stabilise and support. I let his limbs switch to FK when they leave the ground, it makes the arcs look a little nicer, and add some basic toe animation, including a slap down on floor contact.
At this point I stop and force myself to export the animation into game. It's good enough for now and I tell myself that I can find time to revisit and improve it during Beta, which shows despite the long hours and gruelling workload, I still retain a sense of humour.
|it is moderately terrifying how fast he can cross this stage|
And now it's in the game! A lot more animation has gone in than I've had time to talk about, and there's still a lot more animation and code to go, but his boss battle is starting to shape up. Next time I'll try to talk about his attacks and attack patterns!