Sign in to follow this  

Pacman Style AI

This topic is 4839 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Greetings I am at the point in my game where I am ready to implement AI for the enemeys(Yay!!!) The game is a pacman style game where the slimes should run around and chase you. I have no idea how I should Implement this so that they arent just buzzing around in one spot because every frame a random number is chosen for the direction. How would I implement it so that they chase, guard etc? Probability Machine? Fuzzy Logic? Flocking? Thanks.

Share this post


Link to post
Share on other sites
All those techniques are overkill. Pac-Man uses fairly simple AI.

First off, each ghost can only change direction at an intersection. They never change in the middle of the corridor, and IIRC they never even go back the way they came when they get to an intersection. So their choices are limited. I'd suggest that they simply turn whichever legal direction will head them in the general direction of Pac-Man, or at least not away from him. If you want, you can introduce a random factor into this to make some of them behave more erratically.

Share this post


Link to post
Share on other sites
I guess I should note that its only pacman like. There is room to move up and down within the corridors. So they can technicaly do that. I'd like to add some element of AI though. I'd just like practice with it.

Share this post


Link to post
Share on other sites
state machine!
state1: chase
state2: search
state3: run (when packman gets the superman bonus)

state2 is simple!
If you set it up so that the chance for it to continue in the same direction its going, is like 75%, then 25% to turn each way... If only one way is aviable, go this way...
If it catches you, go to state1.

state1
is also simple, find that possible move that gets you closest to the player, not in bird-distance, but in shortest way to travle to where the player is. You could use A* (A star, pathfinding algo) to find the shortest rout from aviable movemet resulst to player. This is good practice, since different forms of A* is used in almost any AI that must find the shortest way.
p.s. if the enemies are alowed to turn around in the middle of a corridor, you will have no chance to outmanover them!
If you dont succseede in a set time to catch the player, go to state2


state3
oposit to state1 :-)

This is a great way to practice game AI, this simple system is pretty hard to finetune into a great gameplay if you never toutched AI before, and remember to good enemies will kill you! :-) no fun to be dead all the time.

Also, watch the monsters in a pac-man game, and try to find rules they follow... they often dont take the best way, and they dont turn around in the middle of a corridore!

Share this post


Link to post
Share on other sites
check out the pacman game on my site, & see if you like how the ghosts chase pacman around. I wrote 4 different AI modules for each of the 4 ghosts. You can't give all your slimes the same AI otherwise they'd all end up chasing your character in one big clump, rather than working together to get you & approach you from different directions. if you think I can help, email me, I'll give you some pointers.
also... since pathfinding takes some time, I implemented my AI's inside threads. otherwise... each time a slime needs a new path, you might see a frame skip... & you never want that.

Share this post


Link to post
Share on other sites

This topic is 4839 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this