I am very gradually piecing together the process for creating a very modifiable and easy to implement, smart, AI system.
A while ago I posted not he concept:
http://www.gamedev.net/topic/651885-programming-the-5-senses/
I had the idea for the complete system (not all mentioned in that post), long before I even knew how to program. I figured there was a buzzword for it already, but I hadn't come across it. Not long ago I came across Entity Component System and I am currently trying to figure out what that is about.
Then i came across Data Oriented Design.
Modular, Good on performance, easy to implement. Few dependencies:
http://gamesfromwithin.com/data-oriented-design
When it comes to intelligence I do think it is mainly about gathering, processing, and using data, so OOP wasn't quite a perfect fit (neither was it the same as my original idea). ECS sounds better.
OOP became more of a handicap when things got long:
http://forum.maratis3d.com/viewtopic.php?id=744
In short, the Senses System uses sensory mechanisms (like collision detection) for one object (or entity) to sense another entity.
If a man object collides with another object, it has touched that object. However, if that same man object collides with a particle from a particle system, it has smelled that particle system. Hearing is a result of volume and proximity etc.
Add a few conditionals based on these events and you can have autonomous movement (a bit of fuzzy logic to make it feel nice).
It just seems like DOD will work, because there will be all sorts of flags going up as an entity detects its environment. It suddenly becomes aware, and of course this might cause memory issues.
Is Data Oriented Design common in AI systems? If not, what style/orientation is more common?
What are some pitfalls?