AI API

I was wondering - is there such a thing as an out-of-the-box, ready-to-use API for game AI, just like the graphics or sound APIs?

I am thinking of a framework where AI agents can be easily constructed and customized with the use of a few base classes. You can define motivations, pain/gratification functions, sensors, etc. Your game world classes will implement a clean set of interfaces which allow the AI framework to interact with it - that’s it.

I don’t know but my guess is no :stuck_out_tongue:

Yes… There is AI middleware.

The one I’m interested in the most at this time is the Java port of Simbionic:
http://www.simbionic.com/pr/simbionic_java.htm

This tool facilitates the creation and execution of FSM and fuzzy FSM (FuSM).

Just search for “AI middleware” in google…

There is middleware for everything these days… or if not there soon will be if it is an important area of development.

Cool - thanks for the Simbionic link. Very interesting! A first glance gave me the impression that Simbionic is basically a scripting tool. I had in mind methods more closely related to the traditional AI, such as neural networks/perceptrons, Bayes networks, etc.

Well, I guess that’s simply asked too much - in the end these very general approaches need a lot of tweaking and customization to make them useful for games, and that is probably difficult to capture in an out-of-the-box API.

Haven’t checked this out… Netica is Bayesian network middleware :
http://www.norsys.com/netica-j.html?popup

There is a free version available and is only limited by net size. The licensing fee is not bad too…

fuzzy FSMs (Simbionic) are certainly very useful though for particular genres of games like FPS. It would be neat to combine the FuSM technique with Bayesian networks to possibly resolve the fuzzy part or switch between different FSM graphs.

Check out the Netica API and report back… :slight_smile: I’d be interested to hear your view on it.

ECJ is great for general purpose evolutionary computation. It is pretty easy to embed.
JOONE is a useful tool for nueral networks, but I have not managed to get it embedded in another app neatly yet. Its a bit weird becuase everything is asynchronous.