This will be easy, I naively thought as I crafted the plan for a simple dragon fly-in, landing and cool little scripted sequence to cover the quest-related portions of the event. About ten minutes into this, I realized how dreadfully wrong I was.
Me: Geoff, what on earth am I doing wrong?
Geoff: What do you mean?
Me: I’m attempting to draw Nightbane’s flight path on the ground, then drag it into the air… but I can’t seem to select multiple points.
Geoff: Oh. Yeah, you can’t do that.
Me: So I just do… wait, what?!?
Geoff: Yeah, our editor doesn’t allow multi-selection.
Me: That’s utterly ridiculous.
Geoff: Hahaha, yeah.
Me: This has to be a joke.
Geoff: Nope.
Me: …
I grumpily returned to my work. This time dragging each point individually into the air, cursing frustratedly for the next day as I randomly placed, dragged, rebooted the game server, tested Nightbane’s flight in, found it too high, too low, not sexy enough. This is where you’ll spend a lot of your time as Game Designer – meticulously crafting a player experience in frustrating, if not utterly backwards ways.
After two days, when I finally discovered that misclicking on the geometry of the castle would ruin the path, I’d had enough.
Me: Geoff! This is insane. There has to be another way. Can someone fix this?
Geoff: Sure… if you can persuade them to do it. We just got a new tools engineer, a guy named B. Maybe you can get him to fix it.
B was sitting behind a desk when I walked in, the light blue glow of the monitor illuminated his face and glasses.
B: Hello!
The warm, cheerful voice was the antithesis of every dark, antisocial stereotype you’ve ever heard about programmers. In fact, most programmers I know are warm and cheerful – they generally love their jobs and doubly love being paid to do it!
Me: Hey! Nice to meet you, I’m Alexander.
B: What brings you to my office today, Alexander?
Me: I heard you were working on tools.
B: Well, that depends. What kind of tools are you asking about? If you’re talking about art tools, then that’s Charlie over there. *points to another guy sitting behind a monitor playing facebook games*
Me: Nah, this is design tools.
B: Well! That DOES happen to be me. How can I help you?
Me: Okay! #1 – the flight path tool bugs out and breaks whenever I click on a building. #2 – why is this editor so terrible to use?
To say that I was blunt and rude back then is well… an understatement.
B: *taken aback* Uh, ahem, well, I did change the flight path editor recently. I’m sorry you find it worse. Can you tell me your problem in more detail?
Me: Of course! So when I click the screen, it drops an orange ball, great. I want to draw the path on the ground, then raise it up into the sky.
B: And that’s when it breaks over buildings?
The greatest struggle between two people is often in the communication of the issue, rather than the recognition of the issue itself.
Me: Yes. Well, no. When I click, if there’s collision geometry in the way, it snaps the point onto the building, rather than the terrain behind it.
B: Where is this a problem?
Me: In Karazhan. Well, outside of Karazhan, but to move the camera into the right place, I need to look out from inside the building.
B: How about you just show me.
Demonstrating something first hand is often the best way to do this. I opened up Nightbane’s action record, loaded the AI Follow a Flight Spline action and show him the mangled line that had been created.
B: Okay, I see this line. When are we going to open the flight path editor?
Me: This is the flight path editor.
B: Oh no, this is something else. The flight path editor is over… here. *pulls open a different editor with convenient x,y,z coordinate editors, a lock height feature and several other awesome things*
Me: Whoa! That looks awesome. Can I use it to create Nightbane’s flight path?
B: … unfortunately not. This only works on Griffon and Wyvern paths. But I am way happier now to hear that the bugs aren’t in the path editor I wrote! *smiles cheerfully*
Me: I see. Okay, then lets just make your editor work on these other paths instead!
B: *frowns* I’m afraid it’s not that easy. You see, this editor is built to work on one type of record – Flight Path nodes. However, what you are editing as AI Path nodes. While they feel similar, they aren’t at all alike. It would take a couple weeks of work to make them work together.
Me: Ohh….
B: I might be able to fix the bug where clicking on invisible geometry causes the path nodes to break though.
Me: Thanks. That would be helpful.
B: No problem. I’ll put it on my backlog and get to it in a couple of months.
Me: A couple of months?!?!B: Yeah, there’s a lot of requests backed up and well, I’m the only tools engineer for your team. We need to upgrade spells to support the new heroic difficulty, which is a big deal, then work on some area trigger issues.
Me: But I need to get this guy done this week. Damnit. *visibly frustrated*
B: Maybe you can try hiding the building entirely. *clicks a button* This should turn off the collision while you are drawing the path.
Me: Thanks, I’ll try it. *starts to walk out*
B: Pleasure meeting you!
After this experience, I spent several hours crafting the paths I wanted for Nightbane to fly in, then resolved myself to never use this method for such a complicated thing again. Originally, I had wanted Nightbane to strafe over the players and breathe flames down onto the thing area where they were standing. Now, instead, I decided to focus on just having three different spots where players engaged him in the air.
In this version, instead of hand-crafting points, I place 3 invisible bunny rabbits in the air, one marked “A”, one marked “B” and one marked “C”. When Nightbane lifted off, he would fly in a pre-build circle for a bit, then randomly pick A, B or C and stand there nuking the players. Moving the invisible bunnies around was easy by comparison and let me rapidly iterate on Nightbane’s attack positions.
This turned out to be quite sufficient for the experience I wanted – players to run back and forth along the balcony while attacking Nightbane.
But then the next challenge was a bit tougher…. what on earth did I want to happen while he was up there?
To be continued…