Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 627

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 691

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/kses.php on line 692
Jan 31

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/formatting.php on line 82

I’m not telling you anything new by saying piracy is a huge issue on the PC. Call of Duty 4, last year’s best-selling game, sold over 7 million copies in total, but less than a million of those were for the PC. Both Crysis and Unreal Tournament 3, two major PC games, had lackluster sales number. Given this, it’s unsurprising to see fewer big titles being created for computers.

The situation is even worse in parts of Asia — at least in North America you’re unlikely to find stores openly selling pirated games. Unable to make a profit selling games, Chinese and Korean game developers have turned to online games. MMORPG like World of Warcraft are massive hits there, and so are free games like MapleStory that make you pay for special items.

A game, as a product, can be copied and distributed very easily. A game, as a service, cannot be duplicated and each player must pay for his experience — pirating a service isn’t possible. While western PC gaming is crashing down because of piracy, eastern PC gaming is booming despite piracy.

Games as service are coming on our side of the Pacific ocean. MMORPG are already popular and a few companies are hard at work bringing to our shores the free games model from Korea. This change in business model will have a big impact on the games we play, starting with a bigger focus on multiplayer. I expect consoles to follow this trend too, now that they’re able to go online.

Jan 30

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/formatting.php on line 82

Video games are the first form of art that lets the audience express itself — other forms of art are about the artist expressing herself. This is what makes games unique and so I strongly believe more efforts should be put into giving players ways to influence the games they play. Ideally, each player’s experience should be unique to that player.

Some people say that for games to be art, the creators must express themselves through their game. Some people claim that we must create games like movies, defining the experience precisely for the audience. I dislike those approaches because they deny the very thing that makes video games unique.

Jan 29

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/formatting.php on line 82

What is the most important goal of a game design doc? For me it’s getting the team to grok the game we’re building — to understand it at a fundamental level. A design doc with lots of details on everything won’t result in anything good if the team doesn’t grok the design, but a team who really groks the design will improve upon it and make a great game even if the design doc is lacking details.

What is the number one hurdle that prevents people from grokking your design? Not reading the design doc. Writing long, boring design documents makes people unwilling to read it, and unlikely to grok it.

That’s why I dislike long, extremely detailed design docs: people don’t read them. Design docs should be just complete enough that everyone groks what the game is about, no more, no less.

Jan 28

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/formatting.php on line 82

Jamie Fristrom, over at GameDevBlog, has written an interesting series of articles on the theory of drag in project management. It explains how the development of a game doesn’t progress linearly (it slows down over time), what this means for your project and what to do about it. Lots of graphs and examples from his current project make the theory concrete. A recommended read for anyone managing a software development project — and don’t forget to check the comments where people contributed interesting thoughts on the matter.

Jan 25

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/formatting.php on line 82

Last November I attended the Montreal International Games Summit, essentially a smaller version of the GDC. Among the many interesting talks, there was one called “How to Help Your Players Stop Saving All the Time” by Randy Smith, a designer working for EA LA. It was quite informative, going into great depth into the psychological impulse that makes players save their games often and how to limit that impulse so players don’t break their immersion by saving all the time.

I think Randy Smith missed the obvious: players should never save.

At least not manually. The act of manually saving — even if it’s just pressing F5 for a quick-save — breaks the fourth wall. It forces the player out of the game at least long enough for him to think “this is just a game, I’d better save to avoid any problems” — long enough to break the pace and tension of the situation.

Anyway, the designer knows much better than the player what’s coming ahead. I hate it when I forget to save for a while, then die because of some unexpected rise in difficulty, only to have to lose 15 minutes getting back to where I was. Since the designer knows what’s coming up, it makes sense if he’s the one to decide when to save instead of me.

I think automatic saving should be standard by now. It certainly has become more common place, but even major games like Mass Effect put checkpoints so far from each other that prudent players are forced out of the game regularly to save manually. Checkpoints should be common enough players don’t have to ever think about saving — even if they close the console at some random time during the level, the action should restart close to his last location.

Jan 24

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/formatting.php on line 82

Every once in a while I hear someone say something like “If only software development was as well done as house building, it would always be done on time and on budget” or “If software engineering was as good as bridge building, programs would never crash!” Those arguments are pure bullshit.

First for the house thing: anybody who has had anything built of any size knows there are delays and cost overruns. Really big projects are worse — I’ve never heard of a major governmental construction project being done on time. Construction is just as bad as software engineering when it comes to schedules and budgets.

As for the bridge thing, it’s true that bridges tend to be very reliable (although they do sometimes fall), but bridges have more room for small mistakes than software does. If a bolt isn’t tight enough in a bridge’s beam, nothing is likely to happen even though the bridge is theoretically less solid. If a single instruction is slightly wrong in a piece of software, the program will crash. Computers demand perfection, reality is a bit more forgiving.

Moreover, bridges aren’t attacked daily by people trying to make them fall. Popular software has hundreds of hackers trying to find every possible way of making it fail.

So please, if you’re one of those who compare software development to real world construction, please stop. Really, construction work isn’t nearly as perfect as you’d like to think it is. The two fields are completely different anyway — I’m sure bridge building has plenty of challenges that are entirely different from those of software development.

Jan 23

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/formatting.php on line 82

Intelligent Artifice has a number of real game design documents that were used in actual production.

Jan 22

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/formatting.php on line 82

There’s been a lot of talk about emergence in the last few years, but it always seems to be about FPS similar to Deus Ex and Bioshock. Emergence isn’t limited to immersive shooters; it can deepen the experience of many games.

An emergent system is one in which complex behaviors emerge from a set of simple rules. They exist everywhere, not just in games. For example, individual ants are very unintelligent creatures that follow very simple instincts. Yet, when you look at an ant’s nest, the million ants in it act in a remarkably organized way. That’s because the simple instincts the ants follow interact together in very complex ways that make the nest behave in a much smarter way than any individual.

Emergent games are those that use a limited number of rules that interact together to create very deep gameplay. Chess has only a few different pieces and very simple rules, yet you can play your whole life and still find new strategies. It shows the advantages of making emergent games:

  • Depth: Chess gains a lot of depth from very simple rules.
  • Consistency: You can anticipate what’s going to happen at all time in chess, everything behave in a consistent way. Most video games aren’t that predictable: you throw a fireball at a tree and it doesn’t catch fire, the boss fights play very differently from the rest of the game, etc.
  • Empowerment: Chess doesn’t have one solution, players have the power to choose their own approach. Most games are created with only one solution for each obstacle and players can’t figure out their own approach.

The best way to make a game emergent is to make everything in it apply to the whole game rather than just some situations. Take the hook shot in Legend of Zelda: you can attach it to specific locations to climb up, but it doesn’t work anywhere else. On the opposite, Thief: the Dark Project gives you rope arrows that you can shoot at anything wooden to climb the attached rope. The rope arrows are much more interesting than the hook shot because they’re useful anywhere there’s wood in sight; they allow you to find paths to your objective that even the game’s designers had never thought of.

Your approach should be to create problematic situations and to give players a variety of tools to solve those problems rather than creating puzzles that have only one specific solution. Players will find themselves really clever if they find their own solutions. One of the pleasures of Bioshock was combining powers together: you throw a fireball at an enemy who jumps in water to extinguish the fire, then throw lightning in the water to electrocute the enemy. This only works because Bioshock’s rules apply to the whole game in a consistent way.

One of the big fears I hear about emergence — especially from producers worried about their budget — is that it increases the number of things to test. If players can devise their own solutions to problems, you’ve got to make sure none of them make the game crash. It’s much easier if there’s only one solution.

That’s true, but it’s not the whole truth. One advantage of emergent gameplay is that the game behaves more consistently too, which simplifies debugging. Moreover, if a solution to a puzzle causes a bug, you can remove that solution without breaking the puzzle itself since many solutions exist. So while emergence is probably not going to reduce your QA needs, it’s not as bad as it may seem at first.

The number one reason to make games more emergent is to make them more interactive and believable. It’s a lot more fun to play when the limit to what you can do is your imagination, rather than the artificial restrictions put in place by the game developers.

Jan 21

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/formatting.php on line 82

Here’s a fascinating read on Results-Only Work Environments (ROWE), or offices where employees work where and when they want — only the results of their work is evaluated, not the number of hours they’re at the office. It would be really interesting to test that approach in a game development project…

Jan 18

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/public/wp-includes/formatting.php on line 82

Would you go see a movie without having seen a trailer for it? A game without a demo is like a movie without a trailer.

A game trailer isn’t enough because you can’t convey interactivity properly through a non-interactive video. You’re showing all the superficial aspects of the game without showing what it’s really about: gameplay.

« Previous Entries