Blizzard’s IT Architecture and Testing at Blizzcon 2017

Last November I was able to attend Blizzcon in Anaheim.  Blizzcon is the annual convention hosted by Blizzard Entertainment (creators of Overwatch, Diablo, Starcraft, World of Warcraft, etc).  In the past the focus has been solely on the games and the game developers.  In the last 2-3 years there have been more panels that give more of a look “behind the curtain”.  These panels have more information about design processes and engineering practices at Blizzard.  There were 2 panels I went to which highlighted this – one was engineering and the other was about level design.  Some points that jumped out were:

Blizzard’s Overarching Architectural Philosophy

During the Q&A for the engineering panel, the engineers were asked about whether there was any sort of mandated technologies that have to be used across the business or in particular areas.  The response?  They used whatever technology or tools that made sense for that area of the business and its needs.  The team that handles the websites end up using technologies that make sense in that area.  This led into a discussion about the Blizzard’s use of APIs as the means to allow these different technology islands to talk to each other.  This approach allows the best tools for the job in an area, but creates a reliance on ensuring any API changes to don’t have downstream effects.  Which leads into the next topic…

Testing and Documentation

There was an interesting reference to how Blizzard deal with keeping documentation up to date.  With their reliance on APIs, there would most likely be a process where changes have to be tested.  Part of their test model involves taking sample data and assets from documentation and run tests with it.  If the documentation’s samples haven’t been updated reflect changes in functionality, the test should fail and be flagged.  This approach isn’t completely foolproof, but it was an interesting approach to the issue of documentation in IT.

Giving people space to be creative

The level design panel blew away one major assumption I had about Blizzard’s level design process for World of Warcraft.  My assumption was that the game designers would detail the game world to a fine degree.  The level design people would build that without much scope for changing things.  The reality was that the game designers would only outline what a particular zone or area would need (mostly in terms of quest flow or general look and feel).  It was the level designers who would flesh out the world.  Many of those pieces of “character” or “flavour” in the game world were due to the level designers filling those gaps with their own stories.

I’m hoping in the future, they’ll keep doing these sort of panels.  One with a bit more focus on the infrastructure side of things would be cool to see.

Travel Report – Cairns, January 2016

I had decided last year that I wanted to travel more during the course of the year, but repeating the sort of trip I usually do around November was out since it ends up being very expensive and time consuming. So the plan was to bounce over to the east coast of Australia or maybe to a close overseas location now and then for a break.

As it happened, QANTAS had a sale offer to Cairns that was valid over the Australia Day long weekend. So I went for it, booking as economy and putting in upgrades requests. 3/4 of the requests were granted automatically with the final leg (Sydney to Perth) sitting in “Confirmed” status.

Read moreTravel Report – Cairns, January 2016

Maximising outcomes by exploiting knowledge (and how things can still go wrong)

Sunrise on approach to Sydney
Sunrise on approach to Sydney

November 2015 was when I went on my third trip to the US.  This trips have presented an interesting experience in how one can learn things and then leverage that knowledge.  On my first trip, I was a complete novice.  I’d never planned a trip like this myself within Australia, never mind the complications of going overseas.  By exercising a lot of caution and care, I was able to minimise the chances of things going wrong.

Following that trip, I began a period of rapid education about travel and flights and all that stuff.  I quickly found out that the seats I had booked on the first trip were pretty bad (thanks Seatguru).  The second trip involved going on a slightly higher level of fare to mitigate some of the unpleasantness of sitting in economy for 14 hours, as well as just the experience that I might not get again.  All of the planning the first and second time involved a lot of manual work in Google Calendar, inputting place holder appointments for flights and hotel stays and other engagements, trying to keep a handle on the multiple time zones involved.

The third trip was the new apex in planning.  I managed to get all my air fares at very good prices, structured them for maximum benefit to my chosen frequent flyer account.  I also decided to put in for a points upgrade, given that doing so was one of the most effective ways to use the points and I now had a reasonable good status with the airline so my chances were good.  This time I also decided to use TripIt, which made the calendar population much easier this time around and essentially eliminated the need for paper copies of things (I still had them anyway).

But even with that level of things, some things still went wrong.  The hotel I stayed at in LA was still under renovation, this time it was the small convenience store I would visit for light snacks and coffee.  Ongoing sleep problems also came into play, as well as a few other things, some of which were out of my control.  Those will go into the lessons learned pile for trip #4.

Tricks of the Trade macro

Rogues in World of Warcraft have an ability called Tricks of the Trade. I wanted a way of being able to easily use it on a predetermined character (ie. the tank). The best I could do is the following macro:

#showtooltip Tricks of the Trade
/cast [target=Focus] Tricks of the Trade
/say Showing %f the |cff71d5ff|Hspell:57934|h[Tricks of the Trade]|h|r

The fun bit is the 3rd line. %f is WoW macro shorthand for “focus name” (just like how %t is for target name) and the horrible mess after that is the in-game ability link for Tricks of the Trade. So party members will see you saying “Showing BobTheTank the [Tricks of the Trade]”. I’ll be making a similar macro for Misdirects at some stage.

Update on the armory viewer

I haven’t had the opportunity to do a lot of work on the Warcraft armory viewer (http://www.jpboyce.org/armory/) as I’ve been changing servers recently. I have added a couple tweaks. I’ve updated the link the site calls to the updated armory domain name. Also I’ve added an “Upgrade” link that uses the excellent Lightwindow javascript/widget/thingy by Kevin Miller. Any suggestions or comments, feel free to post them.

Armory Reader

The World of Warcraft armory (armory.worldofwarcraft.com) is a nice tool  or looking up characters. But I never liked the way it’s setup, where you have to mouse over every item slot to see the item details. Blizzard were nice enough to make the armory use XML. So I wrote a little ASP.NET application to take that XML and reformat the output in a more lightweight combined fashion. It’s available at www.jpboyce.org/armory

Still on the to do list:

  • Enchants and socketed gems on gear
  • More character details (resistances, etc)
  • Layout cleanup
Bitnami