[ODE] Community page

Nate Waddoups nathan at whatever.net
Sat Oct 12 19:10:02 2002


On Thu, 10 Oct 2002, Anselm Hook wrote:

> > > I've come to the conclusion that this method of programming behavior
> > > creates creatures that tip over too easily though, so most of my time
> > > lately has gone into designing a new behavior programming language.
> 
> This sounds interesting - any links up yet?  What kinds of features does
> your language make it easier to express?

No links yet, just some sketches on paper right now.

The main problem with the current language is that it allows you to design
one behavior, and it will behave according to that "script" no matter
what.  If the critter falls over, it thrashes about like a fallen wind-up
toy (only worse because wind-up toys don't usually have attitude sensors
that suffer from gimbal lock).

I put script in quotes because the behavior is specified as a directed
graph, but it gets compiled down to a script-like sequence of
instructions.  Anyhow, there's two main features I have in mind for the
next version:

The main thing is that each behavior will be paired with a "context"
function, yielding a value from 0 to 1.  The context for a walking
behavior might be a relatively upright torso, the hips higher than the
feet, and so on.  The outputs of the script will be multiplied by the
context value.  Under the appropriate conditions, the behavior script runs
as usual; if the critter is standing on its head, the "walk" script has no
effect; if it's leaning heavily to one side, it will only try to take
small steps forward (meanwhile, the context is right for a "stand up
straight" behavior to take effect...).

Second, I want to be able to coordinate a whole bunch of behaviors.  This
is the part I'm still thinking through.  The "context idea addresses part
of the problem, particularly at the scale of motor control.  But big
decisions like "walk, run or crawl?" or "chase or flee?" have me looking
for ways to create a hierarchy of behaviors, or fuzzy cognitive maps, or a
subsumption approach.  I have a bunch of ideas here... part of the problem
is I'm not sure which to try first and I'm trying to think of a grand
scheme that uses all of them - and yet, is still easy to work with.  
Mostly I think I need to do more reading.

Meanwhile I want to revise my document object model a bit so I can
implement undo/redo more easily, and integrate Novodex physics and CD, and
create a network interface to Juice so I can implement the new behavior
(and editor) as a separate application... and, and, and.  So many ideas,
so little time. :-)

-- 

Nate Waddoups
Redmond WA USA
http://www.natew.com