<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Notes on an object-oriented simulated space</title><meta name="generator" content="DocBook XSL Stylesheets V1.62.4"><link rel="home" href="index.html" title="Simulation"><link rel="up" href="design.html" title="Design"><link rel="previous" href="permissions.html" title="Permissions"><link rel="next" href="simulation-lifecycle.html" title="Lifecycle of a Simulation"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="permissions.html">Prev</a> </td><th width="60%" align="center">Design</th><td width="20%" align="right"> <a accesskey="n" href="simulation-lifecycle.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="object-orientation-notes"></a>Notes on an object-oriented simulated space</h2></div></div><div></div></div><p>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.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="verbs"></a>Objects</h3></div></div><div></div></div><p>Basic MOO objects</p><pre class="programlisting">
Root Class
  Room
  Thing
    Note
    sittable object
      furniture
  Event-dispatching object
    Containing Object
      Player
        Builder
          programmer
            wizard
        Guest
    Exit
    Container
      Openable Container
</pre><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2824331"></a>Object Attributes</h4></div></div><div></div></div><p>(From the LambdaMOO Programmer's Manual</p><pre class="programlisting">
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. </pre><p>"Every object has eight built-in properties whose values are constrained to be of particular types. "</p><pre class="programlisting">
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?
</pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="verbs"></a>Verbs</h3></div></div><div></div></div><p>Minimal MOO verbs:</p><div class="itemizedlist"><ul type="disc"><li><p>put</p><p>take</p><p>get</p><p>drop</p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="permissions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="simulation-lifecycle.html">Next</a></td></tr><tr><td width="40%" align="left">Permissions </td><td width="20%" align="center"><a accesskey="u" href="design.html">Up</a></td><td width="40%" align="right"> Lifecycle of a Simulation</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="/doc/simulation/object-orientation-notes.html#comments">View comments on this page at openacs.org</a></center></body></html>