Notes on an object-oriented simulated space

An OpenACS simulation is a collection of interactive objects, plus a set of roles and tasks. In the first part, it is conceptually similar to a MOO (Multiple-User Dungeon, Object-Oriented). This is a technology dating to 1990, in which a database of interactive objects is presented to users through a text interface. MOOs, in turn, are based on MUDs (Multiple-User Dungeons), which are many years older. More recently, MOOs have been supplanted by multi-million dollar commercial MMORPGs (Massively Multiplayer Online Roleplaying Games), which are essentially MOOs with graphical instead of textual interfaces. Given their lineage and success, it makes sense to draw on MOO technology when designing our simulation object model.

Objects

Basic MOO objects

Root Class
  Room
  Thing
    Note
    sittable object
      furniture
  Event-dispatching object
    Containing Object
      Player
        Builder
          programmer
            wizard
        Guest
    Exit
    Container
      Openable Container

Object Attributes

(From the LambdaMOO Programmer's Manual

There are three fundamental attributes to every object:

   1. A flag (either true or false) specifying whether or not the object represents a player,
   2. The object that is its parent, and
   3. A list of the objects that are its children; that is, those
   objects for which this object is their parent. 

"Every object has eight built-in properties whose values are constrained to be of particular types. "

name         a string, the usual name for this object
owner        an object, the player who controls access to it
location     an object, where the object is in virtual reality
contents     a list of objects, the inverse of `location'
programmer   a bit, does the object have programmer rights?
wizard       a bit, does the object have wizard rights?
r            a bit, is the object publicly readable?
w            a bit, is the object publicly writable?
f            a bit, is the object fertile?

Verbs

Minimal MOO verbs:

  • put

    take

    get

    drop

View comments on this page at openacs.org