Page 1 of 1

LifeAI - AI decision-making

Posted: Thu Sep 01, 2016 11:09 am
by Ortimh
Hello, guys!

I brought you my very first Lua binding for LifeAI, an open-source C++ library for Artificial Intelligence decision-making.
LifeAI is an open source C++ library for Artificial Intelligence decision-making. It can be integrated in video games, robotics, or anything that requires simulated intelligence.

Entities and actions are created in C++ and text files with LifeAI's syntax. Entities have characteristics that describe them called "stats". They consider their value of the stats and how much they are modified to assess the "pros" and "cons" of an action. They also consider their value of other entities involved in the action and how it affects them. They can then determine an overall value for performing the action.

As stats in the simulation change, LifeAI updates the best action options for the entities. The actions can then be implemented as needed in a simulation.

Demonstrations of LifeAI can be viewed here. Code for a simple test application is included with the LifeAI source code.
Same rules of Fenrir's ImGui applies to this binding too like pointers, etc. There're function overloads in C++ version, so to make the functions in Lua I decided to make numbered functions according to their order in the lai_wrap_cpp.h (e.g. int laiMake( int type, int num0 = LAI_NULL, int num1 = LAI_NULL, int num2 = LAI_NULL ) to lai.Make2). I only make binary for Win32 x86. Currently I'm focusing on recreating the demo. It may take awhile.

You can find the source code and releases in the repository. Any feedback is welcome.

Re: LifeAI - AI decision-making

Posted: Thu Sep 22, 2016 5:46 am
by Viomi
Hey, this is pretty cool!

I'll be sure to keep an eye on this project.

Re: LifeAI - AI decision-making

Posted: Thu Sep 22, 2016 1:52 pm
by Jack5500
Great, are you planning to implement a full example?

Re: LifeAI - AI decision-making

Posted: Fri Sep 23, 2016 9:02 am
by Ortimh
Viomi, thanks. I'm trying to implement overloads in Lua so the binding doesn't have to create useless more functions (lai.Make2 etc.) but it doesn't work pretty smoothly because yet I don't know how to do it.

Jack5500, yes and no. I really do hope I can give it a full example but due to a lot of work that's needed to be done (school, as I'm 15) I can't promise that. Thanks by the way.