October 31, 2006

[Travel] Leaving On A Jet Plane...

I'm leaving home about 7:45a tomorrow to head to the airport. Don't expect me to reply to E-mails, phone calls or blog replies until I get back this weekend.

For you current and former blue badges, consider this my OOF.

[Games] Game Pricing (First-Gen/Next-Gen)

I'm still seeing a lot of people bitching about the price of "next-gen" games going up $10 from the US$50 price point that we have with the current generation. So, let's take a look at the granddaddy of them all, the Atari 2600, and compare it to today while adjusting for inflation.

The Atari 2600 launched in October 1977 for a price of $199. (Adjusted for inflation, that works out to a current-day price of $649.) Compare that to the Xbox 360 Pro SKU, which shipped at $399.

In the days of Atari, development budgets were small. Space Invaders for the 2600 was made for $11,000 (~$36,000 adjusted for inflation). Compare that to the minimum $2-10 million development cost it takes to make a game today.

Atari 2600 games cost US$20 at launch. ($65 adjusted for inflation.) Evidently, this means that even with the $60 price point for "next-gen" games, games are still cheaper than they were on the Atari 2600.

Now, I fully expect prices to decrease on games back to the traditional $50 price point over the next two years as economies of scale start to kick in, but in the meantime, $60 is still a good deal when compared to the past. And believe me, I never thought I'd say that the $600 PS3 SKU was a good deal compared to the Atari 2600...

[SiN] Sorry, Guys...

I'm sorry, guys. I tried having the SiN update available for the eighth anniversary of the release of the original game, but events conspired against me.

I'd give you an ETA if I had one, but the release is governed by events outside of my control.

October 30, 2006

[WoW] Taint

According to Blizzard, I should have my characters back to 99% by Friday. Both of my systems were clean of spyware/keyloggers/etc., but I've nuked both of them anyway.

These characters were characters I had built up over the span of thirteen months, and in the span of eight hours, half of them were deleted, and the others were stripped of nearly all their worldly possessions. All of my characters would have been deleted had I not reset my password at the moment I did... One of my characters had been ushered into Un'Goro Crater to farm and had her toolbars completely remapped. When I logged in, she was next to a fresh, unlooted kill.

While I'm glad that I'm going to be getting my characters back, the difficult thing is that I'm not sure if I'm going to want to use my restored characters. They've been tainted by this experience. I'm afraid to check the skill tree for my main for fear that she'll have gone through an involuntary respec. The hacker had already trained on some skills I had intentionally been leaving alone because they didn't fit the way that I played that class.

So this weekend, I started a new character and over the course of six hours, powerlevelled him to level 12. Sure, it's a long way from where Nekomenchi was (level 53), but there is no hacker taint on this character...and I hope to keep it that way.

(Yes, my main's name loosely translates to "minced cat meat.")

October 27, 2006

[WoW] Hacked

My World of Warcraft account was hacked today. Two characters deleted, all of my items that weren't soulbound sold off. I lost everything but 30s. Even though virus scans and spyware checks show I'm clean, I'm nuking both of my machines. Probably be offline for the weekend.

[Blogging] The Benefits Of Blogging

Ranked #79,650 on TechnoratiI've been blogging now for about three and a half years. It's been an interesting experience. (The first year of my blog was nuked when I took the blog public, hence the reason you only see archives back to April 2004.)

The most interesting part hasn't been the growth of the blogosphere over the last few years, but the opportunities and experiences that have opened themselves up to me as a direct result of my blogging.

Since I've been blogging, I've received questions from college students asking for help with subjects related to video gaming, testing, game censorship, etc. I've had unsolicited job inquiries, both from people who want to work for me and people who want me to work for them. I've been interviewed by the press, both online and print. I've spoken with game developers who I have idolized for years, and have them recognize my name...all because of this blog.

Has anything about me changed over these few years? Not really. I still haven't managed to get back to college, I'm still married, I'm still stuck in a back room trying to make code weep...nothing has really changed except my visibility.

Blogging has been good for my career. It helps that you can count the number of video game QA bloggers on one hand even if you're missing a couple of fingers, but this is a topic that people are interested in. Interest generates word of mouth. Word of mouth generates familiarity. Familiarity lends to credibility. Credibility can make you an expert in the eyes of people.

So thank you for reading. Now back to my regular daily program of angst, misery and despair for all mankind. (grin)

October 26, 2006

[SiN] VC++ Express Edition

Yes, I'm still working on getting the SiN 1 SDK to go along with the upcoming update to work under Visual C++ Express Edition.

On the upside, I've finally managed to get it below 5,000 compiler errors. That's a plus.

4,216 errors; 154 warnings
(Click image for full-size)

(Update 1:27p: It's very easy to fix compiler errors when they're all the same error. Now at zero errors and a little over 1,600 warnings to clean up.)

(Update 3:59p: No errors, no warnings...the way a C++ application was meant to compile.)

October 25, 2006

[Schedule] Upcoming Two Weeks

You are going to be hearing very little from me over the next two weeks. I have a lot of stuff going on off-line that is cutting into the time I set aside for blogging.

Parts of assets from SE:EThat said, I am working on a couple of fairly hefty posts in my limited spare time. I'm working on one which is a post-mortem of one bug that was introduced during the warezing of "SiN Episodes: Emergence." I want to show a specific example of how a pirated version differs from the legitimate version from a functionality standpoint.

I'm also working on an article about the changes that we made to "SiN Episodes" based on feedback received from publishers and ratings boards. While I may not be able to share the original documentation, there doesn't seem to be anything wrong with me paraphrasing according to what I'm seeing in these agreements.

October 23, 2006

[Industry] Indie Built Rape Continuing?

Okay, let me see if I've got this straight.

Access is bought by Microsoft in 1999. Some divisions, like technical support, were eliminated because they were redundant. Unfortunate, but part of doing business.

Microsoft staffs up Access to where MGS SLC is not only working on Links for the PC, but several Xbox games as well.

November 2003 comes around, and as part of an MGS-wide restructuring, about 25% of the studio is laid off. When news of the layoff is let out via Penny Arcade on November 17, Daryl Welsh's statement denies many people a chance to get jobs for anywhere from six months to a year afterwards.

Less than a year later, Microsoft sells off the studio to Take Two Interactive. Wages are "right-sized" (read: reduced) for much of the staff, so the overall effect is more work for less money.

Six months ago, the studio (now called Indie Built) was closed. I know several people who are still looking for work after that fiasco. Nobody was told they were closing, not even the studio head. They came in to chained doors, and it took several months for people to get their personal belongings. Some people still haven't received theirs.

And now, people from Take Two are writing former employees trying to leech out additional information on tools and techniques that they had created while there.

I'm speechless. I'll back Take Two's rights to make the games that they want to make, but at the same time, the human toll here...wow.

[Testing] Purpose of Third-Party QA

I had a very interesting E-mail last week, and I thought I'd share an edited response on this blog. The paraphrased question was, "What is the purpose of third-party QA? Don't the publishers have QA departments of their own?"

It's actually a very valid question, and the answer is fairly basic, but is going to require a fairly hefty explanation. The primary purpose of a third-party developer's QA department is to save the third-party developer money over time. In-house QA saves money for third-party developers in two primary ways: it reduces publisher chargebacks and can reduce development time.

You may remember when I was going on about how much money it took for a game to break even. A big part of why it takes $40 million in retail sales before a third-party developer sees dime one above their royalty advance is that publishers tend to charge back every possible expense towards the developer. Two big expenses that get shuffled back are QA and support, and in-house QA can help reduce both of those expenses.

With in-house QA, your testers can find significantly lower-level bugs than publisher QA earlier. Testers can help ensure the stability and completeness of milestone builds prior to their submission to the publisher. In addition, if your QA department has a good relationship with their publisher counterpart, they can even help ease in some of those "borderline" milestones...especially since it's the decision of the publisher test lead usually as to whether or not your milestone is going to be accepted. Both of these result in lower amounts of downtime for publisher QA, as well as reduced bug counts from publisher QA...which tends to result in a decrease in QA costs being charged back to the developer. Also, fewer bugs in the final product tend to result in a decrease in support costs and an increase in good will from the community.

Of course, the ability of testers to find these lower-level bugs directly corrolates to the ability levels of the testers you have, their knowledge of the game assets and codebase, and the degree of communication between your test department and the rest of the product team. If your team has a "throw it over the wall" mentality, the benefit you will reap from in-house QA will be greatly diminished. There is no reason to keep in-house QA in the dark about any part of your project.

The second way that in-house QA saves you money is by potentially reducing development time. Some major publishers do not put any appreciable amount of QA staff on a project until eight weeks prior to ship (*cough*Sony*cough*), and even then, they're generally low-paid contractors. However, under the infinite monkey theorem, these are invariably going to lead to a large amount of bugs coming in during the time when change management is the order of the day. By having your internal QA department finding bugs from day 1, as long as you keep fixing the bugs as they are found rather than leaving them to the end of a milestone or the end of the project, you can reduce the number of man-hours spent during the end of a project doing major refactoring and just focus on the simpler bugs that the infinite number of monkeys hurl your way.

Again, this assumes that you are in fact fixing the bugs as they are found. A good way to enforce this is via bug count metrics being included inside internal milestone requirements. (No more than X total bugs open, no more than Y sev1/2 bugs, etc.)

If you have a good in-house QA department and a good in-house QA process, the expense you incur via QA will be offset by the faster turnaround in milestones (and their related payments), the reduced amount of chargeback towards your royalties, and improved name recognition as a company that releases stable, fun products.

October 19, 2006

[Personal] Self-Imposed NDA

You may have noticed that I will talk about just about anything on this blog. Note the almost. There are several things that I intentionally omit, even though a lot of it would be of interest to my readers.

I don't mention most things related to my marriage, for instance. I've only been shilling for MDA donations because she asked me to, but a lot of things related to my marriage simply should not become public knowledge, like the in-jokes associated with me rubbing my fingers together or the reason she is deathly afraid of my navel. Some items would have you rolling in the aisles, other would have you flipping through the Rolodex looking for a licensed psychotherapist to take one or both of us in.

There are some aspects of my professional life that I don't discuss as well. While some are under my NDA because of Ritual, others are because these items (if publicly known) could hurt my career (for letting them out), could hurt the careers of other people in this industry (if they were found out), or could hurt other companies. One interesting thing about being on the inside is that you quickly find out how much other people really don't care about their NDA's when they're talking to people in other companies. Since I've been here, I've managed to play eight titles before they were even announced, helped find jobs for twenty-two people who were silently laid off, and learned of three dozen SKU's that were cancelled for reasons that would shock you. (One was cancelled because the VP didn't like the shade of purple used for the trim on the costume of the main character. As the company is no more, I can reveal that much.)

And of course, there's the personal stuff. I'll talk about what it's like to live in a new area, live as a QA professional, etc. I won't talk about the lives of my friends or family very often. I don't want to make things difficult for people who are going through hard times. I also don't want to make a "permanent record" of some embarassing things, like party A sleeping with party B, even though A is married to C and B is married to D, but all of B's kids that are supposedly from D are really from A. (Yes, this is a real relationship I am aware of, and no, I am not any of the letters involved.)

That said, I do try to inform and entertain on this blog, so as a "reward" for sticking it out, here's your story. The restaurant I took my wife to on Tuesday night is a local Chinese restaurant. I really dislike going there because they cook everything in peanut oil...and I mean everything. Normally that isn't a big deal, but my digestive system has issues with nuts and soy products. After I eat anything that has been cooked in peanut oil, my sweat smells like peanut butter for a day and a half. So as you can see, I rarely feel like a nut, but I occasionally smell like one.

[Gaming] Scared?

I noticed on Slashdot an article about people who are afraid to play horror games. You can actually count me in this group.

When I go home and play games, I make a conscious effort to shut down the tester inside of me and just play. I've always been good at voluntarily suspending disbelief for whatever form of entertainment I'm participating in, and games are no exception.

The "Silent Hill" games are great because they instill a wonderful sense of dread in the player, as if all hope has been sucked out of the world. I'm still having a hard time playing "Fatal Frame," though, because they do an amazing job of sucking all of the hope out of you.

"Eternal Darkness: Sanity's Requiem" for the GameCube was a truly terrifying experience because of how Lovecraftian it felt and the tricks that it played on the player as well as the character really drew you into the game, and "Call of Cthulu: Dark Corners of the Earth" drained sanity points from me every time I played it.

I love playing scary games, but there are times when I have to put the game down for a month or two before I can continue. My wife continually teases me about them as well because she just gets to sit back and watch them while I have to live them. She bought "Rule of Rose" and I'm still in the second chapter because the kids are just freaking me out.

[Xbox] Not A Mouse!

Some people are linking to an article from GameInside in Korea showing what they believe to be a mouse for the Xbox 360.

No, it's not a mouse. What mouse would have the button in the middle of the damn palm rest?

From the looks of it, it would the Xbox 360 Wireless Controller Adaptor for Windows. It has a similar form-factor and light placement to my Microsoft wireless keyboard adaptor, and the button in the middle is most likely used to "connect" the wireless controller to the PC.

[IE7] Happy

So far, I'm fairly happy with Internet Explorer 7. They fixed the two bugs that affected me most from the last build.

They fixed the bug where if I visited a site that utilized frames, folders in my favorites wouldn't open until I restarted IE. They also fixed the bug where if I keyed in the name for a site that used cookies and had a cookie existing on my machine at the moment rather than following a bookmark to visit the same site, cookies would appear to be disabled to the site I visited.

Performance is improved over the last build as well, so no real complaints on my side.

October 18, 2006

[Miscellaneous] Random Items of Little Interest

Now that the wife is behind bars, I can get back to the meat and potatoes of this blog...random items of little interest.

Congratulations to the crew at Obsidian Entertainment for going gold with "Neverwinter Nights 2." I had a long talk with several of the guys back at A-Kon 17 when I spoke on a panel with them regarding the trials and tribulations they've gone through during the development of NWN2, so I can sense the relief coming from them now that they've started duplication. Of course, they won't get a real break until after the press tour, but such is life...

My first D&D session in nearly three years is going to be taking place this Sunday. It's supposed to be a seafaring adventure, so I guess it's a good thing this crew doesn't use a "point buy" system. I could just see someone taking "Seasickness" as a disadvantage for the points.

I got an E-mail from someone who was a little shocked that I used swear words when talking about pirates, saying that it was unprofessional for me to refer to my customers using those words. My reply was fairly simple. Pirates are to customers as rapists are to people in consensual relationships. Both are getting what they want, but only one deserves any respect whatsoever.

If you also want to install the Yahoo! toolbar, an RTM version of Internet Explorer 7 is currently available. Personally, I'm waiting for the official release.

[Charity] Last Meal

I took Yvonne out to dinner last night at one of her favorite local restaurants for her last meal before being incarcerated for MDA. I can't stand the food there, but I wanted to do something for her.

I also matched the donations that were traced directly to readers of this blog on top of the donation I was planning on giving anyway.

Even with all that, she's still a long way away from her donation goal.

She's getting locked up in 90 minutes. Do you want to help set her free?

October 17, 2006

[Charity] Not much...

Tomorrow at noon, my wife is getting "arrested" as part of a charity event for MDA.

I've been trying to shill, er, collect donations for MDA to go towards her bail.

Between online donations from this blog, online donations from Shacknews, and donations from work, I've managed to collect a grand total of $40.20, not including what I'm donating.

This isn't good.

If you want to help out, please follow this link and donate something...$1, $5, anything.

(Update: 10/18, 12:37am, up to $81.20 thanks to the readers of this blog. Thank you.)

October 15, 2006

[Personal] Time

Why is it that the times when you should have the most time, you have the hardest time of all actually making time for anything?

For example, a friend of mine recently had his first child. (I'd link to his site, but it's *NotWorkSafe*. [hint]) I was sent a link to video of the birth and first baby pictures...haven't watched them yet.

Need to get back to Utah sometime before the end of the year...haven't even started to plan the trip yet.

Need to write up my homebrew content pipeline articles...barely through the second article.

Perhaps part of it is paralysis of choice. If you have one or two things to do, it's usually fairly easy to pick what to do. But when you've got several dozen things to do, you spend so much time planning on what to do that you don't actually do anything.

When I'm coding, I excel when I have a clear plan or goal or when I'm handling maintenance tasks. It's the same with real life, I guess.

The only thing that I do have that's nearly done is a means of integrating Blogger into an ASP.NET website so that you can use active content alongside a Blogger blog. Expect some visible tweaks this week...

October 13, 2006

[SiN] Wages of Screenshots

Well, Ritualistic popped the screenshot up, so I guess I can say a little bit about it.

Yes, widescreen works in the upcoming SiN update. Game mods (including Wages of SiN) also work in the upcoming SiN update. (The Steamification initially broke mods...sorry.) However, don't expect to be able to pop your Wages CD in the drive and just get it to work. Wages has been tricky, and so far I've only messed around with the single player aspect of Wages.

I've also been working on an updated SDK for release alongside the update, but unfortunately the first release of the new SDK will not compile in Visual C++ Express Edition. It will require Visual C++ .NET 2003 or the free Visual C++ Toolkit. I don't know if it will compile using the new release of Turbo C++ or not.

Work started on the Steam version of Sin long before the release of Visual Studio 2005, and the codebase was written through the mid-90's, so there is a lot of code that needs to be touched to work correctly with VC++EE. That is one of my goals, however.

We made a few promises back when we re-released Sin. One of which was widescreen support, which this patch will deliver. Another was re-adding mod support, which this patch will deliver. There's one other promise that I'm still working on, and one of these items was a prerequisite...

[XNA] Final Word For Week

Even though I've been ripping on the XNA team for their bonehead decision this week (which was made long enough ago that this could have been avoided or tempered by being straightforward and open, guys), I'm not abandoning XNA as a result of their language faux pas.

I'm going to be helping the VB community quickly get XNA up and running after lanuch via the series of hacks that the VB community is known for. I'm also going to be continuing to analyze and provide feedback on the beta so that when the XNA team finally does see the light, the VB community will receive a higher-quality product.

October 11, 2006

[Microsoft] Schizophrenia by Earnings

March 2005: Microsoft's developer tools division announces that the top tier of Visual Studio 2005, Visual Studio Team System, will run $10,939, more than triple the cost of the high-end SKU released two years prior.

September 2006: Microsoft's developer tools division announces that the upcoming Visual Studio 2005 Service Pack 1 may not be compatible with Windows Vista.

October 2006: Microsoft's developer tools division announces that the upcoming XNA Studio product SKU will not support Visual Basic, but instead only support Visual C#.

These instances, taken in isolation, may just point to minor communication gaps inside Microsoft, but taken as a whole, it points to a division that is placing its own profits above the needs of not only the customers, but Microsoft itself.

It's not hard to see why. If you read Microsoft's 2006 10-k and cut through the double-speak involved with having development tools intermixed with the server OS on the balance sheet, you can see that income over the last year for developer tools is close to flat at best. The income increase for the division is similar to the income increase that has followed each major release of SQL Server over the last decade.

In the past, when Microsoft didn't split income out, the developer tools division was seen as a cost, but a necessary cost. Microsoft's developer tools were generally cheaper than the competition, better than the competition, and were focused at taking advantage of new technologies being introduced by Microsoft's other divisions. While they were an expense, they resulted in a surge in ISV's and kept the majority of the software being developed firmly planted on Microsoft platforms. They may have been an expense, but their efforts directly contributed to the efforts of all other internal divisions, so the expense was really seen as essential.

When they split the divisions out in order to increase earnings transparency, the tools division needed to actually make money. They couldn't act as a loss-leader anymore. Unfortunately, the steps that have been taken put the tools division in direct opposition to the needs of Microsoft itself. Let's look at these steps one by one to prove the point.

Up until VSTS, Microsoft had a premium developer SKU: MSDN Universal. For an afforable annual fee per developer, a development house got all of Microsoft's development tools, development/test copies of all of Microsoft's server products, copies of Office, quarterly updates to the documentation library, and more. It was a cost people were accustomed to paying, and many a budget was designed expecting to pay that for the new premium SKU.

Businesses and developers were shocked to hear the base (non-discounted) price of nearly $11,000 per seat for Team Suite and nearly $5,500 for each individual Team Edition. This resulted in reduced uptake for Team Foundation Server, and an increase uptake in the mid-range SKU (MSDN w/ VS Pro), which was actually a savings for developers.

Microsoft's defense was that even though developers got all of everything before with MSDN Universal, they were getting more than "everything" now, so the cost had to go up. Customers didn't see it that way. They used to pay for a duck. It walked like a duck, swam like a duck and quacked like a duck. Now that they were being told that this duck was an endangered water emu, they didn't feel like paying triple for it.

S. Somasegar's announcement that they were going to risk Vista incompatibilities in order to get VS2005SP1 out to customers because "customers demanded it" rang false to me. Maybe it's the old blue badge in me, but the "customers demand it" justification was used for more bad decisions than just about anything else I can think of. Truth be told, many large developers won't install any new development tool from Microsoft until it hits the first service pack. The developer tools division is risking their latest and greatest tool not working on the latest and greatest operating system in an effort to get more sales to people who won't install Vista until Vista SP1.

In 2003, 52% of programmers worldwide used some version of Visual Basic. Even this month, according to the TIOBE index, available Visual Basic resources outnumber C# resources by over 3 to 1, and the trendlines show VB resources increasing at seven times the rate that C# resources were decreasing. Visual Basic game development resources pop up on a daily basis. The vast majority of Visual Basic game coders refer to themselves as hobbyist-level.

So, if you're developing a hobbyist-level game development tool targeting the .NET Framework, what do you do? If you're the XNA team, you evidently slash and burn your target market. Not only did the XNA team decide that VB wasn't worth a v1 release, but for the first time since November 2000, Microsoft is saying that VB isn't worth it as a game development solution. (In November 2000, Microsoft released DirectX 8.0, which supported VB through a type library. While not easy to use, nor full featured, it was a step towards proving VB's capabilities, and motivated Managed DirectX.) For a community like the BASIC community, which has been backed by Microsoft since the company's inception, it's a kick to the crotch.

So, dev tool guys, dumb question time. Would you be making these same product decisions if your earnings weren't being exposed? Would you be taking care of your other divisions and your customers if you didn't need to make that number on the balance sheet go higher?

[Blog] Rename, Renew

This blog has been renamed from "Rom's Rants" to "Michael Russell | Blog". I wanted the name of the blog to be consistent for when the blog gets integrated into the new site.

Speaking of the new site, the initial pieces are in place. While it's mostly built on top of the Personal Web Site starter kit from Visual Studio 2005 (using VB, naturally), there are some extra items under the hood.

I'll be slowly re-adding a lot of the previous content into the new framework over the next two weeks, and hopefully, I'll have the blog integrated by the end of November.

[XNA] The Curly Brace Agenda

Evidently, the initial release of XNA Studio Express Edition will only be C#.

I can't say that I'm that surprised, but I am rather disappointed.

I can see not supporting C++/CLI. I can see not supporting J#. But come on, guys...VB nowadays is essentially C# without the curly braces and an easier development system. Or to put it more bluntly, C# is VB with curly braces and unsafe memory access.

I know that there is more than sufficient interest from the VB camp. But come on, guys...

C# as a programming language had the lowest barrier to entry for universities and specialty schools that are currently teaching dedicated game programming and design courses. Many professional game studios already use C# to develop some of their game production tools and students would be able to get some exposure to the language.
What you are saying is that professional game developers gravitate towards C# because it resembles the C-style languages that they have been using for two decades now. XNA Studio is letting you not only encourage additional professional game development using C#, but also getting C# in front of more students.

This isn't about promoting game development for the masses anymore. This is about promoting C# using game development as a trojan horse.

What kills me is that VB would have been easier for the 360. The braintrust behind C# added in unsafe memory access for those rare occasions where it would help with speed, but to maintain system security on the 360, the team is going to have to essentially nerf that capability on the 360 for C#. With VB, the nerf isn't needed because we haven't been trusted with unguarded keys to the system. We have to use marshalling in order to do that, and we suffer a performance hit for it.

You had a good mission, guys. Pity you let the language define the terms.

October 10, 2006

[Testing] How To Help QA

In my last post, I went on for a bit about how careers for video game QA entry-level positions were currently laughable. It's unfortunate, but true given the current state of the industry.

Are there long-term solutions to the problems facing entry-level QA? I'm unsure on this one. The industry is still evolving, and QA in the games industry is currently seen where QA in the application-development industry was seen about fifteen years ago. It's seen a cost to be minimized. That said, I think that the value in QA will definitely increase in about three to five years...it's just a matter of do you really want to hang out making $8-12 an hour for three to five years waiting for it to be better?

Companies can help make things easier on QA as well as position themselves for a jumpstart as they move down the road doing just a few simple things. It may not seem like much, but it is a start.

First, tier your QA department. Most QA departments have three levels...manager, lead and tester. For projects with one or two projects, this is all you really need. If your company has more than two projects, though, consider tiering as a way of not only making management easier, but as a way of rewarding people who perform.

A tester who has been through a full project and proven himself could be promoted to a senior tester, then to a test lead, then to a senior test lead, then to a manager. It may seem silly to have the extra ranks around, but ranks and tiers are a very visible way to measure progress inside a department where progress is generally capped at the management level.

Second, move to shifts. Just as programmers make mistakes when they've been coding for more than eight hours and generate more work for themselves and others, QA techs make mistakes when they've been testing for more than eight hours. If you have to have overtime, don't let someone work more than ten hours a day, and never more than 50 hours in a week. The burnout isn't worth it, and you aren't buying as much extra testing with those overtime hours as you might think.

Third, management in QA needs to have started in QA and worked their way up through QA. Never hire someone new into a lead capacity or management capacity unless they have a games QA background. Games QA is unique enough that people need to know that they're working for people who have been in the trenches and fought the same battles that they are facing day-to-day.

Fourth, management needs to be testing as well. Even if as QA manager, you're only getting in five to six bugs a week, it still shows that you are doing the work and walking the walk. Plus it gives a really good set of datapoints for when you're dealing with problem cases. "Dude, what's wrong with you? You didn't even get in as many bugs as the QA maanger, and he only tested for an hour last week..."

Fifth, set aside some time for unorthodox testing and activities. Do things like Tuesday and Thursday afternoons are for buddy-testing, or Friday afternoons are game days. Team building exercises help your testers feel like they are part of a family and reduce turnover.

Finally, have a one-on-one meeting with each tester behind a closed door at least once a week. Give them a chance to tell youa bout any problems they are experiencing, let them talk about their career plans, ask them how their dog is doing, etc. The important thing is to listen. You don't have to talk, just give them a chance to vent some steam. If they bring up concerns, note them, look into them, and bring them up next meeting. Your people will take care of you if you take care of them.

These are simple items, but they can help retain your staff during the next few years of futility. If you can reduce turnover, you'll have an experienced staff ready to battle the forces of evil defects at a moment's notice. Just imagine how much more effective they'll be when you're able to start paying them what they're really worth...

October 9, 2006

[Testing] Careers In Games QA Management

So, you want a career in video game quality assurance? Please allow me to offer one word of advice...

NO!

Outside of the video game industry, quality assurance can actually be a viable career option. Experienced testers are in high demand, and people who can think logically and can break down tasks into sections small enough to be properly tested will always have a job open for them.

However, inside the video game industry, testers are considered fodder for the machine. Long hours, low pay, an average "career" length of five months...it adds up. The only way that a career in games QA is going to go anywhere is if you get into lead-level or above QA, and that's where this article comes in.

In order to make it in QA management, you not only have to have the basic skillset of any tester, but you also need to have at least some knowledge of how the business of the games indsutry works, have some understanding of development, and be able to negotiate and understand the consequences of your negotiations.

For the business side of things, you need to be able to think about the ramifications of missing your ship dates, the tradeoffs made between bringing on additional headcount versus the potential savings for technical support calls, whether shifted employees or overtime will be better, what tasks should be outsourced versus what people want to be outsourced, etc.

We'll use outsourcing as an example here. Right now, a major effort towards outsourcing QA is in place in this industry. That said, unless a task is atomic enough that it can be handed off to someone new, such a task is ill-suited towards outsourcing. Configuration testing is great to outsource. You provide a list of configurations, a build, and a list of test cases. You'll pay on average $100 to $200 per configuration for testing, but in the end, the money spent will be saved on support calls. Configuration testing works because the amount of work is finite, creativity in testing isn't required, and spot-checks can be made based on configs in house.

Understanding development is a major necessity to break into QA management as well. You need to keep up on the tech, development methodologies, stages of a product's lifecycle, etc. These things help you understand when to start up certain tasks, when to pressure for certain tasks on the dev side to be finished (for example, a build for the config labs so there will be enough time to fix config bugs), etc.

Finally, we've got negotiation. Negotiation is the fine art of letting someone else have your way, and it is a critical skill if you want to make sure that the major bugs that are in your bug database are going to get fixed. This, combined with understanding the development process, is the major key to success in QA management.

For example, let's say you are having a bug committee meeting. (Some companies call this triage.) In a bug committee meeting, everyone goes over the active bugs in the databases and people try to reach a consensus as to which bugs are going to get fixed pre-ship, which will be fixed in a patch, and which are going to be dismissed outright. These are common during the end stages of any game development project because people are trying to reduce the amount of asset and code changes to a bare minimum.

Let's say that you've working on a multiplayer FPS with a zone-control mode similar to Halo's "King of the Hill" mode. There are two bugs currently being considered by triage. One bug is that if a player shoots 10,000 bullets in a row and doesn't hit a single enemy, that player's client crashes to the desktop. The other bug is that 5% of the time, the HUD element that tells you that the zone is being controlled by the enemy reports incorrect information. The lead developer on the project says that he only has enough time left on the project to fix one of the two.

Do you push for the crash bug fix, even though the likelihood of it ever being encountered in the real world is slim to nil? Do you shoot for the HUD item being fixed because it will be encountered by everyone who plays multiplayer, even though it isn't a stability issue? Do you offer up some lower-priority issues that are still open for the chopping block to make the time available for both to get fixed? What do you do?

So what will you get if you manage to make it to the level of test lead? On average, test leads make between $30,000 and $35,000 per year in the United States. Test managers start at about $50,000 and go up based on experience. Given that the average game tester makes between $17,000 and $20,000 per year, the pay increase is generally worth it. The only downside is that once you go above tester, you're usually salaried, so don't expect any overtime. Most companies that have salaried employees also have profit sharing or bonuses for said employees, so make sure that you ask about it before signing on the dotted line.

[Industry] Blogging Without A Net

Some of you may have noticed that the number of QA-related people in the games industry that blog are...well...nearly non-existant.

There'a good reason for that. Testers are, by their very nature, pessimistic. They see the worst there is to see in this industry. They see the builds that require systems to be reformatted and reinstalled. They see the petty bickering that leads to severity-1 bugs being buried under a pile of politics. They have access to a lot of information (release dates, build status, feature lists, etc.) that nobody outside the company should have access to...and it scares people to have that kind of information in the hands of what they see as "cheap temp labor" for the most part.

So why am I blogging? It's a good question. To be honest, there have been several times over the last two years where I've nearly said, "Fuck it...it's not worth it." But I keep it up anyway. I keep thinking back to the "Mistakes" Demotivator...

I guess the biggest reason why I'm blogging now is because I was blogging before I started at Ritual. I asked the CEO during the interview stage if I could continue to blog after joining the Tribe, and was told that I could as long as I didn't divulge any information that would be under NDA in my blog.

That said, I can't say that blogging has been without its share of controversies. I've been accused of being a mouthpiece for the company, a vengeful ex-Microsoft employee, a profiteer, and a few things that I'd rather not print.

As for the mouthpiece accusation, I always try to toe the company line in forums and message board posts, but this is my space. While I've been asked to talk about certain items, I've never been asked to support or suppress any viewpoints. Anything that pops up on this server is because of me. If I've written it, it's been my own words and my own thoughts. Occasionally, it has put me at odds with the powers that be here, and in that respect, I'm really blogging without a net.

As for the vengeful ex-Microsoft employee accusation, I've never had anything against Microsoft itself. In fact, if I could go back to Microsoft, I most likely would. My only issue with Microsoft is with a single employee...someone that if I had to choose between unemployment and working with this individual again, I'd probably pick unemployment...and that's a hard thing to say. If you want to know who, go back through the blog archives. You'll be able to figure it out.

The profiteer accusation makes me laugh. Since I run Google AdSense ads on this site and occasionally link to Amazon, people think I'm raking in the dough. Trust me...nothing could be further from the truth. I've yet to earn any money from Amazon, and I haven't earned enough from AdSense to get my first check yet...even though I've been running the ads for over two years.

So I don't blog because I'm a corporate mouthpiece. I don't blog because I hate Microsoft. I don't blog to make money. So again, why do I blog?

The "Mistakes" Demotivator pretty much sums it up. Survival in Quality Assurance is mostly about making fewer mistakes than those around you. I know I've made more than my share of mistakes in this industry, but I keep learning from them and growing from them. If someone else can learn from one of my mistakes, then the industry as a whole improves...and that's actually motivating.

October 8, 2006

[Misc] Weekend Mishmash

GameDaily has a look at several ways that game publishers get improved coverage/reviews for their games. They did miss two of the more common ones, though. Some publishers essentially write the articles for them. You can tell when this occurs when you see major sections similar or identical across several articles. Other publishers offer a "guided walkthrough." This is where the publisher writes a walkthrough, but includes helpful notes like, "If you look to your right here, you'll see [significant feature x]in action when [blah]." You'll then see all of the pubs that use that walkthrough mention [feature], even though no gamers actually care about [feature] or would even notice [feature] if it wasn't pointed out to them.

My wife ordered the two of us matching laptops yesterday evening. Fortunately, she let me pick them out. (She picked out her last one, and has never been happy with it.) So in about two weeks, I'm going to have to format and reinstall her current machine so I can send it to my granddaughter, set up my machine so that it will have Visual Studio 2005 on it (or maybe I'll just install XNA Studio Express Edition and force myself to live solely in C#-land for awhile).

Code work on something I've mentioned in this blog has been finished for over a week, but there is one last "hiccup" that needs to be tested before I can sign off on it completely.

The lack of DOS game compatibility in Vista is really starting to piss me off. I guess I should try to break in DOSBox sometime this week.

(Updated Monday, 10/9: Fixed bad tags.)

October 6, 2006

[XNA] Wrap Your Shaders

One nice thing that the XNA team did was their BasicEffect class. Essentially, they're wrapping a shader in a class to prevent you from having to worry about setting effect parameters manually, and to keep you from having to pick the right technique.

You can do it yourself as well, but unfortunately, you can't inherit from Effect because it's a sealed class.

This sample class wraps the sample shader shown in "How to: Apply an Effect". Let me know if you have any problems with it.

using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Components;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;

namespace Shaders
{
public class SimpleEffect
{
private Effect myEffect;
private Game myGame;

private const string effectSource = @"
uniform extern float4x4 WorldViewProj : WORLDVIEWPROJECTION;

struct VS_OUTPUT
{
float4 position : POSITION;
float4 color : COLOR0;
};

VS_OUTPUT Transform(
float4 Pos : POSITION,
float4 Color : COLOR0 )
{
VS_OUTPUT Out = (VS_OUTPUT)0;

Out.position = mul(Pos, WorldViewProj);
Out.color = Color;

return Out;
}

technique TransformTechnique
{
pass P0
{
vertexShader = compile vs_2_0 Transform();
}
}
"
;

private Matrix wvp;
private EffectParameter wvp_p;

public Matrix WorldViewProjection
{
get { return wvp; }
set {
// This check takes less time than it takes to set (and possibly recompile) the shader constant
if (value == wvp)
return;

wvp = value;
wvp_p.SetValue(value);
}
}

public SimpleEffect(Game g)
{
CompiledEffect cfx = Effect.CompileEffectFromSource(effectSource, null, null,
CompilerOptions.None, TargetPlatform.Windows);
myGame = g;
IGraphicsDeviceService gfxSvc = myGame.GameServices.GetService<IGraphicsDeviceService>();
GraphicsDevice dvc = gfxSvc.GraphicsDevice;

if (dvc.GraphicsDeviceCapabilities.VertexShaderVersion.Major < 2)
throw new BadObjectException("This shader requires vertex shader 2 or above.");

myEffect = new Effect(dvc, cfx.GetShaderCode(), CompilerOptions.None, null);
wvp_p = myEffect.Parameters["WorldViewProj"];
}

public EffectPassCollection Passes
{
get { return myEffect.CurrentTechnique.Passes; }
}

public void Begin(EffectStateOptions flags)
{
// If you have multiple techniques in your shader, you'd pick the right one here.
myEffect.CurrentTechnique = myEffect.Techniques["TransformTechnique"];
myEffect.Begin(flags);
}

public void CommitChanges()
{
myEffect.CommitChanges();
}

public void End()
{
myEffect.End();
}
}
}

[Charity] Can Gamers Help MDA?

My wife, Yvonne, is going to be participating in this year's MDA Lockup.

If you want to help bail my wife out, help fight muscular dystrophy, and show that gamers have a charitable bone in their body outside of Child's Play, this is your chance.

My wife's donation page is here. Several people at Ritual Entertainment have already donated. Will you?

October 5, 2006

[Games] American Luncheon

Just got back from a nice lunch with American McGee.

American McGee with Levelord (left) and Rob Atkins (right)

The main problem with taking a picture is that you can't be in it...

October 2, 2006

[Personal] Friends

Sometimes, a weekend of quiet introspection can be a dangerous thing.

This weekend, I spent a lot of time coding, testing Windows Vista, and unpacking. Somewhere in the midst of all that, I realized that I hadn't actually gone out and done anything with people I could consider "friends" since I moved here last January.

For the last 21 months, my life has consisted of work, coding and games. That's it. I thought leaving my family behind in Utah would be hard, but I never thought that the loss of my social network would be the hardest thing to hit me in Dallas.

So I guess it's time for me to try to build a new social network in the Dallas area. I figure I'll start by meeting up with some fellow gaming geeks on October 14 at Half-Price Books.

After all, games are more fun when they're played with someone else.

October 1, 2006

[Piracy] Gears of War

(No, I'm not linking to it.)

Sorry, Epic. I know how much it sucks to have it happen.

At least you can take solace in the fact that the percentage of 360 users who know enough to use the bits and are willing to use the bits is small enough that it won't affect your bottom line very much.

But still, the pirates are definitely sucking donkey balls on this one.

Any bets that the Xbox 3 is going to require an Internet connection so it can download the executables on first launch?