Friday, October 23, 2015

One-Shotting Mannoroth Normal, and Vacation!

So we're still slowly making progress through Normal Hellfire Citadel. The problem we've had over the past few months has largely been attendance. We're pretty much down to 2 - 3 weeks a month running 3 hours each. However, when we get to new bosses we've been pretty handily trouncing them. Iskar was a two-shot, Zakuun was a one-shot, Socrethar was a two-shot. Tyrant was a two-shot. Xhul'horac...well, he took us a good 15 pulls over a couple weeks, so that was a bit of a blocker for us. Other blockers included Gorefiend (of course) and Kilrogg.

But Mannoroth was a complete pushover. We one-shot him, and really sloppily, too. Granted, folks are generally pretty good about self-healing, defensive cooldowns, etc. so once folks have specific mechanics down, we're pretty well set up for a kill. Mannoroth's mechanics aren't terribly complex, it's mostly about positioning. Also, his hit box is annoyingly small compared to his model and giant red circle, I kept being too far from him as melee.

Dear Blizzard, please to be more consistent about hit boxes after 5 expansions.

Anyways, below is our raw kill video. I'm the raid caller, as usual. Raid calling is surprisingly taxing on the mental throughput, though usually because I'm DPSing, planning the raid's next moves, giving folks on the fly advice, and constantly bungling my rotation, heh.


We've already gotten two pulls on Archimonde, and he already promises to be a much more difficult fight. Should be a good time!


Vacation!

I'm flying out at 9AM to Honolulu for 4 days, then off to Melbourne, Australia for 7 days to hang out and go to PAX AUS! I went to the very first PAX AUS and it was a charming tent city that I had to take a train to get to. This time it's at a proper convention center by the Yarra River near the CBD. I made some new friends the last time I went that I'll be seeing again, plus visiting one of our Aussie guildies.

I also have a friend from Junior High School I'll be visiting that I ran into randomly last time, which was surreal, given we both lived in Yellowknife, NT, Canada when we went to school together. Literally the opposite side of the globe in almost every possible direction.

I'll probably post some stuff from Hawaii, then for sure an update from PAX AUS. We'll see if I get bored enough on the beach to slam out a different post, but I expect it to be relatively quiet around here in the meantime.

Onwards and upwards!
#WoW, #Personal

Monday, October 19, 2015

[IndieDev] How a Series of Sane Decisions Created An Esoteric Bug

If you follow me on Facebook or Twitter, you may have noticed me crowing last week about finally nailing a bug that's been vexing me since over a year ago. The bug itself is annoying and confusing, but not game breaking so we never really put a bunch of time into hunting it down until recently (since I'm finally nearly caught up on all of my critical bugs for Eon Altar, yay!). But it was a bug that I've looked at on and off over the past year and continually came up confused.



You can see the bug in action in the animated gif above this paragraph. Simply put, sometimes, when an enemy died, they would get up partially and then get stuck between laying on the ground and standing straight. Sometimes the enemy would get all the way back up off the ground.

As you can imagine, this was confusing in gameplay as it made it rather difficult at times to tell if an enemy was dead or alive. It also looked pretty amateurish, though I've been told by a number of our Early Access players that they've seen similar bugs in shipped games so I guess it wasn't the worst bug in the world. Still, I really wanted to fix it.

For the longest time we thought this was an animation bug of sorts. Our death animations were set to loop, and changing them to not loop did sort of almost solve the issue in some cases. We also had issues with the animation system we were using not having animation events, so we couldn't fire events based on the animation frame, meaning we had to guess as to when the animation was complete based on the running time and elapsed time. But even setting that to cut it off at 98% or even 95% of total time still didn't fix the issue.

The other problem was that the bug didn't seem to be deterministic. That is, we hadn't found a repro case where we get get the bug to show up 100% of the time. Anybody who's had to debug something that doesn't repro consistently is probably shuddering right now. Non-deterministic bugs are terrible to figure out. Sometimes the death animation would work, sometimes it wouldn't and they'd get back up. The only clue we had on that was the issue affected human NPCs almost exclusively.


Getting More Clues

Over the course of the project, I'd probably spent a good 5 programmer days hunting this damn thing down, investigating a bunch of systems that I knew and some I didn't know offhand to try and figure this out. In the end, it turned out to be a confluence of a number of different design/engineering decisions coming together and creating a vexing environment where it became very difficult to troubleshoot the issue.

The decisions in question were:
  • The "stance" animation system (what determined the default idle state of the animation) was a data-driven state machine. When certain data points on the actor changed (down, concealed, combat, exploration), the stance animation system would switch the default idle animation based on a priority system, Down/Dead->Concealed->Combat->Exploration. The highest priority active state would dictate what the idle animation was.
  • Down/Dead was data driven, rather than state driven. It was purely based on whether the actor had more damage than they had maximum health.
  • To create a "corpse", once an NPC actor is dead, a set of scripts run and delete everything off the actor, except for the actor's visual. This would leave a model with no AI, no animator, and so on.
  • Status effects would clear on down/death, so HoTs, DoTs, buffs, traits, etc.
  • Design created an enemy spawning system where, to create variety in enemies, it started with a template and randomly added buffs/debuffs for differentiation. For example, a Wounded Sellsword would have -5 Fortitude compared to a Sellsword Initiate (the base template). Design currently only uses this differentiation on a subset of NPCs.
Using all of that data, can you take a guess at what the actual bug was?



If you guessed that a differentiation status effect with a health reduction getting cleared on death--"healing" the actor--was causing the stance animation system to think the actor was alive and made the actor start standing until the concurrent death script deleted the animator thus stopping the enemy mid-stand, then congrats, you nailed it :) If not, don't feel too badly, since it took me a while to piece everything together.


The Solution

The "easy" solution from there was to allow certain buffs/debuffs to persist through down/death. For the human and dog NPCs, their randomized differentiation buffs/debuffs need to use this option so that the actor's maximum health doesn't change when they die.

Another possible solution might have been to modify down/dead to be state based rather than data driven (ie: regardless of your health pool, you can still be dead or alive), but frankly that comes with a whole different set of issues, not to mention the amount of risk changing something so fundamental would create in the project at this juncture.

I hope that was an interesting look at how a bunch of different systems can act together in ways one might not expect. Even when you try to keep your systems isolated, at the end of the day they still need to interact somehow, and those interactions are where bugs tend to crop up.

And bonus, in our next patch, actors should now stay dead when they die, rather than trying to re-enact Thriller. #IndieDev, #EonAltar, #GameDesign

Thursday, October 15, 2015

[WoW] Patch 6.2.3--A Room With a Moose

Blizzard surprised us all with the announcement of a minor patch, 6.2.3. I don't think anybody was really expecting as many changes as Blizz has in store for us, but at the same time some folks are complaining it's not new content. Which of course it isn't. Blizzard already told us we wouldn't get any more until Legion's pre-release event, multiple times.




Raid Nerfage

So what does this patch do? Well, it provides the mid-tier nerf to the final raid that we get literally every expansion, so it ought not be surprising, really. This time said nerf is in the form of item upgrades and valor points.

Blizzard is adding eight dungeons to the timewalking rotation, including a number of Cataclysm dungeons. Not new content per se, but it does take work to get those dungeons to work for scaling purposes. Boss drops need to be scalable, they need to test abilities that players of that level don't normally have to ensure no strange behaviour, and they need to do the engineering/design work to hook them up into the timewalking system as a whole. It's definitely far easier to do all that than design new dungeons from scratch, and people have been clamouring for more timewalking dungeons, so this looks to be low-hanging fruit they could toss a small team on and push out the door while everyone else finishes Legion.

Though I'm still miffed "timewalking" events are limited time period things rather than just something we can run.

What valor points do for the playerbase is give you a mechanism to want to run dungeons--and valor in the past has been a very popular reason to do so. It provides a method where raiders can "nerf" their content by upgrading their existing items to get the power boost to get over the hump. Mythic dungeons providing higher ilvl gear also provides this, though I can't say I'm a fan of their slot machine approach to ilvls given you can't chain run them.


Anemic Carrots


Moose like carrots.
The one thing that I'm a bit confused about is the Grove Warden, which will be awarded to those who kill Archimonde on Heroic or Mythic. Mythic Archimonde already drops a mount drops a mount (and a title), and anybody running Mythic can trounce Heroic Archimonde in a single week anyhow. Those running Heroic have a reason to finish aside from just finishing for finishing sake. Normal gets no carrot, though Normal already had a few mechanics removed to differentiate it from heroic and make it a bit easier.

The question though, is the Grove Warden still also going to be a shop mount? I'd actually be okay with that. Give the raiders a little bit of timed exclusivity, then let everyone else who really, really wants a moose buy it later. But Blizzard hasn't said much of anything on this at the moment as far as I can tell, so nobody really knows if it's literally just going to be a, "Hey active raiders, have a gift!" thing.

On the other hand, by the end of Mists, people were selling runs to Heroic/Mythic Siege of Orgimmar, so maybe it won't be such a big deal. But hey, don't forget they're actually tying the one bit of plot they're adding this patch to the moose, so that's great.

So I don't quite get why they're doing the moose this way. They have hordes of people who are totally willing to spend money on the moose, and it's not exactly a great big carrot to keep high-end raiders raiding. I don't know that the Heroic raiding population is large enough to justify using it as a carrot for them.


Business As Usual

So I'm fine with nerfing the raids this way, as it's a more interactive way to do so than they've done with zone buffs. It encourages me to go run Mythic 5-Players and Timewalking dungeons, (which are both fun!) to feed back into my raiding.

Folks who are complaining that we're not likely to see Legion for a while yet, uh, what were you expecting? No, seriously, what in the Titan's blue Azeroth did you think would happen? I realize I'm coming off as a totally cynical asshole right now, but I don't understand why people keep expecting a release anytime soon.

Should we get a release super soon? In an ideal world, yes. We're definitely looking at yet another relatively lengthy end of expansion lull, which is not good, at all. I don't blame people for being upset at that. But this patch isn't news that the expansion is delayed, or in trouble, or anything of the sort. This is business as usual, like every expansion previously.

Betas generally last 4 - 6 months before release, and we know they said we'd have a beta by end of year. Or at least news of a beta, but I'm betting an actual beta. So if they release the beta at Blizzcon, we're looking at an April/May 2016 release at the latest (which is still my prediction). That would put it in the 9 - 10 month range between 6.2 and 7.x, which actually would be one of the shorter lulls. Heck, the current raid has only been out for 4 months, so the nerf is coming earlier relative to previous expansions.

I'm not concerned. I'd like faster releases, they're clearly not quite there, but I think my predictions are still bang on. We shall see soon, Blizzcon is right around the corner!
#WoW, #Patch

Tuesday, October 13, 2015

Why is Healing So Hard To Get Right?

Healing. It's a part of nearly every RPG out there, and surprisingly, it's a difficult thing to get right in a way that makes sense for the players and makes it fun.

If you look at your health as a resource, and enemy attacks generally spend that resource, healing is just a method to extend that resource. i.e.: if you have 100 health, and the enemy does about 10 damage per turn, your time-to-live is about 10 rounds. If you can heal for 30 points during those 10 rounds, your time-to-live (TTL) is actually 13 rounds or so.

Of course, if healing available is unlimited in nature, then your TTL is also infinite, short of the players just not noticing someone needs to be healed. You can limit healing by limiting the amount of throughput per action, or limit the resources healing itself uses (via cooldowns, mana cost, consumables, etc.), or some combination of the two.

So in our example, perhaps you can actually output 100 points of healing, but then you run out of mana. So the TTL might be 20 rounds, but perhaps you need that mana for other encounters down the road. Or maybe you know that the enemy damage pattern is 10 damage per turn, but maybe it's actually 5 damage per turn for 4 turns, then 25 damage per turn for 4 turns, then 0 damage per turn for 4 turns, but your healing spell has a cooldown of 3 turns. You know you'll have to output some healing during that burst to survive it, so you want to make sure it's off cooldown sometime in the middle.

Health itself is often rolled up into a more abstract metric, Effective Health (EH). An example might be you have 100 health, and you reduce all damage taken by 25%, so your EH is actually 125 (and the enemy is still doing "10" damage per round, but you see it reported in-game as 7.5ish). Resistances, absorption, passive self-healing, all tend to get rolled up into EH. EH basically makes it easier to calculate TTL over any given period of time.


Let's Make This Concrete...

When you look at a game like Final Fantasy Record Keeper, most heals are capable of taking a character from nearly dead to full health in a single cast, but you have very few AoE heals, and none on demand. This makes single target damage easily healed through, but AoE damage incredibly powerful.

To threaten the party, the designers need to either have attacks that burst a character down from near full to dead, preventing healing entirely, or blast the party with constant AoEs such that the healer can't heal targets fast enough. In theory, with 1/5 characters healing, you'd only need to do 1/5th of each character's health as an AoE each round and you'd kill one character after 5 rounds (but the other 4 would be in some in-between state).

What also seems to happen is the designers present you with groups of enemies, all capable of taking out about half of a character's health, and they target random characters. Once in a while two (or even three if you're unlucky) will target the same character, bursting them down to 0 in a single round. Or over two rounds bring two characters to half health on the first round, and you heal one character because that's all you can do, and the other character gets randomly targeted and killed. You lost a character on a coin flip.

So the only way to combat that randomness as a player is to look into mitigation: Shellga, Protectga both increase resistance/defense; and other abilities that reduce the damage your party takes by 40% (!!!) for a good 20 seconds or so. The designers designed themselves into a corner with this, because to threaten a party that's capable of increasing their EH by 40% for most of a boss fight means they have to up the damage severely, so anybody not using that mitigation (or a party in the first round of combat) will just get wiped by the first AoE attack.

World of Warcraft had/has this problem, as well. When you look at a 20-25 player raid, with 4 healers, and said healers have AoE mitigation cooldowns they can chain back-to-back, the designers have to account for that in their raid design. The result? Thok in Siege of Orgimmar, where quite literally you were expected to chain together these cooldowns to extend Phase 1 of the fight as long as possible. In a 10-player raid, if your composition didn't have decent cooldowns to stack, you were probably in for a very difficult time.

Compare that to the other direction WoW has gone in the past, where you feel like you're bailing a sinking rowboat with a coffee mug. Limiting the throughput such that without mitigation, your party's damage taken will definitely eventually overcome your healing throughput. Toss in avoidable damage to reduce the party's TTL if they're bad at getting out of the fire, and you actually have a recipe that's mechanically close to what I like to think was interesting and fun, but I know the general populace's reaction to it in Cata (and during the Warlords beta) was pretty negative.

Now, at first blush FFRK and what I view as WoW's "ideal" model are actually rather close. The difference, however, is WoW incoming damage is significantly more controllable. Between having a tank, and the existence of avoidable damage, player skill can make damage far more predictable than in FFRK, which means you're no longer leaving character deaths to a roll of the dice. That unpredictability means that once in a while, RNG truly just hoses you. Despite what people like to claim in WoW, it's actually pretty rare that a fight has RNG elements that actually hose you.

Another interesting model was Dragon Age: Inquisition, where they basically (mostly) removed healing mid-combat entirely. They had shields, and armour--which was just a tank variant of shields--so you could anticipate incoming damage and mitigate it (and shields eventually dissipated over time), but once you lost health in combat, it was gone. Well, almost. You also had like 8 party potions that healed for half health or some such, so you had very limited, consumable healing as well. 

I thought removing most in-combat healing worked out relatively well. It limited encounter length, and unlike in WoW where eventually you could just have nigh-infinite mana and crazy throughput, it meant that your tactics mattered even more. Health actually felt like a resource you could spend in lieu of tactics.


What's Ideal?

Too much healing, and to threaten the players, you need to spike them into oblivion. Too much mitigation, and you need to ratchet up overall damage in general and spike them into oblivion. Not enough healing, and players might feel like healing doesn't much matter, unless you give them other tools to compensate.

Ignoring the folks who rather like just spamming a couple heals and playing whack-a-mole for a moment, there might be a sweet spot in the middle. For me personally, anything that gives the players more agency to determine their own fate--the ability to actively avoid damage, cooldowns to reduce incoming damage for a very short period of time so they can't be chained/spammed, some active self-healing--versus just...chain-casting your biggest heals/mitigations seems like a winning proposition from a "interesting mechanic" perspective. It also means that players can feel good about using their abilities to avoid death rather than designers having to just brutally overpower their own mechanics to actually threaten the players.

But even then, finding the right balance is still pretty tricky, and I'm still not sure quite where it lies.
#GameDesign, #Healing

Tuesday, October 6, 2015

Gaming by Design for 2 Years!

Two years. It doesn't sound like a long time when compared to the length of my life, or even that long compared to how long some of the old guard has been blogging (such as TAGN, Tobold, or Rohan), but I'm one of those people who love to start projects and move on to the next shiny, so two years at blogging is awesome. I have stamina.

I've been an indie game dev for a year and a half now; I presented my game Eon Altar at PAX Prime; I've had an Early Access release of Eon Altar; I got Reddit-bombed (in a good way!); I started playing FFXIV with a little seriousness; and I've had an immense number of awesome interactions with folks over the year.

As I did the previous year, I'll go into some stats that my blog has accumulated. I've actually had Google Analytics running for the entire year this time, so I'll be able to get some more accurate numbers and make queries to eject spam numbers.


Who's Sending Me Traffic?



For funsies, here's some raw Google Analytics data. Note that stats like new sessions versus returning sessions aren't perfect. They rely on fallible techniques, and similarly with the pages/session and average session duration. But with the larger numbers they give us a decent idea how things trend.
 
Last year, Google was king. This year? Well, Reddit. But that 20k views is basically a single post, no less, as we'll see later. The other kings are Twitter and Blessing Of Kings. If you add up most of the BoK's different geographical permutations, it brought in almost precisely the same amount of traffic as Twitter did.

The interesting bit here is that the vast majority of folks coming from BoK are folks who've been here before. Basically, people (still) using Rohan's blog roll as an RSS feed. Twitter, however, was about 50/50. Good at bringing new folks in, and others who return time and time again. Both Twitter and Blessing of Kings exhibit a long average session duration, meaning folks who click on my links there are sticking around to read, which is fantastic.

Google is 4th on the list this time instead of first, but compared to last year the context of the results are a fair bit different. First of all, google.de (Germany) is what brought most of the folks to my blog, and France is a respectable second. But even more interesting is the bounce rate for Germany and France are both quite low for that number of users (60%), compared to 87% for the *.com domain. They also have a high pages/session, which suggests Google bringing users in, and actually getting them to stay and check the blog out. Compared to last year where the vast majority of Google hits was literally people stripping images from my blog, this is pretty interesting.

Facebook comes in at a solid fifth place, right after Google, and interestingly enough a higher number of new sessions than I'd have expected (70%). I'd have guessed that Facebook was going to be almost entirely friends and family, but a number of said friends and family did share my posts. The power of social networking is real!

Blogger.com is probably entirely me clicking links in my blogger.com view of the page. Pay no attention to the man behind the curtain.

Alternative Chat, Liore, Murf, and Balkoth all sit in the 100 - 200 visits range, and each of them show a large number of returning users. Much thanks for linking me in posts and generally just making our community a tighter-knit place :)

Nestled in the middle of there is the Something Awful forums. I think they had also linked to the same post that got Reddit bombed if memory serves.

Feedly.com also shows up at 120 sessions. Clearly the death of Google's RSS reader hasn't necessarily pushed people to using alternatives. At least, not my audience, despite me putting pretty much entire posts without jumps, which should make it RSS feed friendly, if I recall correctly.

Other honorable mentions include ravenholdt.net, Belghast of aggronaut.com, mmorpg.com (thanks Liore!), Ross of fecklessleader.blogspot.com, Chase of fluiddruid.net, Tobold of tobolds.blogspot.com, Izlain of gdub4.wordpress.com, Braxwolf of braxwolf.com, and Joseph Skyrim of josephskyrim.blogspot.com. I really like that I have more cross traffic now, and I can only hope I'm also driving traffic to other folks as well. It's nice to get that cross-chatter and mix of opinions.

Finally, I'm just going to say that duckduckgo.com beat out Google Plus for referrals. Which is really, really sad since I post pretty much everything on Google Plus. But hooray for DuckDuckGo!


Most Popular Posts by Page View



First, you can tell which post got Reddit bombed: "Is Raiding With 10 Harder Than 30?" Kind of got everything bombed, really. Lots of direct links from guild sites, forums, etc. That single post makes up literally more than half of my total page views this year.


Can you guess when Reddit linked my post?
The next one on the list is my post on Cities: Skylines, "Come On In! The Traffic's Fine! A Case Study in Pictures", which got an immense amount of residual search traffic even months after I wrote it. Traffic in that game was a Big Deal. The Kotaku article that called it broken was pretty off-kilter, and I showed that it was totally manageable.

#3, "How to Create Your Own Projected Texture" is a How-to I wrote exactly a year ago for Unity, but never really "posted" it. Those pageviews are entirely from search traffic and random linking on Unity forums/quests/etc. Projected textures were finicky, what can I say? Clearly I wasn't the only person who needed help figuring them out.

#4, "Just How Much Damage Could a Backdoor in an Addon Do?" even had a video to go with it. That was a pretty comprehensive post altogether, and I got to play "hacker" to boot, which was a neat exercise.

#5 "Speculation Station - The Legendary Ring Proc" I'm actually sad is on the list. That was datamined legendary rings, rather than the actual ones. Meh. I almost wanted to pull that post after I wrote it.

#6 "Epic Blog Battles of Gaming: FFXIV vs. WoW" and 9 "FFXIV vs. WoW: Content Delivery Comparison" are good comparison posts between the two games. Decently popular when posted across all mediums, still get residual search traffic.

#7 "WoW: Fiction Has a Horde Bias" is a post I wrote last year! But between the link on my side-bar, it coming up in conversation on Twitter a couple times, and some search hits, it accumulated a fair bit of views this year, too. It's actually accumulated almost as many hits this year as the year I wrote it. Clearly a popular subject.

#8 "My First WoW Arena Foray" mostly got residual traffic from the Reddit bomb as it was written right before "Is Raiding With 10 Harder Than 30?".

And #10, "Overwatch: Diversity Done Better", got a lot of traction on Twitter, hence why it ranks so highly in page views


Most Popular Posts by Comments


But as we did last year, what if I used comments as the sorting mechanism rather than page views?

A very different cross-section of posts, similar to last year's results. Not sure why, but posts that generate page views seem to generally differ from posts that generate comments. Heck, given the sheer volume of views for the Reddit-bombed post, I'd have expected it to have the most comments, but it actually comes in at second place.

#1, "Blizzard and the Mythical Man Month; Or Why WoD is a Transitional Expansion" was amazingly fun to write, and seemed to catch some more prominent eyes than other posts I've done, which is also neat. Granted, talking about the intersection of game design and game engineering is something folks don't often see (sometimes even within the game development sphere, too, sadly).

#4, "[FFXIV] Extrapolating the Subscriber Count" was definitely controversial. Granted, I had to make a few cognitive leaps which some folks apparently disagreed with. I stand by my assessment though. After the discussion I felt my logic actually stood even stronger, which doesn't usually happen. Normally other viewpoints give me more to think about, like #8, "[WoW] Why Rando-Secondary Stats Matter Less Than You Think" which was a great conversation between myself and Balkoth. I went back, got more info, did more analysis, and my conclusion also came out stronger, but this time I wasn't so sure offhand until I performed the further work.

#5, "[Indie/EonAltar] Gender Diversity in our Workplace" was relatively controversial, but not as much as I expected. Anytime you mention the words "gender" or "diversity" often causes Internet commenters to flood your page. I really only had one poster, and we had a good conversation.

The others were for the most part not really controversial so much as just folks adding to the discussion. Lots of great points and ideas in all of them really.


Two Years of Blogging

69 posts over 52 weeks, or 1.33 per week, which is actually only 75% of the posts I wrote last year. I still try to get 2 a week, but some weeks--especially the past couple months--I only managed a single post. I think I even missed a week in there. Part of it is this year has been tumultuous from a personal perspective, and crazy busy from a professional perspective. But I really ought to try and get back up to two a week most weeks.

WoW still makes up the vast majority of my popular posts, and I am still playing WoW, even if it's only raiding once a week now. But as I get more personal time again, I should start writing about the other games I'm playing. There's a fair number of them.

So thanks everyone for reading and following, and I look forward to another year of this lovely community! 
#Blogging

Thursday, October 1, 2015

[WoW] Revisiting 10 vs 30 Player Raid Difficulty

A while back I wrote a post on why 10-player raids were mathematically more difficult than 30-player raids as they were designed at the time from a DPS perspective. This was written as we were about to move into Blackrock Foundry from Highmaul.

Well, it's nearing the end of Warlords and apparently either the WoW developers read my blog post and agreed with it--which may have been likely, given it got Reddit bombed and makes up like 40% of my total lifetime traffic even today--or came to the same conclusion as I did on their own.


Raid Size Related Hotfixes

Let's take a look at all of the fight nerfs made after each raid was released to account for small group sizes. Note, I am ignoring changes that are basically scaling bug fixes rather than changes in the encounter fabric, but I did consider adding changes where they prevent mechanics from overlapping (ie: bosses putting two effects on the same person). Clearly that would affect a smaller raid disproportionately compared to a large raid, but it still could significantly affect a large raid if they had a string of bad luck, so I opted not to include those.

(6.0.3 Hotfixes)
  • Gruul now uses Petrifying Slam against 5 targets in a 10-player raid, scaling up to 10 targets in a 30-player raid (used to be 8 targets for all raid sizes).
  • Reduced the damage that Gruul’s Inferno Slice deals to 10-player raid groups on Normal and Heroic difficulties, but increased the rate at which damage scales with raid size. Larger raid groups should find the damage relatively unchanged; smaller groups will find that the ability now deals less damage.
(6.2 Hotfixes, More Hotfixes)
  • Adjusted scaling to reduce the amount of health by roughly 10% on Xhul'horac, Omnus, Unstable Voidfiend, and Vanguard Akkelion for a 10-player raid on Normal and Heroic difficulty. Health should remain the same as before for raids with 30 players.
  • Adjusted scaling to reduce the amount of health by roughly 10% on some Hellfire Reinforcements and some Felfire-Imbued Siege Vehicles for a 10-player raid on Heroic difficulty. Health should remain the same as before for raids with 30 players.
    • Hellfire Reinforcements: Contracted Engineer, Gorebound Felcasters, Iron Dragoon, Hulking Berserker
    • Felfire-Imbued Siege Vehicles: Felfire Artillery, Felfire Crusher, Felfire Demolisher, Felfire Flamebelcher
  • Health of adds for [Kilrogg Deadeye] have been reduced by roughly 20% for raid groups with 10 players on Normal and Heroic difficulty. This should help with the difficulty experienced by smaller raid groups losing their DPS when sending players down into the death phase. The health of adds scales back up and should be roughly unchanged from before as raid group size increases.
(6.2.2 Hotfixes)
  • We have made a number of changes aimed at reducing the difficulty of the Archimonde encounter for smaller raid groups on Normal and Heroic difficulty, with a focus on the final phase of the encounter in particular. These changes are offset by increased scaling with respect to raid size, so that the experience for larger raid groups will be mostly unchanged.
    • Infernal Doombringer's health has been reduced by up to 15%.
    • Shadowed Netherwalker's health has been reduced by up to 15%.
    • Living Shadow's health has been reduced by up to 15%.
    • Reduced the damage of Wrought Chaos by up to 20%.
    • Reduced the damage of Shackled Torment by up to 20%.
    • Living Shadows now spawn from each Nether Tear at a reduced rate for smaller raid sizes.
It's interesting to note how many more changes they made to Hellfire Citadel specifically versus Blackrock Foundry, though it's possible they didn't really have the data they needed in BRF to adequately decide that small raid sizes were struggling versus larger. Or the mechanics in BRF just didn't tend to lend themselves to scaling issues.

Most of the fights in BRF didn't involve non-tanks handling adds for the most part, aside from Blackhand or Furnace, and only Oregorger really had an interrupt rotation and it was pretty simple; adding more players wouldn't change the difficulty there.


Iron Maidens Case Study

Iron Maidens suffers the same issue that Kargath suffers except worse: you lose half your raid every boat phase. Because the boat phase always has the same number of players on it, the boat itself shouldn't scale with raid size, meaning that you're losing a disproportionately large part of your raid for the same amount of time if you're a 10-player raid. In fact, if you look at warcraftlogs.com's data, you'll see that Uk'urogg does have 5.45M health on all raid sizes on Normal difficulty, but Admiral Gar'an Normal's health scales up linearly ~5.5M health per player, so you should always send the same number of players to the boat, regardless of your overall raid size.

If you assume 2 boat phases, you're looking at about 45s for one boat phase, and 1m15s for the the other at 50th percentile DPS, give or take a few seconds from either, and in that case about an 8 - 9 minute fight. Meaning 25% of the fight, you're missing literally half your raid, and most of them DPS, which means you're not really putting damage on the bosses aside from the tanks, or 1 DPS and a tank. For ease of calculations, let's pretend you always send 4+1 tank, so about 4.75 DPS out of a total of 5+1.5 DPS (2 Tanks).

For 10 players, you're losing  ~73% of your total DPS for 25% of the time, so a net loss of 18.2%.
For 11, ~63.6% of your total DPS for 25% time, so a net loss of 15.9%.
For 12, ~55.9% for 25% time, so net loss of 14.0%
For 13, ~50.0% for 25% time, so a net loss of 12.5%
For 14, ~45.2% for 25% time, so a net loss of 11.3%
and so on.

Clearly an inverse exponential curve in terms of lost DPS. Case closed, right? Not quite. In a twist, it turns out that while the boss health does increase linearly, Blizzard has it increase somewhat  faster than the amount of DPS you're adding, ostensibly to handle the fact that 10-mans have it harder. Also interesting to see just how hard adding a healer hits due to the linear scaling a little faster. Healer bumps are kind of arbitrary, but don't affect the overall curve.

Iron Maidens Normal. It's backwards!
Hans'gar and Franzok Normal. This is what we usually expect boss health per DPS player curves to look like.
It's not really perfect, because the low end still requires exponentially more DPS to make up the loss, and the compensation is linear, but it's clear that Blizzard thought something needed to be done. The question is, though, was it "good enough"? Probably, though as usual unless we have access to oodles of failure rate data for raid size vs. attempts, I couldn't tell you for sure.



Conclusion

I'm pretty sure this is the part where I get to say I totally called it, if I weren't so modest. ;) 

That being said, Blizzard is clearly now designing their encounters with raid size in mind, or at least nudging them after the fact, so hooray for us smaller raids! Perhaps they should consider adding, "How does this encounter play with 10 players?" to their testing/design review checklist so we don't need to wait a month and a half for hotfixes because they're waiting for data rather than performing in-house analysis.

And let me say for the record that Xhul'horac as a 10-player raid is absolutely Xhul'horrific. Half your raid dealing with surge debuffs every 30 seconds, not enough raiders to have folks reliably set for clearing fire via explosions, not enough people to deal with adds while that's all occurring. It's clear to me at least that Xhul'horac, despite the fact they compensated him health-wise, still sucks the big one mechanically for tiny raid sizes. Even having 1 extra person the next week made the fight immensely easier.

There's still the open question on raid cooldowns. 3 healers for 10 players means fewer tools than a 20-player raid (both in the literal and ideally the figurative sense, but that's my bias against large raid sizes showing). Being able to chain, say, Devotion Aura for twice as long is a pretty big bonus given it perfectly scales with raid size. Perhaps that'll be my next project one day, analyzing healing and damage output to see how that changes over raid size and compare that to tools available.

But in the meantime, I'm glad to see that efforts are being made around smaller raid sizes. WoW is pretty much the only game out with variable raid sizes with razor balance, so it's new territory with new design problems.
#WorldOfWarcraft, #Theorycrafting, #GameDesign