bitsifter
friday, october 24 
[sift this]  The first concept I had trouble grasping during the computer science degree was the ‘finite state machine’.  The class was tasked with writing a program to determine if a string entered was a number or not using a finite state machine.

I was baffled.  It sounds like a term from a science fiction novel, but it’s really just over-selling a boring idea.  “If this condition exists, you’re in that state.”  For example, if you entered the string “. 34” into my number parser, the first character I’d see would be the decimal point.  Hence, I’d be in the state “Decimal”.  Boring, right?   Still, the concept is totally essential in the land of the programmer who is responsible for teaching a bunch of dumb silicon chips how to make it easy for you to drag and drop.

A finite state machine is also the reason why I don’t particular like Origin’s newest addition to the Ultima series, Ultima Online.  (I apologize for the large leap, but bear with me, this has been bugging me for two weeks now).

For those of you who didn’t spend much of you teen years playing the Ultima adventure series on your Apple ][ and IBMs, suffice to say the game is basically Dungeons and Dragons for your computer.  Origin, the creators of the series, took a huge jump onto the Internet when they released Ultima Online.  The game is a multi-player adventure where thousands of players around the world interact in Britannia, the setting for the Ultima series.

A solid idea.  A potential cash cow with a month charge of $9.95 to each player.  But, folks, the game play is, well… too realistic.

Let’s go back to the original topic, finite state machines.   Adventure games are complex state machines at work.  “If I kill this create, I will gain experience”  “If I complete this mission, I will approach my final goal”.  You get the idea.   Ultima Online is not a good finite state machine because of the fact it is populate with live people who don’t follow any particular rules.  They can do whatever the want.

I sound like a communist, but remember, video games are mind candy, instant gratification.  When I sat down to play Diablo, I was kicking troll butt in 5 short minutes.  In Ultima Online, I’m trying to figure out what kind of skills I need to build a chair that I might be able to resell for meager ducats that may allow me to purchase a fancy robe that is in now way going to protect me from that damned giant spider wandering through the woods.

The designers of Ultima Online obviously are taking a brand new approach to gaming that is why they’ve constructed a game where you’re forced to do menial tasks in order to improve your character.  If you want to get stronger, work out in the training room.  If you want that fancy sword, create crafts that folks are willing to buy and save your money in the bank.  The game is a virtual world full of possibilities with nothing resembling an ultimate goal other than to “get better”.

Folks around the company are big on Ultima Online, but I’ve yet to hear someone come by with a huge grin on their face.  “I just killed the level 27 warlord and saved the princess” The stories go like this, “I wandered around a bunch.  So asshole in Trinsic picked my pocket and I still have no clue where to sell the clock I made.”

This sounds too much like real life and that isn’t what I’m looking for in a game.


[rant]  According to Forrester Research, 50% of all commercial applications developed by ISV will be distributed electronically by the year 1999.  I buy this.  I’m currently pulling more than 50% of my software off the net and I’m probably significantly ahead of the curve, but I’ve also got multiple T3 lines servicing my desktop.  Most of the U.S. doesn’t, most of the U.S. is still getting comfortable with their 28.8 modems and sets aside entire evenings to download the latest version of Netscape.  What software designers need to do is pay more attention to what data stream they’re supporting.

The idea of data streaming has been around for years.  It’s more of a concept than a technology, but it’s a metaphor that works well in the world connected via an Internet.  For example, when you’re talking on the phone, you’re receiving a stream of voice data.  If you’re on the Net and watching you’re favorite comedy show via RealVideo, you’re seeing streaming video.

There are two kinds of streams that you should really care about, an application data stream and a raw data stream.  What’s the difference?  Well, first off, you can’t have one without the other.  An application stream is essentially the process where you’re downloading an application from the Internet.  Generally, it’s a time consuming process since you’re liable to be pulling down megabytes of information.  Like I said, most folks are living in a 28.8 world so they prefer to minimize their interactions with application streams.

Raw data streams, on the other hand, tend to be relatively small.  The one you’re probably most familiar with is the stream which brought this page via HTTP.  Data streams bring the life the to applications design for the Internet.   Well-designed data streams ensure the long-time viability of a product by providing the means to constant update a application. For example, Ultima Online, a recently released multi-user world not only has a data stream which brings the world to life for a player, it also runs an auto-patch program that allows the developers to automatically update the application data.  Thus, the raw data steam and application stream almost become one in the same.

The idea of mixing data streams and application streams hasn’t been lost on the Silicon Valley.   Marimba’s Castanet does just what I described in terms of allow developers to easily update their applications as long as they’re running Castanets tuner.  Problem is, not a lot of people are.

The bandwidth available via the Internet is revolutionary not because it’s particular fast, it’s due to its general availability.  Until the Net sees a significant speed-up, software developers need to focus their efforts on the data stream rather than the application stream.