Wandering Critter AI

Hey guys, I’ve been working on critter AI for Might is Right. I wanted something relatively simple, a behavior where a character would move around a fixed area and idle. Think bunny hopping around or a deer or something like that. Here’s what I got:

the AI is done using Behavior Tree, similar to what YUKA has. My implementation, of course, is in meep game engine.

The code is quite concise in the end. I did have to code a few custom behaviors though.

export function buildWanderingBehavior(
        anchor = Vector3.zero,
        distance = new NumericInterval(1, 2),
        radius = 5,
        axis = new BooleanVector3(true, false, true),
        wanderAnimation = 'Walk',
        idleAnimation = "Idle"
) {

    return RepeatBehavior.from(
            PickWanderPathBehavior.fromJSON({ radius: 5, anchor, distance, axis }),
            StartAnimationBehavior.fromJSON({ name: wanderAnimation, repeatCount: Number.POSITIVE_INFINITY }),
                    new CheckPathEndBehavior(),
                    WaitForEventBehavior.fromJSON({ event: PathFollowerEventType.EndReached })
            StopAnimationBehavior.fromJSON({ name: wanderAnimation }),
            StartAnimationBehavior.fromJSON({ name: idleAnimation, repeatCount: Number.POSITIVE_INFINITY }),
            RandomDelayBehavior.from(2, 5),
            StopAnimationBehavior.fromJSON({ name: idleAnimation }),