Living in a bubble

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:

  1. Hard to write, but blazingly fast: C and C++, or even assembly if you’re really hard-core
  2. Easy to write, but so slow that you have to use them sparingly: PHP, Lua, Python, Perl
  3. 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?

~Joe


11 Responses to “Living in a bubble”

  1. Raph thought on :

    Bubbles trap everyone. So as one object example — C++ is barely taught in schools anymore, actually. Most schools just teach Java. The game industry is actually the ONLY major computer industry that focuses this heavily on C++. On the flip side, the web folks really do believe that the whole world is running Macs — and that Flickr is huge, when it patently isn’t.

    I spent much of my time at GDC saying “wake up, look at the world outside of this industry! Look at the web!” And I spent much of my time at SXSW and ETech saying “wake up! The web world bears little resemblance to the normal world!”

    But keeping a foot in every world is hard. I don’t think the bubbles are going away.

  2. Stephen Taylor thought on :

    If it dominates your life, it’s going to dominate your thoughts. I keep my work out of my mind for the most part. But that’s because I find my job mundane and uninspiring. If I was passionate about my employment I’m sure I’d spend a lot of my time thinking about how I could do what I do better.

    Is it right to focus so much? I don’t see it as a problem, myself, but I’m sure looking into other things and even other fields can help.

  3. Rich Bryant thought on :

    In all honesty, i find that documentation is the easiest way to see past a problem.

    Once you’ve analysed an issue down into atomic chunks, you can then apply design patterns and use-case goodness to it without getting locked into a code-centric view. Provided you remember that the code is not important and even the network is not really relevant. Those are just the media, not the messages.

  4. Rich Bryant wrote on :

    I’d just also like to note that i get any amount of job-spam from recruitment agencies looking for C++ developers in all kinds of industries, usually for Solaris, linux or Windows development.

    Java may have “won” if you’re a MacBSD evangelist but nobody else seems to think so.

  5. Joe thought on :

    Trying to keep a foot in every world is likely to cause paralysis by analysis. We stick to our comfortable bubbles because it reduces the problem space to something our brains can actually deal with.

    A quick monster job search for jobs in Seattle yields:
    Ruby – 24 jobs
    C++ – 45 jobs
    PHP – 59 jobs
    Flash – 93 jobs
    C# – 426 jobs
    Java – 511 jobs

    So apparently, in terms of a person’s ability to find a job, Java is kicking C++’s ass. Hell, even flash is kicking C++’s ass. Of course the two year old windows-only C# is coming up fast, so that sort of blows a hole in the “Microsoft is dead” theory.

  6. Rich Bryant thought on :

    It’s not quite “windows only” – mono is now reliable on ubuntu and (with quite a lot of directory hacking) pretty stable on OSX.

    I must try it on OpenSolaris, actually.

  7. Patrick Peak replied on :

    Take this from a ‘web’ programmers perspective.

    Flash is a different animal than other ‘programming’ languages. In most cases, its not even programmed, its used by graphic designer types who are using it to generate high impact movies or animations. You can do quite a lot with it without really getting to deep into the programming language.

    On a day to day basis, I’m working primarily in Java, and in the web world for server side programming it is king. Linux even more so. Installation of the JVM is completely irrelevant when clients are running nothing more than their browser, and all the java is on the server.

    Java might not be fast enough for the needs of game programming right now, but the language efficiency benefits of having garbage collection, etc mean that might not always be the case. JVMs are quite a bit faster now than they used to be, and there is little reason to think that they won’t continue on that path.

  8. Joe replied on :

    I guess when I think “flash” I think “flash game”. Those all have code in them. I bet you’re right. Most of those flash job ads are probably for the graphic design side of the product.

    Before starting in the game industry I worked at a company that was using Java on the server side (and C++ for the clients.) It worked pretty well even in ’98 because we could control the machines it was running on. I know the tools and VMs have gotten far better in the last 9 years. :)

  9. Patrick Peak commented on :

    Flash games are certainly going to have a lot more ‘programming’ in them. But the vast majority of flash usage is going to be similar to what we have on the homepage of my companies’ site: http://www.browsermedia.com

    Just a nice graphical slideshow/semi-interactive replacement for what might otherwise be static images. There is some scripting going on there I’m sure (one of our graphic designers did it), but in my brief experience with ActionScript (Flash’s scripting language) it has large # of issues which make it troublesome to build larger programs with.

    I have been following (in a my own bubble way) game development in Java, mostly because its easier to wrap my head around. I will be curious to see if it ever gets to the point where its suitable for production games. I know Sun has made a big effort in the past few years to make java more suitable for desktop environments (after focusing so long on the server). See http://www.java.com/en/games/ for some of their current focus.

  10. Joe wrote on :

    One of our programmers used to work in Flash when he was working on casual games. It’s apparently a real pain.

    Puzzle Pirates was written entirely in Java, and it works fine for them. Their new project is using Java for the servers and Flash for the client (mostly because the flash can run without any kind of download.) I’m sure their programmers are hating it by now.

1 Trackback

  1. Trackback from nilretain.org on :

    “Scripting Languages” vs. “High Level Languages”

    Recently, Joe wrote in his blog: 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…