I’ve been doing some AI research recently and came across what seems like a wonderful method for handling AI
More AI Less Processor Time
Page two gives a good description of the AI Process Manager. Before I run off and reinvent the wheel, has anyone else done this or something like it already? I’ve trolled the forums a bit, but haven’t came up with any good hits.
What I’d like to do is have each game character register with the Manager class, then during each update of the game state, give the manager a certain fps value that it is allowed to run on. The manager class would track AI priority updates similar to an OS process management system and update characters as needed.
heh, I guess I'll be implementing this myself. I'm planning on us the manager in conjunction with a behavior oriented design that uses hierarchical reactive plans and behavior sets that are defined at high and low levels
I'll probably start designing the system in the next couple of days. So, if all goes well, I should have some basic demos or something in a week or two
hi, this sounds quite nice.
How Compatible will the Low- and High- Behaviors be? When they would be, you can make lowLevel for character, HighLevel for its Control. Then an Level Higher there is a Group Behavior, and than a crowd Behavior. To see this would bee cool 8)
Will You implement already some universal Behaviors in this Manager?
mmm…there wont be behaviors for a whole crowd per se. The behaviors are for individuals. I’m not sure what you mean by a Control. It is possible to make low and high level behaviors for a Character, which is the real advantage of Behavior Oriented Design. The low level are used as primitives and combined together to create high level behaviors.
AIGameDev.com has information on Behavior Oriented Design and there is a fairly extensive pdf written by the person who came up with the idea (Joanna Bryson).
With an universal BehaviorsSystem, I could quickly port Behaviors of a RealTimeStrategyGame to an EgoShooter. :mrgreen:
I have also written a BehaviorsSystem, but at the time its more for LowLevel PhysicsMoving.
The Next Step will be a High Level AI.
Are You writing this Manager already?
I have not started coding it yet, I'm still planning out some parts that may cause problems.
I know that I plan on making the AIManager capable of executing rather generic AI actions. The characters AI will just have to extend a generic AI class and notify the manager that it exists. I'll probably also be building on top of the AIManager to make a LODAIManager that updates AI priority every few frames based off of current LOD calculations.
I'll make sure to include some basic UML and use case diagrams to give a feel for how it'll fit into a game framework.
I keep my fingers crossed.
I would just like to state that I am very interested of the project. I can not dedicate myself to it actually due to my very limited free time, but I will be tackling AI in more depth also soon and therefore I will be very interested of what you will learn and come up…
Nothing of use to you really at this point… just a fanboy… maybe at a later stage when I also get to AI, we can share ideas…
oh boy, my very first fan boy! This is definitely a proud moment in my life, heheh
So, I’ve been reading a LOT of stuff from AIGameDev, Gamasutra articles and some articles from an AI Wisdom book. I’m going to attempt to make a tool and framework for generic AI creation, maintenance, and execution. It will be generic and I hope to eventually make some plugins for it to work with other languages besides Java. I’m planning on creating a sensor / behavior specification that will decouple the two sufficiently in order to make it as generic as possible.
I started a blog (AIandU.blogspot.com) that I will be updating as the framework and associated tools come along. I’ve got a feeling that this would be useful beyond the scope of jme and would love comments / suggestions on it once I get going.
hows your project going thaspius
Just thought i would pop this in, I have been working on a AI System, that calculates behaviour in the main game thread. But then passes pathfinding off to seperate threads to execute. Theres no noticable lag on this, i have had 2000 units moving around objects on a large map, with fps at around 700. Adding more units does not really effect fps when using this method. (My computer is a 2.4ghz).
It uses a standard A* pathfinder, with a slight change that it looks to see if a straight line is possible first. This removes the feeling of being locked to a grid.
It needs a fair bit of work to turn it into a libary, but once my project is finished in a couple of months i will be happy to have a go at that.
Very nice, can't wait for that release :)