Today’s post is a little bit different. Unlike previous post mortems, this is one I didn’t work much on.
The Chess Event in Karazhan was created by a designer who prefers to remain anonymous. He started out at Blizzard back in the days of Warcraft 2 as a phone support technician, ended up showcasing his creativity and passion for trying out new and unexpected things repeatedly throughout his career at Blizzard.
He created holidays, battlegrounds and quest chains. However, for me, the Chess event was the most memorable. It showed me that most of the barriers to what can be done in a game can be overcome with creativity, patience and hard work.
A Strange Room
The hollow shell of Karazhan had been in progress for three years when I started at Blizzard. John Staats had planned, Aaron Kellar had built and rebuilt over the course of several years. When I finally got my build machine setup and the special client used to connect to our development servers working, one of the first things I did was run through its hallways.
Twisty, dusty and mysterious, walking through its empty halls was like a piece of adventure fresh out of a faerie tale. An opera house, a dusty corridor, the twisty-turning library, complete with secret passageway, and then suddenly…
Me: A chess board? Ooooohhh….
The gears in my head began to spin – the possibility of ideas clicked into place.
Me: Scott, can I make the boss for the chess room?
Scott: *turned around from his work scripting the stage event* Actually, [Redacted] has offered to do an event in there… but we do have a lull for a bit. Why don’t you go find him and see if there’s something you can do to help out.
I scampered over to his office. He was idling around Shattrath in the editor, dragging Christmas decorations into place, muttering small curses about what a pain it was to place objects all over.
The Challenges of a Mini-Game
When you are creating a mini-game inside of a complex, pre-existing engine, there’s a number of significant issues that prevent you from creating a seamless experience.
- The control scheme isn’t built to suit your work
- The camera will often be at the wrong angle or out of your control
- The game engine won’t exactly support what you’re trying to create
- Often engineers will be confused as to what you are trying to create.
- Often you will be confused as to what you’re trying to create.
The chess event was no different. Knowing we wanted to draw upon the Battle Chess game as inspiration, but create our own rules, He went to town. The first inspiration was Warcraft 1 – which ended up being the inspiration for the pieces and their names.
After several iterations, he put together the following rules:
- Each player will control their own piece.
- There will be more pieces than players.
- Players who die early will need to jump into different pieces to help the team.
- The king will be a powerful piece that is not only the target, but the most effective unit.
- You always play as your own faction.
- Kill the king to win.
These rules were important for a number of reasons.
- It’s bad if everyone’s at the dictate of a single person for a minigame.
- This is why it wasn’t just chess.
- If someone doesn’t get to participate that sucks too.
- This is why there were so many extra pieces. … ahem.
- If the best way to play is to keep the King out of the fray, that isn’t much fun and doesn’t create moments of tension.
- Thematic cohesion is important and an important aspect of identity for factionalized players.
We ran into the following problems:
- Targetting locations is difficult.
- The pathing grid, built into the Game Engine by Scott Hartin and was larger than the size of the squares of the room. Fixing this would increase the memory requirements of WoW servers by 40%.
- Running an AI is very challenging. WoW’s AI tools were designed to control single units – not coordinate the motion of multiple units.
- When players were given equally powerful units on both sides, they decimated the computer.
- The game tended to drag on.
Me: So, X, how should we deal with this?
X: I’m not exactly sure myself. Let me go talk to Sam Lantinga and see what he suggests.
One of the most important tools in your team is your team itself. When you are stuck on ideas… going to them is often the best plan.
X: Alright, I’ve got it!
Me: Cool, is he fixing the engine.
X: Well, no, that’s too expensive… but we have the best solution ever.
Me: And that is?
X: Invisible bunnies.
Me: What????
X: He recommended we place small invisible creatures in the center of each square.
Me: How will that help?
X: They act as marker points, which we can use for both targeting the square *and* movement to ensure a square is full or not.
Me: Wow, that seems pretty intense. How will you know which square is which.
X: Yeah… I’m going to have to attach a StringID (different than UUID) to each square to figure out which square is doing it.
Me: Geez! That’s a lot of work.
X: Design is a lot of work – often working around the limitations of your tech and your team’s time. Get used to it.
Let’s just say I took these words to heart.
To solve the AI problem, I wrote several LUA scripts attached to the Medivh NPC in the room. Using it to index and record which units were in the game still, I passed this script along to X, who was able to use the lua techniques inside along with his own knowledge of CS and develop the rest of the game.
Finally, to help improve the drama of the game, X added “cheating” to the game. While its very out of Character for Medivh – it provided the right drama and also the ramp-up the made the fight more intense as character pieces died.
Then there were months of building small features to handle edge cases, like pieces moving toward the same spot at a time, handling bugs and fixing issues where the default AI rules fought the fake AI rules built for the game. (Did you ever see the king piece punch a pawn? That’s what was happening)
The lesson was this:
- If you’re working outside rules, be prepared to do the handiwork to rebuild what’s already been created
- Ask for help early.
Looking at the notes of this early draft – I started this post-mortem on February 20th, 2015 at 12:11 pm. It was around this time that I was contacted by Blizzard and asked to stop posting for a period of three months. The result was that I broke my habit of writing regularly and the post-mortems stopped.
With this, I hope to return to posting more regularly. It may still be only once a month, but I hope to cover every piece of WoW, League and future content I’ve had the pleasure of creating.