Showing posts with label phpRaider. Show all posts
Showing posts with label phpRaider. Show all posts

Thursday, October 9, 2014

4.9. DoD+

"WoW Fan Art - Page 3"
Artwork by Jiein Hyun

There Will Be 10s

My guild revisions sat untouched. All the work to lay out a 10-Man culling strategy no longer applied; I couldn't remove them. My conscience, dulled over the course of the last two years, enjoyed a reawakening by staring at itself in the mirrors of my Mother's house. I didn't want to be like her, making decisions on no other grounds than because I can. Effort was necessary in order to make great things happen. DoD had long stood as a place for players uninterested in immature leadership and arbitrary rules. That summer vacation compelled me to reassess my strategy surrounding the 10s. Instead of lancing them like boils, I contemplated the other end of the spectrum: could DoD seduce 10s into joining?

It was a ludicrous question; I shook my head in disbelief frequently while walking this alternate path. A 10-Man team in Cataclysm was a self-sufficient guild. Logically, there was no reason whatsoever why a clique of tight-knit friends would feel the need to have themselves assimilated into a "faceless" organization like Descendants of Draenor...at least, at initial glance. The more I put myself in their shoes, however, the more reasons floated to the surface. Members of a 10-Man guild were no different than any other players I marketed to. 10s thought they were free from the complex underpinnings of a 25-Man guild, but I was skeptical. They shared the same stresses as any other team, just ot a much smaller scale. And when a guild mishandles those stresses, each member was an unwilling customer, discreetly shopping for a better deal.

I walked through the list of my own pain points, converting six years of workable solutions into a packaged product. Recruitment was always a worry. Let me take that off your hands. Bring your 10-Man team to us and you'll enjoy the benefits of DoD's never-ending recruitment. We have a wide array of people to choose from, and not all of them will be able to participate in the 25. Maybe they can help your cause?

Raiding can cost gold, both in repairs and flasks. The situation wasn't nearly as dire when compared to Vanilla and TBC, but the costs do add up over time. Let me subsidize your efforts. Bring your 10-Man team to DoD and I'll commit to issuing you a weekly kickback from the guild vault to help take the edge off. Why stop at gold? DoD's vault was thick with unused BoEs from the 25-Man efforts; Neps and I could only auction off so much, so fast. Why not reinvest those profits back into the 10-Man teams? BoEs might not make-or-break a 10-Man's progression, but perhaps such a gesture would give 10-Man guilds pause before rejecting a radical offer from a guild they'd otherwise never do business with.

There was no question in my mind that 10s would proliferate in Cataclysm. 25-Man guilds would collapse in great numbers, and while I scrambled to pick up the pieces of those fragmented teams, the 10s would overflow and dominate the server. It wouldn't be long before those 10s felt the same pressures I felt, as players acclimated to their more compact environment. Sooner or later, frustration and turmoil would lead to the grass-is-greener syndrome. For those teams with few people-management skills, miniature explosions would paint the server like a fireworks display -- my signal to come knocking. I'd offer my condolences to the formerly-known-as-10s, pitching Descendants of Draenor to those grieving widowers. But for the 10-Man guilds who fought desperately to keep it together, they would need help. They would need guidance, direction, and tools, so they could focus on enjoying the game. DoD could provide all these perks, and more.

It wouldn't be an easy sell; many would deny our necessity. It was the nature of the gamer to shove a big middle finger up toward anyone telling them what was good for them.

So, I wouldn't tell. I would show.



The "face" of DoD, circa May 2010
The main guild website (top), eqDKP
site (middle) and phpRaider site (bottom)

Look On My Works, Ye Mighty

Two and a half years had passed since I bid my previous job adieu. I still remembered with fondness the many conversations I'd shared with Ater as a fellow employee, side-by-side as programmers during the day, guild leader/raid leader pairings in The Burning Crusade by night. But I shed no tears for the working conditions and abuse. At my present job, life was spectacular. The boss trusted my judgments instead of challenging them. The positive feedback loop encouraged me to push myself even harder, hold my own work to a higher standard, deliver something I could be proud of. And when the time came to fire up some distractions at the office, I was never once made to feel the pangs of guilt.

Pushing the quality of my work produced a wonderful side-effect: free time. Late into 2010, I had more and more opportunities to break from coding, putting time into research. Traditionally, I sought knowledge of a technical nature: programming languages, debugging and troubleshooting, understanding what was happening at the bare-metal of the processor. But these days, I found myself seeking more "right brained" knowledge. Architecture and design considerations, usability, what makes sense to do when, based off of context. Inevitably, I often ended up back at people: their nuances, what drives them subconsciously, what motivates them. My intent was to become a better coder, but my research kept pointing me toward becoming a better leader.

My boss, Dave, repeated the message at every opportunity, "You really ought to think about management." Each time, I humbly thanked him. Professionally, I never saw myself trading code for people; I loved to fix things. Programming is a canvas that's never complete.

---

The quiet hum of a smoothly running company website freed me to investigate our own guild "face" on the 'net. It was sad. There sat the same dull, static HTML, unwavering since the game launched in '04. A single central column acted as our news of latest boss kills. To the left, I'd recreated progress bars to indicate how far along the 25-Man team had progressed through the current content. "APPLY TO THE GUILD!" yelled out in tiny caps above the faux progress bars, while an "Application" link on the right clung desperately to a PayPal button. This had been DoD's sole means of lead generation since the guild's inception.

There was a second site, charged with the responsibility of tracking the guild's DKP. I'd been using eqDKP for this task, built in the days of EverQuest, receiving minor updates along the way. Customization existed only in the form of alternate color schemes, which was about as effective as a can of spray paint on an Excel spreadsheet. I'd be foolish not mention the third site, our raid management tool. This was an implementation of phpRaider, which grew a bit over the years. The majority of changes went in by my own hands, fixing bugs that allowed players to sneak out of raids they'd been confirmed for, well after the cancellation window had closed.

All three sites needed some serious love. Guild portals were all the rage, jamming a million widgets and scrolling text down your throat like they were the natural evolution of Geocities. I refused to pay for a "solution" I could install and configure on my own. What good is a mechanic that can't fix his own vehicle? I dug deep into the web until my screen was filled with Umlauts.

The character profile management tool
 featured in eqDKP-Plus (Source: eqDKP-Plus.com)

Germany Is Our Only Ally

It wasn't difficult to see I'd landed squarely in Deutschland, given the huge black, red and yellow striped flag at the top of the page. The language barrier had minimal effect as my attention focused squarely on the screenshots. Character profile panels boasted in-game rendering, thanks to an integration with the World of Warcraft Armory. At the time, the WoW Armory allowed players to pose their character in one of many different frames of animation. You could have this in your guild site. Aesthetical niceties aside, the content management system boasted full character statistic importing, gear and glyph display, even supporting multiple specs. When compared to the ridiculous hacks necessary just to display an item hover in eqDKP, this package delivered functionality well beyond anything I expected to find....and the character profile was only the beginning.

Named in homage to the original eqDKP tracking system it was based off of, eqDKP-Plus was, quite possibly, the most advanced guild CMS I'd come across. The configuration panel alone listed 41 custom modules that could be enabled and displayed wherever I chose. Some of them actually didn't suck! Automatic achievement tracking? Check. World of Logs report integration? Check. GuildOx rank badges? Check. When I stumbled across the full phpRaider implementation, I just about fell out of my chair. And of course, there was the eqDKP system itself, tying loot earnings directly to the raids in phpRaider, which in turn, cascaded up into the news items. With a single button click, I could post the news of a boss kill to the homepage, include a photo of the kill, and display the loot that was distributed. It was the complete package.

...include a photo of the kill...

---

That evening, I dug into the photo gallery module. It allowed administrators to upload and tag images that could be featured across the site, in such places as news headlines or via a random "Pic of the Day" rotating widget. I pondered our six year history of screenshots buried on my hard drive as marketing collateral. If nothing else, DoD was stable. In my vision of 25-Man guilds collapsing around us, stability would be the most important selling point. The last thing anyone freshly ejected from a guild relationship would want...was to suffer through it again. The gallery module, an otherwise frivolous gimmick in the grand list of eqDKP-Plus functionality, suddenly became the single most important tool in my repertoire. If six years of screenshots couldn't vouch for DoD, what the hell else could?

And thus began the burning of 918 screenshots to CD.

Thursday, August 22, 2013

3.27. Eating What You Order

Hanzo channels Jesse Pinkman as DoD wraps
up their first kill of General Vezax,
Ulduar

Abdominal Distention

May was a full plate, both in real life in and in WoW. On the tangible side of the screen, I had a handful of events to plan for. Both my wife and son would celebrate their birthday this month, sandwiched between the festivities of a Mother's Day and a High School reunion stretched over the Memorial Day long weekend. On top of these family related-events, a trip to Texas had been penciled in, as my company's team in the Dallas area was due for more training on our app. Two years ago it would have been far too much to digest. Late nights of doing too much in-game, ignoring my family back in the real world. In order to manage the guild and my time effectively, I had to be a picky eater. Not every situation or individual demanded hours of care and upkeep. The right tools allowed me to use my time efficiently, whether they were streamlining my raid signups, or keeping raiders honest in-game. The days of ordering everything on the menu were behind me.

Yogg-Saron was in the crosshairs, a complex nightmarish encounter that would have to be diced up into bite-sized chunks. Before him, however, we had to defeat General Vezax. The faceless one that guarded the entrance to Yogg was next on our list, and his ability to suppress mana regeneration was sure to give our healers some headaches. Again, Cheeseus called upon the (over) power of the Death Knight and put me to work tanking Vezax. Some raiding guilds had strategized around Surge of Darkness by kiting, but Cheeseus never once optioned the tactic. I stood and ate the entire Surge, thanks to Icebound Fortitude and a ridiculous amount of self-heals via Death Strike. Execution ultimately came down to mastering the Searing Flame interrupt, my Mind Freeze rotation quickly becoming muscle memory. It was on the Mother's Day weekend that we completed the Vezax encounter, and dove into his loot table for dessert.

The roster maintained a steady flow of Raiders and Elites throughout May. Week after week, they signed up, entered the queue, and I managed their rotations. Raiders would back out, their empty spots being filled by new folks waiting in the queue. This had been my intention from the start -- a new world order, free of stress and demanding only minutes of my attention a day. Thanks to our web-based signup sheet, phpRaider, I was able to prepare the rotations for the weekend in the same amount of time it took to get a cup of coffee. It was a proactive system, rather than a reactive one, enabling me to deal with players that had a tough time being consistent. So when Ben missed the Mother’s Day raid sign-up, it was inconvenient but manageable; it wasn't the end of the world. No more frantic last-minute fills, no more late nights in-game to the detriment of my family...because the tooling was right.

Unless, of course, the tools themselves were broken.

oRA2 returning a durability check

phpFailure

"She like the iPhone?"

"Oh yeah, fuckin' loved it." I typed back to Cheeseus, "Totally flipped out, had no idea she was getting one for her birthday."

"Nice. I assume we're going with oRA2 now that we're pushing for Yogg?"

I concurred. RDX had served us well, but it was time to retire the old beast. Over time it had grown cumbersome; the add-on had always been top-heavy, eating into the CPU cycles of our lesser equipped players in the computer hardware department. Cheeseus and I found oRA2 and were looking to use it as a replacement. We needed something to report back to us the status of players and their flasks, durability, etc. Sure, I could blindly trust players, but why give them an opportunity to lie, just to sate me? It was no longer appropriate to just take their word. Far better to just implement the right tool to deliver the truth, and deal with table scraps as they surfaced.

"Forget to finish the rotations?" Cheese asked.

"What? No! Who is missing?"

"Looks like Turtleman cancelled again."

Annoyed, I alt-tabbed over to phpRaider. But he was rotated in yesterday morning...I remember confirming after dinner. We had the roster accounted for by the time we were in our 24-hour lockout window. I hovered over the little note next to Turtleman's name, the place where players left their reason...their excuse...for cutting and running:

(Sorry, had a family dinner. Nothing I could do about it)

One of the changes I introduced in Wrath disallowed players from cancelling when there were less than 24 hours before a raid. It was a gentleman's handshake, an extension of good faith: I'll give you the flexibility of coming and going as you pleased, and in return, you needed to commit when the clock ticked down to the final day before the raid. Only emergencies would get you out at the 11th hour, and that required you to phone or text me (or an officer). If you could manage it, I wanted the name of the person who was replacing you. It wasn't the officers' jobs to play Mommy and Daddy to spoiled brats wanting to change their schedules on a whim. If you left us high-and-dry, it was your responsibility to find a replacement. Failure to do so would ensure reduced rotations.

Outside of the 24 hour window, you were free to queue and de-queue as you pleased. I agreed to eat that. I would perform rotations as late as possible (generally Thursday morning), and even let you sign up weeks in advance. As long as it was a day before the raid, you could still change your sign-up.

This Friday morning, hours before the raid, someone had found a loophole and exploited it.

"This wasn't an emergency," I typed back to Cheeseus.

"So what happened?"

"He cancelled inside the window. There's a bug in phpRaider. I'm going to have to fix it before more people think this is allowed."

So while Turtleman enjoyed his family dinner and evening off, I took care of business. I made the calls that day. I got his replacement. After going through the motions of working on Yogg-Saron, I stayed up late and fixed phpRaider. And long after my wife and kids where already asleep, I climbed upstairs, and went to bed.

And dreamed of standing in fire.


Mature earns "Heroic: In His House He Waits
Dreaming" during an attempt on Yogg-Saron,
Ulduar

Peoplecraft

"I'll let you answer his PM," said Cheeseus.

Divineseal had sent a message to myself, Cheeseus, and Dalans, asking how he could start bringing his Druid. I took it off of their hands. People management was starting to get a little easier for me, no doubt as a result of the practice I was getting. The early days of Ekasra and Wyse were warm-ups, and Kurst's harsh truths gave me the basic foundation to work with. Thanks to a more balanced schedule, I could make quicker assessments -- a huge win during this packed month. If it wasn't worth the effort, they'd get the short-and-sweet answer. You're not working out. Sorry. I no longer had the time to cater to everyone. And that was OK. Not everyone is savable.

"7th place overall, with only 66% of a DISC priest, and on Freya placing 9th, BARELY beating the PROT pali, while losing to the enhance and elemental shammy?"

I winced.

"Yeah...not the greatest coverage in the book."

Cheeseus was clearly not a fan of Divineseal. I thought it would be reasonable to give him a shot, even after the warning, the speech...how I specifically detailed to him the fact that he was quoted in the red flag forum post. He knew all eyes would be on him and that this would be his opportunity to improve. I suggested healing as a role only because I knew he had been healing in an arena team. That was the deal: don't tell people how to spec just to get them on the roster. I told myself this would fly because he was already a healer in another capacity.

When your roster is comprised of half casual, half hardcore raiders, catering to both, you'll come to discover that some players will be unable to play any role well. It's a sad fact. I looked at my newly fixed phpRaider, saw Divineseal signed up well into the months ahead, and sighed.

Paladins were going to be the death of me.

"I'll be watching Ben tonight to make sure he's doing what he needs to. He wasn't switching off of Hodir again last week."

Ah yes, Ben. Rarely a day went by that Cheeseus didn't bring up this distaste. Since as far back as The Burning Crusade, Ben had driven me to the brink of madness, a mini-Yogg stealing sanity stacks as his random drunken outbursts and failure to show up left a crater in our progression team. It would be so much easier to just pop the guild roster open, scroll to the priests, and boot the entry named "Aeden" from the guild. My finger hovered over the guild kick button. But I didn't press it. Empathy and ownership bled out. Maybe I could work with him, teach him how to be more respectful of the other players' time -- more amenable to raid direction. But why not simply kick him to the curb? This would be so much easier. Because he was a good player. He was popular.

I was still having a tough time making unpopular decisions.

The good of the guild is what rung in my ears when I reached for that "Remove Member" button. The biggest impact Ben had on us was that he was friends with Neps, my newest second-in-command -- the same one accumulating Fragments of Val'anyr. Neps brought too much to the table to risk sacrificing over an occasional drunken rant from Ben. I could manage this. Neps was one of the most valuable players and officers in the guild. Jeopardizing him would be like standing in Ominous Clouds while guardians tore us apart in madness. No, it wasn't worth it. Far better for me to take Ben on as a personal responsibility than to cut him and lose Neps in the process.

"If he keeps that shit up, can you talk to him or remove him from raids?"

"Yeah", I replied, "I'll look after Ben."

---

I came to a stop at a red light in Flagstaff, the long weekend coming to a close. Julie turned to me and stared a moment; she had that look a person gets when something isn't quite right. The kids in the back of the Civic poked and prodded each other, giggling. She cut them off as she tried to listen, turning the radio down.

"What?" I asked.

"...there's something wrong with your transmission."

I tried to pinpoint the sound she was referring to. The light turned green and I pressed on the gas. There. 

"You hear that?"

"Yeah...I did." For a brief moment, I caught the sound of a light vibration, as if two gears were grinding together.