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