AI Engine

Jan 2, 2008 at 10:22 PM
Hi, i would help this project working on AI Engine for QS, You have talk about some feactures, or I can start with this?

Path finding? A*
Moviment: seek, wandering, etc

My work will be based on book: Artificial Intelligence for Games book http://www.ai4g.com.
Coordinator
Jan 2, 2008 at 10:31 PM
Edited Jan 2, 2008 at 10:31 PM
Well we have quite a bit of AI planned out for the engine already. I've actually had it planned out for a couple months now, I've just been waiting for the engine to be ready for it. I figured it made more sense to have actual players, and models to move around before letting them have intelligence.

You can read more about it here:
http://www.codeplex.com/QuickStartEngine/WorkItem/View.aspx?WorkItemId=3606
Coordinator
Jan 2, 2008 at 11:41 PM
I should add that at this exact moment we aren't looking to implement AI, but it will come sometime soon, and we may need more than one person on it, if we want it to be good. So you're welcome to help when that time comes if you'd like.
Coordinator
Jan 2, 2008 at 11:45 PM
You should check out this book as well.

http://www.amazon.com/Programming-Game-Example-Mat-Buckland/dp/1556220782/ref=sr_11_1?ie=UTF8&qid=1199317435&sr=11-1

Best AI book I've read. Good rating overall by others as well. It is 2D, but 2D to 3D isn't really a big leap for the AI in our engine.
Jan 3, 2008 at 3:50 PM
On a tangent, how will the ai be random, seeded or timed? I feel seeded would work best, as sync the seed between games means all AI results should be the same, meaning they dont need to be independantly synchronised. Time would require each decision to be transmitted to remain consistent.
Coordinator
Jan 3, 2008 at 4:23 PM
I hadn't thought about syncing AI across a network before. It will definitely need to be set up in such a way that A.I. performs the same on each machine to give the same results. I would say we'll likely be using seeds.
Jan 5, 2008 at 7:14 AM
Hi, LordIkon

I have this book, it's nice book, i think that work with a moviment is a very good start to AI engine, mainly many advenced moviment algorithms use basics structures.

I read the Beginning A.I. work item e i agree 100% with the initial brain storm, i will guide my work follow that thought line.

And about network syncing A.I, i think that must be automatic, at once A.I modify the entity estate and a new state need be send to another players, i think, if apply A.I logic before entity Update, A.I Component didn't need warry with this.

This only my 2 cent's.

Sorry my poor enghish.
Coordinator
Jan 5, 2008 at 7:24 AM
I'm trying to work out very specific situations and how they could be handled.

Lets say we're talking about an FPS game, in which you're playing with 10 other humans, and there are A.I. enemies throughout the level.

What if you get close to an A.I. unit and it 'notices' you and reacts by turning around to face you. There is a state change there due to the fact that you startled the unit, but there is other information that all players must receive, like which direction the unit turned to. So player #1 may have startled it, and that client may know that this causes the A.I. unit to face them. Player #1's computer may not need any information over the network for this because they did the startling, but all other players will either need more information, or I guess possibly at the very least the fact that player #1 started A.I. Unit #1 or whatever.

Of course, I'm not really in charge of networking. The A.I. just needs to be designed with networking in mind so that whoever is networking it can more easily do so.
Jan 5, 2008 at 12:06 PM
Well, if player 1 moves, and that fact is sent over the network, my thinking is that all remote clients should get this and turn the ai themselves. Because theyre essentially 'sharing' the input, the result should be the same. As for differentiating local and remote players, Im thinking some kind of int id. Who's handling the input system, this is something we need to really thrash out soon.
Jan 5, 2008 at 3:28 PM
The input system is unrelated. The network layer will never process/transmis input messages. The game front-end (most likely scripting) will process input messages and issue appropriate events.

It seems like sending the player positioning data would be sufficient if all randomized AI is based on the same seed (and not varied by time). If all clients know that player #1 is within x meters of Bot #1, then they all will see Bot #1 as "startled." Though for consistency it would be a good idea to send out periodic AI state updates, like maybe once a second. Each bot class could have a set "state" which is synced.
Jan 5, 2008 at 6:42 PM
Hi,

It would be possible use prediction when A.I receive infromation about remote player or enemies. If include a little delay on local player the game state would be mainteined withouth user impact.
Jan 5, 2008 at 7:05 PM
I mean events in a more abstract term. Just something game logic related.

You and Sturm will need to work out which messages to send. Just choose whatever is most convenient and efficient for you two, and the rest of us will code accordingly.