AI Libraries for Panda3D

I haven’t really gotten into AI much, but I do have some thoughts about it.

Nav meshes seem like the best way to go for that kind of thing. I would love support for them. Be sure to have some way that various regions in the nav mesh can hav values assigned which can be checked against to determine which regions can be used (ex: let me set a heigh value so I can prevent tall things from going somewhere, or flag something as shallow water so some things cant go there). A set of named floats that would simply be compared to a corresponding set for the things moving around would do it. If the value on the AI element is higher than the corresponding values on the nav mesh region, the region is inaccessible.

Potentially, nav volumes could be useful, or maybe inverse volumes really (volumes you can’t go to, like spheres around objects in space or what ever). Another approach to volumetric path information is a cube tree (oct tree). I’m not really sure if that would be useful though.

I have designed (but not implemented to the point of usability) an AI decision making system. I’ll describe it here. You are welcome to use anything you want from my design.

The ideas is that there are abilities that the AI controls. Different urges compete for the control of the abilities through a prioritization system (a priority value is computed for each urge and scaled by a tuning weight value). Then lists of sets of compromising urges are evaluated (Ex: the flee urge can compromise with obstacle avoidance). These sets of compromising urges are basically modes or states (so I’ll call them states). The sum of the priorities of all of the urges, each scaled by a corresponding weight specified in the state is evaluated, then scaled by the state weight. The mode with the highest final priority wins and becomes the dominate state, and thus the urges it contains are given control of the abilities.

I also designed my AI system to be hierarchical meaning that a squad AI would just be a normal AI that’s abilities would be specifying some input values to its members which could be involved in the urge priorities and actions taken with the abilities.

I really don’t see the actual priority computation and ability use code to be part of an AI framework, its more part of the game that uses the framework, and this is where neural networks and such might be useful.

I would also like to see any path finding/nav stuff pretty separate from what ever AI system get made to control NPCs and such. I would like to be able to use one without the other. For ease of use, the common RPG style case could be implemented as an example that uses both, rather than making pathfinding part of the AI, or the AI part of the pathfinding.