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.
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.