Double Buffered

A Programmer’s View of Game Design, Development, and Culture

Archive for May, 2009

Valve Actually Made a Mistake

Posted by Ben Zeigler on May 26, 2009

Since the mostly-fictional events of my last post, the Team Fortress 2 Sniper vs. Spy update was actually released. Well, before that the awesome details of the Jarate were released, including a sweet comic. After the masterful PR and hype, I was going into the update with very high expectations. And then the unthinkable happened: Valve made a moderately sized mistake, which is the first mistake I can remember them making since… Condition Zero probably.

In the new update they dramatically changed the method of unlocking new items. Previously you would unlock items by doing a certain number of class-specific achievements. So if I played a lot of Medic and did a combination of fun and tedious achievements, I would get to use new items. This system had some problems, namely that some of the achievements were poorly designed. Some were incredibly difficult to get naturally, which lead to players creating “Achievement Farming” servers were people could go and quickly get the difficult ones. The dedicated players who knew what they were doing could get the items in a few hours, while the uninformed masses might never see them. I agree there was a problem.

But the solution Valve implemented has serious issues. The achievement unlocking has been removed. In it’s place they added random drops. Now when you are playing TF2 you will randomly be awarded an item. The goal of this system, as explained by Valve, is to allow players of all types to acquire the class-specific items. They also wanted to discourage farming and encourage people to do what is actually fun, namely playing the game. These are admirable goals and I fully support the system in concept. However I am extremely frustrated at the current implementation of the system for the following reasons:

  • The drop rate seems too low and too random. I’ve played a LOT of TF2 since the update (around 15 hours) and have gotten a total of 4 items. On the other hand other people I have played with have gotten 10-15 items in the same period.
  • Out of the 4 drops I got, 3 of them were duplicates of items I already had. Valve has said that trading is coming, but until that comes in duplicates just feel like Valve is making fun of me.
  • It’s inconsistent per class. All previously-available items can still be unlocked by achievements, but the new items can’t. This means that even once you put in trading the economy is going to be screwed because 80% of items will have negligible demand. Duplicates of everything but the new items will still feel like an insult.
  • The actual drop process is not psychologically satisfying. In an MMO you loot things from dead corpses or chests. This is an inherently satisfying experience because there is a direct link between your action (killing something or finding a chest) and the reward. TF2 items are given to you at random intervals and not as a result of a specific action. Because of this the action-reward cycle is broken. The part of your brain that associates reward with choices doesn’t work at all on TF2 drops and thus they do not feel rewarding.
  • The process is very opaque. They’ve said it’s based on play time, but no one can figure out the exact system. Some players get them by remaining in spectator mode, which has lead to a lot of players sitting in spectator in the server I frequent. When it comes to anything involving random chance, the human brain tries to find patterns. Everyone is going crazy trying to figure out how it actually works. Combining a low random chance and an opaque system leads to an extremely frustrated brain as it tries to grasp at straws.
  • I don’t have anything to strive towards. With the achievement system I could plan out my play and work with a set of sub-goals that I know will lead me towards my ultimate goal. Now I have no control over getting items. Things just happen. When they don’t happen to me I don’t have an explanation, so I just get bitter.

The current system really doesn’t make any sense from a psychological perspective. They’re “rewards” but don’t actually feel good to get. They’ve stymied my free will by making all of my choices pointless. I’m actively discouraged from playing TF2 because I feel like I won’t get anything good THIS time either. This is all very unlike Valve, who normally think through the psychological impact of their decisions. I think a clue to the background to this decision lies in the following bit from the blog: “For the last number of months we’ve been working on using the Steam Cloud to store a player’s inventory. With that finally in place, we were able to deploy a new system focused on the giving of items to players.” This means that Valve has been wanting to do this for a few months but were unable to do so because of technical issues. Having seen this happen before on other projects (ask me about CoV design), my guess is that when the tech was finally done everyone was tired of dealing with the irritating system that never got finished, so it got sent out a bit half baked. The fact that it wasn’t talked about in the time leading up to the release also hints that people were internally frustrated with the whole thing. Anyway, I’m sure they’ll fix many of the issues I pointed out above, but I think I’m done with TF2 until they do.

Posted in Game Design, Game Development | Tagged: , , | 1 Comment »

Everyone At Valve Has Been Fired

Posted by Ben Zeigler on May 19, 2009

Last week Valve announced the next free update for Team Fortress 2, which would update the Sniper class. Things started fairly normal, with the announcement of a Hunting Bow and a new map type. On the third day they announced a second upgrade for the sniper, a shield that prevented one back stab per life. This leads to a fair amount of complaining from players of the Spy class on message boards across the internets. They were bitter that the sniper was given an ability that directly countered them, when spies were the explicit counter to snipers in the first place. Around this point a few players noticed something subtle: the page for the shield update had changed a few times over the day, and at some point included a picture of a de-cloaking spy directly behind the Sniper. Conspiracy theories spread, but people thought Valve was just screwing with the hardcore fans, which they’ve been known to do before.

Finally, from out of the mist of confusion, the Spy Update backstabbed the Sniper Update. For once the conspiracy theories were right. The spy gets two new items (a decoy, and permanent invisibility if you don’t move) and a HILARIOUS spread of products from MANN CO. (“We Sell Products And Get In Fights”). I very much want a camera beard, as I need to infiltrate Canada shortly. The Spy Update reveal was pulled off in a clever way that very much fit the attitude of the game. I figured that was enough excitement for one update.

But then late Saturday night Valve accidentally leaked Meet The Spy. Apparently they accidentally uploaded it to their youtube stream and did not properly set it as private. The error was quickly discovered, but in the meantime a few people had managed to download the video and it instantly spread around the internet. It spread so quickly because it was a damn fine short film (that you should watch in HD, link later). It features slapstick comedy, dramatic fight scenes, and the absolute best “Your Mom” joke I have ever witnessed. Valve obviously had planned to release the video Monday, but their thunder had been stolen by an accidental leak. Most companies would go down one of two roads: clamp down harshly on the leak and try to stop distribution, or go on with the big announcement as if nothing had happened.

Instead, over the course of today Valve decided to take what had happened and fucking run with it. The official release of Meet the Spy was modified last minute to add a reference to the leaked video (the hilarious alarm board now includes a reference to “Leaked Video” as well as a shit-ton of other references). The Spy achievement also list includes a bonus “Valve Corporate Achievement” entitled “Welcome to the internets: Fail to understand what ‘Private’ means on YouTube.” In case that wasn’t enough, Valve’s Robin Walker vowed to get to the bottom of the leak before working on any other games. He then fired Marc Laidlaw and several others. Finally after wearing down Greek intern Stavros Xanthis, Robin declared the case officially Closed. Everyone at Valve has now been fired, and we will also miss everyone who gets hired tomorrow and then fired again. It is unknown how long Robin Walker’s tyranny will stand, but rumors of him being Red Spy are just speculation. We need to find out if he speaks French and enjoys older women from Boston.

The lesson to be learned here is that when something screws with your careful plans, you take control of that thing, warp it to your every demand, and channel it into a concentrated stream of Awesome. That is how you do PR.

Posted in Game Culture, Game Development | Tagged: , , | 3 Comments »

Solving an Impossible Puzzle: MMO Controls

Posted by Ben Zeigler on May 11, 2009

My last post discussed in the abstract the various benefits of a substantial MMO Beta, and I now have a very concrete example from my own experience. Our game is at the point in development where all the major features are in, but there is still a lot of work left to make the game fun and polished. 2 months ago one of the areas that needed the most help was the combat controls. It’s something I care a lot of about personally and enjoy doing, so I volunteered to jump on that particular grenade.  It’s a tough job because controls are subjective, involve the interaction of multiple software systems, and critically affect the final game experience. No one can agree when controls (which include targeting, ability use, and camera) are good enough, but everyone knows when they suck. After spending 5 weeks on them, I can confidently say that the controls Don’t Suck. I’m not claiming to be an expert, but there’s not much documentation on the subject so I thought I would share some thoughts on the process.

Gather Intelligence

Because Controls interact with many different gameplay and design systems, I knew I had to do some research before starting to code. The first part of this was to see what we already HAD. I had been playing the beta for months and was aware of previous attempts to design the controls, and after looking around I saw there were remnants of  multiple control schemes implemented over multiple years. There was a lot of good code and many good ideas, but only one actually working control scheme, that had some issues. Additionally, there was a 90% complete back end for switching control options per-character, which wouldn’t require much modification. There were a lot of useful bits and pieces, but nothing resembling a controls system.

The second part of research was to figure out the goals of our controls system. There were 3 major sources of input here: what I wanted, what other developers wanted, and what the end users wanted. I’d been thinking about combat controls a fair bit so that part was easy. To represent the desires of other developers, I tracked down design docs and email threads about the older prototype designs and broke down what the goals of each were. It turns out everyone was trying to make the perfect default control scheme, but no one had quite gotten there. It’s normally fairly difficult to get direct feedback on controls from end users, but the game was in a beta so I just asked them. I collected the existing bug reports about combat controls and read through a few hundred complaints on the beta forums. The primary user complaints were the fact that they often accidentally attacked non-threatening objects while they were being killed by enemies, that it was hard to predict what the targeting would do, and that combat on the mouse/keyboard took more hands then they actually had. These were serious issues that had to be addressed, but for the time being they went in the back of my mind.

Prepare for the Unknown

After my week of research I now had a clear idea of what my resources and requirements were. I could have immediately started coding up the perfect targeting system that would magically satisfy all end users and fellow developers, but I didn’t.  First, I’m smart enough to know I won’t be able to come up with the perfect solution to any problem as complicated as combat controls. Second, several talented developers had already tried and failed to Solve the Puzzle. I knew that I had to redesign our code to deal with the fact that there was no perfect solution. It had to be designed for flexibility.

My first step was just to remove all of the broken stuff that obviously didn’t work. There was a fair amount of this left over from previous prototypes and removing cruft makes modifying the rest much easier. Then, I hooked up the previously-written control options back end to an in-game UI. This way it would be extremely easy to tweak individual settings without having to modify code or a data file. Finally, I moved all of the existing control options into the unified options back end. Previously they were modified by changing data files or running specific in-game commands, but now they were all modified in the exact same place. Making these changes took another week and didn’t add any new functionality, but all of the existing functionality was hooked up and ready for iteration.

Try Stuff, See What Sticks

At this point in time, I had a long list of suggestions and complaints and a system that allowed me to easily try different combinations of options at run time. I prioritized the list of suggestions (the ones I hadn’t already fixed), and just started implementing them. It only takes an hour or so to add your average control feature, which is less time then you’d spend arguing over rather it’s a good idea or not. I put in the ideas that I thought were good, the ones I wasn’t sure about, and the ones that might lead somewhere new. Important additions were the ability to specify the order of tab targeting, to change the priority of different types of targets, to automatically select or deselect on various conditions, and to modify the camera based on various actions. In between adding new features, I was constantly trying them out and seeing how they felt.

After playing around with a few odd combinations I stumbled on some pretty cool ideas. If you enable the option to show your automatic target, disable the conversion from auto to selected target on attack, set the target priority to be whatever is closest to the center of the screen, and set right click to mouselook toggle, you end up with a playable hybrid MMO/FPS control scheme. Likewise, if you enable the ability for melee attacks to ignore out of range selected targets and set the target priority to nearest, you end up with a hybrid MMO/Brawler targeting scheme that ends up being really fun for melee classes.

Publishing your First Draft

After a week of iterating personally, the control scheme options were coalescing into 3 clusters: the traditional MMO cluster that focused on precision and predictability, the Action cluster that focused on smart automatic targeting, and the Shooter cluster that used mouselook-based targeting. These would be the initial presets that players would have access to, so I made a best guess at initial settings for the two new schemes. I set the default scheme to be the same as the old settings so I would be able to compare the feedback from people who modified their controls to the control group of people using the old settings. I posted to the boards explaining the design goals and let the options loose on the Beta community. The feedback was illuminating.

That week the feedback fell into two groups. Players who had discovered the options posted generally nice feedback, but that was overwhelemed by the feedback from people who had heard there was control changes but hadn’t found the options menu. These players complained bitterly about the lack of something that was now available. There was literally no one who preferred that option to be off, so I enabled it by default and removed the option from the menu to avoid confusing people. Several other options I had added ended up being confusing and useless, so I removed those. Others fit into a middle ground where some people liked them and some didn’t, so I left them disabled but kept the ability for end users to override them. Using the feedback from that week’s beta testing, I made a bunch of modifications to the defaults for next week’s test.

Polish and Iteration

The feedback after I updated the defaults was significantly improved. There were significantly fewer negative comments on targeting than before. There was still a lot of specific feedback about missing options and confusing text, so I knew my job wasn’t done. By having week-long iteration cycles with direct player feedback, I was able to very quickly focus on what else needed to be done to make the controls system as good as it could be. After two more weeks of changes and feedback, the iteration cycle was over and I was happy.

6 weeks ago, the combat controls were one of the most commonly argued about features on the beta message boards and were a source of significant player rage. After last week’s playtest I took a look at the feedback threads and there was not a single negative comment about the combat controls, which shocked me. There were also very few positive comments. This could be because players don’t really like them, but lack of discussion is really the ultimate goal of controls: if no one notices the controls, they’re perfect. I’m sure the combination of rising player expectations and bugs will cause future complaints about controls, but it’s very satisfying to dramatically improve the experience of thousands of players over such a short period of time. That’s why MMOs need Betas, and that’s why I like working on them in the first place. It’s not about solving puzzles, it’s about making (virtual) life better for real people.

Posted in Game Development, MMO Design | Tagged: , , , | 1 Comment »