The future is here, it was twenty years ago
I was in a panel discussion last week (having to do with the future of online communities). I was 'the wiki guy.'
The broader focus of the colloquim was whether companies should 'back' efforts in blogging, or richly-featured Content Management Systems. I heard breathless boosterism for ideas that 'someday, in the future' (and the subtext of those messages was that we're still waiting for more powerful tools), online communities will be fairly close analogs to our daily existence.'
I was tempted to say bosh! -- but as an invited guest, I thought of a better tack.
I asked them to imagine the kind of online world we'd been talking about for two days...
Imagine an online world with upwards of several thousand people interacting at any one time. Imagine an online world that has a working economy, that has good people doing good and bad people doing, well, shit. Imagine that world with law enforcement standards and lawyers. Imagine an online world where participants have not only a 'home page,' but a virtual home or office or store that they can design, construct and supply. Imagine an online world that has several THOUSAND distinct 'regions' within its confines.
and then...
Imagine that to gain access to this phantasmagorical world, you needed only to have anything equal to (or more powerful than) a 20-something year old Commodore64 and a 300bps modem.
This future world exists. To be accurate, it existed over 20 years ago (the mid 1980's) and it was called Habitat.
Twenty-six years later and we're still talking about things Habitat did -- in the misty-eyed future tense.
If you have time for ONE article on building online communities. If you have any interest in seeing why MySpace is such a rich destination and why almost every corporate site in the world isn't -- read the following article by Chip Morningstar and Randy Farmer.
I promise. You'll like this.
---------------------------------------------------------------------------
The Lessons of Lucasfilm's Habitat
Chip Morningstar and F. Randall Farmer
This paper was presented at The First International Conference on Cyberspace held in May 1990 at the University of Texas at Austin. It was published in Cyberspace: First Steps, Michael Benedikt (ed.), 1991, MIT Press, Cambridge, Mass.
Introduction
Lucasfilm's Habitat was created by Lucasfilm Games, a division of LucasArts Entertainment Company, in association with Quantum Computer Services, Inc. It was arguably one of the first attempts to create a very large scale commercial multi-user virtual environment. A far cry from many laboratory research efforts based on sophisticated interface hardware and tens of thousands of dollars per user of dedicated compute power, Habitat is built on top of an ordinary commercial online service and uses an inexpensive -- some would say "toy" -- home computer to support user interaction. In spite of these somewhat plebeian underpinnings, Habitat is ambitious in its scope. The system we developed can support a population of thousands of users in a single shared cyberspace. Habitat presents its users with a real-time animated view into an online simulated world in which users can communicate, play games, go on adventures, fall in love, get married, get divorced, start businesses, found religions, wage wars, protest against them, and experiment with self-government.
The Habitat project proved to be a rich source of insights into the nitty-gritty reality of actually implementing a serious, commercially viable cyberspace environment. Our experiences developing the Habitat system, and managing the virtual world that resulted, offer a number of interesting and important lessons for prospective cyberspace architects. The purpose of this paper is to discuss some of these lessons. We hope that the next generation of builders of virtual worlds can benefit from our experiences and (especially) from our mistakes.
Due to space limitations, we won't be able to go into as much technical detail as we might like; this will have to be left to a future publication. Similarly, we will only be able to touch briefly upon some of the history of the project as a business venture, which is a fascinating subject of its own. Although we will conclude with a brief discussion of some of the future directions for this technology, a more detailed exposition on this topic will also have to wait for a future article.
The essential lesson that we have abstracted from our experiences with Habitat is that a cyberspace is defined more by the interactions among the actors within it than by the technology with which it is implemented. While we find much of the work presently being done on elaborate interface technologies -- DataGloves, head-mounted displays, special-purpose rendering engines, and so on -- both exciting and promising, the almost mystical euphoria that currently seems to surround all this hardware is, in our opinion, both excessive and somewhat misplaced. We can't help having a nagging sense that it's all a bit of a distraction from the really pressing issues. At the core of our vision is the idea that cyberspace is necessarily a multiple-participant environment. It seems to us that the things that are important to the inhabitants of such an environment are the capabilities available to them, the characteristics of the other people they encounter there, and the ways these various participants can affect one another. Beyond a foundation set of communications capabilities, the details of the technology used to present this environment to its participants, while sexy and interesting, are of relatively peripheral concern.
What is Habitat?
Habitat is a "multi-player online virtual environment" (its purpose is to be an entertainment medium; consequently, the users are called "players"). Each player uses his or her home computer as a frontend, communicating over a commercial packet-switching data network to a centralized backend system. The frontend provides the user interface, generating a real-time animated display of what is going on and translating input from the player into requests to the backend. The backend maintains the world model, enforcing the rules and keeping each player's frontend informed about the constantly changing state of the universe. The backend enables the players to interact not only with the world but with each other.
Habitat was inspired by a long tradition of "computer hacker science fiction", notably Vernor Vinge's novel, True Names (Vinge, 1981), as well as many fond childhood memories of games of make-believe, more recent memories of role-playing games and the like, and numerous other influences too thoroughly blended to pinpoint. To this we added a dash of silliness, a touch of cyberpunk (Gibson, 1984; Sterling, 1986), and a predilection for object-oriented programming (Sussman and Abelson, 1985).
The initial incarnation of Habitat uses a Commodore 64 for the frontend (see note 1). Figure 1 is a typical screen from this version of the system. The largest part of the screen is devoted to the graphics display. This is an animated view of the player's current location in the Habitat world. The scene consists of various objects arrayed on the screen, such as the houses and tree you see here. The players are represent by animated figures that we call "Avatars". Avatars are usually, though not exclusively, humanoid in appearance. In this scene you can see two of them, carrying on a conversation.
Avatars can move around, pick up, put down and manipulate objects, talk to each other, and gesture, each under the control of an individual player. Control is through the joystick, which enables the player to point at things and issue commands. Talking is accomplished by typing on the keyboard. The text that a player types is displayed over his or her Avatar's head in a cartoon-style "word balloon".
Figure 1 -- A typical Habitat scene (© 1986 LucasArts Entertainment Company).
The Habitat world is made up of a large number of discrete locations that we call "regions". In its prime, the prototype Habitat world consisted of around 20,000 of them. Each region can adjoin up to four other regions, which can be reached simply by walking your Avatar to one or another edge of the screen. Doorways and other passages can connect to additional regions. Each region contains a set of objects which define the things that an Avatar can do there and the scene that the player sees on the computer screen.
Some of the objects are structural, such as the ground or the sky. Many are just scenic, such as the tree or the mailbox. Most objects, however, have some function that they perform. For example, doors transport Avatars from one region to another and may be opened, closed, locked and unlocked. ATMs (Automatic Token Machines) enable access to an Avatar's bank account (see note 2). Vending machines dispense useful goods in exchange for Habitat money. Many objects are portable and may be carried around in an Avatar's hands or pockets. These include various kinds of containers, money, weapons, tools, and exotic magical implements. Table 1 lists some of the most important types of objects and their functions. The complete list of object types numbers in the hundreds.
Many objects are portable and may be carried around in an Avatar's hands or pockets. These include various kinds of containers, money, weapons, tools, and exotic magical implements. Listed here are some of the most important types of objects and their functions. The complete list of object types numbers in the hundreds.
| Object Class | Function |
| ATM | Automatic Token Machine; access to an Avatar's bank account |
| Avatar | Represents the player in the Habitat world |
| Bag, Box | Containers in which things may be carried |
| Book | Document for Avatars to read (e.g., the daily newspaper) |
| Bureaucrat-in-a-box | Communication with system operators |
| Change-o-matic | Device to change Avatar gender |
| Chest, Safe | Containers in which things can be stored |
| Club, Gun, Knife | Various weapons |
| Compass | Points direction to West Pole |
| Door | Passage from one region to another; can be locked |
| Drugs | Various types; changes Avatar body state, e.g., cure wounds |
| Elevator | Transportation from one floor of a tall building to another |
| Flashlight | Provides light in dark places |
| Fountain | Scenic highlight; provides communication to system designers |
| Game piece | Enables various board games: backgammon, checkers, chess, etc. |
| Garbage can | Disposes of unwanted objects |
| Glue | System building tool; attaches objects together |
| Ground, Sky | The underpinnings of the world |
| Head | An Avatar's head; comes in many styles; for customization |
| Key | Unlocks doors and other containers |
| Knick-knack | Generic inert object; for decorative purposes |
| Magic wand | Various types, can do almost anything |
| Paper | For writing notes, making maps, etc.; used in mail system |
| Pawn machine | Buys back previously purchased objects |
| Plant, Rock, Tree | Generic scenic objects |
| Region | The foundation of reality |
| Sensor | Various types, detects otherwise invisible conditions in the world |
| Sign | Allows attachment of text to other objects |
| Stun gun | Non-lethal weapon |
| Teleport booth | Means of quick long-distance transport; analogous to phone booth |
| Tokens | Habitat money |
| Vendroid | Vending machine; sells things |
Implementation
The following, along with several programmer-years of tedious and expensive detail that we won't cover here, is how the system works:
At the heart of the Habitat implementation is an object-oriented model of the universe.
The frontend consists of a system kernel and a collection of objects. The kernel handles memory management, display generation, disk I/O, telecommunications, and other "operating system" functions. The objects implement the semantics of the world itself. Each type of Habitat object has a definition consisting of a set of resources, including animation cels to drive the display, audio data, and executable code. An object's executable code implements a series of standard behaviors, each of which is invoked by a different player command or system event. The model is similar to that found in an object-oriented programming system such as Smalltalk (Goldberg and Robson, 1983), with its classes, methods and messages. These resources consume significant amounts of scarce frontend memory, so we can't keep them all in core at the same time. Fortunately, their definitions are invariant, so we simply swap them in from disk as we need them, discarding less recently used resources to make room.
When an object is instantiated, we allocate a block of memory to contain the object's state. The first several bytes of an object's state information take the same form in all objects, and include such things as the object's screen location and display attributes. This standard information is interpreted by the system kernel as it generates the display and manages the run-time environment. The remainder of the state information varies with the object type and is accessed only by the object's behavior code.
Object behaviors are invoked by the kernel in response to player input. Each object responds to a set of standard verbs that map directly onto the commands available to the player. Each behavior is simply a subroutine that executes the indicated action; to do this it may invoke the behaviors of other objects or send request messages to the backend. Besides the standard verb behaviors, objects may have additional behaviors which are invoked by messages that arrive asynchronously from the backend.
The backend also maintains an object-oriented representation of the world. As in the frontend, objects on the backend possess executable behaviors and in-memory state information. In addition, since the backend maintains a persistent global state for the entire Habitat world, the objects are also represented by database records that may be stored on disk when not "in use". Backend object behaviors are invoked by messages from the frontend. Each of these backend behaviors works in roughly the same way: a message is received from a player's frontend requesting some action; the action is taken and some state changes to the world result; the backend behavior sends a response message back to the frontend informing it of the results of its request and notification messages to the frontends of any other players who are in the same region, informing them of what has taken place.
The Lessons
In order to say as much as we can in the limited space available, we will describe what think we learned via a series of principles or assertions surrounded by supporting reasoning and illustrative anecdotes. A more formal and thorough exposition will have to come later in some other forum where we might have the space to present a more comprehensive and detailed model.
We mentioned our primary principle above:
• A multi-user environment is central to the idea of cyberspace.
It is our deep conviction that a definitive characteristic of a cyberspace system is that it represents a multi-user environment. This stems from the fact that what (in our opinion) people seek in such a system is richness, complexity and depth. Nobody knows how to produce an automaton that even approaches the complexity of a real human being, let alone a society. Our approach, then, is not even to attempt this, but instead to use the computational medium to augment the communications channels between real people.
If what we are constructing is a multi-user environment, it naturally follows that some sort of communications capability must be fundamental to our system. However, we must take into account an observation that is the second of our principles:
• Communications bandwidth is a scarce resource.
This point was driven home to us by one of Habitat's nastier, externally imposed design, constraints, namely that it provide a satisfactory experience to the player over a 300 baud serial telephone connection (one routed, moreover, through commercial packet-switching networks that impose an additional, uncontrollable latency of 100 to 5000 milliseconds on each packet transmitted).
Even in a more technically advanced network, however, bandwidth remains scarce in the sense that economists use the term: available carrying capacity is not unlimited. The law of supply and demand suggests that no matter how much capacity is available, you always want more. When communications technology advances to the point were we all have multi-gigabaud fiber optic connections into our homes, computational technology will have advanced to match. Our processors' expanding appetite for data will mean that the search for ever more sophisticated data compression techniques will still be a hot research area (though what we are compressing may at that point be high-resolution volumetric time-series or something even more esoteric) (Drexler, 1986).
Computer scientists tend to be reductionists who like to organize systems in terms of primitive elements that can be easily manipulated within the context of a simple formal model. Typically, you adopt a small variety of very simple primitives which are then used in large numbers. For a graphics-oriented cyberspace system, the temptation is to build upon bit-mapped images or polygons or some other graphic primitive. These sorts of representations, however, are invitations to disaster. They arise from an inappropriate fixation on display technology, rather than on the underlying purpose of the system.
However, the most significant part of what we wish to be communicating are human behaviors. These, fortunately, can be represented quite compactly, provided we adopt a relatively abstract, high-level description that deals with behavioral concepts directly. This leads to our third principle:
• An object-oriented data representation is essential.
Taken at its face value, this assertion is unlikely to be controversial, as object-oriented programming is currently the methodology of choice among the software engineering cognoscenti. However, what we mean here is not only that you should adopt an object-oriented approach, but that the basic objects from which you build the system should correspond more-or-less to the objects in the user's conceptual model of the virtual world, that is, people, places, and artifacts. You could, of course, use object-oriented programming techniques to build a system based on, say, polygons, but that would not help to cope with the fundamental problem.
The goal is to enable the communications between machines take place primarily at the behavioral level (what people and things are doing) rather than at the presentation level (how the scene is changing). The description of a place in the virtual would should be in terms of what is there rather than what it looks like. Interactions between objects should be described by functional models rather than by physical ones. The computation necessary to translate between these higher-level representations and the lower-level representations required for direct user interaction is an essentially local function. At the local processor, display-rendering techniques may be arbitrarily elaborate and physical models arbitrarily sophisticated. The data channel capacities required for such computations, however, need not and should not be squeezed into the limited bandwidth available between the local processor and remote ones. Attempting to do so just leads to disasters such as NAPLPS (ANSI, 1983; Alber, 1985) which couples dreadful performance with a display model firmly anchored in the technology of the 1970s.
Once we begin working at the conceptual rather than the presentation level, we are struck by the following observation:
• The implementation platform is relatively unimportant.
The presentation level and the conceptual level cannot (and should not) be totally isolated from each other. However, defining a virtual environment in terms of the configuration and behavior of objects, rather than their presentation, enables us to span a vast range of computational and display capabilities among the participants in a system. This range extends both upward and downward. As an extreme example, a typical scenic object, such as a tree, can be represented by a handful of parameter values. At the lowest conceivable end of things might be an ancient Altair 8800 with a 300 baud ASCII dumb terminal, where the interface is reduced to fragments of text and the user sees the humble string so familiar to the players of text adventure games, "There is a tree here." At the high end, you might have a powerful processor that generates the image of the tree by growing a fractal model and rendering it three dimensions at high resolution, the finest details ray-traced in real time, complete with branches waving in the breeze and the sound of wind in the leaves coming through your headphones in high-fidelity digital stereo. And these two users might be looking at the same tree in same the place in the same world and talking to each other as they do so. Both of these scenarios are implausible at the moment, the first because nobody would suffer with such a crude interface when better ones are so readily available, the second because the computational hardware does not yet exist. The point, however, is that this approach covers the ground between systems already obsolete and ones that are as yet gleams in their designers' eyes. Two consequences of this are significant. The first is that we can build effective cyberspace systems today. Habitat exists as ample proof of this principle. The second is that it is conceivable that with a modicum of cleverness and foresight you could start building a system with today's technology that could evolve smoothly as the tomorrow's technology develops. The availability of pathways for growth is important in the real world, especially if cyberspace is to become a significant communications medium (as we obviously think it should).
Given that we see cyberspace as fundamentally a communications medium rather than simply a user interface model, and given the style of object-oriented approach that we advocate, another point becomes clear:
• Data communications standards are vital.
However, our concerns about cyberspace data communications standards center less upon data transport protocols than upon the definition of the data being transported. The mechanisms required for reliably getting bits from point A to point B are not terribly interesting to us. This is not because these mechanisms are not essential (they obviously are) nor because they do not pose significant research and engineering challenges (they clearly do). It is because we are focused on the unique communications needs of an object-based cyberspace. We are concerned with the protocols for sending messages between objects, that is, for communicating behavior rather than presentation, and for communicating object definitions from one system to another.
Communicating object definitions seems to us to be an especially important problem, and one that we really didn't have an opportunity to address in Habitat. It will be necessary to address this problem if we are to have a dynamic system in the future. Once the size of the system's user base has grown modestly large, it becomes impractical to distribute a new release of the system software every time one wants to add a new class of object. However, we feel the ability to add new classes of objects over time is crucial if the system is to be able to evolve.
While we are on the subject of communications standards, we would like to make some remarks about the ISO Reference Model of Open System Interconnection (ISO, 1986). This 7-layer model has become a centerpiece of most discussions about data communications standards today. It is so firmly established in the data communications standards community that it is virtually impossible to find a serious contemporary publication on the subject that does not begin with some variation on Figure 2. Unfortunately, while the bottom 4 or 5 layers of this model provide a more or less sound framework for considering data transport issues, we feel that the model's Presentation and Application layers are not so helpful when considering cyberspace data communications.
Figure 2 -- The 7-layer ISO Reference Model of Open System Interconnection
We have two main quarrels with the ISO model: first, it partitions the general data communications problem in a way that is a poor match for the needs of a cyberspace system; second, and more importantly, we think that the model itself is an active source of confusion because it focuses the attention of system designers on the wrong set of issues and thus leads them to spend their time solving the wrong set of problems. We know because this happened to us. "Presentation" and "Application" are simply the wrong abstractions for the higher levels of a cyberspace communications protocol. A "Presentation" protocol presumes that at least some characteristics of the display are embedded in the protocol. The discussions above should give some indication why we think that such a presumption is both unnecessary and unwise. Certainly, an "Application" protocol presumes a degree of foreknowledge of the message environment that is incompatible with the sort of dynamically evolving object system we envision.
A better model would be to substitute a different pair of top layers (Figure 3): a Message layer, which defines the means by which objects can address one another and standard methods of encapsulating structured data and encoding low-level data types (e.g., numbers); and a Definition layer built on top of the Message layer, which defines a standard representation for object definitions so that object classes can migrate from machine to machine. One might argue that these are simply Presentation and Application with different labels. However, the differences are so easily reconciled. In particular, we think the ISO model has, however unintentionally, systematically deflected workers in the field from considering many of the issues that concern us.
Figure 3 -- A possible alternative protocol model
I Welcome all!
On what a cursor works this forum works? We want to to create WWW project about building materials and to make for a WWW site a this script.
How to do search necessary?
To me it is necessary to find http://car.townusasite.com/lakeway-auto-morristown.html
but I do not know as to do it.
I require your participation.
Posted by: DewLiballelay | 01 February 2008 at 07:06 AM
cexigrzt nsipcjb ehlt gbcfqw eohbj awyet mzqknpv
Posted by: hjpa jdwiay | 13 February 2008 at 03:30 AM
zsaw gfemt enms bexgfuma lpszt dhpyfingw nxwfrg [URL=http://www.vphrqxjty.mwqpgovt.com]nifuwlra faulnmog[/URL]
Posted by: timycb lhgeaxso | 13 February 2008 at 03:32 AM
gdpxql iztc qgwu yrzqkn qohp almhy erkwp [URL]http://www.uicqk.iwlbfp.com[/URL] peyr zqrkvmn
Posted by: aesncw grhi | 13 February 2008 at 03:32 AM