Incredible Hulk Diary: Mission 1.1.3

[This is the first entry in my "Incredible Hulk Diary" series, recalling my experience as a mission designer on "The Incredible Hulk" in 2008. For more information and links to the rest of the series, click here.]

Mission 1.1.3: The Enclave and Rick Jones – Part 3

Mission 1.1.3: Hulk Protects a Tank Mission 1.1.3: Hulk Encounters a Drop Ship

Summary

What follows is a brief summary of the much longer essay that follows the jump. If you are in a reading mood, feel free to skip past this summary and jump right into the meat.

  • Mission 1.1.3 is an escort mission in which Hulk protects a tank as it travels through a series of Enclave roadblocks.
  • I took over this mission very late in the dev cycle, so I had no access to additional VO or tech.

When I received it, the mission was in very rough shape:

  • The basic setup: Tank moves continuously forwards, with enemies spawning in random positions.
  • This design created boring gameplay due to our AI and systems design–enemies would have trouble reaching and keeping up with the tank.
  • Hazy mission objectives. The player had no idea what to do, whether to stay with the tank or hunt down the soldiers.
  • Overall, no excitement, no challenge, and a lot of homogeneity.

My redesign centered on one core concept: breaking the mission into a series of constrained encounters with clear objectives.

  • Instead of spawning randomly, all enemies are hand-placed at intersections, forming roadblocks.
  • The tank comes to a stop at each roadblock, and does not move on until all enemies are defeated.
  • The player is told explicitly to defeat all the enemies.
  • The player is also told to bound ahead to the next roadblock as soon as the current roadblock is cleared.
  • As a whole, these edits discretize the mission into a series of brawling scenarios (at roadblocks), interspersed with a series of locomotion scenarios (between roadblocks). This provides a basic heterogeneity to the mission flow, as well as establishing clear objectives and rewards for the player.

The mission played much better at this point, but monotony remained an issue. I did my best to maximize variety as follows:

  • Varying the enemy types, numbers, and positioning at the different roadblocks (as much as I could).
  • Adding a drop ship encounter in the middle of the mission. The drop ship is placed at the end of a long corridor down Broadway, which naturally draws the player’s eye to the surprising reveal.
  • Adding several waves of enemies at the final encounter (after the tank has arrived at its safe house), to provide a longer, more challenging fight as a climax.

Reasons why this mission (and the game in general) thrived on carefully scripted encounters like these rather than more open-ended objectives:

  • Unpolished systems due to the compressed dev cycle; rewarding gameplay could not be left to chance, and had to be carefully scripted.
  • Basic gameplay in Hulk was a very focused brawler system without extraneous elements; there is rarely more than one way to accomplish a given task, so why confuse the player with vague objectives?
  • The game’s target audience is the mainstream audience of the film, quite the opposite of core gamers. Thus, careful player direction was a priority.

Details

Story

Rick Jones has stolen a tank and is attempting to drive it to his safehouse in midtown Manhattan. Naturally the Enclave (enemy military) is attempting to stop him. Hulk’s job is to protect the tank and clear out the enemies at a series of Enclave roadblocks.

Background

I took charge of this mission very late, just two or three months before the game shipped. This may sound like no time at all in the dev cycle of a AAA game, but this game was so rushed that those two or three months were when everything got done. The previous owner of this mission had been so busy with other tasks that it was still in an embryonic state when I took over. This was actually a good thing, because I didn’t have to worry about her being too attached to her baby and I was free to totally overhaul the mission–which I did.

Design

A basic escort mission, right? Well, yeah, I guess so. But that doesn’t mean it was easy to design or implement. Generally, escort missions tend to be boring or frustrating (or both). So I had to make it interesting and forgiving, somehow. I also had to deal with a myriad of constraints in our engine and gameplay systems, which I’ll detail below.

Before I got my hands on it

I will be saying a lot of negative things in the next few paragraphs about the state of the mission when I received it. I want to emphasize that none of this is a criticism of the other designer’s work–she had simply no time to work on this mission. Given the little time she had, it is actually impressive that the mission functioned at all. So what I’m describing here is an example of institutionalized neglect, not bad design.

When I first took over this mission, it was fully playable but deeply boring and tedious. The mission had mostly been laid out at an early stage of development, before any of our gameplay systems were functional–and it showed.

The gameplay had been laid out as so:

  • The tank was set on a path from the NY Public Library through Midtown to Rick’s safehouse on the West Side.
  • The tank was set to move forward at a constant speed from start to finish, without stopping.
  • The mission was completed when the tank reached the safehouse; the mission was failed if the tank was destroyed.
  • Roadblocks consisted of barricades, crates, and other destructible objects placed in intersections along the tank’s path.
  • Enemies were set to spawn randomly near the tank as it progressed, and attack the tank.

In this design, the designer had used a very light touch, allowing the tank, the enemies, the barricades, and the player to interact as they will, and utilizing very natural-seeming complete and fail conditions. I would describe this design as extremely optimistic–in the ideal open-world game, perhaps, game systems (AI, physics, and combat mechanics) would work together to create interesting behavior from an open setup like this. But of course, this was not the ideal open-world game. Generally, as I had learned, our systems did not work together on their own in any way, unless they were carefully laid out and scripted to do so.

Here is how the mission played:

  • Due to lots of issues with physics and vehicle behavior, the tank regularly got stuck on obstacles and ended up stationary or driving in circles until Hulk smashed the detritus.
  • Enemies, spawning in random locations near the tank, had similar pathing problems, and tended to be very slow in reaching the tank; even if they did reach the tank, their movement speed was about the same as the tank. As a result, the mission experience consisted of one or two soldiers straggling along loosely behind the tank, meekly firing off shots as the tank barreled onward. Obviously not the most exciting (or challenging) of scenarios.
  • The player had no idea what he needed to do–should he hunt down the enemies stuck on hot dog carts and scaffolding at the edges of his minimap? Should he focus on the enemies tagging along behind the tank? Or should he focus on smashing the obstacles that the tank kept getting hung up on? There were no clear objectives, and in any case it didn’t much matter, since it was almost impossible to fail the mission.
  • The mission was long and repetitive; there was no variety at all in the gameplay.
  • When the tank did finally reach its destination, the mission would end abruptly, even if Hulk was busy fighting enemies.
  • One thing I liked: the path of the tank, which took the player on a dramatic trip through the Times Square area, one of the most beautiful areas in our game. This was only the fourth mission in the game, so for many players this would be their first time in the neighborhood.

After I got my hands on it

I spent a few hours playing through the mission, and getting others to play it as I observed. All the while I took down lots of notes, which culminated in a list of what worked and what didn’t, very similar to the list above. As I planned out my redesign, I was careful to address each of the negative points individually, so that I would have a way to hopefully deal with them all when I sat down to rebuild the mission.

Discretizing the gameplay into a series of encounters

As a result of many iterations of redesign, I came up with a number of design decisions to address the issues I’d identified. In general, my redesign had restructured the mission as a series of encounters with strictly defined objectives.

Here are the two fundamental decisions that inspired the redesign, in detail:

Design Decision 1: Spawn all enemies in clusters at intersections, at hand-placed spawn points instead of random positions. Set the enemies’ AI to guard their spawn positions until the tank reaches them.

  • This addressed the issue of enemies getting lost and stuck, because enemies would not leave their post until the tank arrived in front of them.
  • The clusters of enemies provided a nice visual representation of a roadblock, so I was able to remove the barricades and other obstacles that had been tripping up the tank. Good riddance–other than visuals, the only possible gameplay function the obstacles could have served is to require the player to smash them, which isn’t fun.
  • Spawning all of the enemies in groups provided some ebb and flow to the action, which is always extremely important in an action game. When enemies are continually spawned at random positions and a fixed spawn rate, the mission feels monotonous; when enemies are spawned in groups with a short lull in between, things instantly get a lot more exciting.

Design Decision 2: Have the tank stop moving when it reaches each roadblock, and not start moving again until all enemies are defeated. Provide a clear text objective to the player to “defeat all the enemies so Rick can continue.”

  • This prevented the very unexciting effect of enemies feebly chasing after the tank.
  • This also provided a clear objective for the player. This was very important, due to the confusion and frustration the player would feel otherwise.
  • When the tank arrived at a roadblock and stopped, I was able to tell its AI to begin attacking enemies. This added a lot to the “awesomeness” of the mission–seeing the tank take out the final mutated soldier at a roadblock with a well-placed cannon blast can be very cool. This had not been possible in the previous design, because the game’s AI is not capable of reliably following a path and fighting at the same time.
  • This design further emphasized the burst in action at each roadblock; when the tank actually stopped instead of continuing on its way, a static encounter was created for the player, which was full of action and alternated with less frenetic scenes, for a nice roller-coaster effect. I had learned as a mission designer (as I will discuss at length later on) that creating fun within the auspices of Hulk’s game mechanics depended on carefully defined encounters like this.
  • Continuing with this design pattern, I made the obvious decision to require the player to defeat all the enemies at the safehouse before the mission completes. The alternative, ending the mission immediately when the tank reaches the safehouse, is anticlimactic and illogical.

To implement these changes, I had to dump the mission script and start over, as well as laying out a series of separate tank paths instead of one long path. I did keep the overall path from the original design, because it offered such a dramatic path through Times Square. Once implemented, these changes instantly made the mission much more exciting. It had a nice rhythm to the action, the player was no longer confused, and with some tweaking of the enemy spawns and tank health, it could have some real challenge appropriate to this point in the game. It was finally a solid mission–nothing to be ashamed of.

Of course, it wasn’t perfect yet.

Adding more variety and polish

To begin with, the ebb and flow of the action was too severe–there was a lot of action at the roadblocks and then a complete absence of action as the tank drove between roadblocks. I smoothed this out by pointing out the next roadblock to the player ahead of time. As soon as one roadblock is cleared, the next roadblock is roundeled and added to the minimap, so that the player can run ahead and try to take out as many enemies as possible before the tank arrives.

With this design, the action of the mission never dies down entirely, though the quality of the action alternates between heavy combat and rapid locomotion to the next roadblock. The player is always given a chance to take a bit of a breather if he needs it, before locomoting to the next checkpoint. In my experience, this is a critical trait of compelling scenarios in action games: the gameplay never lets up for long, but the quality of the gameplay constantly varies. In an FPS like Half Life 2, this can mean alternating between shooting scenarios and gravity gun puzzle scenarios; in a brawler like Hulk, it means alternating between combat scenarios and locomotion scenarios. The player doesn’t get tired from doing one thing repeatedly, nor does he get bored from doing nothing.

At this point the mission was in pretty good shape, but with six roadblocks all containing similar encounters, it still felt rather monotonous. It was especially difficult to incorporate any variety to the enemies, because at this point very early in the game, only two types of Enclave soldier had been exposed to the player. I did my best to vary the numbers and proportions of these two enemy types through the different road blocks, but this wasn’t quite enough.

To further address enemy variety, I utilized the one available enemy vehicle, a huge drop ship that flies in and drops enemies. A drop ship is a pretty serious encounter, so I didn’t want more than one in the mission. I thought about it for a while, and came up with an excellent reveal position for the drop ship. Several of the mission’s roadblocks lie along a long, open stretch of Broadway that runs through Times Square, forming a corridor. The player’s eye is naturally guided down this corridor, so I spawned the drop ship around a corner toward the end of the corridor, and sent it after the tank as it approaches the roadblock. I tested the mission on some colleagues around the office, and was very happy to discover (pending some tweaks to positioning and timing, of course) that in most cases, players would spot the drop ship just as it rounded the corner and barreled toward the tank, and exclaim either “awesome” or “shit.” This was exactly what I had hoped to achieve, so I added a target objective and called it a day.

In addition to adding some enemy variety, this change also added a little bit of gameplay variety–this is the one case in the mission where the tank is attacked while in transit. Thus, the player needs to decide whether to bound ahead to the next group of enemies, or hold back and destroy the drop ship first. This one minor tweak to the rhythm of the mission did a surprisingly great job of breaking up the monotony.

I made one more small tweak to the mission flow: at the final encounter at the safehouse, I decided to spawn several waves of enemies in addition to the enemies initially placed at the roadblock. This is a subtle change, but it has a noticeable effect on the feel of the action. I had experimented with spawning waves at other roadblocks, but I scrapped this because it made the encounters too slow and static. I wanted the persistent movement of the tank to drive the mission, and long encounters detracted from this. But at the final safehouse encounter, the tank has already reached its destination and is waiting for Hulk to finish off the enemies. This provided an opportunity for a more drawn-out brawl; here I spawn three waves of guys, and tell them all to attack Hulk rather than the tank, for an all-out brawlfest. I tweaked this encounter to be slightly more challenging and about twice as long as the other roadblocks; thus it serves as a climax for the player. It’s always a great idea to provide a climax like this, because in addition to providing a satisfying end to the mission, it gives the player something a little different to do (even if the only difference is extra challenge).

Missteps

So far so good, but not everything went so well. I made lots of missteps, most of which were easy to identify and fix through copious playtesting. One thing I ended up wasting a lot of time on was an aborted branch toward the end of the mission. I spent a day or two setting up an elaborate scenario in which the path of the tank branches away from the path of the player, but later the tank is ambushed and calls the player back. In my mind this was an awesome scenario, and I had a lot of fun playing through it.

Of course, I’d made the classic designers’ mistake–I was assuming players would all play the game the way I do. I also had a story in my head for why the tank was branching off, which made perfect sense, but I had done a terrible job of relating this story to the player. It was far too late at this point to request any new VO, so I had cobbled it together from existing VO and objectives; for me it worked, but for everyone else it didn’t. So the player was left confused about what to do, unclear about why the tank was branching away from the mission objectives. This became clear immediately once I tested the mission on other players. I had wasted a couple of days on it, but when I scrapped it I knew I’d done the right thing. There was already enough awesomeness in the mission, anyway.

Done at Last

Once all these fixes were in place, the mission was very solid. It was exciting and varied, and everybody enjoyed playing it. At this point the game was going to ship in like a couple of weeks, so the mission was quickly signed off by the senior designers and locked down. I was done with it, and pretty satisfied.

Lessons Learned

As I had learned time and again in my missions, creating fun within the systems of Hulk depends on creating tightly constrained encounters with clear objectives. Some games thrive on open-ended objectives; Hulk is not one of them. Here are some of the reasons why:

  • Being a movie game, Hulk was inevitably unpolished and rushed. Its various systems (environment, AI, locomotion, combat) did not work together smoothly; the only way to create reliably entertaining gameplay was to script it carefully. I could have ignored the lack of polish in the game’s systems and tech, set up a looser, more open-ended mission, and blamed the terrible gameplay on the systems and tech guys. Instead, I treated this issue as a constraint and did my best with it. By carefully scripting constrained encounters, I could ensure that the player would experience the game’s fun side.
  • Simple brawlers, even of the open-world variety like Hulk, don’t naturally lend themselves to open-ended gameplay, because from a gameplay perspective there usually isn’t more than one way to accomplish something. Hulk consists of a straightforward combat system and a locomotion system, without a lot in between; no secondary or tertiary combat mechanics, no car jacking, no gravity gun, no stealth. This is a good thing for a primal game like Hulk, because it allowed us to develop a tight, satisfying combat system without extraneous distractions. To support this core experience, it was necessary to construct appropriately restricted missions.
  • On top of this, we were making this game for kids and the mainstream audience of the film. We had to be especially careful not to make hardcore assumptions and lose the player. This was no place to take risks with loose player direction.

Leave a Reply

Search
Archives