I recently read two things struck me funny. Both are examples of how out of touch someone in another field can seem from my perspective here in the game industry. The first is an essay by Paul Graham of Y Combinator titled “Microsoft is Deadâ€. The second was in a comment in Stevey’s Blog Rant about the Next Big Language: “Its the reason C++ won over Eiffel or Smalltalk, and probably had a lot to do with Java wining [sic] over C++.†Both “Microsoft is Dead†and “Java winning over C++†are patently false in the game industry.
Microsoft is dead?
Paul Graham’s essay deserves a little more explanation. His point isn’t that Microsoft is going out of business, but that Microsoft is just no longer the big company that everyone is afraid of. This part of his essay, in particular struck me as wrong:
The last nail in the coffin came, of all places, from Apple. Thanks to OS X, Apple has come back from the dead in a way that is extremely rare in technology. Their victory is so complete that I’m now surprised when I come across a computer running Windows. Nearly all the people we fund at Y Combinator use Apple laptops. It was the same in the audience at startup school. All the computer people use Macs or Linux now. Windows is for grandmas, like Macs used to be in the 90s. So not only does the desktop no longer matter, no one who cares about computers uses Microsoft’s anyway.
We have exactly two apple computers in our office. One of them runs windows exclusively and was purchased because it’s in a noise sensitive area and the Intel-based iMacs are really quiet. The other is the laptop used by the PR person who has been sharing part of our office for the last four years. None of the programmers use Macs. None of the Artists use Macs. None of the designers use Macs. A few people have them at home (our sound designer and our producer for instance), but even that is really rare. I have two Macs at my house, but neither of them has been turned on in at least 8 years.
It’s not that we’re anti-Apple, we’re just pro-market. There are far more Windows PCs than Macintoshes in the world, and we decided to write our game for the larger market. Rumor has it that for the number of copies of the Macintosh version of Shadowbane that were sold, it would have cost Wolfpack less money to just buy each of those users a PC that it did to make their game cross platform. Is anyone but Blizzard still publishing games on the Mac at this point?
We have even fewer closet Linux users in the office. Our servers run on Windows too, so we didn’t attract Linux programmers in our recruiting. As far as I know, we have only one Linux user in the whole office. The single Linux machine in the office runs non-company related stuff for one of the founders and is about 8 years old.
As a company, our bias against Linux is a little more pronounced. The founder who doubled as our IT guy for the company’s first five years used to be a program manager at Microsoft working on Exchange Server. He had no interest in learning a whole new platform to get the office up and running. And I think the development tools on Windows (read: Visual Studio), crappy as they are, are still better than developing in C++ on Linux. Plus the client has to run on Windows, so building the servers as part of the same build process and running them on the same machines reduces all of the multi-platform overhead. Performance-wise, the two platforms are not that far apart anymore, so the traditional advantage of Linux didn’t make it worth the extra ramp-up time or development time.
So how can Paul Graham be so wrong about Windows? Obviously not “all the computer people use Macs or Linux now†in our company full of computer people. Well the biggest difference is that he’s not in the game industry. He works with early-stage startup companies, most of which are building web-based software. The people who he works with are developing thin-client applications that don’t care what operating system you use. They use whatever platform they prefer for development, and their customers will be able to do the same.
In our industry Microsoft is shaping up to own the #1 platform of the current console generation, or at least be a close #2. On that console they are the sole arbiter of what games can ship (or download) for their platform. They are also the platform provider for the PC platform, and provide the APIs that both games and game hardware vendors have to build toward. On top of all that, they publish a lot of games, which makes them a significant force on the content side of the business too. Nintendo and Sony are certainly wary of Microsoft, and I bet Ubisoft, THQ, and other publishers are too.
Java is winning over C++?
As I see it there are three kinds of languages in this world:
- Hard to write, but blazingly fast: C and C++, or even assembly if you’re really hard-core
- Easy to write, but so slow that you have to use them sparingly: PHP, Lua, Python, Perl
- Flash
Java fits into an awkward niche between 1 and 2. It’s easier to develop in than C++, but not enough to keep up with the scripting languages, and yet it’s far too slow to write the whole game in. Add to that the incredible pain of forcing your users to install the Java VM, and you get a non-starter of a language.
Flash is sort of an exception. It is ubiquitous, or nearly so, and as a result deployment of flash games is trivial. And it does enough for you that it’s perfectly usable for 2D sprite games. In some ways that’s the best of both worlds. Depending on how things go with XNA Studio, C# might join that third category, at least on the PC and Xbox. If it does, Microsoft’s dominance in our industry will be little stronger.
I don’t know anything about the background of the person who left that comment, other than that is name is Paul Johnson. Given his bias toward Java, I’m going to assume that he is writing enterprise software. In that world, the sort-of cross-platform nature of Java is actually enough of a benefit to outweigh the performance cost. And Java does a lot more for you than C++ so it is easier to code in. I just wouldn’t want to try keeping it running at frame rate.
Trapped in my own bubble
I spend all day at work in a PC-base MMO bubble. At the fringes of my bubble are non-combat MMOs like Second Life or A Tale in the Desert, but they are really outside of what I think about. Often fancy new web technology will come up in a “wouldn’t it be cool if we had blogs in our game†kind of way, but for the most part all of that is outside of my bubble too. It is a lot of work to get out of a bubble. The conferences I go to are game industry conferences, and it’s not always easy to convince the Powers That Be that even those are worthwhile. Even at a whole-industry conference like GDC I end up going to a lot of MMO talks in the hopes of picking up a new tidbit.
To try to keep in touch with the larger world, I read a lot about software development (past and present) so Game Programming Gems won’t be my sole source of engineering advice. I also read a lot about innovation in general and the origins of some of the destructively creative companies of the past thirty years. In practice, that means reading about a lot of successful startups. All of this has helped me to be a little more informed about what’s going on outside of my bubble. It doesn’t really change the fact that ten or so hours out of every day are spent diving deeper into the PC MMO bubble to get the game launched. It will probably come into play a little more when we’re planning a NEW project than at this late stage of an existing one.
It’s obvious that I’m not the only one trying to not get trapped into MMO-think or game-think. Danc is studying product development methodologies that aren’t even from software development, let alone games. Raph spends almost as much time talking about recent web developments and broader media topics as he does MMOs. I suspect that one reason these two express their thoughts so cogently is this drive toward diversification. It allows them to see the same issues everyone else sees, but from a new perspective.
What do you think? Do you think this perspective-limiting effect is actually a problem? What do you do to deal with it?