Thursday, March 11, 2010

My Addons Take 18 seconds to load, and it's my fault -- twice

So I ran Warmup the other day because I noticed it's taking me quite a while to log into WoW lately. Turns out I'm spending 18 seconds loading mods every time I log on. And it turns out this is my fault, not once, but twice.

This is the list of mods sorted by time-to-load according to Warmup:

0.001 !!Warmup (0 KiB - 2 KiB), -- [1]
0.015 Blizzard_CombatText (39 KiB - 39 KiB), -- [69]
0.034 Blizzard_TimeManager (45 KiB - 69 KiB), -- [68]
0.044 DataStore_Stats (27 KiB - 24 KiB), -- [17]
0.055 DataStore_Characters (39 KiB - 42 KiB), -- [6]
0.058 Forte_Shaman (0 KiB - 16 KiB), -- [36]
0.062 DataStore_Pets (57 KiB - 85 KiB), -- [12]
0.063 DataStore_Currencies (31 KiB - 26 KiB), -- [9]
0.063 Forte_Summon (63 KiB - 86 KiB), -- [39]
0.064 Forte_Rogue (0 KiB - 5 KiB), -- [35]
0.065 DataStore_Spells (45 KiB - 67 KiB), -- [16]
0.067 Forte_Priest (0 KiB - 11 KiB), -- [34]
0.068 Forte_Mage (0 KiB - 14 KiB), -- [32]
0.069 Forte_Druid (0 KiB - 20 KiB), -- [29]
0.069 Forte_Paladin (0 KiB - 18 KiB), -- [33]
0.07 DataStore_Talents (82 KiB - 94 KiB), -- [18]
0.071 DataStore_Auctions (30 KiB - 50 KiB), -- [5]
0.071 Forte_Hunter (0 KiB - 12 KiB), -- [31]
0.075 Forte_DeathKnight (0 KiB - 28 KiB), -- [28]
0.075 Forte_Vehicle (3 KiB - 2 KiB), -- [41]
0.076 Forte_Talent (1 KiB - 7 KiB), -- [40]
0.077 Forte_Warlock (77 KiB - 109 KiB), -- [42]
0.078 Forte_Casting (52 KiB - 80 KiB), -- [25]
0.078 Forte_Soulstone (66 KiB - 85 KiB), -- [38]
0.083 Forte_Shard (28 KiB - 44 KiB), -- [37]
0.083 Blizzard_AuctionUI (268 KiB - 173 KiB), -- [70
0.083Blizzard_AuctionUI (268 KiB - 173 KiB), -- [70
0.084 DataStore_Reputations (42 KiB - 157 KiB), -- [14]
0.084 Forte_Healthstone (34 KiB - 59 KiB), -- [30]
0.085 Forte_Warrior (0 KiB - 5 KiB), -- [43]
0.086 TitanAmmo (12 KiB - 21 KiB), -- [55]
0.087 DataStore_Mails (58 KiB - 84 KiB), -- [11]
0.087 Blizzard_CombatLog (237 KiB - 207 KiB), -- [67]
0.088 Forte_Timer (154 KiB - 308 KiB), -- [27]
0.088 QuestReward (2 KiB - 22 KiB), -- [51]
0.088 TitanRegen (13 KiB - 20 KiB), -- [63]
0.091 TitanXP (22 KiB - 31 KiB), -- [66]
0.093 TitanRecount (9 KiB - 12 KiB), -- [62]
0.094 Forte_Cooldown (104 KiB - 182 KiB), -- [26]
0.094 TitanLootType (21 KiB - 33 KiB), -- [60]
0.095 TitanRepair (70 KiB - 72 KiB), -- [64]
0.096 SuperBuffs (3 KiB - 6 KiB), -- [54]
0.097 DataStore_Achievements (159 KiB - 188 KiB), -- [4]
0.101 TitanCoords (21 KiB - 29 KiB), -- [58]
0.103 TitanClock (27 KiB - 41 KiB), -- [57]
0.104 TitanBag (16 KiB - 24 KiB), -- [56]
0.109 DataStore_Quests (256 KiB - 314 KiB), -- [13]
0.111 TitanPerformance (35 KiB - 49 KiB), -- [61]
0.123 DataStore_Skills (33 KiB - 220 KiB), -- [15]
0.147 TitanVolume (43 KiB - 94 KiB), -- [65]
0.148 DataStore_Containers (172 KiB - 324 KiB), -- [7]
0.17 TitanGoldTracker (42 KiB - 107 KiB), -- [59]
0.178 DataStore_Crafts (520 KiB - 202 KiB), -- [8]
0.182 BonusScanner (187 KiB - 444 KiB), -- [22]
0.182 Forte_Core (508 KiB - 773 KiB), -- [24]
0.202 DataStore_Inventory (243 KiB - 1197 KiB), -- [10]
0.302 DataStore (600 KiB - 431 KiB), -- [3]
0.305 DBM-Core (296 KiB - 679 KiB), -- [23]
0.306 Postal (140 KiB - 479 KiB), -- [49]
0.331 Pawn (465 KiB - 563 KiB), -- [48]
0.345 Overachiever (216 KiB - 935 KiB), -- [47]
0.379 Stubby (247 KiB - 122 KiB), -- [53]
0.469 Gatherer (903 KiB - 1410 KiB), -- [44]
0.756 Outfitter (1625 KiB - 4129 KiB), -- [46]
0.872 Bartender4 (512 KiB - 2301 KiB), -- [21]
0.88 Titan (499 KiB - 1090 KiB), -- [45]
1.314 AckisRecipeList (2764 KiB - 1575 KiB), -- [2]
1.339 Recount (4532 KiB - 5098 KiB), -- [52]
1.606 AuctionLite (7322 KiB - 2108 KiB), -- [20]
2.007 Altoholic (3758 KiB - 2112 KiB), -- [19]
2.362 QuestHelper (6013 KiB - 6202 KiB), -- [50]

Of course the slowest loading addons are also my favorites. Perhaps there is a correlation.

So it's my fault because I have too many mods. But it's also even more my fault.
1.314 AckisRecipeList (2764 KiB - 1575 KiB), -- [2]
Ackis is descended from an addon I wrote. Ackis is much improved, of course, but most of the existing faults of Ackis are, quite literally, my fault. Things I knew I should fix but never did. One item on a long-lost todo list reminds me to only load necessary tradeskill information on-demand, instead of loading all tradeskills during logon. Now 1.314 seconds of failure greets me every time I log into WoW.

Wednesday, March 10, 2010

Why is Dalaran Laggy?

I don't know if these sorts of things are obvious or not because I don't ("IRL") know a ton of non-computer people. But, obvious or not, computer people spend a lot of time determining the complexity of computation, so you get to read why Dalaran is Laggy :)

If you have one person on a server, the server needs to process the location of one person, receive the location of one person, and send the location of one person to one person. 1, 1, and 1 * 1, which equals 1.

If you have two people on a server, the server needs to process the location of two people, receive the location of two people, and send the location of two people to ... two people. 1, 2, and 2 * 2, which equals 4.

If you have six people on a server, blah blah blah, you now have to send out 36 messages with player location data. If there are ten people you have to send out 100 messages.

And if it's Dalaran, and there are two hundred and fifty people, you need to send out sixty-two thousand, five hundred messages. The number of location messages you need to send is the number of players squared. Dalaran doesn't lag because it has a ton of players, it lags because the Dalaran server needs to tell every player in Dalaran about almost every other player in Dalaran.

It's also why instanced worlds are so attractive to MMO developers -- two hundred players split to four different servers is 10,000 outgoing location messages, while two hundred players on one server is 40,000 outgoing messages.

Of course, the problems that require n^2 computations for every n data points are bad but they aren't the worst. The worst are the problems that are x^n, where every additional data point multiplies the previous result by x (where x is the amount of processing it would take to do whatever computation once). I bring this up because the popular addon QuestHelper, which computes a "fastest" route between quest objectives, is performing a well-known x^n problem ("The Traveling Salesman Problem") every time it recalculates your optimal route**. Even when it's slow I'm amazed at how fast it goes.

**assuming the addon isn't faking it. I'm also assuming it is doing some optimizations that result in the computation being a constant factor less than x^n.

Tuesday, March 9, 2010

Crafting my WoW "Do Not Do" List

I like almost everything about WoW. I don't do everything, but I like everything. And now that there are achievements, I can get credit for doing everything, which I already like doing, but that makes it better.

So it can be hard to step away from WoW, because it always seems like there is so much to do. But I think stepping back from your "Main Game" is a good idea from time to time, even when you are firmly entrenched.

For example, I occasionally try "To Do" lists of all the things I want to do in WoW, but they fast become too cumbersome. I set down first five, then ten, then fifteen goals, and then two thoughts pop into my head. First, that I can never achieve all fifteen goals. Second, that the fifteen goals are but a tiny fraction of what I'd like to do in the game. And since I like to do everything in the game, many of those fifteen items are enormous time-dumps that do relatively little for my character.

I've already sworn off one of these, because how can you have time to run Molten Core twenty times but no time to play Mass Effect 2 once? A more thorough swearing-off, though, is warranted. So I've decided to make a "Do Not Do" list. A list of tasks in WoW that I'd like to do, but that are so time-inefficient that I'm prohibiting myself from so indulging.

There are only two rules of the "Do Not Do" list. When I play with my wife anything is fair game, since we are hanging out and I'm up for whatever she wants to do. The other is that items on the "Do Not Do" list must be tasks I had planned or hoped to perform at some point. Saying I'll never level a druid does not save me any time since I'd long ago sworn off the cursed shapeshifters**.

  1. No Solo or Duo Molten Core, because each run ends up taking me four or more hours, and I'd need 20 more runs to get everything I need, and I could play two or three (or five or ten) good single player games in that time, and I'm always behind on good single player games.

  2. No mounts that cost more than 5k gold unless there is something truly exceptional about them.

  3. No recipes that take more than ten hours to farm, unless they can make me money. No reputations that take more than twenty hours to grind, unless they are useful or can make me money.

  4. Engineering and Enchanting are my main character's professions. No more changing for any reason.

  5. No new main characters. I am Boat the Warlock, for better or worse.

  6. Only work on achievements on the main.

  7. No more than two new characters leveled from scratch per expansion. I haven't approached this limit in recent history, but the limit itself relieves some stress.

  8. No fishing tournaments. Odds of winning are too low, while the likelihood of wasting time is guaranteed.

  9. I'll never try to hit exalted with any of the worst four or five reputations -- all reps from vanilla WoW, which was an expansion or two before Blizzard figured out how to do reputation.
I notice this is also a thinly-veiled list of my own bad habits in WoW.

** Please don't take this to mean I hold something against cursed shapeshifters in general. I'm quite fond of the Worgen, for example.

Monday, March 8, 2010

The Lords of Difficulty

Imagine a million different lords with a million different trials -- "games", if you will. The one thing that every trial has in common is that it must take one thousand players, and from that choose one winner, one "best player".

Now, imagine each trial built around the game "Ms. Pac Man".

There's a trial where you just play Ms. Pac Man, a trial where you see how long you can play Ms. Pac Man, and trials where the first player to reach level 100 or 100 hours first wins. One trial requires players to play and beat one level every two hours, and the winner is the player that can endure this the longest. There's a trial that's just the first level over and over again, faster and faster. One trial measures who can pump in the most quarters, and another trial just assigns players a random score (highest score wins). There's even a trial with 20 ghosts. And so on.

Two of the trials are interesting, together. In one, the players just play normal Ms. Pac Man to see who can score the highest. In the other, the players are instructed for an hour on Ms. Pac Man, and how to be a better player -- then they see who can score the highest.

In one case the players are given no guidance, and in the other case they are given a lot of guidance. So which trial is harder?

They are the same. Both take 1000 players, and pick the best one. In fact, all the trials are, no matter how easy or hard they seem, equally difficult as long as they follow the 1 winner in 1000 players. Ultimately 1000 go in and one comes out the winner.

Syncaine responded to my post the other day, seemingly a little upset. I can't imagine why, all I did was make fun of him for saying vanilla WoW raiding was hard. Blustering aside, he did say that Naxxramas was not completed by a lot of players in vanilla WoW, therefore vanilla WoW raiding was harder than modern WoW raiding. The first part is definitely true, and Blizzard has admitted as much. Now, I don't agree on the difficulty part, I think old raids were easier but also far less accessible -- raids were bigger, required more organization, and the only way to gear new players was to power-gear them through old raiding content.

But let's take the argument as true -- that Naxx 40 was visited more than ICC is today, solely based on difficulty. There is still ample room for differentiation in the heroic raids. I did a heroic ToGC 10 the other week -- that's the "Heroic" version of the previous tier's 10-man raid. My group was just obliterated, despite outgearing the encounters. It was the hardest thing I've ever done in WoW -- much harder than any fight I'd experienced in any of the vanilla raiding dungeons.

As small as the percentage of players that cleared Naxx 40 in vanilla WoW, I'd say the percentage that will clear Heroic ICC 25 will be much lower. By that metric alone, modern raiding is more difficult than classic raiding.

Thursday, March 4, 2010

WoW almost didn't have the Auction House

Interesting interview on the official WoW site with Tom Chilton, looking back on the fifth anniversary. I already gave away what I thought was the most interesting tidbit, so here's the rest of that passage.

There were a lot of sacred cows that had to die. One in early World of Warcraft development was the idea that there should not be an auction house. We were hoping to see the social interaction in any kind of trading -- players meeting up face to face, deciding what the price on something would be, and determining what they were going to do to exchange their goods. After the game had been in beta for a while, and we saw that trading was incredibly cumbersome, and people weren't able to efficiently buy and sell stuff, we made the decision to include a game system to support it.
A short while ago I proposed ditching the AH, replacing it with something I felt was better. The idea of not having an auction house or something similar seems, well, completely insane to me. Of course the other MMO I played the most beside WoW, FFXI, had a useless auction house, but at least it didn't hurt you, like every other bad feature in the game.

Thursday, February 25, 2010

The Masters of WoW

This is something I hear sporadically, most recently from Syncaine:
By making it so you don’t have to actually understand it, the average player can still progress and collect his ‘epics’ in WoW today, while back in 2004-05 anything at-level required some basic understanding of stats/mechanics, and raiding required an Elitist Jerks degree in theorycraft.
And here was Tobold
In vanilla WoW, somebody having geared up in 5-man dungeons would have no way to bypass Molten Core. Molten Core would not only be necessary for him to gear up for Blackwing Lair, but would also teach him how to play his class optimally in a raid environment.
I still think that anybody who waxes poetic about early WoW either did not play it, or does not remember it well.

I played WoW back in 2004 and 2005 and raided in 2005, and I remember it very well. It was difficult at the time, and even the best guilds had trouble doing it successfully – the final boss of Molten Core, Ragnaros, was nerfed before he was ever felled.

But it was hard in the same way it was hard to sail across the Atlantic in 1492, or fly (no airships allowed) across it in 1927. Sailing still has challenges, as does flying, but much of what was difficult in the past has become trivial.

Here’s how you raided in 2005 if you were a warlock : you spammed the “1” key, or whatever key you had mapped to your shadow bolt. There were only eight debuff slots so you couldn’t even keep your DoT’s on the boss. That was my Elitest Jerks Doctorate in Theorycrafting : the “1” key.

Compare that to modern WoW : I have raided with two different warlock specs, both with different playstyles, and both of them ten times harder to master than a 1.0 lock. There’s a third viable warlock raiding spec I haven’t even tried yet, but would provide an advantage in certain fights. All are far more complicated than the one viable spec/playstyle in 2005. And I have to further modify my behavior based on my trinkets and glyphs.

Just to give an example of how the difficulty of playing your class has changed : a trinket I just replaced had a stacking buff, and managing that stacking buff was pretty straightforward. It’s but a tiny, tiny part of what I do as raiding warlock. Just interacting with that one piece of gear was harder than every circa 2005 class-specific warlock task put together.

I didn’t raid with every class in vanilla WoW, but I can tell you that Warlocks, Mages, Hunters and Warriors were all significantly easier to play in 2005, and I doubt the other classes are much different. Blizzard has since made most classes depend on rotations or priorities so play is more challenging. There have been new situational spells and abilities added as well.

If playing your class was simple in 2005 by today’s standards, then the encounters were pitifully simple by today’s standards. The main fight mechanic in MC was “there are adds that you need to tank”. Then, depending on boss, either kill the adds first or the boss first. Occasionally (but not for every boss) there might be some movement involved. The biggest challenge for me was staying awake, and that’s no joke. My iconic raiding Molten Core memory was fighting to stay awake while my guild did Majordomo Executus.

BWL was a little harder, with perhaps one of the fights (the last) matching a modern raid in complexity. AQ40 (the third raid) was a further refinement, with Naxxramas (the fourth and last raid of WoW 1.0) pretty similar in complexity to modern raiding – except that, of course, your class was much easier to play in Naxx40 than it is now in a level 80 Naxx25.

This is how I remember my classic WoW raiding experience : sitting at my desk, bored out of my mind, fighting to say awake, jamming the “1” key for ten minutes at a time. Little did I know that I was some superhuman Master Of WoW.

Tuesday, February 23, 2010

Blizzard (kind of) announces 10 man cross-realm raiding, and how it will work

Blizzard as a corporate identity is pretty consistent, so you can often speculate on interesting information by reading between the lines, or noticing what goes unsaid. And trust me, as a Blizzard News Junkie I relate this to you in the same way an alcoholic might tell you that Children's Tylenol contains an astounding amount of alcohol**.

A couple of weeks ago I was curious if Blizzard had said anything more about Gnomeregan in Cataclysm. So I checked around and didn't find much, except for several forum threads stating that since "Blizzard didn't say it", nothing that might happen to Gnomeregan was official.

Well, not really.

The information did not come directly from Blizzard, but it came from PC Gamer, who were doing an Exclusive Article on Cataclysm. Considering the official motto of Blizzard PR ("Manage Expectations or DIE") and the lengths Blizzard goes to avoid granting even tiny grains of hope ("Possible Potential Release Date"), it seems unlikely that Bliz would let an Exclusive Content Provider deceive the WoW-playing public.

Blizzard said nothing, which said everything, and now we are retaking Gnomeregan, and I'm ecstatic.

Well, today Blizzard had some welcome news about Holiday Bosses :

Just to clarify some misconceptions about this new functionality, the summoning of holiday bosses is going away. Players can queue for these bosses via the Dungeon Finder or special holiday NPCs found in the world. Once the party is finalized, the group will be ported directly to the area where the holiday boss resides. Players can kill the holiday bosses as often as they want for standard loot (epic rings, trinkets, etc.), however, they will only drop one holiday-themed loot trove per player per day. These loot troves will have a chance of containing rare holiday items such as The Horseman's Reins.

So Blizzard has added functionality to track dungeon process of players individually, instead of relying on timers or daily quests ... or Raid IDs. I wonder if they could find a use for that :

Doing [cross-realm 10-mans] is a bit more complicated than the 5 player dungeons. For 5 player dungeons it's not a big deal to allow the random heroics to skip lock outs and is not very hard to setup a group. We obviously can't skip lockouts for raids and it just much more common for raids to not complete all of the content, so you could come back a few days later and find someone else cleared your instance. It's definitely something that sounds good in theory but there are a lot of issues that we would have to figure out first.

Oh yeah -- so if Blizzard is now tracking and rewarding individual player progress on Holiday Dungeon Bosses, they could also track and reward individual player progress on, say, 10-man cross-server raids. Awesome.

** Probably not true