WEBoggle

Boggle is arguably one of the best candidates for a simple online multiplayer game. All of the interaction between players is at a single moment, and the scoring can be easily automated. JavaScript with DOM allows you to do a lot of really neat things, so as a test of my skills, I decided to try to make a massively multiplayer online Boggle game. It worked, but my backend code was pretty inefficient. When I brought it down, Evan offered to mirror it. He’s not only done that, but he’s improved the game beyond even my plans. Check out the game.

Motivation

Around the the end of January, I was doing some reading for work on the Document Object Model (DOM). The DOM (ideally) allows JavaScript to access and modify any element in an HTML document in a heirarchical Object-Oriented fashion (well, as OO as Javascript can ever be). The more I read about what was possible, the more I realized that I could create a totally interactive application written in merely HTML and JavaScript.

Then I remembered what I think is the most useful JavaScript feature in existance: asyncronous HTTP requests using the XMLHTTP object for Internet Explorer or the XMLHttpRequest object in Mozilla-based browsers. Using this object and a little server-side scripting, I could not only keep important logic and large files like dictionaries on the server, but I could also create multiplayer (potentially massively multiplayer) interactive online games that required nothing but a modern browser.

Think about PopCap, Pogo, Yahoo Games, and MSN Games. Every single one of the games on these sites could be done without requiring a single plugin. I thought about it, and I decided to set about demonstrating it. (It was only after this game was mostly completed that I noticed SSCrabble. While it uses similar client-side scripting techniques, it lacks the multiplayer functionality entirely, which is too bad.)

Technology

WEBoggle is primarily HTML and JavaScript. There’s fewer than 100 server-side lines of Perl, and a 90,000 word dictionary.

All WEBoggle requires is either Internet Explorer 5 or newer, or a Mozilla-based browser like Mozilla, Firebird or Galeon. (Internet Explorer 4 should work, but I’ve never tried it.). There are a few caveats, and good reasons why other common browsers like Opera do not work, but those are all listed in the Bugs section below. Also, your browser must accept cookies. Sorry.

Cheating

Cheating in an online game is an inherent problem. I’ve worked as hard as I could in order to keep important scoring logic server-side in WEBoggle. I’m only human, and it’s possible that I’ve missed something and it’s possible to modify the JavaScript source code so that it submits invalid words and they get erroneously scored.

A much easier way to cheat, however, is to write a script to give you all of the words that can be found on the board. I could have made it more difficult to do this, but as long as the letters are legible to the player, you could simply type them into a command line script that would then give you a list of words to type back into the game. There was simply no way to prevent this. (I wrote such a script in about 60 seconds, so if you’re considering it, your effort won’t make you “the first”. I was able to get more than 50 points consistantly.)

I just hope that everyone who plays this game remembers that cheating is no fun, not for you, and not for anyone with whom you’re playing..

Updates

Once WEBoggle started generating several thousand player-games per day, it started interfering with the operation of the sites on my webhost. I took it down until I could make it more efficient, and a guy named Evan Simpson came forward with an offer to mirror it for the time being.

As anyone who’s seen my Projects listing will agree, I have a short attention span. Updating WEBoggle kind of fell off my radar, and I told Evan that he was in charge. He’s done far more than I ever planned or expected: “missing words” submissions, two simultaneous games (one of which is Big Boggle), the ability to rotate the board, and a list of “words that nobody found” with each round.

Sightings

Acknowledgements

I’d like to thank everyone who helped me test WEBoggle and suggested stupid improvements: BrainiACK, Nomad, Splatta, Kazy, and especially M. Also, all the people who donated money through Paypal and posted links to WEBoggle on their blogs. At its height, more than 6000 person-games were being played every day. And a thousand thanks to Evan Simpson for mirroring and then improving the game.