Re: structured programming of automata with behavior trees
Yoshiki Ohshima via Squeak-dev <[email protected]> Fri, 17 Jul 2026 18:10:09 -0700
| Newsgroups | gmane.comp.lang.smalltalk.squeak.general |
|---|---|
| Message-ID | <CAHC3jCNmoQ7_u5uCnFeMDvd2wa=p48gKcRaEOXfReRM=QcCYcg@mail.gmail.com> |
I have this app: https://github.com/yoshikiohshima/renkon-pad Where you can make a collaborative Croquet app collaboratively. Its documentation is not quite there yet but I think we'll have something readable soon. On Fri, Jul 17, 2026 at 5:34 PM gettimothy via Squeak-dev < [email protected]> wrote: > You typed "Croquet" and that caught my eye. I will have to research this. > > At first glance "Behavior Tree" sounds like a "State" design pattern. > > > all the best. > > > t > > > > From: Yoshiki Ohshima via Squeak-dev < > [email protected]> > To: "The general-purpose Squeak developers list"< > [email protected]> > Cc: "Yoshiki Ohshima"<[email protected]> > Date: Mon, 13 Jul 2026 12:37:26 -0400 > Subject: [squeak-dev] Re: structured programming of automata with behavior > trees > > Sounds cool. > > Is there a way to check it out with Squeak JS? > > I had a colleague (a long time game developer) who implemented the > behavior tree on top of Croquet JS. It worked well for the purpose. I kind > of liked a more general and meta solution, and later created a Functional > Reactive Programming based system called Renkon. Croquet and Renkon use > explicit logical time. Your Behavior Tree implementation probably shares > the property of "at a logical time t, a node has at most one value", or "a > node is evaluated at most once at an evaluation cycle". I am getting to > like this property more and more nowadays. > > On Sun, Jul 12, 2026 at 8:38 AM Lauren Pullen <[email protected]> wrote: > > > > -- > -- Yoshiki > > Squeak-dev mailing list [email protected] > To unsubscribe send an email to > [email protected] > > Greetings List, > > I thought I'd follow the spirit of the upcoming Squeak release to work > on improving some of my programs. If you had previously looked at > Cephei-BehaviorKernel and thought it looked like a neat, but > impractical, toy, and weren't quite sure why, the answer was you > couldn't create subroutines. > > And now, as of lrnp.12, you can! Wander over to BTSubtree's example1 > for a nostalgic demo. > > For those of you just tuning in, a behavior tree uses an execution model > completely unlike smalltalk's. Smalltalk uses the normal successor, > PC=PC+1, while a behavior tree uses a boolean successor, like Prolog. > Control flow is based on the shape of the tree and whether you used an > AND, OR, or NOT node to combine nodes. Unlike smalltalk and prolog, > behavior trees use 3-valued logic (success, failure, and incomplete). > > If you disregard the "incomplete" value, you can represent boolean > successor in regular smalltalk code. It looks like this: > > ^self m1 and: [self m2 and: [self m3 or: [self m4]]]. > > Instead of writing statically-compiled methods, Cephei-BehaviorTree > defines procedures dynamically using 1st-class objects and simulates a > boolean successor machine. > > My behavior tree implementation is designed to augment my dynamic Mealy > finite-state automata implementation (in StarVariable). Instead of > implementing Harel statecharts or relying on backtracking to enforce > interlocks you use behavior trees to guard against sending improper > input to the FSM, and more. > > This is a pretty low-level tool, but it's object-oriented. Any instance > can be a node if you define the methods from BTNode's instance side. > The bare minimum is #tick:; the dynamic environment (a StarDictionary) > is passed as the argument, and it must answer one of true, false, or nil. > > (A BTShallowBinder only extends the dynamic environment. It's a > subnode's responsibility to put something useful in the slot. Low level > gives you flexibility.) > Squeak-dev mailing list -- [email protected] > To unsubscribe send an email to > [email protected] > > > > Squeak-dev mailing list -- [email protected] > To unsubscribe send an email to > [email protected] -- -- Yoshiki Squeak-dev mailing list -- [email protected] To unsubscribe send an email to [email protected]