Stan

Dev Watercooler: WoW Classic Development

9 posts in this topic

dzwWlAu.jpg

Blizzard released a new Dev Watercooler today with information about the ongoing WoW: Classic development. Classic servers will run on Patch 1.12: Drums of War, because it represents the most complete version of the classic experience. Devs are hard at work to make the modern client compatible with the classic data.

Blizzard LogoBlizzard (Source)

Greetings! Development of World of Warcraft Classic is underway, and we’re very excited to share some of the challenges and solutions we’re working on. As we mentioned last BlizzCon, the process of restoring the classic game is not straightforward, and it’s important to us to take the time and effort to get it right—this includes poring over numerous game versions, data, and code; meticulously scrutinizing all the changes we’ve made over the years. Rest assured: The WoW Classic team is hard at work making it a reality, and we’re at a point in development where we’re ready to share some of the things we’ve been working on.

WOW CLASSIC: FIRST PROTOTYPE

The first—and among the most important—decision we had to make was which version of the game to focus on. As many of you have noted, the classic period was two years long and full of changes. Core features like Battlegrounds were introduced in patches after WoW’s original launch, and class design similarly changed over time. After careful consideration, we decided on Patch 1.12: Drums of War as our foundation, because it represents the most complete version of the classic experience.

Once we had our starting point, we began taking stock of what we had in the source code and what we could make available, which included restoring the original development database from archival backups. After stitching various key pieces together, we had a locally rebuilt version of Patch 1.12 running internally. The team could create characters and do basic questing and leveling—and dying, which we did many times. For testing purposes. Obviously.

Our initial runs exposed a few (expected) issues: the game sometimes crashed, didn’t recognize our modern video cards, and was incompatible with our current login system. That first pass also couldn’t support any of our modern security and anti-cheating capabilities. Clearly we had a lot of work to do to make WoW Classic live up to the Blizzard standard of quality, and deliver the experience players want.

THE PATH FORWARD: SECOND PROTOTYPE

Speaking of engineering, World of Warcraft is a very data-driven game, which means the basic code is flexible and the specific way it behaves is controlled by information contained in databases. Things like quests, monsters, items, and the rules for how these all interact are defined by the designers and artists in data.

So we asked ourselves, would it still be possible to deliver an authentic classic experience if we took our modern code, with all its back-end improvements and changes, and used it to process the Patch 1.12 game data? While that might seem counterintuitive, this would inherently include classic systems like skill ranks, old quests and terrain, talents, and so on, while later features like Transmog and Achievements would effectively not exist because they were entirely absent from the data. After weeks of R&D, experimentation, and prototyping, we were confident we could deliver the classic WoW content and gameplay without sacrificing the literally millions of hours put in to back-end development over the past 13 years.

While our initial effort helped us determine the experience we wanted to provide, this second prototype really defined how we’d get there. Starting from a modern architecture—with all its security and stability changes—means the team’s efforts can be focused on pursuing an authentic classic experience. Any differences in behavior between our development builds and the patch 1.12 reference can be systematically cataloged and corrected, while still operating from a foundation that’s stable and secure.

DIGGING IN

So what does it take to recreate an authentic classic experience with modern engineering? Let’s start by categorizing the different types of game data that make up WoW:

  • Table data: This kind of information is almost always represented as numbers. How many hit points a creature has, the amount of Strength an item grants, or where and when certain creatures spawn, are all examples of the numerical data we store in our databases. We can also store and enforce relationships between different pieces of data.
  • File data: This is often very dense data like 3D models, textures, animations and terrain. Our user interface is built up from XML and Lua files. Many of the art files do not use the same file formats that commercial art tools spit out. Our build pipeline takes these raw art files and translates them into something optimized for our game to read and process.
  • Lua scripts: Some features are driven by Lua scripts written by designers, allowing them to easily define custom behaviors for server-side logic without requiring deep engineering knowledge.

HOW ENGINEERING HAS CHANGED

One challenge we face is that all the classic data is in the original format used at launch, but that format has changed substantially in the intervening years. Major work needs to be done in this area to make the modern client compatible with the classic data.

For example, spells could originally only perform three actions on the spell’s target. In table form, that looked something like this:

ID

Name

Effect One

Effect Two

Effect Three

Aura One

Aura Two

Effect Damage One

Aura Damage One

Aura Damage Two

1

Fireball

Deal Damage

Apply Aura

Nothing

Nothing

Deal Damage Periodically

30

Nothing

3

2

Frost Bolt

Deal Damage

Apply Aura

Nothing

Nothing

Slow

20

Nothing

Nothing

As you can see, there is a lot of space taken up by ‘Nothing’. Over the course of WoW’s lifetime, we’ve improved our data design and normalized much of our database data. Today, that same data would be separated out like this:

Table Name: Spell

ID

Name

1

Fireball

2

Frostbolt

Table Name: Spell Effect

ID

SpellID

Effect

Damage

1

1

Damage

30

2

2

Damage

25

Table Name: Spell Aura

ID

SpellID

Aura

Damage

1

1

Deal Damage Periodically

3

2

2

Slow

Nothing

In this form, there is much less wasted space and spells are no longer limited to three effects. But before we can load any database data, we need to transform the old data layout into the new one. This is not limited to spells, as almost every game system (including items, creatures, player characters, spawning, AI, and more) has had its database layout altered over the years.

LOOKING AHEAD

All the work we’re doing will ultimately allow us to recreate an authentic classic experience on a platform that is much more optimized and stable, helping us avoid latency and stability issues. Additional modern improvements will include modern anti-cheat/botting detection, customer service and Battle.net integration, and similar conveniences that do not affect the core gameplay experience.

We are looking forward to the challenges ahead and share your passion for the classic game; every code check-in data conversion we make brings WoW Classic closer to providing that authentic experience you—and we—want. Thanks for joining us on this journey.

  • Like 3

Share this post


Link to post
Share on other sites

Huge fan of this information. It makes me feel like the time line is even further away though.  Still cool to see behind the scenes things they've learned and things they are yet to discover. Never even realized how their coding of spells has changed so drastically, even on things like frostbolt or fireball that are original spells.

  • Like 1

Share this post


Link to post
Share on other sites

This is exactly what I was hoping they would be doing: take 8.0 and turn it into 1.12. Curious as to whether or not they will use sharding and maybe even a single mega-server since it would help massively with fluctuating server populations. 

Share this post


Link to post
Share on other sites

This information is the difference between console and PC developers; Gettin' all gangster with the engineering.

I just want my Windfury Totem back, daddy

Edited by Abom

Share this post


Link to post
Share on other sites

This is great information and really shows the difference between producing a stable professional product and hacking together a kludge that private servers are.

  • Like 1

Share this post


Link to post
Share on other sites

I can't believe it's taking so long, if all they had to do is change frostbolt and fireball.  I can see it's a complex change, but maybe just release WoW Classic without mages for now?

(omfg I'm just kidding, please stop hitting me.)

  • Thanks 1
  • Haha 2

Share this post


Link to post
Share on other sites

It was obvious that they can't just boot the 1.12 server from backup and then implement it. Too many legacy code and bugs.

And supporting two different code bases really sucks. So, what they came up with is the obvious solution - just use the base of the game, but scale it to 1.12 content. This way they can implement future stability/backend patches to the Vanilla server as well, greatly reducing the time and effort required to support it.

However, while just booting the 1.12 server may have taken like a week, the current project is huge. I will not be surprised if it takes them 2 years or more. It's just a ridiculous amount of work.

It gives me hope that we may see TBC and Wrath though. While Vanilla could take quite a bit of work to roll back due to the Cata rework, TBC and Wrath are pretty much unchanged in their current version on live.

Edited by ionix
  • Like 1

Share this post


Link to post
Share on other sites

Think that having "past WoW" at our fingertips becomes much more possible once Classic (and its lessons) are finished. Looking forward to a lot of nostalgia (and new WoW content!) for the next few years :)

Share this post


Link to post
Share on other sites
On 6/16/2018 at 11:02 AM, ionix said:

It gives me hope that we may see TBC and Wrath though. While Vanilla could take quite a bit of work to roll back due to the Cata rework, TBC and Wrath are pretty much unchanged in their current version on live.

Mechanically they are, several bosses, other than tuning the numbers, had changes to become soloable. Rolling it back wouldn't be that easy. I guess like Vanilla, it might require some reverse engineering of sorts, since game is running on a different structure. Anyway, that's unlikely, as it might split playerbase way too much, and it might have ended with dead servers.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Starym
      New hotfixes and this time around there's a whooole lot of dungeon changes to non-boss enemies as well as a tragic modification to Fetid Devourer's classic walk. M+ affixes were also tuned, with a Grievous nerf and a Bursting buff. The Elixir of Tongues has also made an appearance, allowing you to understand the opposing faction, and you can buy it from Lizzi Liverzapper. There's also Island Expedition fixes and a few PvP changes as well.
      December 14 (source)
      Classes
      Hunter Marksmanship Double Tap will no longer be immediately consumed for no benefit if it is activated while channeling Rapid Fire . Dungeons and Raids
      Grievous should no longer stack to 2 on the first periodic. Increasing damage of Bursting to 7% per tick (was 5%). Atal’Dazar Removed Infested from several stationary enemies in the instance. Kings’ Rest Adjusted spawns of Teeming in the instance immediately before and after the Golden Serpent. Animated Guardian’s Released Inhibitors only increases Melee haste. Lowered duration of King A’akul’s Hidden Blade to 4 seconds (was 8 seconds. Lowered Embalming Fluid DoT duration to 6 seconds (was 10 seconds). Lowered Golden Serpent’s Animated Gold health by 75%. Lowered Guard Captain Atu’s Axe Barrage to 6 seconds (was 10 seconds). Queen Patlaa’s Dark Shot changed. It now takes 1.5 seconds to land. Reduced Spectral Berserker Severing Blade damage by 25%. Seneschal M’bara is now level 120 and is susceptible to crowd control. Spectral Berserker is now level 120 and is susceptible to crowd control. Motherlode Adjusted spawns of Teeming in the instance. Reduced Venture Co. Mastermind Leech Globule healing by 50% Increased Feckless Assistant Transfiguration Serum recast to 20 seconds (was 10 seconds). Reduced Weapon Testers Echo Blade damage by 50%. Reduced damage of Venture Co. Earthshaper’s Rock Lance by 25%. Reduced Recast of Earthshaper’s Earth Shield to 20 seconds (was 10 seconds). Wanton Sapper casts Final Blast at 10% health (was at 20%). Sethrallis Increased recast of Healing Wave cast by Charged Dust Devil to 16 seconds (was 10 seconds). Reduced duration of Sandswept Marksman Neurotoxin to 4 seconds (was 8 seconds). Faithless Tender’s Greater Heal is now single target. Reduced melee damage of Faithless Conscript by 70%. Increased respawn of Faithless Conscripts to 50 seconds (was 60 seconds). Shrine of the Storm Lowered damage of Temple Attendant’s Wash Away by 25%. Wash Away no longer hits pets and guardians. Runecarver Sorn’s Carve Flesh initial damage reduced by 75%, but is now increased by 70% per tick. Increased recast on Drowned Depthbringer’s Rip Mind to 16 seconds (was 8 seconds). Removed Infested from the Living Current before Aqu’sirr. Siege of Boralus Reduced damage of Blacktar Bomber’s Burning Tar initial damage by 50% and Fire Bomb by 25%. Adjusted spawns of Teeming and Infested in the instance. Increased cast time of Ashvane Commander’s Bolstering Shout to 5 seconds (was 3 seconds). Reduced Hadal Darkfathom’s Break Water unavoidable damage by 25%. Reduced range on Bilge Rat Demolisher Terrifying Roar to 10 yards (was 30 yards), and added a precast visual. Tol Dagor The Sand Queen’s Buzzing Drone no longer melees, but casts Itchy Bite much more frequently. Ashvane Marine’s Suppression Fire initial damage removed, but periodic damage immediately deals damage. Overseer Korgus Incendariy Rounds no longer stacks. Heavy Cannon’s Cannon Blast damage should now scale with the Keystone Level of the dungeon. The Underrot Increased recast on Devout Blood Priest abilities. Reduced Fanatical Headhunter Barbed Spear duration to 4 seconds (was 8 seconds). Reduced duration of Warcry to 8 seconds (was 30 seconds). Elder Leaxa will now only spawn one Blood Mirror clone. Waycrest Manor Deathtouched Slaver is now susceptible to Stun. Maddened Survivalist Freezing Trap is now Magic. Uldir Fixed a bug with the way Fetid Devourer uses his walk. No time to talk. Island Expeditions
      Resolved an issue in Jorundall that could cause the Southsea Pirate invasion to spawn a pirate ship in Fatigue waters. Items
      Players are now able to purchase Elixir of Tongues from Lizzi Liverzapper. Using and applying the potion will allow players to be able to understand the opposite faction. Captain's Signet of Command is now item level 395 (was 380) to match its Horde counterpart. Scouting Maps should again show up on the Honorbound and 7th Legion vendors and display the Pathfinder requirement to buy it if you do not have that achievement yet. Fixed an issue where Cloak of the Restless Tribes was not scaling properly after exiting a Timewalking dungeon. Player versus Player
      Monk Wind Waker will put a spell visual on the Monk when an ally triggers it. Paladin Ultimate Retribution will now cancel when Divine Shield or Blessing of Protection is applied. World Quests
      It is now raining additional mana for the Nazmir Assault World Quests "It's Raining Mana " and "Untapped Potential ". Previous hotfixes.
    • By Starym
      The folks over at Warcraft Secrets are hard at work, with The Hivemind mount still eluding them. But that may not be the case for long, as some secrets have already been revealed and a whole lot of clues found. As a reminder, the mount is presumed to be multi-person, and each person on it speeds it up by 10%, so it's one of the most unique mounts to come to WoW in a long time. In any case, there's colored crystal monocles and a lot of puzzle games involved, as well as everyone's favorite shopkeeper Griftah, who starts the whole thing off with the Talisman of True Treasure Tracking which then leads you to Vashj'ir, Skyreach and the Halls of Origination to start with.
      This one's definitely going to be a tricky hunt and you can check out the full guide for all the parts discovered so far and even help out with the search over at Warcraft-secrets.com.

      And, of course, as always, you can also join the Secret Finding Discord to share your findings and get really into the secrets and mysteries of WoW.
    • By Stan
      Game Director Ion Hazzikostas recently answered some Battle for Azeroth questions submitted by the Greek WoW community before the expansion came out and here's a summary of the Q&A. We learn more about the removal of Master Loot, Warforging/Titanforging and the stat squish system.
      Q&A Highlights
      The team is excited about Mythic+, but at the same time they realize the incentive to run Mythic+ content with a lower barrier of entry has somewhat affected raiding in general and they're going to continue adding new benefits that are distinctly compelling to make sure raiding is still popular. They wanted to disable gear swapping in Mythic dungeons sooner but felt like doing it in the middle of an expansion in Legion would be bad. An entire Mythic+ dungeon is viewed in a lot of ways just like a single boss encounter, meaning no gear/talent swapping even when you drop out of combat over the course of the run. They're always looking for each spec to have a unique combination of strengths and weaknesses in PvP and that's hard in a game with 36 specializations. If you're Class is highly mobile, it's going to have less survivability. On the opposite side of the spectrum, you can expect to be tankier if you have less mobility. The team mainly focuses on increasing strengths as opposed to mitigating weaknesses. The alternative of always trying to bolster weaknesses leads to a state where everyone's kind of average at everything and that's a less interesting game to play in their opinion. With work done to the stat squish system in Battle for Azeroth, future stat squishes should be fairly easy to execute. They've overhauled every single spell and creature from 2004 through 2018 to complement the new system. No stat squish is needed for at least one expansion. Stat squishes are there to prevent numbers from spiraling out of control when there's no gameplay value out of it. Paladins and Druids in the Legion environment already bring plenty of utility, so they decided not to bring back Blessing of Kings and Mark of the Wild in the end. They're going to add more abilities to Classes whenever there's a need for differentiation. Years ago, loot was much harder to come by. Over the years, the game moved away from a space where you just kill a boss or run some content week after week and never see the item you want. Drop rates are now higher across the board, so you're effectively spending less time getting the item you want. Warforging and Titanforging keep some level of interest and potential growth in those repeated clears and create the opportunity for everything to happen, giving you more incentive to continue raiding the same tier. Sco got a Warforged socketed Polearm halfway through progress that was a giant upgrade for him on his tank that made an immediate difference. In a world where loot is more common, the rare opportunities to have these amazing items retains some moments of excitement. You're much better off doing a high Mythic+ rather than clearing old content for a small chance to get an upgrade. This was a problem especially in Legion, where players went back to clear Emerald Nightmare for a chance to get Legendaries or Titanforged versions of Class sets. That wasn't healthy for the game and they decided to move away from that. The benefits of removing Master Loot have outweighed the downsides so far and there are three things: On the lower end of the organization spectrum, there are guilds that go through trials and historically in the Master Loot world, guilds had very strict control of loot and trials were not allowed to get any loot. For the time and effort spent, the trial would get literally nothing out of it if the guild decided to not make the player a part of the roster. On the high end of the spectrum, we've seen top guilds run the same raid over and over to funnel gear to specific mains. Split raiding made it difficult to balance encounters and provide a challenge for Method and other guilds while still being a fun and satisfying progression experience for the majority of Mythic guilds in weeks to follow. Method's item level during the first week of Mythic would be higher than what typical guilds would have to work with a month later. It worked well in Uldir. Bosses like Mythrax, G'huun and even Vectis were challenges for top guilds without needing massive nerfs. Finally, it lets the team itemize in a somewhat different way. When Master Loot was an option, they had to design loot tables around the possibility of Master Loot, so very niche items (useful only to a handful of people) would drop even though there would be nobody in the raid to wear them. They think the raid composition in place since Warlords (LFR/Normal/Heroic/Mythic) is the right for World of Warcraft. LFR/Normal are serving totally different audiences. LFR is not a social or progress experience. Normal difficulty is for friends and family groups. In Mists, Normal difficulty was similar to Heroic today, groups found LFR unsatisfying and Normal as it was then to be too difficult, that's why Normal exists today in its current form.
    • By Starym
      We have some incoming class tuning next week, with some flat % buffs for Feral Druids and Frost Mages, applied to both PvE and PvP.
      Class Tuning for December 18 (source)
      With scheduled maintenance next week, starting on December 18 in American realms, we’re focusing on shoring up a couple of specs that fell a little behind with Tides of Vengeance:
      Druid
      Feral Damage of all abilities increased by 7%. Mage
      Frost Damage of all spells increased by 3%. Both of these adjustments will apply to PvP activities as well.
    • By Zadina
      In Patch 8.1, pet battles in Zandalar and Kul Tiras offer significantly less experience, but they are always up.
      This change is intentional: with the new Family Battler achievement, Zandalar and Kul Tiras trainers can be battled at any time and you don't have to wait for the respecting World Quest to be available. As a downside, you can no longer level pets viably in BfA zones as the experience from these pet battles has been reduced significantly. To offset this, pet leveling stones will appear more often as rewards for pet battle World Quests.
      Kaivax
      This was an intentional change.
      With the new Family Battler achievement, we changed all of the Kul Tiras and Zandalar trainers to allow them to be battled at any time. This makes it so that players can complete the achievement at their leisure, rather than having to wait for a specific World Quest to become available.
      At the same time, we increased the chance for pet leveling stones to be a World Quest reward, and reduced the chance of both battle pet bandages and War Resources to show up as potential rewards from pet battle World Quests.
      (source)