Friday, October 24, 2014

[IndieDev] I Choose You! Threat and Other Artificial Intelligence Criteria

Making enemies look somewhat intelligent has always been a difficult problem in video games. When you as a player decide what you want to do, you're taking into account a massive amount of data, distilling it down (often subconsciously), then making the decision from there

Things you might take into account are how much ammo you have, which enemy is the most dangerous, which enemy is healing others, which enemies have the biggest impact of health to damage so you can take out smaller enemies first, dodging attacks, buffing allies, using special abilities, hitting levers and other level-specific objects, and so on.

It's no wonder that creating an AI is difficult, and not only that, but different enemies may have different priorities and abilities! The slow-but-sturdy enemy isn't going to try and sneak by you to flank you, whereas the rocket launcher mob isn't going to run into melee.

When you look at a game like WoW, the grand majority of AI is relatively simple. Based on a stat called aggro, you decide who you're going to attack. Then, based on your abilities, you choose an ability. Melee? Run up and hit them. Caster? Stay back and cast (some enemies will even run away a bit and cast). Use your most powerful ability that isn't on cooldown. Bosses often have complex choreography which are basically scripted patterns rather than any sort of intelligent decision making, which makes many bosses in MMOs more of a puzzle rather than a dynamic fight.

The Heigan Dance is the ultimate example of an extremely scripted battle.
I enjoyed it, but intelligent behaviour it was not.
Source: http://s72.photobucket.com/user/kirsehn/media/heigan.gif.html
But when players can blatantly manipulate enemies--which the aggro/threat concept generally allows them to do--enemies feel less like they're smart and you're not fighting for your life, you're actually composing a battlefield. Playing Combat Tetris, essentially. I'm not saying that's bad--I love the boss fights in most MMOs; I also love Tetris. Puzzle games are one of my favourite genres, and we're basically solving and executing a group puzzle when we're raiding.

However, the beauty in a game like D&D or in PvP is that there is actual intelligence on the other side of the playing field. A DM who's coordinating the enemy party, or the other arena team who have their own goals, strategies, ideas, and human nature.

So, how do you make enemies smarter? By making them take more criteria into account, and by giving them more options. This isn't easy, or cheap in developer time, though.

Threat is a popular mechanic because it's easy to implement, and (relatively) clear to communicate. Players perform actions, they generate threat. Whoever has the most threat, or passes some threshold, now has the enemy's attention. Some players can generate threat at an accelerated rate (tanks, usually) to hold the monsters' attention. Maybe in one game, healing generates four times as much threat as damage, so the healer is constantly in danger of getting attacked. It's basically a calculated heuristic to emulate in D&D when your Ranger crits the boss, the boss is going to turn around and deal with them because they're currently the biggest threat.

But what are some other criteria we could use?

Proximity is one that could be used. Some enemies are just fodder, and used to hold the front line, so they'll go engage the closest player. Maybe you want to have a rogue NPC skulk around the outside of the battlefield, so they'll choose the furthest player. Or if a player starts casting spells, perhaps you want your archer enemies to focus on them first. Or you have a dual-wielder who goes after whichever player has the weakest armor so they can do the most damage.

In WoW, some of my favourite fights were ones that eschewed the traditional threat mechanic. Take the Faction Champions in Trial of the Crusader, who usually targeted whoever was at the lowest percentage health; or Garalon in Heart of Fear, who chased whoever was affected by the Pheremones debuff.

Garalon, also known as the PUG breaker. Hell, he was a raid breaker before he got nerfed.
Source: http://i.imgur.com/c31SA.jpg
And if you're really clever, you can find a way to weight the criteria together. Closest spellcaster? Or choose someone at a weighted random based on defense and threat. Once you start putting these things together in a way that makes sense mathematically, you can build pretty specific behaviours quite easily that look smart; like your enemies are actually thinking about who they should attack. Because they're doing exactly that!

It's not just targeting who, though, it's also about what powers you want to use. Given a list of powers, it's easy to say, well, pick the most powerful one that's not on cooldown. Basically, a priority queue not unlike most DPS classes in WoW today. But maybe they also have a power that's a stun, and they want to turn and stun the person on their back before turning around and beating on their target. You could build a feedback loop between target selection and power availability to help make something that really has a good idea about the best thing it can do.

Which all leads back to the player, who needs some way to counter that thought. Aggro and threat in most MMOs are simple, because combat is simple. Players and enemies can walk through each other; throwing down impediments to movement exist, but outright barriers often do not. Thinking back to the Warhammer MMO, where tanks were tanks because they literally blocked enemies from passing. 

This sort of thing allowed for more complex behaviour, because if the enemy can just choose the one in the dress and walk through everyone to get there unimpeded, you either need to be able to kill the enemy before they arrive, block the enemy, or grab its attention (or, I suppose, make yourself untargetable either via invulnerability or invisibility or the like). Otherwise the player will feel that the enemy is being unfair. Taunting enemies gives players the ability to have some control over the battlefield when other game mechanics cannot.

When you can't influence the battlefield as a party and the enemy is coming straight at the healer.
AI design is inherently a loop between game mechanic design and ability design, on top of actually building the criteria weighting. But while you can make a super smart AI, you also need to ensure the game mechanics allow the AI to be "fair" with respect to the players. It's fun to have smart opponents. It's not fun to have smart opponents who don't take into account your own actions. NPCs should be intelligent, but players still need to be able to influence the battlefield somehow, or you'll end up with bored and frustrated players.

Arguably--and most MMO games would likely agree with me given their own designs--player agency is more important than super smart AI. But if you can grant players agency, having the enemies also able to use those mechanics makes for really interesting combat.
#IndieDev, #GameDesign

Sunday, October 19, 2014

[WoW] Just How Much Damage Could a Backdoor in an Addon Do?

Recently it was made known that ElvUI--a very popular UI addon suite--had in it something known as a "backdoor". A large number of people have been pooh-poohing folks over being concerned over this capability: The authors never intended to use it maliciously (for various definitions of malicious), and the code was whitelisted to only specific developers. I want to talk about how the developer's intentions don't matter and how much damage such a backdoor could possibly do to your character.

What is a backdoor?
A backdoor is something that allows someone, sometimes a developer, to issue commands to retrieve information from or execute commands on a client machine. Backdoors are generally malicious, though occasionally a backdoor created for debugging purposes will escape into the wild because the developers forgot to remove it.


Does ElvUI still have this backdoor?
Not as of October 19th, 2014. In ElvUI's case, the backdoor was removed once they were called out on it, but it had existed in the code for almost two years before anyone who cared and were capable of understanding the code apparently noticed. Version 7.0.8 is when it was taken out. ElvUI Shadow and Light took their version out a couple days after. I have not looked into other possible variants of ElvUI.

What could this backdoor do?
As per the image below, ElvUI's backdoor allowed the developers (or anyone who could hijack the addon) to execute any LUA code they wanted in your WoW session. Basically, anything an addon could do, the developer could send a message to your WoW client running this addon to execute, even though the addon had otherwise known/solidifed capabilities. It literally took a message sent by someone, checked if it was the developer, converted it into code at runtime, and executed it, as per the second blue code block below:

Source: http://i.imgur.com/WYVJplW.png; loadstring is a LUA API that takes a string and compiles it, labeling the method as func. Later that block the code is run (func()).
This weekend I decided this was an interesting enough problem and sat down, learned LUA, and built an addon that emulated just the ElvUI backdoor. I won't be releasing the code (unless Blizzard wants it), but the fact that I threw this together in about 7 hours of work (including building attack strings) knowing little to nothing about addon development, frankly it would be trivial to reproduce.

However, I did make a video showing some of the capabilities.



So, to recap, to be potentially affected if someone had a backdoor like the one ElvUI had, you need only be on the same server, raid, or coalesced zone (something that would allow addons to communicate "cross-server"). There's no requirement to be in the same guild, nor the same raid, or the same continent even.

Some of the things that could be done includes, but is not limited to:
  • Dismounting you
  • Disabling your addons on next UI reload (the attacker needs to know the name of the addon)
  • Adding or removing people from your in-game friends list, or ignore list
  • Toggle your At-War factions to make them hostile to you
  • Deleting your macros
  • Creating/Editing macros and binding them to whatever key the attacker wants
  • Forcing you to leave your party (including LFR/LFD, incurring the deserter debuff)
  • Deleting your equipped gear
  • Grabbing your friend data, including Battle.net tags and associated character
  • Force your WoW client to quit with no confirmation
There's plenty of other functionality that's theoretically possible, but I didn't get around to trying/testing because of the effort involved, but frankly that above list should be sufficient. 

Things that also potentially include (where I think theory is sound but I haven't checked it): kicking characters from guilds; disbanding guilds; forcing other parties to open a trade window, put something in it, and accept; Mail gold away at an open mailbox (to your server only); getting your battle.net tag.

I'm sure there's more, but I'll admit that my imagination is sometimes lacking.

Well, someone else told me that it could only do chat commands, so it can't be that bad.
Actually, one of the chat commands you can execute is /script, which--surprise!--lets you run arbitrary LUA code. So even if it could only cause you to perform chat commands--which is incorrect--it doesn't matter, because we're back to square one of someone using the backdoor to execute arbitrary LUA code on your machine.

I trust Elv, he never used it for anything malicious!
There are reports (unsubstantiated but numerous) of events where folks in a raid would /follow one of the devs, or start posting things in chat like, "this is elv". Besides the creep factor of your character moving under someone else's control, even briefly, or the implications of impersonation (imagine if the author had made you say things blatantly offensive, or a bannable offense), different people have different definitions of "malicious" when it comes to character control.

However, even if you trust the authors, if there was a bug in that whitelisting code, someone else could hijack the addon and execute whatever they like. Turns out the code has exactly such a bug.


Notice that the whitelist contains the server and author, but notice that it does NOT mention what continent. So if the authors are from the North America servers, someone could create characters with the same name on EU servers and hijack the code. Or if they're EU, vice versa.

The authors could also end up renaming their characters, moving to another server, deleting their characters, etc. and if someone else grabbed those names on those servers, they could also hijack the addon capability. They could also get hacked, and have their account no longer under their control.

The important thing here is that even if you trust the author, the fact the capability exists at all is potentially harmful.

It was put in as a developer tool, it's important for them to get debugging information.
If you want things like telemetry, or the ability to execute specific commands, you should build that code specifically rather than taking what is at best the lazy way out and just opening a giant hole in your program. You should also let the folks installing your product know what capabilities like that exist so they can make an informed decision about whether to install your addon.

Remote arbitrary code execution is the BIGGEST security bug a piece of software could ever have, and to deliberately code it into your addon is extremely irresponsible, if not outright unethical. Granted, in the sandboxed environment that makes up WoW, it's certainly a lot less dangerous than ones you typically hear about. You can't lose your account (though you could potentially end up communicating your BNet tag), and they can't just throw out gold (but they can throw out equipment!). There's a snowball's chance in hell that it could end up breaking out of WoW's addon sandbox--but I'll never say impossible. There are many, many people out there who are far more clever at this than I am.

But any addon could do this!
This is technically true, which is why only installing things that you trust is important. Ostensibly, if you installed ElvUI, you trusted the authors previously. For some folks, the fact that they put in an undisclosed backdoor that allows them to do what they please (and potentially others if they hijack the addon or their character) is the breaking point for their trust.

Responsible developers don't open giant holes on your machine. Addons are software; no different than installing an app on your iPad or a program on your PC. Once you've installed that software, you have to trust that it won't do things like gather and report out valuable information, or screw with your settings.

But the important distinction here is that the backdoor that was in ElvUI could be hijacked by another party to do whatever that party likes within the addon environment. Your trust in the authors of ElvUI becomes immaterial at that point.



I'll be honest, I build my own UI generally by cobbling together addons instead of using addon packs like ElvUI, so the only horse I have in this race is developer integrity. But frankly, as a professional software developer this backdoor absolutely appalls me, and the completely cavalier attitude the authors have around this event scares me. If anyone on my software projects ever created such a backdoor in a released-to-public product intentionally I would fire them so fast their head would spin.

If you still don't think this is a big deal after all of this, well, I'll probably never convince you unless someone actually exercised this functionality on you. But hey, it's your characters and your own risk assessment.
#WoW, #Security

Wednesday, October 15, 2014

[WoW] The Redonkulous Healing Environment at Level 90

I just ran a (new) Heroic Siege of Orgrimmar raid with my guild this evening (11 of us), and I have to say, the healing environment still feels a lot like 5.4 did. Actually, Hamlet of ye olde Elitist Jerks put it better than I: right now healing is more 5.4ish than even 5.4 was. Infinite mana, spamming AoE heals, nothing stopping you as a healer but your raw throughput. 

 
My Holy Paladin has no Spirit outside a couple gems and an enchant, and yet only on a single fight (Malkorok) did I ever actually run OOM. And that was because I was spamming Holy Shock-Holy Radiance-Holy Radiance-Light of Dawn (Eternal Flame-spec'd no less) effectively non-stop the entire combat.

But I still couldn't keep up with our Disc priest, who was nearly only casting Holy Nova and Power Word: Shield pretty well over and over and over again. And absorbs are as powerful as ever, making up more than 70% of our Disc priest's healing and 40% of my (Holy paladin) healing done.

Iron Juggernaut Discipline Priest Spell Usage

But as someone who's run a fair number of dungeons on the Beta, right now is not indicative whatsoever of what you'll see at level 100. Seriously, not even close.

Actually, if you wanted to see something far closer to what Beta was like, you would have had to have run the leveling dungeons between 85 - 90. I've been duo-ing them with my boyfriend (him as Holy Paladin, myself as Bear Tank), and holy crap they were amazing! But you pretty much needed to be at Challenge Mode levels of competence to not be a complete pancake, which is, frankly, silly for leveling dungeons. At least, they were as of October 14th. the issue was worse at below level 40, when most tanks don't even have Active Mitigation yet. 


Sadly/Happily, they've been fixed. Not quite the cakewalk it used to be, but definitely not Challenge Mode hard anymore. Still, the leveling dungeons provide a preview that cleaves closer to the 100 experience than content at 90 does now.

So, anyways, healing right now is about as hard/easy as it was before the patch in a raid environment, and totally not indicative of what we'll see come level 100, for better or worse.
#WoW, #Healing

Monday, October 13, 2014

[WoW] Challenge Modes: The Race to the Finish

With 6.0 imminent, many, many folks decided that, oh crap, I need to finish Challenge Modes before they go away! Frankly, I wasn't really any different there myself. One of those things where you need to organize a group of people, and the rewards are all cosmetic, so it wasn't until there was nothing else to do and the fact that they were going away that people started really digging into them.

Now, for anyone who is currently struggling to get them done, I feel badly but at the same time we did have literally two years to accomplish them, so I'm not really that sympathetic to folks saying they didn't have time. I am sympathetic, however, to folks who couldn't throw together a group of people. Sure you need fewer than a raid, but Challenge Modes are, well, challenging, and you can't just outgear them. If you're stuck with friends who are sub-par players, you might well just be hosed unless you find other people.

For our group, we ended up only going for silvers, because we were pretty much only super interested in the mounts. All in all, I admit, it was a complete blast doing that content at the difficulty level it was intended to be completed at. Our comp was Frost Mage, Enhancement Shaman, Unholy DK, Protection Warrior, and Disc Priest; we used all of our many tools at our disposal. Defensive cooldowns, chain group stuns between Ring of Frost, Remorseless Winter, Capacitor Totem, and Shockwave, massive amounts of off-healing from myself, along with healer DPS. Picking and choosing specific talents and glyphs that we'd never normally pick. It was the perfect example of how difficult WoW can be, if you do the optional content.

Random really late pro-tip: if you're running Enhancement, you can bring all five players from about 20% to full health on a large group of mobs if you already have a bunch of Flame Shocks up by using Ancestral Guidance->Fire Nova. One of my favourite tricks when we were struggling with healing large groups of mobs.

We ended up getting all 9 silvers in 4.5 hours. We actually even one-shot gold Scholomance, which was a pleasant surprise. Siege and Brewery we were within 44 and 23 seconds of gold, respectively. Most of these we one-shot, or in a couple cases with a false start, two-shot. The worst three for us were Stormstout Brewery, Scarlet Monastery, and Siege.

Not too shabby for most of us never having walked into CMs before.
The brewery was our second one, and we were still coming to terms with some of the mechanics that previously in normal/heroic modes we could ignore. Especially the boss' self-healing. Got to the end and had to reboot that one. The practice helped our time get really close to gold though.

Siege, those bombs, ugh. Seriously, the beginning of that dungeon is nasty. The rest was relatively easy, however.

And Scarlet Monastery, so many inadvertent pulls, face pulls, a couple of wipes. It was our last one to do, and definitely the hardest in my opinion. I've heard people say Mogu'shan Palace is the hardest, but ehhhh, I dunno about that.

Overall, having competent players in all roles is a must. All five of us are in the same raid, so we're already pretty in sync with each other in terms of play style, personality, and our classes. It also helps that our tank had done them before; having a guide probably shaved off a good 4 or 5 hours worth of attempts. So while we got silver quite handily, I wouldn't say they were easy. Quite the contrary, they were difficult, and we had to play at our relative best to nail them as quickly as we could.

With the WoW populace finally getting exposed to Challenge Modes, I'm happy that Blizzard didn't look at participation previously and axe them for WoD. I know we came out thinking they were a blast, and will quite probably end up doing them earlier next expansion instead of waiting until the last minute. I'd bet there's a number of other folks in the same situation/mindset. Having that extra challenging content is wonderful, and frankly, even though we had to effectively be bribed to try them with the Phoenix mounts, I'd be totally willing to run them regardless.

So, to Blizzard: Challenge Modes, awesome and thanks!

#WoW, #Challenge

Thursday, October 9, 2014

[WoW] Holy Paladin Changes for 6.0

Keeping this as short and sweet as I can, here's a quick set of things you need to know for Holy Paladins in 6.0. Note that this doesn't include full changes in Warlords, just info for level 90. We have a slightly ridiculous number of changes, so even the short version of this is pretty long. If you're just interested in high level playstyle changes, check out the Conclusion section at the bottom.

Stat Changes
  • Item Squish is in. All your numbers are going to go down. Don't panic!
  • Intellect no longer increases your Crit with spells.
  • Sanctified Light was added, increasing the amount of Crit we get from things like gear and buffs by 5% (so if you'd normally get 100 crit rating from a piece of gear, Holy Paladins get 105).
  • There are no more Haste breakpoints. If you like Haste, stack it without worrying about your HoT ticks.
  • Spirit should be a lot more powerful, but you should need a lot less of it. However, this is not as apparent at level 90 and kicks in much more at 100.
  • Health with respect to healing throughput should be much higher, so people will be at less than 100% health more often. Your heals, however, will also do a much smaller percentage of your target's health. This should be okay! Admittedly I am unsure as to how much SoO changes with this.

Ability Removals

Talent Changes
  • Eternal Flame once again procs our Mastery, but the length of the HoT is now proportional to Holy Power spent, up to 30 seconds for 3 Holy Power. So no more spamming small HoTs everywhere; it's just not efficient.
  • Stay of Execution is a bit more powerful and the burst of healing is now at the beginning rather than at the end, making it easier to use.
  • Selfless Healer no longer affects Holy Radiance, and Judgment doesn't generate Holy Power. However, it buffs Flash of Light (now our primary throughput spell) a fair bit more than it did previously, by nearly twice as much.
 Ability Changes
  • Holy Light is our "efficient" heal, whereas Flash of Light is our throughput heal. They actually heal for identical amounts, but Flash is 66.7% faster to cast.
  • Avenging Wrath is now the mother of all throughput cooldowns, boosting healing by 100%, and Haste, Crit, and damage by 20%.
  • Beacon of Light now transfers multistrikes (of which for now the only thing that this affects are the multistrike SoO trinkets). Casting spells directly on the Beacon no longer generates Holy Power; however, casting Holy Light or Flash of Light on the Beacon will refund 40% of the mana cost, making direct Beacon healing extremely efficient. It also now has a small mana cost to keep people from macroing the ability to every spell cast.
  • Our area heals, like Daybreak and Holy Radiance, now only affect up to 6 injured targets instead of all targets in the area. (Note Light of Dawn always had this effect).
  • Holy Shock has twice the chance to Crit, rather than having a static +25%. This should help make Crit more attractive.
  • Mastery: Illuminated Healing is now applied by multistrikes (for now, only the SoO trinkets, same with Beacon).
  • Denounce now has a 40 yard range, up from 30. (hooray!)
  • All healers had most of their instant cast heals gain a 1.5 second cast time. For Paladins, Word of Glory, Eternal Flame, and Light of Dawn all have a cast time now, leaving us with only Holy Shock which is still instant.
  • Redemption no longer costs excruciatingly large amounts of mana.
  • Seal of Insight no longer increases our spell haste by 10%. Instead, that was rolled into Infusion of Light, a baseline Holy passive (and increases all Haste instead of just spell). This means if you want to do less healing but more damage, you can switch your seal without losing the haste, just 5% healing.
  Glyph Changes

Not listing every glyph change. Many of them are just numbers tweaks. But here's the major playstyle-altering changes.
  • Glyph of Divine Wrath now reduces mana costs by 25% while Avenging Wrath is active, but halves the healing bonus of the cooldown.
  • Glyph of Cleanse now grants Cleanse 2 charges, but increases the cooldown to 12 seconds.

Conclusion

Overall, the biggest changes to our playstyle is a much slower generation of Holy Power, and a lot less mobility with Holy Shock and our 90 talents being the only instant cast heals we have left. With less holy power, it makes Eternal Flame much less attractive, so I expect that whole tier to balance out a bit with all of them being viable choices.

With Divine Light gone, get used to using Flash of Light as our throughput heal. Note that unless you have stacks of Selfless Healer banked, Word of Glory at 2 Holy Power is still significantly stronger than a Flash of Light/Holy Light (and at 3 HP is a full 150% more powerful in a single cast).

Holy Radiance should be harder to spam, and only really worth casting if it'll hit two or more injured players, whereas today on live I use it almost exclusively over Divine Light because it hits nearly as hard on the tank after Beacon transfer is taken into account.

I'm not sure if at level 90 we'll see players sitting at less than 100% health much, but if that's the case, we should see Crit become a bit more valuable than it has been in the past, and it should also naturally make our Mastery a little less potent, because throughput will be a bit more important than bubbles.

I raid on Wednesday after the patch, so we'll see how this plays out in practice. I imagine SoO has been nerfed through the floor in anticipation of these changes, so I wouldn't panic about current content.

#WoW, #WarlordsOfDraenor

Monday, October 6, 2014

How Do You Measure a Year?

In blog posts, in retweets
In comments, in to-tal rewrites
In searches, in sources, in keywords, in spam
Five hundred twenty-five thousand six hundred minutes
How do you measure a year in the life?
~Seasons of Love - RENT (filked by yours truly)
Hooray! Gamer by Design turns 1 year old today! I started this blog October 6th, 2013, in response to the Newbie Blogger Initiative. Well, I've wanted to write my own game design blog for years, but the NBI provided me with the perfect opportunity to get off my butt, because it made networking my blog so much easier. After the first month, I was graciously awarded the Promising Star, which according to the website is described as, "This is awarded to the overall most outstanding Newbie Blogger and is the NBI’s highest honor. Your blog has been acknowledged for its style and content."



I can only hope I've lived up to that expectation, but the ride has definitely been fun, and I plan to continue it. Since I've started I've quit my previous job, became a game dev, gone to GaymerX, PAX East, PAX Prime, made a tonne of new friends, and managed to both get things off my chest and talk about what topics I think are interesting--and a few others think were interesting as well.

So stealing a page from The Ancient Gaming Noob's book, I'm going to talk a little bit about the stats on my blog for the year, because as we've already established, I love numbers. Now, I've been using Google Analytics only since mid-November last year, so the first month and a half's worth of data is missing, so this isn't a perfect look.

Who's Sending Me Traffic?




There's a fair bit of data there, exported raw from Google Analytics. Clearly the top dog is Google, sending me tonnes of traffic. But based on the average time folks spend, plus the sheer number of new sessions, the majority of users are likely just stopping by to grab an image and then moving on. Looking at the keywords via Google Analytics, literally almost nobody sticks around, making Google a great way to have folks strip images from your blog. I'm not really complaining, but I don't really think people use Google these days to find information they want to read, rather, they use other people's recommendations via social media for that. Or I'm just bad at Google.

Next is direct traffic, which would be either no tracking info on the URL or typing the value directly into their browser. Maybe someone shared a link (likely me) that didn't have a tracking parameter on it. There are a fair number of new sessions, and returning folks as well, so link sharing is still handy.

Blessing Of Kings, a great blog and a fixture of the WoW blogging community. Rohan's blog roll is, for many people, a replacement for RSS feeds (myself included for a very long time). No other blog roll compares to his for traffic redirects, or at least, not one that I'm on. And based on other metrics (average session duration, average pages hit), those users come back time and time again. So, thanks Rohan!

Twitter and Facebook are 4 and 5 respectively, showing the value in being active on social media. Well, except for Google Plus, which is way lower on the list.

The Blogger referral is likely my own clicks going through from editing pages, especially with only 3.82% new sessions, so I wouldn't look too hard at that figure.

Then, outside of different languages for Rohan's blog, we have other blogs. Balkoth's Word, Herding Cats, MMOGypsy, Bio Break, Me vs Myself And I, and Murf Versus. It's important to interact with others in the blogosphere, and frankly, they're all friends that I've met through blogging, so it's nice to see we have some back and forth.

There's a couple of one-offs, though which really show how powerful a single link can be. Tobold's blog linked to me once, and that was a significant spike for my traffic. WoW Insider, I posted a single comment which generated a fair bit of traffic. The Stonewall Family is my guild's website, and I cross-post there on occasion. Finally, Feedly is a new RSS replacement for Google Reader that has gained some traction.

So lessons I've learned? Talk to people; be active on Twitter and Facebook (not just posting links, but participating in the community); get on blog rolls; comment on other people's blogs.

Most Popular Posts

Over the past year, what have been my most popular posts? Sadly, there were a couple before I started using Google Analytics that hit the viral jackpot, specifically one where I initially talk about the game I'm now working on (Eon Altar), which would make spot 2 on the list.

Page Title Pageviews
WoW: Fiction Has a Horde Bias 1226
Dear Blizzard, I'm Not Asking For a Quest About Woman's Suffrage or the Stonewall Riots 758
[WoW] Clueless vs. Jerk, Who is Silver for Heroic 5-Mans Solving For? 449
Cloning, Splicing, and Cross-Breeding. Pokémon Geneticist! 400
Banish(ed) The End Game 379
[WoW Beta] UBRS 5-Man Dungeon as Holy Paladin 349
WoW: Will the Item Squish Quash Our Ability to Solo Earlier Raids? 324
[WoW] Right in the Heals 317
Holy Paladin, Batman! WoD Alpha Patch Note Discussion 286
Complexity and Depth, or Why WoW Devs are Axing Abilities 273

By far, my most popular post is about how and why Horde dominates WoW's story. Then we have Dear Blizzard, which was linked like crazy through Twitter. The third one on the list, Clueless vs. Jerk, was linked by Tobold. The Pokémon Geneticist post is actually from before I started Google Analytics, but it ranks super high on Google searches, so it still gets a couple hits every once in a while even today.

Most of the top 10 are from WoW, which isn't really surprising given how popular the game is. The one that sticks out to me is the post about Banished. Not really sure why that one got a lot of hits, but it did. Perhaps not that many blog reviews out there?

What if we measure by comments instead of pageviews?

Page TitleComments
In Support of Support Classes32
Complexity and Depth, or Why WoW Devs are Axing Abilities28
Dear Blizzard, I'm Not Asking For a Quest About Woman's Suffrage or the Stonewall Riots19
Complexity and Depth Part 2: Conflation Station16
Aw, Do I Have to Replace My +4 Awesome Sword with that +5 Slightly More Awesome Sword?15
[WoW] Clueless vs. Jerk, Who is Silver for Heroic 5-Mans Solving For?15
[WoW] Should Monolithic Expansions be Obsoleted?14
Flexible Raiding by Rigid Numbers13
Purchasing Level 90s in WoW: It's the End of the World As We Know it, and I Feel Fine12
A Tale of Two Raids12
[WoW] Raiding in Warlords: The Good, The (Maybe) Bad, The Strange12
[WoW] Right in the Heals12

Again, mostly WoW posts, but a mostly different list. Actually, when you look at the comments, it is all WoW posts. It's fun to see both my Complexity vs Depth posts up there, because lots of people have lots of differing opinions, which is fun. Most of my most popular posts to comment on happen to be about the cross section of Game Design and World of Warcraft, which I admit are fun to write, even if I haven't written one in a while.

But given that there isn't a tonne of crossover between the two lists, apparently posts that generate discussion don't generate page views, and posts that generate page views don't really generate discussion? I'm not sure that's actually true, but for my year of blogging that seems to be the pattern.

 A Year of Blogging

Unlike Wilhelm I haven't really tracked how many paragraphs or words I've written, so I don't have that data. But I have written a total of 92 posts, so about 1.77 a week, and I'm pretty sure I've never missed a week, though some months I do better than others. February 2014 in particular was a really slow month for me.

But here I am, still blogging, still playing WoW, and am a game developer, so I plan on writing more blog posts and continuing to participate in this lovely blogger community. Here's to another year!



#Blogging

Thursday, October 2, 2014

[Indie Dev] Becoming a Game Developer -- Beyond Bossfights Podcast

Braxwolf Stormchaser of the Beyond Bossfights podcast interviewed me recently about my transition from a developer at Microsoft in Office to becoming an indie game dev at a much, much smaller company (Flying Helmet Games).

It was a super fun chat, ranging from the bureaucracy of large companies and why some of it exists, to the daily life of a developer in a small company working remotely, to Mojang's decision to sell the company, and talking a bit about our game, Eon Altar. Braxwolf was an amazing host, with lots of interesting questions, and quite the professional sounding show.

You can find the podcast either on Braxwolf's blog, or on iTunes. Take a listen and feel free to ask follow-up questions or feedback here!

#Podcast, #IndieDev