My entry in the Starcraft 2 “Rock the Cabinet” Contest

I play a lot of Starcraft 2, and I really liked the co-op mode and campaign. When Blizzard announced a map-making contest, I jumped at the chance to actually create something instead of playing all day.

The contest was named “Rock the Cabinet 2017”. The original post can be found here: https://www.evernote.com/shard/s1/sh/b5e993f7-18c5-43ee-9bae-ddeb85c6673a/e602126dce6aefe48f64fb79be12bb01

Key details:

  • Map needed to be in co-op mode with a strong theme
  • Top prize was $10,000, trip to Blizzcon and your map becomes part of official StarCraft co-op
  • Criteria for winning:
    • accessibility (how clear the objectives are)
    • creativity
    • theme
    • fun

Some of these criteria are subjective. How is “fun” scored?? How is “creativity” scored?? That completely depends on the judges playing it and the other maps they played and the order they played them in. It’s as if I’m starting my own business and I ask people “what is valuable”? Ugh. As i think of it now, “fun” probably means:

  • player does 100-200 actions per minute. No downtime and no overwhelming moments
  • player does something for the first time
  • player hears funny dialogue from the characters
  • player does not know what to expect
  • player has autonomy over as much as possible
  • player gets better at a skill over time
  • player gets constant feedback of all of the above

Brainstorming

I agreed with the criteria Blizzard published. I had a lot of ideas that I listed. In a past “Rock the Cabinet” contest, one criteria for winning was “technical achievement”. I wouldn’t have tried if that was a criteria this year because I had no map editor knowledge at all. But this year, with Blizzard’s template map and all the restrictions they placed, the barrier to entry was nice and low.

List of submitted missions

List of submitted missions

“Let’s brainstorm about a game” I thought. But it was actually kind of hard to innovate in Starcraft game mechanics. Hence why so many people who submitted maps before me were categorized into only a few categories: “defend, destroy, boss, escort”. Pretty much all campaign and co-op maps fit into these categories.  The winners of the competition all fell into these categories. What room was there to innovate??

Ideas I came up with :

  • stock trading game where you have to invest minerals. you own a corporation and you have to use your army to kill all the other corporation’s farmers. (this idea made it to the top 10)
  • Hero siege like “X hero Siege” from Warcraft 3. (the rules specifically said not to rely on hero units)
  • Cooking map where you have to gather ingredients like carrots and watermelons to please Amon’s favorite soup.

So I thought…ok, maybe I can innovate, but only after I make something simple first. Simple defend/destroy. Then I make the new and complicated mechanic. I didn’t want to fail like my university CS120B course where I made the scope of work so large (implement a nerf gun range) and then fail to implement something “complete” before the deadline. Something simple and complete is better than incomplete.

In retrospect I probably should have gone to the forums and brainstormed there about what my map should be. Tell people about my idea and build it only if they like it. But I think I made the correct choice. If I took someone else’s complicated suggestion, I might not have completed anything because of lack of knowledge with the map editor.

Making the map

I really wanted voiceovers. I really wanted to make a map where you don’t just “kill Amon” blah blah like all the other co-op missions. Boring. So I thought “let’s make the villain more interesting.” Blizzard touched on it with the Amon voice line “I was forced to become this” in the very last Legacy of the Void campaign mission and I wanted to hear more.

I started working on a script. I settled on only using existing voice lines from the game because I had just recently watched YouTube videos from a guy named dinoflask. The videos are hilarious because they Jeff who is usually very diplomatic and make him say taboo and ridiculous things. I wanted to do the same.

I went to the Starcraft Wiki and downloaded transcripts for all cinematics in Legacy of the Void and combined them into new voice lines.

I made Artanis into an arrogant leader that didn’t care about the lives of his soldiers. Then I realized that I just recreated Alarak. So I used him as the villain. It works great too because in the contest rules, only Raynor, Kerrigan and Artanis are playable. Not Alarak. I stopped working on the script when I realized that I need to make an actual game and not a novel.

I had to learn how to use the map editor. Honestly I did not want to do this. I just wanted to create and brainstorm. Learning how to use the terrain, trigger and data editors was second priority to me. I wanted to partner with someone but I didn’t ask on the forums.

I opened up the contest template map and started playing with the terrain knowing that “defend void shards” was the main theme.

At first, the map looked like this:

Old map with 2-3 entrances where enemies came from the right

Old map with 2 entrances where enemies came from the right. Keystone is near the player bases.

But I realized the map would be too boring with only two entrances. The co-op level “Temple of the Past” has four entrances–mine should have that many too to keep it interesting. I threw out everything except Amon and redid the map to look like this:

New map with six entrances (4 on the left, 2 on the right) Keystone is in the center of the action. All three void shards are reachable and enemies spawn on the left.

The terrain took a disproportionate amount of my time. I didn’t even place many doodads–I was aiming for functional things like gameplay and not having too much empty space in between. I could have just used one of Blizzard’s campaign maps but then I would have had to rip out all the campaign trigger code and replace it with the co-op template trigger code. Very difficult. Code more important than terrain.

The trigger editor is where the map programming happens. Using the trigger editor is fun because its simplified GUI programming, where you get a list of all the valid functions and all the valid parameters. No looking in some lame API reference and then getting a bunch of compiler or runtime errors. The problem is that revision control just sees a binary blob unless you export the Galaxy script text just for the sake of revision control.

The data editor was the last thing to do. I spent a long time adjusting the HP of the void shards, removing abilities, making the keystone able to spawn hybrid, and importing ALL my voice lines of Artanis, Karax, Alarak and Rohanna. The data editor is SO SLOW when it has hundreds of items to list.

Fun

As I played the map over and over and over I kept thinking about my design goals:

  • player does 100-200 actions per minute. No downtime and no overwhelming moments – at first the map was too boring so I doubled the number of attack waves. There were originally 7 in the template and I made it 14.
  • player does something for the first time – I made the new mechanic of sacrificing units to make hybrid
  • player hears funny dialogue from the characters – i spent a ton of time making the script and editing the voice lines.
  • player does not know what to expect – I made the map spawn enemies all over the place. top, bottom, middle, behind, even directly to the player bases
  • player has autonomy over as much as possible – I have players control hybrid and the void shards
  • player gets better at a skill over time – i didn’t do this. hard to do with just one mission.
  • player gets constant feedback of all of the above – i put big meters at the top right corner of the screen that show how much HP all the void shards have and make the screen shake if one is destroyed. Artanis says bad things like “a shard has been destroyed”.

Of course I also tried to follow all the guidelines in the official co-op guide like “players should sometimes fight together and sometimes fight apart”

Submission

I was still working on little details an hour before submission. Things like the ping icon on the minimap and the timing of the attack waves. I don’t recommend doing this. It didn’t help that Blizzard said “you only get to submit once. No updates allowed after.” So the map had to be perfect.

But I finally submitted it and accomplished something!! Something I could call complete! never ever do I get this satisfaction at a company =(

https://giphy.com/embed/YTbZzCkRQCEJa

via GIPHY

The day after the submission period ended, Blizzard announced a new co-op mission: “Scythe of Amon”. Translated: “destroy void shards before timer runs out” https://www.evernote.com/l/AAH1FXLSBrVLRZh0GYEKBwerS3KE43u1cag

I was like “NOOOOOOOOO” because if Blizzard already released a void shard mission, what are the chances that they will pick another one for integration into the actual game? Very slim. It depends on the judges. But my creativity score would definitely suffer. =(

Did I win?

When the top 10 video was released, I kept looking for “I love Amon” but it wasn’t on the list. Massive disappointment =( I also found it really strange that some maps like “Immortal Siege” were top 10 and some maps with custom models and new mechanics like “Sky Fall” didn’t make it. “Sky Fall” must have suffered on the “accessibility” criteria. Too many new mechanics?

I went into the contest expecting nothing, so I wasn’t sad for long. I just wanted more people to play it. In fact, I went to look at my entry again on the arcade and was delighted to see six 5-star reviews! Some people liked it! The only affirmation in real life I have had in the last few years was my boss giving me my paycheck for my job. Having actual users rate me highly is much more satisfying. Now if only I could have actual users pay me.

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s