From: keithley@apple.com (Craig Keithley)
Newsgroups: sci.virtual-worlds
Subject: Re: TECH: world description
Date: 28 Jul 92 19:34:08 GMT
Organization: Apple Computer, Inc.
Originator: hlab@milton.u.washington.edu



In article <1992Jul17.185842.2330@u.washington.edu>, lonachon@anu.edu.au
(andrew longhorn ) wrote:

> There would probably be a few levels of control procedures, maybe
> gravity and solidity reactions can be overridden also.
>  ...
> But you think this is
> silly and link your controls (output of the spirit) to the inherited
> rotation, movement controls of the subtrees of the table (i.e. the
> legs), then stand up and walk (or fly) off somewhere, to the amazement
> of onlookers.
> 

This highlights the question of "What defines the laws of your local
_reality_?"  In the _reality_ I define (on my VR server?), I may wish
to prohibit the overriding of the laws of physics.  This would
disallow the use of "Magic", for example, preventing someone from
making a table walk or fly.

So how do we define the "rule systems" of each locality?  Such "rules"
could encompass things such as time constants, gravity, friction, etc.
I've not fully worked out how rules are defined, but as for handling
rules, I do have a few thoughts.  I think that:
  
  No limit to the number of rules.

  Rules might be overriden individually or en masse.

  Ability to reject a request to override a rule.
  (and so forth...)

Unfortunately this opens up much more difficult issues.  Because it
may be simpler to model objects on a behavioural level rather than on
the physical level.  If modeled on the behavioural level, then the
object's 'behaviour' might be defined rather simply.  Using the table
as an example, the object's extremities might not have any "controls"
(subroutines) that allow movement of the legs.  Making the table walk
would require control extensions to the object.  Work arounds would
need to be used to handle object destruction (or damage). Modeling at
the physical level would require a greater simulation of object
components (ie: Legs, table top, etc.).  If you want a general
solution to the requirement of prohibiting the overriding of rules,
then you probably need to simulate the interaction between components
in the object.  For example, without overriding the 'no magic'
rule(s), the attempt to move a leg would result in a broken table leg
(caused by trying to move a joint that's solidly glued in place).  If
you could override rules, then the table leg could flex and the table
would walk.  This is an example, so please don't thrash on the
specifics of how a table leg could move by dissolving the glue, adding
a hinge, changing the table's substance, changing the table's design,
etc.  Assume that the object's construction is immutable.

So I'm still wrestling with the issue/choice of defining object
behaviour by scripting or by a complex rule system + object component
interaction.  I can best explain the quandry by asking: Would you
rather define a clock by writing a 'behaviour' script that describes
the motion of the hands of the clock, or by defining the
innards/components of the clock.  Writing a script may require
foreknowledge of all the possible rule changes (time constants,
friction, gravity).  Having complete foreknowledge might be
impossible.  On the other hand, using a rule system & object component
interaction may make objects difficult to 'design' and the simulation
crawl (imagine a clock store!).

I suppose the best solution might be to allow for both methods of
defining objects and their behaviours.  Or even a combination of the
two methods.  I further suppose I'd just prohibit the overriding of an
object's behaviour scripts.  Well, maybe sometimes.  Always?  Hmmm...
Wish that table would stop flying about...

Thoughts anyone?


Craig Keithley
Apple Computer, Inc.
keithley@apple.com
Anything not forbidden is mandatory.