Building boss battles in Assault Android Cactus feels like being perched at the top of a steep, unfamiliar hill on a bike. You have a reasonable idea of what's about to happen, and once you push off, it will happen whether you're ready for it or not and the only practical option is to try and deal with challenges as they come.
This is only fair considering that challenge is a core ideal of the game. Which doesn't mean difficulty - although it is an aspect - but rather finding ways to introduce new concepts or familiar ones in a fresh context for the purpose of subverting expectations. This could mean bringing in an influence from an unexpected area, or finding a twist on something more standard. As we're striving to make a game that can be played repeatedly, we attempt to hold up our end of the implied contract we have with the player by steering away from a cookie cutter boss escalation, instead trying to give each boss a good reason to be in the game.
Justify your existence
So that's the lofty sounding theory, but how to put that into practice? I often start by figuring out what I already know then filling in gaps, so from the visual concept I know I want him to release sub units from his hinged back, use large (detachable) shields to protect himself from frontal assault unless you 'thread the needle' by hitting him in the face, and have a quadruped and biped stance. As his shields are heavy, that suggests he starts on all fours and will end up on two legs over the course of the battle.
|documentation is vital for maintaining a strong gameplay vision|
So we went out for burritos and had another brainstorm session. Many wild and wonderful ideas were thrown about, but crucially some strongly resonant concepts emerged such as the three phase structure of defence, agility then offence, and the idea that as security chief, Justice could make use of units similar to Helo, that could be stored in his back and unfold like firepower drones as required. To maintain consistency, they would be unshootable. I was concerned about this - while it's normal be unable to shoot projectiles, these would look like enemy units, but Sanatana was confident they would make sense when people saw them in game.
I was drinking some kind of vodka based slushy at this point and coincidentally started realising that Phase Three needed to be more intense and exciting. "Justice should rip his own head off and throw it at you! And the head transforms into a little robot and shoots lasers!" Sanatana was giving me increasingly concerned looks, but I assured him it was totally fine and I could rig the model to do that. "Then at the end he should, rip open his chest and blast you with a mega laser, like out of nowhere! Have you seen the live action Guyver movie?" Sanatana had not, so I proceeded to act it out for him and he gave me that look again. Seriously it's fine, I'm the one that has to build rig and animate this stuff, I know what I'm doing.
The final piece of the puzzle were laser fences. I wanted Justice to shoot devices out of his back, and it to involve lasers somehow, and Sanatana had a long standing idea about a grid of lasers that would constrain your movement. We realised the two concepts could be combined, and we had a strong idea of how Justice was going to play! Onto implementation!
|having grown up in Adelaide, I find being surrounded by grids somewhat comforting|
While it might sound like we have all the details figured out, no battle plan survives contact with the enemy and we expect to adapt as we go. Laser fences initially endlessly refreshed but changed to being deployed once. We disagreed over if high level players should want to destroy all the laser fences or learn how to take down Justice while dodging within a confined space so the laser fence nodes went from counting as enemy kills (and increasing multiplier) to being worth and dropping nothing, to dropping weapon energy and guaranteeing a powerup, which ended up being a comfortable blend of opportunity cost and utility.
The original design of Phase Two involved Justice charging, strafing while firing missiles, stopping to fire five lasers across the stage very quickly before charging again. Everything worked as expected but the laser fire felt haphazard and out of line with the experience and was exploitable by getting close enough to be guaranteed out of the firing arc. Sanatana felt Justice should have an action that would make the player more vulnerable to the imminent charge, and our conclusion was to let Justice temporarily stun or slow the player, mimicking the behaviour of a shutdown and further enhancing his concept as a law enforcer as well as introducing the second way Justice directly affects player movement.
|"Imagine how terrible it'd be if you couldn't dodge his charge!" "Why imagine?"|
The concept of the sub units popping out of his back was dropped - it was complicated and would affect gameplay timing, so instead we use teleports, visually similar to Helo and the Reaper enemies. The three docking ports along his lower spine will remain as reminders of this concept however!
For stage three we increase the sub units to three and reintroduce the laser grid, but one node at a time and they will endlessly respawn while Justice, now towering above you, switches heads as he loses health. I realised early on that the plan to turn the heads into turrets wasn't a good one - not only was it overly complicated for a minor element of the battle, it would be unreasonable for players to parse considering the chaotic point we planned to first introduce them. Instead I make their behaviour similar to the red rolling mines so they are still a meaningful threat but easier to implement and understand.
|like any good action figure, Justice has several detachable heads designed to roll away and get lost under the couch|
And from there it was a massive amount of tuning, testing and bug fixing! Playing Justice over and over again with every character, getting a feel for what felt right, what was chain-able, when a phase felt too tough or too easy and what the player needed to have at their disposal to have meaningful choices.
Justice for all
So we packaged the whole thing up and set it live. The thing is, Justice is hard, he's meant to be hard, and I knew some people would react unkindly to that. I asked in the patch notes that people try to fight him with different characters and at least see him through all the way once before they told us what they thought was wrong with him, and braced for the hate mail.
Which, surprisingly, never really came. We had some angry and negative reactions, including suggestion we didn't know how to design, or that it proved that Assault Android Cactus had secretly been a multiplayer game all along (and thus those playing it singleplayer were being victimised) and some scornful observations that asking for the boss to be beaten before criticising him was a great trick when he literally wasn't beatable while some was just confusion as to how we expected anyone to beat him.
|I've always wanted to try a current affairs style "photo off the screen", it makes everything look so serious!|
But it was less than I was expecting. Many of the early comments from people were sharing strategies and tips, posting videos, tweets of satisfaction from taking him down, and most tellingly of all, in the very first day, we had 87 leaderboard entries and five S+'s. People were not only beating him, some had already dissected his patterns and started pulling the encounter apart looking for more, just like we hoped!
And there were bugs uncovered and perceptive feedback. The spinning sub units would ricochet off Justice, the stage and each other, but also the missiles, making them sporadic and impossible to predict during Phase Two, so I reduced the number of entities they would interact with to give them clearer trajectories. Laser fences were difficult to spot, some people didn't even realise they were destructible, and could easily get off screen. We moved one closer to the players starting position, adjusted the camera biasing and gave them off screen indicators. There were other changes too, all made in an attempt to clarify his behaviour or remove unintended edge cases.
Doing it Justice
Justice went into the game in a pretty rough state. Playable, but with only first pass audio, no textures and a checkerboard stage. In our first update I gave him a voice, recording the lines at Jeff's home studio. Jeff ran them through various filters while I added audio triggers to test the lines in game - we revised a few for tone and clarity and picked out a couple of cases where we needed a tell, like the first time he triggers a slowdown.
|Justice's spoken word album will be available in stores later this year|
Next was his texture and stage. By this point I have a process for these larger robots although I deliberately try not to follow a rigid formula as each of these robots has a different history, build purpose and construction philosophy. Justice is pristine (unlike Embryo) but not as sleek and organic as Vespula, instead having an industrial boxiness. As always, the first step is drawing lines all over him as they will define the overall construction style and help pick out areas to focus on in later steps.
|I needed a way to suggest he was with the security forces, so consistent with the subtle and understated tone of Assault Android Cactus, I wrote "security" on him|
The next part was new for me - I picked out panels in different colours, defining a height difference (+2, +1, -1, -2 for instance) to give me guide layers for later steps and allowing me to post misleading pictures on Twitter. The first thing I used them for was a sort of ambient occlusion pass - by selecting layers and masking against others, filling and blurring I could build up a soft shadow to bake into the diffuse texture. I followed my usual technique for shading panel edges, cabling and painted on a soft chrome effect and painted in a bit of shadow and soft falloff for curvature.
|when not leading his minions against the crew of the Genki Star, Justice is all about The Color Run|
Following the approach I took with Vespula I added a gentle gradient across his body, giving his lower/back legs more of a purple blue and a lighter more vibrant blue for his upper body, both to focus attention towards his head when he was upright but to also match him better with the floor texture. Finally the panel approach simplified the heightmap / normal map construction since I had everything separated into heights.
|overcast or sunny, Justice still isn't sure where that contact lens went. Actually I should probably caption this one... Left - fullbright diffuse, Right - realtime shader|
|in between fighting androids, Justice can play Tetris on his video walls|
And that is how we got boss number 3 into the game! I never know what people will find interesting to read about but I hope there was something of value in all that! As alluded to, Justice is in our current Early Access build, so if you want a better look and don't mind unfinished work, you can grab Assault Android Cactus on Steam or through our Humble widget right now. Otherwise the finished game should be available some time this year with the planned WiiU, PS Vita and PS4 versions to follow.