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 Stan
      The latest round of hotfixes includes the aforementioned Azerite trait, Class and PvP tuning. Blizzard also increased the number of Anchor Weed from nodes at rank 2 & 3.
      Blizzard (Source)
      Achievements
      The criteria for Azerite Admiral, Tell Me A Tale, and Helping Hand should now combine progress from multiple characters on the same account. Please log in on every character that has progress toward these achievements to be credited. Characters
      You can now whistle at Cap'n Crackers to have him ride on your shoulder. Classes
      Druid Balance Starsurge and Starfall damage increased by 15%. Mage Arcane All damage increased by 3%. Shaman Tremor Totem should no longer take an unintended amount of additional damage when players attack it. Warlock Destruction Conflagrate, Incinerate, and Immolate damage all increased by 10%. Warrior Fury All damage increased by 6%. Items
      Heart of Azeroth Ephemeral Recovery mana increased by 15%. Savior trigger threshold increased to 50% health (was 35%). Death Knight Bone Spike Graveyard damage increased by 100%. Unholy Festering Doom damage increased by 25%. Demon Hunter Havoc Eyes of Rage damage increased by 20%. Furious Gaze haste increased by 40% and duration increased to 12 seconds (was 8 seconds). Revolving Blades damage reduced by 35%. Thirsting Blades damage increased by 70%. Vengeance Revel in Pain absorption increased by 20%. Druid Craggy Bark absorption increased by 15%. Masterful Instincts bonuses increased by 10%. Balance Dawning Sun damage increased by 40%. Streaking Stars damage reduced by 40% Sunblaze damage bonus increased by 35% against non-players. Feral Iron Jaws damage increased by 66% against non-players. Guardian Gory Regeneration healing increase increased by 15%. Hunter Rapid Reload damage increased by 25%, and tooltip corrected to read “more than 2 targets”. Beast Mastery Pack Alpha damage increased by 60% against non-players. Dance of Death agility increased by 20%. Marksmanship Unerring Vision critical strike increased by 100%. Focused Fire damage increased by 30%. Survival Blur of Talons agility increased by 65%. Up Close and Personal damage increased by 40%. Mage Arcane Galvanizing Spark damage reduced by 30% against non-players. Explosive Echo damage reduced by 35%. Frost Frigid Grasp intellect increased by 100%. Packed Ice damage increased by 120%, and increased by 45% if used with Splitting Ice. Damage reduced by 50% against players. Glacial Assault proc chance increased to 20% (was 10%). Monk Mistweaver Burst of Life healing increased by 20%. Windwalker Open Palm Strikes damage increased by 60% against non-players. Paladin Protection Dauntless Divinity block increased by 20%. Judicious Defense absorption increased by 10%. Retribution Divine Right strength increased by 40%, and duration increased to 15 seconds (was 10 seconds). Expurgation damage increased by 15%. Priest Depth of the Shadows healing increased by 20%. Holy Blessed Sanctuary bonus increased by 10%. Permeating Glow bonus increased by 15%. Shadow Spiteful Apparitions damage bonus is increased by 75% if you don’t have Auspicious Spirits talent. Searing Dialogue damage increased by 150%. Rogue Assassination Poisoned Wire critical strike increased by 50%. Sharpened Bladesbenefit from having multiple copies of this trait active has been reduced. Outlaw Brigand's Blitz haste increased by 50%. Subtlety Blade In The Shadows damage reduced by 25%. Sharpened Blades damage reduced by 30% (unchanged in PvP). The benefit of having multiple copies of this trait active is reduced. The First Dance now grants 2 stacks of the buff, and critical strike bonus reduced by 25%. Shaman Enhancement Strength of Earth damage increased by 60%. Roiling Storm damage increased by 100% against non-players. Restoration Soothing Waters healing increased by 10%. Warrior Arms Executioner's Precision damage increased by 75% against non-players. Test of Might strength reduced by 15%. Fury Bloodcraze critical strike increased by 100%. Reckless Flurry damage reduced by 25%. Protection Reinforced Plating dtrength increased by 10%. Warlock Affliction Dreadful Calling damage increased by 30%. Demonology Forbidden Knowledge damage increased by 66% against non-players, and the benefit of having multiple copies of this trait active is reduced. Umbral Blaze damage increased by 20%. Explosive Potential buff duration increased to 15 seconds (was 6 seconds). Destruction Accelerant duration increased to 12 seconds (was 8 seconds). Crashing Chaos damage reduced by 30% against non-players. Rolling Havoc duration increased to 15 seconds (was 10 seconds). Player versus Player
      Razdunk's Big Red Button now deals 25% less damage in PvP combat. Death Knight Unholy Last Surprise (Azerite Trait) effectiveness reduced by 35% when engaged in combat with enemy players. Druid The healing of Rejuvenation, Swiftmend, and Wild Growth provided by Restoration Affinity is reduced by 30% when engaged in combat with enemy players. Regrowth healing reduced by 25% when engaged in combat with enemy players. Feral Raking Ferocity (Azerite Trait) effectiveness reduced by 50% when engaged in combat with enemy players. Restoration All Restoration Druid healing reduced by 10% when engaged in combat with enemy players. Focused Growth increases the healing of Lifebloom by 15% (was 25%). Focused Growth reduces the mana cost of Lifebloom by 15% (was 40%). Grove Tending (Azerite Trait) effectiveness reduced by 25% when engaged in combat with enemy players. Hunter Beast Mastery Damage done by the Hunter’s pet reduced by 18% when engaged in combat with enemy players. Survival Latent Poison (Azerite Trait) effectiveness reduced by 30% when engaged in combat with enemy players. Monk Mistweaver Mana regeneration reduced by 20% when engaged in combat with enemy players (was 30%). Paladin Holy Mana regeneration reduced by 20% when engaged in combat with enemy players (was 30%). Priest Discipline Mana regeneration reduced by 20% when engaged in combat with enemy players (was 30%). Focused Will decreases damage taken by 10% per stack when engaged in combat with enemy players (was 20%). Shaman Elemental Lava Shock (Azerite Trait) effectiveness reduced by 35% when engaged in combat with enemy players. Restoration Rippling Waters healing reduced by 33%. Riptide healing reduced by 15% when engaged in combat with enemy players. Spirit Link mana increased by 50%. Spirit Link now has a 1.5 second cast time and redistributes 25% damage (was 35%). Surging Tides (Azerite Trait) effectiveness reduced by 25% when engaged in combat with enemy players. Warrior Arms Defensive Stance reduces damage dealt by 20% when engaged in combat with enemy players (was 10%). Lord of War (Azerite Trait) effectiveness reduced by 55% when engaged in combat with enemy players (was 40% reduced). Professions
      Herbalism Herbalists will now receive more Anchor Weed from nodes at rank 2 and 3. Quests
      The ability Throw Rock should no longer one-shot targets on "Matchmaker". World Quests
      Resolved an issue that could cause the "Set Sail" to not properly display the quest objective.
    • By joat
      Who We Are
      Tequila Sundown is a mythic raid team formed within the <Karma Horde> guild on US-Stormreaver. Lead by a husband/wife team with high-level raiding experience dating back to WotLK, we're a "positively determined" progression team that maintains a light-hearted atmosphere while tackling mythic difficulty content. We're mature adults with jobs and family seeking like-minded players who have a passion for the game but want to avoid the needless angst or drama that often gets associated with progression raiding. We log on to have fun - so come have some fun with us!

      A Team Within a Community
      Our raid team is one of three within the larger guild of <Karma Horde>, which was formed back during WotLK. As such, the guild and Discord are very active and social. There are always people around online and in-game. The community atmosphere is welcoming and friendly to players of all levels. The guild enforces a Code of Conduct that has zero tolerance for hate/offensive speech.
      We are always looking to add players with a friendly personality and lots of passion for the game. We want players who are going to log in on non-raid nights and be down for all the other things we're into: pushing mythic+, doing world quests, PVP shenanigans, achievement hunting, hyper-competitive fishing.. there's so much to do and so many ways to enjoy the game. This is our favorite hobby and we'd like to play with you if it is yours, too.

      Progression Goals
      6/8H, 8/8N Uldir.
      We strive for a fun environment that takes the challenges of mythic seriously and giving the content the respect it deserves. Our aim is, as all mythic teams, full clear of content but with always keeping the friendly spirit of camaraderie alive. Performance matters, but so does staying positive and finding the fun in the difficulty of a raid. We do not require mythic raid experience to join our team but we do expect mythic-level dedication and accountability from all of our raiders. You must be able to take constructive criticism and have ownership over your level of play, and be willing to put in the effort to be a contribution to the team.

      Raid Days/Times
      Our mandatory raids are:
      Tuesdays 8:45pm PT - 11:45pm PT
      Thursdays 8:45pm PT - 11:45pm PT
      Optional:
      Sundays 8:45pm PT - 11:45pm PT
      Sundays are for farming the previous raid difficulty.

      Recruitment Needs
      DPS - want to add a mythic capable ranged DPS
      Interested? Next steps: 
      Please check out our team's wiki on the <Karma Horde> subreddit.
      Read the Guild Code of Conduct
      Complete and submit a New Raider Application
      Join the guild's Discord server
      Add the Raid Leaders on bnet:  joat#1832 & lambkill#1856  
      Looking forward to hearing from you!
    • By Vlad
      This thread is for comments about our Zek'voz raid guide.
    • By Starym
      We already got some details about tomorrow's upcoming Azerite trait changes, but the notes have been updated and we're getting even more! With additional DPS focused changes and some actual class and spell tweaking in addition to the Azerite trait changes, this is turning into a pretty major class balance pass, with a whooping 46 new trait tweaks:
      Azerite Traits (source)
      With scheduled maintenance this week, we intend to make some targeted adjustments to Azerite Traits:

      All Classes (Healer) Ephemeral Recovery mana increased by 15%. (Healer) Savior trigger threshold increased to 50% health (was 35%).
      Death Knight (Blood/Unholy) Bone Spike Graveyard: damage increased by 100%. (Unholy) Festering Doom: damage increased by 25%.
      Demon Hunter (Havoc) Eyes of Rage: damage increased by 20%. (Havoc) Furious Gaze: Haste increased by 40% and duration increased to 12 sec. (Havoc) Revolving Blades: damage reduced by 35%. (Havoc) Thirsting Blades: damage increased by 70%. (Vengeance) Revel in Pain : absorption increased by 20%.
      Druid (Balance, Guardian, Restoration) Craggy Bark : absorption increased by 15%. (Balance) Dawning Sun: damage increased by 40%. (Balance) Streaking Stars: damage reduced by 40%. (Balance) Sunblaze: damage increased by 35% (unchanged in PvP). (Feral) Iron Jaws: damage increased by 66% (unchanged in PvP). The benefit of having multiple copies of this trait active is reduced. (Guardian) Gory Regeneration : healing increase increased by 15%. (Guardian, Feral) Masterful Instincts : bonuses increased by 10%.
      Hunter (Beast Mastery, Marksmanship) Rapid Reload: damage increased by 25% and tooltip corrected to say "more than 2 targets." (Beast Mastery) Pack Alpha: damage increased by 60% (unchanged in PvP). (Beast Mastery) Dance of Death: Agility increased by 20%. (Marksmanship) Unerring Vision: Critical Strike increased by 100%. (Marksmanship) Focused Fire: damage increased by 30%. (Survival) Blur of Talons: Agility increased by 65%. (Survival) Up Close And Personal: Damage increased by 40%.
      Mage (Arcane) Galvanizing Spark: damage reduced by 30% (unchanged in PvP). (Arcane) Explosive Echo: damage reduced by 35%. (Frost) Frigid Grasp: Intellect increased by 100%. (Frost) Packed Ice: Damage increased by 120% (+45% if used with Splitting Ice). Reduced by 50% against players. (Frost) Glacial Assault: Chance to activate increased to 20%.
      Monk (Mistweaver) Burst of Life : healing increased by 20%. (Windwalker) Open Palm Strikes: damage increased by 60% (unchanged in PvP).
      Paladin (Protection) Dauntless Divinity : block increased by 20%. (Protection) Judicious Defense: absorption increased by 10%. (Retribution) Divine Right: Strength increased by 40%, duration increased to 15 sec. (Retribution) Expurgation: damage increased by 15%.
      Priest (Discipline, Shadow) Depth of the Shadows : healing increased by 20%. (Holy) Blessed Sanctuary : bonus increased by 10%. (Holy) Permeating Glow : bonus increased by 15%. (Shadow) Spiteful Apparitions: damage bonus increased by 75% when the Auspicious Spirits talent is not selected. (Shadow) Searing Dialogue: damage increased by 150%.
      Rogue (Assassination, Subtlety) Sharpened Blades: damage reduced by 30% (unchanged in PvP). The benefit of having multiple copies of this trait active is reduced. (Assassination) Poisoned Wire: Critical Strike increased by 50%. (Outlaw) Brigand's Blitz: Haste increased by 50%. (Subtlety) Blade In The Shadows: damage reduced by 25%. (Subtlety) The First Dance: Now grants 2 stacks of the Critical Strike bonus when activated. Critical Strike bonus reduced by 25%.
      Shaman (Enhancement) Strength of Earth: damage increased by 60%. (Enhancement) Roiling Storm: damage increased by 100% (unchanged in PvP). (Restoration) Soothing Waters : healing increased by 10%
      Warrior (Arms) Executioner's Precision: damage increased by 75% (unchanged in PvP). (Arms) Test of Might: Strength reduced by 15%. (Fury) Reckless Flurry: damage reduced by 25%. (Fury) Bloodcraze: Critical Strike increased by 100%. (Protection) Reinforced Plating : Strength increased by 10%.
      Warlock (Affliction) Dreadful Calling: damage increased by 30%. (Demonology) Forbidden Knowledge: damage increased by 35% (unchanged in PvP). The benefit of having multiple copies of this trait active is reduced. (Demonology) Umbral Blaze: damage increased by 20%. (Demonology) Explosive Potential: duration increased to 15 sec. (Destruction) Accelerant: duration increased to 12 sec. (Destruction) Crashing Chaos: damage reduced by 30% (unchanged in PvP). (Destruction) Rolling Havoc: duration increased to 15 sec.

      Alongside these changes, we plan to increase the damage output of a few affected specs: Arcane Mage: all damage increased by 3%. Balance Druid: Starsurge and Starfall damage increased by 15%. Destruction Warlock: Incinerate, Conflagrate, and Immolate damage increased by 10%. Fury Warrior: all damage increased by 6%.
      You'll see the final adjustments in our hotfixes update post on Tuesday.
    • By Starym
      There are some big changes coming to taunts on the 8.1 PTR which players noticed and talked about them on the forums, and today we're getting some official info on the matter. The changes are related to the threat bonus after using taunts and some of them that had players worried are only related to tooltip text, so the extra threat is not actually being removed, but it is getting reduced. The intention seems to be to keep the actual taunt gameplay pretty much the same as it is now so it's slightly weird this is even being tinkered with. In any case check out the full explanation:
      Taunt (source)
      Sorry for the delay in responding to this; I wanted to make sure I had all my info 100% correct before I said anything, rather than risk giving you incorrect or incomplete info.
      So first off: the threat bonus from using taunts is not being removed. That's a tooltip change that was made entirely for consistency; every taunt increases threat generation while it's active, but it was only mentioned in the tooltip for a few of them for some reason. So that's just basic housekeeping.
      However, separate from the tooltip change, we are going to experiment a little with reducing how big the threat bonus is on the 8.1 PTR. Currently, it's pretty massive, which is a holdover from when it was first added in Mists of Pandaria. Remember, back then active tanks were dealing huge amounts of damage (and thus, threat) due to the Vengeance mechanic, and so the offtank needed a huge threat boost to be able to keep aggro through tank swaps. That mechanic hasn't existed for a few expansions now.
      Nowadays, in BFA, threat is once again something tanks need to keep in mind, and that massive bonus opens us up to all sorts of wacky issues as DPS (both from tanks and from damage dealers) increases. As one example, there's a risk that we end up in a situation where certain tanks need to use their taunt on cooldown as part of their single target rotation. That would be bad for several fairly obvious reasons.
      So, we're going to try it with a lower bonus on the PTR and see what happens. Our expectation is that there is no tangible effect on your gameplay; you still use taunts exactly how you do now, and they have the same result.