Hi Henrique,
I've been looking at several things in relation to 'AI' or decision making within OpenEaagles. To do this right, I really like how (and am following how) the software supplied with the book "Learning Game AI Programming with Lua" organized things. The book is obviously oriented around using Lua as a scripting system and language to develop different kinds of AI techniques -- great book -- lots to learn from it.
What I really like about the book S/W organization is how Lua is interfaced and leveraged with C++. Lua provides the 'easy to use' UI for trying things quickly; C++ does the heavy lifting in terms of providing the core infrastructure / environment or world in which agents interact. It also draws the graphics (using Ogre3D).
As for Soar, I just had a Master's student complete his thesis in extending this book S/W to call Soar for decision making. Basically what we learned is this:
1. Soar has a weird language in which to describe agent decision making. I'm not using the word 'weird' to imply something wrong or anything, it's just not familiar.
2. To a new user, it's not obvious as to how to interface Soar to an existing system. The documentation on the web site is lacking, but at this point we (and I know you) can -- it just took a long time to figure out how to make it interact.
3. Soar seems to be good at making 'high level' decisions -- and no so good at carrying them out. It can't add 1 + 1, but it can decide, they need to be added.
Given that understanding, we (the student and I) leveraged Lua to do the work to carry out commands issued by a Soar agent. Basically we used Soar to make a higher level decision as to what to do given a complex situation, then write rather straightforward Lua functions to 'do it.' This strategy seemed to work well -- each 'agent' was defined by two things, a Soar file (production rules), and Lua script code to be called.
At the moment, no I don't have an OpenEaagles example that 'talks' to Soar. But the drive to make this reality is going on.
I'm doing some major updates to OpenEaagles to shape into a more flexible form for a wider range of purposes + updating code to move toward Modern C++ coding concepts. This is exciting, as I see the codebase (C++) as a fantastic foundation for doing lots of 'heavy lifting' to support Lua extended functionality.
Soon, I'll be dropping in (i.e., embedding) Lua as a library. Bindings (software that provides the interface between C++ and Lua) will be developed for three purposes: configuration, testing and AI.
Once that's done, I'll certainly revisit Soar as it should drop into place somewhere that makes sense.
Doug