Where's My Browser Based?!
Most Internet game play is divided into three categories: true browser based, browser plugin based, and client based. Client based is the most predominant, plugin based comes next with Java and Shockwave creations, and true browser based is sadly last. WHY THE HELL IS IT LAST, DAMMIT!
The primary focus on a lot of developer's minds these days is the Internet. Internet game play, we need it. Internet game play, we can't live with out it. Internet game play, forget about the stability of the servers, can they play without lag?
Most Internet game play is divided into three categories: true browser based, browser plugin based, and client based. Client based is the most predominant - you buy or download a game that connects to the server over a specific port, and you play through the game's interface, rarely seeing your desktop behind it all. Most client games require a halfway decent machine to run them.
Browser plugin is the next most popular - most of them require Shockwave or Java. Although it's not a prerequisite, I've yet to see a decent Java or Shockwave game run reliably on anything less than a 133. And it drives me absolutely nuts when people say their game is browser based. No. The browser is the launcher into your Java or Shockwave game, much like the Start Menu is a launcher to get into your client based.
And finally, you get to my favorite - true browser based. These games require no client software - the user surfs to the site using their favorite browser, and all game processing occurs on the server. The output is then sent to the browser.
It's clean, it's simple, it's fast and can be used on any machine with a crappy Internet connection. And everyone else seems to hate it, simply because there's a severe lack of true browser games.
That simply annoys me.
I mean, sure, you've got your Earth:2025, you've got your ArchMage, you've got Utopia, Shilla, and the like. But where the hell is the expansion in these games? One company creates them, there are no player mods, the graphics suck (because well, uh, they're free, probably), and you can't expand the realm to your own liking!
This incredibly marketable world of gaming is important. Think about it: there are tons of backward schools that are still using Windows 3.1 or browsers that don't have "Back" buttons. True browser games can be played on these dinosaurs. No more solitaire, no more QBASIC attempts at laughter.
You know what needs to be done to create a really good true browser game? I'll tell ya:
- Open source the damn game. Very important. Browser based games are ignored by everyone and their microphone. By open sourcing, it'll be expanded upon much faster than closed code. You can make your money later - what's important is to create a market that realizes money can be made.
- All data files must be XML. If you're going to do a game, you want to make it as expandable and as insidious as possible. Nothing is more insidious right now as XML. XML really has a future - by creating data files in XML, you allow the rest of the world to create tools to help your game. Tons of XML editors, parsers, documentation, and utilities are already available - they save you the time of creating your own. And XML is a piece of cake to learn for anyone wanting to expand or help. Which brings me to the next point.
- Make it expandable. Old folk gamers will remember the BBS days and something called "door games". Legend of the Red Dragon was one of the most popular games available and had a wonderful little thing called IGM's. IGM's were "inner game modules", and through a common API available for C, C++, Pascal and even QBASIC, anyone could add onto LORD. 400 IGMs later, BBSs started fazing out. The important thing to remember is "400". 400! We're not talking Starcraft maps here people.
- Make it generic enough. You've got to make the base code support fantasy, science fiction, steam punk, Water World, horror, etc., so that anything can be created (although if someone wanted to recreate Water World, they've got problems). If people hate Water World, and your code is filled with Costner, you've just wasted your time (badly). Much like the Quake III and LithTech 2.0 engine, developers create what they will. You've got to create a generic, easily usable engine whose purpose is defined with XML data files.
- Let other people create servers. Release the server code. Make it simple to install. ISPs and web hosts hate working for you. They don't want to install anything nor do they have the time to care about your crappy little game. Make sure it takes five minutes to install, and doesn't required any additional modules or libraries that aren't part of the standard distro. Make sure that the user can modify everything - ISPs hate being called up to change something, only to be called a day later to change it back. Make the server code generic enough so that one installation can serve as many games as created. If your user has to bother his ISP to create a sequel to his first game, you've inconvenienced the wrong people.
- Make a central player database. If players all register their character with one database, that character can be used in any player's world on any server. If one player's favorite game stops, they can take their character to any other game, and continue their history. Of course, pulling this one off is going to fun (how do you handle character conversions from a medieval game to sci-fi? Or handle characters adventuring in their player's own created world, getting zillions of special abilities, and then trouncing everyone's Care Bear ass?)
Five of the steps above were written from my very own game notes. I've started the process multiple times in the past - but have always been sidetracked by other delays. The sixth step, open sourcing the game, was added for this article. I've gotten to the point where I just want to see a game made. Perhaps now something will blossom?
If you're interested in continuing and contributing to my efforts, leave a comment below. Interested people would definitely inspire me to get things going again.
If you're looking for existing open source, web based games, take a gander through SourceForge - there are a few, but as of this printing, none that deal with XML or are as generic is what I intend.