Archive for March, 2010

Empathy for the Daemon, or are you a good simulator?

Game designer Sid Meier, creator of the “Civilization” series of video games gave a talk recently called “The Psychology of Game Design (Everything You Know Is Wrong).” His main thesis was that game designer have to understand the player’s psychology when designing the gameplay elements and gave some examples from his games which violated player expectations.

Now, speaking from a programmer’s perspective, one of the prerequisite of being a good programmer is the ability to read code and understand the effects of its execution. Without this basic skill, coding becomes a matter of trial and error. Bad code will confound even good programmer’s ability to understand it, and that is one of the code smells that I look for. Quite simply, programmers must be able to simulate a computer in their heads. Some programmers can even simulate a computer down to the hardware level, to optimize registers and cache lines.

So how does this relate to Meier’s talk? Well, what he is saying is basically that game designers need to simulate the player in their heads. Each gameplay mechanic and every decision about the game that designers make must take into account how it will affect the player. But to be able to simulate the player, you must first have a model of how a player behaves. That’s why understanding player psychology is the important.

Generalizing even further, this ability to simulate is fundamental to being human, it is also called empathy. Empathy is the ability to share another person’s feelings and emotions. This can happen because we place ourselves in the shoes of another person. Some studies have shown that our neuron firing actually mirrors another person’s from just observing their emotions.

So work on improving your empathy, whether it’s for players of your game, users of your website, or executor of your code.

I Didn’t Join the Video Games Industry to Make Glorified Random Number Generators

I said that last night while discussing the state of Flash/Facebook games with my friend David. has a great article explaining some of the techniques video games use to keep players engaged.

Notice that I said engaged, not entertained. They are two different things. Games used to want players to have fun so they will eventually buy another game. If it was so the players will buy another game from the same studio, it was called building a brand. If it was so the players will buy another sequel, it was called building a franchise.

But that is a very risky thing isn’t it? To always build new games and hope it does well? A brand can be trashed with a few not so great games, see Rare. Sequels can be milked to death, see Tomb Raider. So the new way to make games is to engage the players so they don’t want to stop playing. The players don’t have to enjoy the experience, but have just enough rewards to keep them coming back. Now you can charge users more and more money for the same game without having to risk making something new. You can tweak your reward delivery channel, aka game, to ensure maximum engagement and of course maximum profit.

Not all game company think like that of course, just the more profitable ones. The problem is that this way of viewing players is growing. When engagement games grows, it takes time and attention away from enjoyment games. To compete for time and attention of the players, all games will adopt the same kind of techniques to keep players playing.

How do you see the future of gamings? Will it be drowned by the sounds of pavlovian mouse clicks?

Cloud Computing is Just Rebranding. And That’s a Good Thing.

Larry Ellison recently ranted about cloud computing at an Oracle stock holder’s meeting.


Someone asked if Oracle will be in trouble since there is a big push towards cloud computing. His answer is that cloud computing is what computers and internet has always been. The technology is the same, just called different things: SaaS, on demand software and now cloud computing.

He is right of course. Cloud computing still uses databases, CPUs, memory, harddrive and routers. It isn’t some new technology. But that’s also like saying Ajax wasn’t new because it is just XMLHttpRequest.

Cloud computing is important because it names a user experience, much like Ajax. Technology is something computer programmers and technology geeks care about, but users just care about “what does this mean to me?” What cloud computing means to the consumers is “let someone else take care about the technical details, you just use it to get your job done.”

I would like to think that the fact that cloud computing is catching on is indicative of a trend for technical people to think more terms of the ends rather than the means.

Here is an example of someone thinking about the technology rather than the experience: “No wireless. Less space than a nomad. Lame.” Of course, the iPod went on to dominate the MP3 player market. Don’t be that guy.