Tuesday, June 26, 2018

Blizz Presents: A Short Data Structures Seminar

I'm coming a bit late to the story --okay, 11 days late-- but I read with great interest the work that Blizz is putting into WoW Classic.

Coming from an IT background, I particularly found the file table formats a good example of what Blizz will need to do to get WoW Classic working properly.

The way Blizz placed items into file tables has changed over the years, from a fixed length format like so:

Spell ID   Name   Effect One   Effect Two
01         AAA    Damage       Apply Aura
02         BBB    Damage       Nothing

to something more dynamic, like this:

Spell ID   Name
01         AAA
02         BBB


ID   Spell ID   Effect
01   01         Damage
02   01         Apply Aura
03   02         Damage


This removes artificial constraints put on the system by the data design, and allowed Blizz to be more dynamic and expansive in what individual items/spells/whatever could do. The kicker here is that Vanilla WoW used the old data structure while somewhere over the past decade plus WoW transformed into using the latter data structure.

Blizz believes they can keep the latter data structure in place and simply utilize the old data, but after they convert the old structure into the current one. From a personal perspective, I think it's the smartest way going forward, since it fixes artificial limitations and allows WoW Classic to utilize the current game engine but deliver the Vanilla experience. Additionally, Blizz won't have to build an entirely new team just to handle the old data structures and the old engine, but just have a subteam off of the main infrastructure groups that make sure that any changes don't break the "converted" environment of WoW Classic.

From an HR perspective, they keep the personnel costs down while they still remain committed to the additional work, and keep a stable interface in place for dev teams.

As anyone in IT can tell you, keeping the back end craziness down means more time spent actually developing the game. In my own experience, that last 1.5 years at the software shop was spent constantly fighting to get a stable development platform, which was constantly breaking when people would make a tweak here or there. When we had a stable platform, the programming teams could actually make significant progress, but frequently we had outages where people were breaking code without realizing that their "tweaks" were causing huge downstream ripples, and those ripples had to be constantly beaten into submission.*

Blizz is trying to minimize ripples in an ancient (by gaming standards) environment by utilizing a stable platform and just converting the data to something usable, but that conversion is the critical part. My first thought was you could build a Perl or Java script to convert the data into the format you need, but I'm sure that Blizz' example is one of the easiest parts of the data conversion process. My experience running QA on data set translation code for CAD/CAM tells me that the WoW Classic team will get a conversion done, but then need someone to sift through and manually check all. of. the. freaking. data.

Yes, by hand.

That is NOT going to be a fun task, but someone will have to do it. And I don't envy that person's task.

Still, I'm heartened by the work that Blizz' WoW Classic team has put into the game, especially since they're likely in major crunch time leading up to the next WoW expac.

One thing I do expect is that by the next BlizzCon, they'll likely have some in-game footage of how things are progressing with WoW Classic, and given Blizz' history, I expect them to remain silent on any release date until they get closer to something resembling an late stage Alpha. But it is happening, no doubt of that.




*Bioware has had major issues like that with the development of both Dragon Age: Inquisition and Mass Effect: Andromeda with the Frostbyte engine. Frostbyte wasn't built for what Bioware wanted to do with it, so they had to create their own interface with Frostbyte. The problem was that the Frostbyte team was constantly breaking the interface whenever they would make changes to the engine. Yeah, I've been there, Bioware. SO been there.

No comments:

Post a Comment