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