OK, let’s say I’m an amateur game developer. I’ve got an idea for a computer game where players build and manage a space colony and terraform an alien planet. I’d like to write it as a hobby project and play it against my friends.
First thing I gotta do is pick a platform. What are my options?
In theory, I could develop for a video game console. But that means super-expensive software development kits, and hardware-specific programming techniques, and besides, the company that controls the console will get to decide whether to allow my game or not. Console games are not practical for a hobbyist developer. I’d better write a computer game instead.
I could write my game for Mac OS X, using Cocoa or whatever. I’d have some pretty snazzy developer tools for building my user-interface, but only Mac users would be able to play it; that’s a pretty big drawback.
I could write my game for Windows. Same deal; snazzy tools, but only people with Windows could play it. As a one-man project, I don’t have the resources to maintain parallel Mac and Windows versions. And what about Linux users?
I could write my game using a cross-platform graphics/sound/UI library — for instance, I could write it in Python and use PyGame. Then it would run on any computer with Python installed. Yay!
But then I have the problem of how to distribute it: I have to write an installer that people can download. I need one installation method for Mac, a different one for Linux, and a third for Windows, plus the Windows installer has to bundle the Python interpreter since Windows doesn’t have Python installed by default. Then I’d have to rebuild and redistribute all three of these installers every time I made a change to the game code.
What a headache! Developing for a desktop operating system is so passe. What are my options for modern world of web 2.0 and cloud computing?
I could write it as an iPhone app, but then only people with iPhones could play it, and then only if Apple decided to approve it.
I could write my game in Flash and put it on the web. This is a much better option. I just send my players to a URL where they can play my game, Flash is supported on most browser/OS combinations, and when I make updates to my code, all players get them instantly. That’s a big thing! The drawback is that before I could begin development, I’d have to pay Adobe $700 for the professional developer kit. When it was ready to share I’d have to make sure my users install the latest version of the Flash plugin.
The open web is a development platform. It competes against Mac, Windows, Linux, the iPhone, Flash, Silverlight, etc. It’s one of the choices I have as a developer.
The hypothetical open web version of my game shares many benefits with the hypothetical Flash version. Like the Flash version, players could always play the latest version of a webapp game by just going to a URL. They can play using whatever browser and whatever operating system they want. But unlike the Flash version, nobody has to install a plugin. And there’s no SDK I have to buy.
True, the open web has many drawbacks as a game development platform. I can’t do realistic 3-D graphics or high-quality sound. The authoring and debugging tools available are very basic. And I do still have to worry about whether different browsers will interpret my JS and CSS slightly differently.
But the advantages, for me and for my users, are compelling enough that I choose to use the open web anyway.
No technology I use in my open web game development — HTML, CSS, JS, server-side SQL databases — is owned or controlled by any single company. They are standards with (mostly) interchangeable implementations. No company controls HTML, CSS, JS, etc. the way that Apple controls the iPhone, Nintendo controls the Wii, Microsoft controls Windows, or Adobe controls Flash. No company acts as gatekeeper over the open web; I don’t have to submit my game to an approval process. I only have to write one version of the game, and anybody with a computer can play it.
It’s easy to web developers to take it for granted, but remember: this freedom is the exception and not the norm. For most of the history of computing, I wouldn’t have been able to put my game in the hands of my players without the implicit permission of the company that made the hardware, the company that made the operating system, the company that controlled the software distribution channels, etc. I would have had to do my game within the limits of what these companies allowed, and I would have been able to reach only the audience that these companies allowed me to reach.
But on the open web, every single piece of the stack is a commodity. If you don’t like your operating system, you can change operating systems and still play my game. If you don’t like your browser, you can change browsers and still play my game. If I don’t like my webhost, I can change webhosts and still serve my game to you. If either of us don’t like our ISPs, we can change our ISPs and still connect to each other. And so on. The open web represents a phenomenal shift in power to the side of the user.
The open web is just one of many game development platforms, but it is the only platform where nothing comes between my game and the people who want to play it. On the open web, as long as I want to write software and somebody else wants to use it, nobody else can get in our way.
So that’s one of my answers to Jinghua’s question. Why should I care about the open web? Because when this platform is weakened by the encroachment of proprietary standards, my options for connecting to my audience as a hobbyist game developer get worse. And when it’s strengthened by more browsers supporting more open standards for doing more things, my options as a hobbyist game developer get better.