Nightmares of Game Developers

Last night, I woke up in the middle of the night while having a terrible dream. I dreamt that the game-updater no longer worked. This meant I had no way to get fixes and improvements to my users. I couldn’t even give them a new updater that worked (*well, I could, but only if they tracked me down). I calmed myself down and managed to get back to sleep.

Today I had to get out a fix for a bug that wouldn’t let players load some of their saved-games. I put together a fix, and tried to put out an update. What happens? The game-updater no longer worked. With the recent change that allowed the game to use foreign character sets, I had inadvertently broke the updater. It took me two frantic hours to figure out what was going wrong, and I came up with a way to work around the updater bug. At least it wasn’t irrevocably broken.

Yup, these are the kinds of nightmares that software developers have.

Video: Jesse Schell, Design Outside the Box

Carnegie Mellon University Professor and game developer, Jesse Schell, talks about game development. He has some interesting ideas. My comments below the video.

I have to admit that I’ve been somewhat mystified by some of the things that have become popular in the past few years. For example, if I’d heard the idea for Chat Roulette, I would’ve just thought, “Well, video conferencing with random match-ups. I don’t know that it will go anywhere. It might languish in obscurity.” But, it was huge.

Recently, I went and looked up some of the highest-subscribed video channels on YouTube, just to see if I could find some interesting stuff. I was shocked by the low-level of talent and entertainment value. I’m still mystified by it. My only guess is that those video channels are heavily followed by kids in the twelve to fifteen year-old range, and it’s just not something that I’m going to understand. (Case in point: Ray William Johnson, who has the fourth highest number of channel views this month, and routinely gets over two million views per video.) Again, I’m just mystified.

One thing I’ve noticed about inventors and businesses over the past few years is that lots attempted ideas that never go anywhere. Even people who have become very successful end up with lots and lots of failed ideas – both before and after their one or two successful ideas. Sometimes it seems like a crapshoot, and even the experts can’t predict what ideas are going to be successful. They just try one idea after another, picking themselves up after each failure, until they stumble on something that gets popular.

One of the things I was thinking about recently was the concept of “fail quickly”. It’s a phrase that entrepreneurs use to describe trying something, seeing if it works, and if it isn’t going to work, then you want to fail quickly and get on to the next thing. I can understand the logic behind that – given the fact that most ideas will end up failing.

In the second part of his talk (beginning around 18:30), he discusses the idea of getting points for doing different things in life. This idea just seems horrible. Fortunately, I don’t think it would catch-on (but, as I mentioned earlier, I could be wrong). Not only would it allow companies to create a kind of virtual carrot in front of us to drive our behavior, but the sheer amount of thought that would go into capturing these points would deprive us of an existence deeper than simple consumerism. What he’s describing is a situation where people’s minds are preoccupied with reaching corporate-constructed goals.

This Weeks Tidbits

Cool New Flash Drive

I picked up a new flash drive recently. This is a 4GB flash drive that I picked up for $15. (All the electronics are stored in the black plastic area you see here.) A quick look at Amazon reveals that they’re selling 128 GB USB flash drives. I’m amazed how small this stuff is.

John Carmack and Apple

John Carmack recently commented that working with Apple is a big pain. I know how companies like to control their image, but there are some times when it gets ridiculous. Retaliation for saying the wrong thing about them?

“My relationship with Apple has been long standing, but it’s a rollercoaster ride,” he told Kotaku. “I’ll be invited up on stage for a keynote one month and then I’ll say something they don’t like and I can be blacklisted for six months.”

Working with Apple on iPhone games has been no different, Carmack said, but he is happy to see that former collaborator Graeme Devine is now working at Apple in the iPhone Game Technologies division. (Source)

You’d think that someone as big as John Carmack would have enough weight to avoid getting these kinds of punishments.

Google Chrome

Ever wonder why Google made Chrome, and started pushing it on Aren’t there already a perfectly good browsers (Firefox, Safari)? I was confused for a while until I thought about this.

Mozilla, the organization behind the popular Firefox web browser, has extended its search deal with Google for another three years. In return for setting Google as the default search engine on Firefox, Google pays Mozilla a substantial sum – in 2006 the total amounted to around $57 million, or 85% of the company’s total revenue. The deal was originally going to expire in 2006, but was later extended to 2008 and will now run through 2011. (Source)

Google’s business is advertising. Maintaining its advertising sector means staying on top as the number one search engine in the face of upstarts like Microsoft Bing. Sure, Google can keep paying Firefox hundreds of millions of dollars to be the default search engine (which, by the way, Bing doesn’t appear on the Firefox Search-Dropdown at all). But, someone at Google must’ve realized that they don’t want to be at the mercy of Firefox. The more marketshare Firefox has, the worse the negotiating position is for Google. I’m sure Google doesn’t want to get in a bidding war with Microsoft over Firefox’ search window. Someone at Google obviously realized that even if they can take 20% marketshare from Firefox, that would reduce Firefox’ negotiating power, and save them a lot of money. Ideally, Chrome would eat-up all of Firefox’ marketshare. Chrome users are, by default, pointed to Google’s search-engine. It just makes sense for Google to drop a few million on their own browser rather than pay-off Firefox year after year.

So far, Google Chrome has made a strong showing; 30 million users after just 10 months, which is a heck of a trajectory. Firefox is around 330 million users (24%), and IE still has 2/3rds of the browser market.

Smart people saying dumb things:

In the smart-people-saying-dumb-things department, I ran across the comment below on a blog recently. (To be fair, I can’t actually vouch for Brad Armstrong being smart.)


The internet has enlightened me to how misunderstood the software and the software industry is. I like the “big corporations” spin; it’s always a good way to side-step people’s critical thinking centers of the brain. Maybe I should comment about the legal system being a right of all Americans, and therefore, he should have to work for free. I think it’s entirely fair to call someone a hypocrite if they demand that software developers work for free, while they work a job that pays their bills. Only full-time volunteers (40-50 hours/week) and people who give 100% of their income to charity are allowed to cast that stone. It’s irksome that software developers have to justify getting paid for our work.

I’m also thinking of becoming an anti-physical property believer. Everything should be shared with everyone. That’s the best way to meet everyone’s needs. The big corporations don’t want us to share because sharing means buying less stuff. This means that you’re a wicked and evil person if you stop me from borrowing your car, watching your TV, using your computer, and sleeping under your roof. Oh, and I’m inviting all my hippie friends. They don’t shower because it messes up the natural oils on their skin. If you try to stop me, I’ll just have to “beat the system in order to fight the big corporations who own the corrupt legal system” – i.e. I’ll take what I want. Ownership is a scam created by the big corporations!

World of Goo, Pay What You Want

2d Boy recently had a 1-year anniversary sale on their game “World of Goo”. The game normally sells for $20, but now you can pay whatever you want for the game (minimum of 1 cent). They also asked people why they paid what they did, and released statistics on how much people paid.

The Results:

57,000 people downloaded the game over the past week. The average price paid was $2.03. In total, that adds up to $115,710. Because PayPal takes 30 cents + 2.9% of each payment, they ended up paying 13% of that ($15,000) in transaction fees, leaving them with $100,000, or $1.75 per buyer.

Here’s their bar-chart of the money paid and number of people at each price (click for a larger image):

Full Survey Results are here.

I have to admit that I’d thought about trying the “pay what you want” model for future games. It’s hard to interpret these results, though.

The Bad:
People paid very little – developers saw a scant $1.75 per sale.

There are some reasons that this should be taken with a grain of salt, though. I can think of quite of few reasons why this payment was low. First, the game has been out of a year. This means that everyone who would’ve paid $20 for it probably already bought it. Maybe 2dBoy is picking up the people who were willing to pay for it, but weren’t willing to pay $20. Also, in the questionnaire, asking why people paid what they did, 11.6% said they already owned it on a different platform, so they were just giving 2dBoy a few dollars for the opportunity to have it on another platform.

Of the 12% who actually answered the survey, when asked “How much do you think this game should cost normally?”, 85% said this game should normally cost $10 or more. But, only 12% of survey responders actually paid $10 or more. And only 5% of buyers paid $10 or more. Based on the sales numbers, 23,335 people (41%) paid 99 cents or less, and less than a third paid $2 or more. This is one of my fears of the pay-what-you-want model; that people will admit that a game is worth X dollars, but a large majority will pay much less than that if they have the opportunity to pay you less.

The Good:
They got a lot of sales, which added up to $100,000. That is, $100,000 on top of their previous income.

For comparison, 2dBoy says that the game actually cost about $116,000 to produce. Although, $116,000 is their “minimum living expenses” cost. They said that it took two people two years to produce the game, and $96,000 covered their living expenses – which translates to $24,000 per person per year; which is not a decent living.

I’d like to be able to try to generalize these numbers, but there’s a lot of difficulty in doing that.

First of all, World of Goo is a very popular game. So, trying to vindicate the pay-what-you-want model based on “they already earned $100,000 and only spent $116,000” doesn’t work very well. Afterall, World of Goo is probably in the top 99th percentile of games produced. So, if they made $400,000 on a $116,000 investment (ie. a good profit), it would also mean that 95% of the games on the market would be showing losses in the same situation.

Second, the pay-what-you-want model generates free publicity. Since World of Goo is essentially a first-tier game, it benefits disproportionately from free publicity. A second or third tier game might get a lot less free publicity, and then they’d get less benefit. To put it another way, let’s say that pay-what you want causes people to pay you less money, but increases the number of buyers. The numbers for some fictional games might look like this:

Using normal sales model:

GameX (Popular) 1000 buyers / month $10 revenue per sale = $10,000 revenue per month
GameY (Obscure) 50 buyers / month $10 revenue per sale = $500 revenue per month

Switching to a pay-what-you-want sales model, GameX (which is popular) gets lots of free publicity on gaming websites and blogs, GameY (which is obscure) gets a handful of mentions but remains obscure:

GameX (Popular) 8000 buyers / month $2 revenue per sale = $16,000 revenue per month
GameY (Obscure) 80 buyers / month $2 revenue per sale = $160 revenue per month

In the case above, GameY didn’t gain much in publicity, but it saw a sharp drop in the amount paid for their game. It would be a losing strategy in that case.

I also have to wonder about how pay-what-you-want model will change over time. Right now, it’s relatively novel, but if everyone did it, would the publicity decline — and, therefore, cause a decline in the profitability? In the survey, almost 1 our of 4 people said that they like the pay-what-you-want model and want to support it. But, if it becomes popular, will people stop supporting it because it is “established”? And what percentage of them paid higher amounts of money? Theoretically, the “we want to support pay-what-you-want” people could account for 100% of the people who paid $5 or more, and they could disappear as the model becomes more popular.

The Future of Games?

I was thinking today about the future of game development and graphics. The year I graduated from High School (1992), there were two major game-genres created. Dune 2 created the real-time strategy genre and Wolfenstein created first-person shooters.

Here’s a sample of the graphics. They’re not that impressive, but they were for the time.

Dune 2 gameplay (1992):

Wolfenstein gameplay (1992):

Doom (1993):

Compare that to the latest games:

All of this makes me wonder: where things will go in the future? We jumped from Wolfenstein 3d (1992) to this in 17 years. Now, add another 20 years of technology improvements, where will we be then?

I think we’re approaching the limits of how much graphics can be improved. Even if we quadruple the number of polygons rendered every second, it’s just doesn’t result in huge image-quality benefits like it used to. The major issue now is getting artists to create all that content – the geometry, textures, animations, etc. Some of the areas where I think we’ll be seeing improvement:

Graphics and Expansive Worlds:
– We’re getting to the top of what can be improved as far as graphics goes. A number of games are already boasting expansive game-worlds measured in hundreds of square miles. It seems like it won’t be long before there’s good libraries of realistic 3d models that game developers can drop into games. There’s still a big market for unique look and feel (see Brutal Legend, Team Fortress, Plants vs Zombies) which will be done with armies of artists. And there’s also lots of work to be done in level design.

– Work on physics systems have come a long way in the last decade. Games like Crysis started showing off the fact that their physic models can handle thousands of barrels collisions at the same time. Collision detection, cloth simulation, fluid dynamics are definitely getting there. The Havok physics engine allows games to drop-in physics systems into games, so it’s being standardized. The technology behind damaging 3d objects isn’t quite there. (For example, the Halo Warthog never shows any signs of damage.) There are some racing games that tries to simulate car collision damage, but it ends up being a one-off system that isn’t standardized for game engines.

One racing game that simulates damage to vehicles:

Even in the case where games do simulate damage, it’s done in predefined ways – for example, they might have “after a car accident” cars, but they don’t have “hit by a grenade” or “shot by a gun” damage unless they explicitly create that damage.

Collisions between humanoids gets even more complicated, which is why combat in games is mostly a bunch of scripted moves. Ever notice how in games like “World of Warcraft” that a character’s weapon seems to move through the enemy? That’s because calculating the actual collision effects are too complicated. Realistically, it would include factors like the weight of the weapon, the character’s strength, the weight distribution of the enemy being hit, his muscle tension, etc. Systems like Euphoria (below) at least try to handle that kind of stuff.

Artificial Intelligence:
AI covers a whole bunch of different things. There is so much work to be done on AI that we’ll still be doing work 20 years from now. I would be nice if there were “AI engines” like there are 3d engines, now, but it seems that every game has to reinvent the wheel when it comes to AI. This is partly because “AI” is really a blanket term covering a whole bunch of different things, and also because the AI has to work well within the game rules (whatever they may be). Some types of AI systems:

– Character AI: embodied, realistic actors with personality, knowledge, desires, etc. They should be able to handle conversations. Right now, this is generally handled with predefined conversations where game designers offer players a limited set of responses. Ideally, you would want a very open conversation, but that takes enormous amounts of work. That system is also vulnerable to problems if the game plot changes. (For example, if a character is removed from the game, you won’t want anyone to make reference to that person in any conversations.)

Recently, I watched a video for “The Witcher 2”. They were boasting about the advanced AI, but I didn’t think it was that impressive. For example, in this scene, the witcher casts a spell. Game characters react, but they don’t react realistically:

For a really believable set of characters, they should’ve had a whole variety of factors influencing their reaction. First: is magic common in the game world? If magic is uncommon then they should be astonished and fearful. If magic is common, then the spell should be less surprising. In this particular scene, it seems that the characters could’ve been killed if the magic was targetted at them – which should make them nervous. And, the AI system should figure out if the game-characters were aware of who cast the spell. If the spell-casting was obvious and within their visual field, they should react to the player. Depending on their culture, religious beliefs and the exact situation, they might react in a hundred different ways, ranging from “what the heck just happened?” to “bow down and worship the player as a god” to “kill the witch” to “run away before he kills us all” to “thank god we have a powerful magic man like you on our side”. The reaction of game characters should also depend on the particular situation. For example, if the player-character says, “I’m a powerful wizard, give me your money” (and then casts a spell to intimidate the low-level game-characters), they should react by giving him what he wants. But, if the player says, “I will help you defeat the evil lord …”, then the player casts a spell, they will be impressed. Character AI gets very complicated, but then, it’s trying to simulate human reactions – which *is* a very complicated thing. Game developers can script these kinds of reactions, but it’s a lot of work and players will always do something you didn’t think of. It would be nice if developers could drop-in game-characters that could react realistically without developers needing script reactions to a hundred different things the player might do.

– Strategic AI: decision-making (deciding what to build, where and when to attack, expectations of success, forming alliances, starting wars, making trades). It also needs to have a knowledge-system, beliefs about what other players know and expect. It needs to anticipate other player’s actions and determine intentions (is the other player sending that transport over to invade my territory, or is he merely bumbling around on the map?). Ideally, the strategic AI could learn, so if players figure out clever ways to consistently beat the AI, it would react to stop that exploit – like a real-person would.

– AI voice-generation (intonation, timing, realism) – this should include an AI personality and mental state, since those things influence speech. Very difficult, probably not possible without a full-scale AI.

– Voice comprehension / text-comprehension – I’m not talking about speech-to-text technology, but actual comprehension. This is very difficult, probably not possible without a full-scale AI.

– AI/Body/Physics interaction (sports games, Force Unleashed). One irritation of mine is how games don’t handle simple things like foot-planting. Instead, in games like World Of Warcraft, characters can spin around in a circle without moving their feet. (See foot-planting in Madden ’09.) At least the character-movement and collision systems are starting to be handled by systems like Euphoria. I’ve been impressed by some of the things I’ve heard about the Euphoria engine. For example, game-characters can see if you are throwing something at them, and put their hands up in front of their face in an attempt to protect their head. All this kind of stuff will be standard.

– Pathfinding AI. Pathfinding is all about finding the best path from point A to point B. To function realistically, it should include character knowledge and the AI’s mental-map: does the game-character know the area or not? The pathway has to take into account body-type (humanoid, rodent, etc), athleticism (can he jump, crawl). I’ve seen some middleware engines that will handle this kind of navigation. It would be good to have a generalized pathfinding system that can work in 3D worlds, allowing game-characters to intelligently find their way around, even if the player disrupts the game-world (by destroying walls, blocking doorways, etc). Here’s a demo of one system:

– We’ll look forward to better/faster tools for creating stuff (AIs, game-world terrain, etc). Instead of, say, placing every plant on a landscape, the tools will allow creators to have game-worlds grow organically based on predefined settings (vegetation types, geography, etc) and then they can go through and edit areas to put-in the things for the game. Right now, these kinds of tools are available within game editors, but it should become standardized so that these types of tools can be used across games and game-engines.

– We’ll eventually have access to 3d-objects that contain a wide variety of animations and behaviors. For example, a truck that contains a suspension system, and gets damaged in realistic ways from weapons and collisions. Or, animals that are packaged into a standard format that contains not only the 3d image and animations, but reacts intelligently to sensory information, and has behaviors. For example, deer and birds have behaviors like eating, and wandering. They get startled easily and run away in response to nearby people and sounds. This gets more complicated by the fact that the animal would have to perceive the environment around it and react to it – for example, if it wants to run away, it looks for it’s escape paths. It can’t run up a cliff or through a fence, so the pathfinding AI has to integrate with this system. Its behavior system might cause it to avoid confined spaces, and prefer staying near vegetation where it is hidden. It would be very nice if game developers could just drop-in various animals into a game world and they would react intelligently to it.

EoS Display Issues

It’s always odd for me to see my game on other people’s displays. Not because “it’s my game on their computer”, but I’m talking about the display properties of their screens. It seems like flat-screens are all over the place when it comes to good color fidelity. In general, when I look at the game on other people’s displays, the color palette is over-saturated, overly bright, and bad. It looks like Super Mario Brothers (not that their color palette is bad, just inappropriate for my game). It makes me want to add something to the preferences so that people can tone-down the colors. It’s probably true that most people simply don’t do any adjustment of their display’s color balance, and stores tend to make their displays super-bright just to make them stand out. I suspect that my display is under-saturated, and I shouldn’t be using it when I’m making color choices. On the other hand, I recently hooked up my game to a big-screen TV, and the colors looked okay — much, much better than it looked on a laptop minutes earlier. It’s just one more complication to deal with when making games.

Here’s what I mean by saturation and brightness:

Plants Vs. Zombies Interview

Interesting interview with the Plants Vs. Zombies creator in the latest issue of Edge. You can read it online here. The game designer says four people were involved in creating the game: a game designer, programmer, artist, and musician, and it took three years to develop. My guess is that it’s about 8 to 10 man-years of work. I also like the fact that he made the game easy to learn because he doesn’t like opening a game manual (and I can certainly relate to that kind of game design).

It’s an addictive little game. You can get the demo (one hour of play) or buy it on Steam for $10.

Nintendo Games Play Themselves

Just thought this was odd/funny:

Beginning with the upcoming New Super Mario Bros. Wii (due this holiday season), players will be able to pause a game during a particularly difficult level and let the game take over to complete the level. Press a button at any time to resume playing. This will help reduce barriers of entry for new or younger players – without purchasing a strategy guide or resorting to websites that list cheat codes.

Source: USA Today: Nintendo confirms secret ‘Help’ feature

When I first heard about this feature, I thought that the game would play-through the level by itself to show you how to do it, but wouldn’t actually move you through the game.

Nintendo even got a patent on it.

iPhone Development

I’ve been asked a few times about whether or not I’ll create iPhone applications. I haven’t looked into it much, prefer desktop/laptop development, and generally feel that the iPhone “gold rush” is over anyway. I think there was a time, a few years ago, when you could get a big benefit by being the first one there. But, everyone noticed the opportunity, and now there’s lots of competition. From what I can tell, there are a few success stories, and the vast majority of iPhone apps languish in obscurity.

Here’s two contrasting articles. The first one is written from the user’s perspective. You’d get the impression that iPhone development is a gold-mine. But, of course, he only mentions the most popular applications:

Last month, I became an obsessive air-traffic controller. The culprit: a terrific game for the iPhone called Flight Control. The premise is simple: You’re faced with a crush of planes, and it’s your job to guide each one to its respective runway…. According to Firemint, the game’s publisher, the 99-cent app has been purchased more than 700,000 times since March; at its peak, it was being downloaded 20,000 times a day.

Last fall, [Ethan Nicholas] spent weeks—some of it while cradling his 1-year-old son—writing a tank-war game called iShoot. The game, which sold for $2.99, hit the App Store in October, and in January, it shot up to the top spot—selling hundreds of thousands of copies and earning Nicholas enough to let him quit his job and take up iPhone development full-time.
Source: Slate

The second article is about iPhone development from a software-developer’s perspective. It isn’t the gold-mine you’d think it is. There are 40,298 applications for the iPhone. The author does some estimates to figure out the average profitability of an iPhone application (about $1,881). At that amount, you’d better be cranking out a decent application every month to earn a bare-minimum living ($22k/year). Of course, there’s a lot of variability in this: some huge successes and lots of applications that earn next to nothing. So maybe “average” isn’t the best way to look at this. Afterall, if you have 70 applications that earn $1 million each, 2,000 applications that earn $1000, and 38,228 applications that earn $100 each, you’d end up with his same numbers. It would look more like a lottery under these numbers – almost everyone would end up poor, and a handful of people would get rich. These same numbers would also produce a bunch of “success stories” – 70 of them – that the media could write about, as if the iPhone was a sure-way to quit your day-job and earn a great living.

From what I hear, the top-selling applications tend to get a boost by getting onto Apple’s Top 10 list, and (to a lesser extent) the Top 50 list. Again, this suggests that there are some big winners, and a lot of losers.

Update, June 9, 2009: It’s nice to get a little confirmation of my view. In a recent blog post, iPhone developer Rick Strom says:

First, so you know where I stand among the 60,000 or 600,000 (I’ve heard both numbers) registered iPhone developers: I have nearly 20 apps in the app store as of this writing.

Four of those apps are on the charts:

* Zen Jar #34 Social Networking (paid)
* Zen Jar Lite #54 Social Networking (free)
* Spirit Board #36 Board Games (free)
* Spirit Board Pro #95 Board Games (paid)

With two apps on the [Top 100] paid charts, one would assume I’m rolling in dough. After all, this is a gold rush, right?

The reality is much more startling. In order to place #34 on the social networking charts, you need 30-35 downloads a day. At the standard app store pricing of .99, and after Apple takes its cut, that means your app needs to bring in a little over $20 a day to chart at that position. And social networking is a popular category.

Perhaps you’d expect the game charts to do better. Board games isn’t a wildly popular category, but it still might surprise you that it takes about 6-8 downloads a day to chart. That means if you are making around $4 a day you’ll be in the top 100.

So what does this all mean? Well keep in mind there are over 36,000 apps in the app store. If the apps on the category charts are doing those sorts of numbers, what do you think the rest of them are doing?

Nothing. Absolutely nothing. The aren’t selling at all.

I post these numbers so people can understand what is really involved here. The app store isn’t a sane marketplace at all, any more than the lottery is. When you submit an app, you are buying a ticket. Maybe you will be one of the few who makes a couple hundred grand in a hurry, but most likely you will be just another shlub tossing your blood, sweat and tears into the void where it will be ignored.