views:

259

answers:

5

I've been tasked with creating a simulation of people moving around. It could be a bunch of people walking through a restaurant or exiting a school. Searching around, I've found a bunch A* related stuff which is fine for one person but I will have a bunch. Is there a standard library people use for this stuff? Or a kind of algorithm I should look at? Or a book that will get me going?

+4  A: 

I am by no means an AI guy, but I even I could understand this:

http://www.red3d.com/cwr/boids/

I found it a great starting point for emergent behaviour alogorthims and naturalistic movement/flocking. The entry page here is oriented around flying animals, but there are many links at the foot of the page.

x0n
A: 

You might try Googling some of your favorite games that do this. For example, here are two interesting results for Ages of Empires.

Jeff Moser
+1  A: 

The repast toolkit ( http://repast.sourceforge.net/repast_3/index.html ) has a .Net implementation which you can download from http://sourceforge.net/project/showfiles.php?group_id=1703&package_id=1655 .

More in general you want to look for "Agent Based Modeling" see http://jasss.soc.surrey.ac.uk/12/2/2.html or http://en.wikipedia.org/wiki/ABM_Software_Comparison

Peter Stuer
+2  A: 

Few games really pull off crowds well, but Assassin's Creed was pretty impressive. Each person had some (basic) objectives like begging for money, carrying pots to the marketplace, walking in a group etc. and all of this welded into a really impressive (compared to other games) simulation of a crowd.

Here is an article that pulls together various aspects of modeling crowds with links to various research papers: Simulating Crowd Flow Dynamics

Praveen Angyan
+1  A: 

Thanks for the help everyone. I believe the best article I've found is also written by Craig Reynolds on the same site as the one @x0n sited. If you click the links, there are a bunch of simple java applets that give examples for his paper.

There were a number of websites that suggested the OpenSteer library which is written in C++. I finally found SharpSteer which takes the same library and ports it to C#. They have a bunch of great demos written for XNA.

Jake Pearson