Anyone interested in a monkeybrains port that is compatible with Zay-Es?

My game uses Zay-Ez and Sim-Ethereal … it’s time to add some AI. I looked at MonkeyBrains, liked it but the requirement to have a spatial was sacrilege in my mind. I am thinking of porting MonkeyBrains to work as a GameSystem and Agents would be components of that system that contain Entities.

Is there interest in this monkeybrains port?

I implemented GDX-AI. Was pretty simple. Now I can spin up another form of ai (another form of control) in no time. I have no real need for monkeybrains.

1 Like

I’ve ported MonkeyBrains to be control-centric instead of Spatials and it also supports not being updated by the scenegraph, so you can call it from an entitysystem. (GitHub - MeFisto94/MonkeyBrains: Agent framework for jMonkey Engine)

In addition to that, I’ve fixed a few bugs and implemented support for a BetterCharacterControl “Driver”, so you could plug in an EntityDriver as well.

That being said, I’ve heard lots about gdx-ai and it’s behavior trees etc

1 Like

So I wake up this morning with the thought that soon I am going to be done studying AI. Knowing that I am in the final stages of writing my pathfinding and movment systems.

Then I read this thread.

Before I lose another 3 months to AI I figure I should ask some questions. Maybe it will save me some time.

How does this system perform with large amounts of objects(thousands), vertices(millions), and triangles(millions)?

For instance, with jme3 physics alone, 1100 + physics objects loaded into the scene brings the engine to its knees. FPS of 12 at best. Usually one.

jme3 physics + recast pathfinding is identical. Very low FPS. Basically an unplayable game.

No physics and just recast for navigation and I can load thousands of objects, with millions of verts, and millions of triangles with varying degrees of success.

With 200 simultaneous pathfinding and moving objects, I have at worst a 5-6 FPS LOSS.

With 400, I have about 15 FPS loss, etc.

At 1100 simultaneous pathfinding and moving objects, I am down to 12 FPS. Which seems to be about as bad as it gets using this system.

This is only with 5 behaviors though.
ANTICIPATE_TURNS;
OBSTACLE_AVOIDANCE;
SEPARATION;
OPTIMIZE_VIS ;
OPTIMIZE_TOPO;

I have not written arrival, wandering, or other behaviors like course correction when chasing, which this system GDX-AI mentions, yet.

The main drawback to recast is its very complicated and I don’t like how detour-crowd does pathfinding. Crowd uses a corridor and agents can move within this corridor a lot. Not a problem for a NPC, however its to loose for using with PC navigation.

So to summarize my questions,

How does this system perform with large amounts of objects(thousands), vertices(millions), and triangles(millions) simultaneously moving and pathfinding?

How easy is it to implement and maintain?

Do you have to implement separate systems for movement for NPC and PC to get your desired results?

Edit: To clarify, I am talking about GDX-AI.

@Darkchaos I looked through your code. Good stuff. It’s basically what I was going to do as a starting point. I just need to modify the translation and rotation pieces to work with @pspeed’s double based Quatd and Vec3d classes and it prety much will be complete. Thank you for all the hard work on the port and for fixing the bugs in the original code.

now that I think about it, I did do some duplication, to accomodate GDX-AI. Perhaps the MonkeyBrains port is better :slight_smile: probably wont find out

I guess that work would require reworking the internals of MonkeyBrains to calculate based on Doubles?
Because otherwise I’d love to have a repo “MonkeyBrainsZayESDriver” or something, which one can just use as dependency to drive his ZayES.

On the other hand we already have the universal mode where the caller just requests the values and sets them