Thursday, June 27, 2013

tinyMMO the First

At the end of 2009, I was reeling from my latest failure to complete an overambitious game project.  Even a pep-talk from Notch wasn't enough to get me over the finish line.  While sobbing quietly and perusing TIGSource, I came across an upcoming game creation contest where all of the artwork would be created for you.  It was called Assemblee.  Since I have the artistic ability of a four-year-old I thought this contest would be perfect for me.

This was also about the time that Javascript had gained a reputation as a not-altogether-useless language among programmers.  I had not used Javascript much beyond simple user input forms stuff and so I thought why not combine learning a language with writing a fun game?  But what type of game should I make?  Why, an MMORPG of course.

At this point we will pause to allow you to finish laughing.  An MMO?  In one month?  In your spare time?  On an untried platform?  In a language you barely know? 

Pictured: me


I was in over my head.  My first hopes sprouted when I tried a simple test using a new-fangled (to me) technology called Ajax to send and receive data without reloading the page.  With it, I was able to send position data between two clients in real-time over HTTP!  My dots could see each other move!

All games start as dots


So I had the hard part of making an MMO (the networking) working after only one day.  At this pace I would have a working game in no time, right?  Right?  Answer: this is not right.

There is an exhausting list of hurdles to overcome when building an MMO and I won't bore you by listing them all here.  By dumb luck and willingness to burn the goodwill of my wife an kids (sorry guys) I would sit up late every night after work and successfully solve one problem.  Player inventory, map loading, camera panning, zone boundaries, player chat, mob AI, and so on each day I would cross one more off the list.  My saving grace was that I solved the biggest problems facing MMOs, namely latency and synchronization, by punting.  I set my latency target at 2 seconds (note: I didn't say milliseconds) and designed the game around that.  This does not result in an action-thriller. 


More exciting than my game.

Players move like they are swimming in tar.  But at the end of the month, I had an honest-to-goodness little MMORPG

In all her glory

It has zones, mobs, loot, player classes, boss mobs, NPCs, spells, scripted AI, inventory, leveling, melee, player equipment, chat, two teams, player cooperation and even PvP!

Was it a good game?  Not really.  But it was a complete game which is as much as I could have realistically hoped for.  I spent many evenings after releasing it playing with random players.  What a feeling to see people playing, chatting, and being entertained in a little world that I created!

The game quickly waned in popularity and unfortunately changes to Google App Engine have now broken much of the functionality.  A burned up hard-drive containing all the server source-code means there is no fixing it.  In any case, for a very brief time I could look at all that I had made and it was good!  (well, to me anyway)

A special thanks to all of the great artists who made the graphics and sound for Assemblee.  Especially dbb and oryx.

No comments:

Post a Comment