Character motion paths

Started by
5 comments, last by elasticMan 23 years, 11 months ago
Can anyone suggest ways in which I can get my NPCs to move around the map in specific paths. Ideally, I would like my characters to have a few possible paths to choose from depending on what other characters are doing. My problem is I really don''t know how to go about writing code to set up such a system. Are there any tutorials or articles around that I can refer to? I have set up my scrolling map and got my player character working and moving beautifully and also I am displaying my NPC properly with correct animations but I am stubbing my toe on how to implement their motion paths. Any help will be greatly appreciated. Thanks
Advertisement
look into A* pathfinding.


--
Float like a butterfly, bite like a crocodile.

--Float like a butterfly, bite like a crocodile.
Hey,
What you need is just a list of coordinates like: (5, 5), (10, 5), (10, 10), (5, 10)
Store them in a file (Probably I set per line) and read the coordinates into an array.
Move 1 step closer to the first point by checking whether the characters xy coordinates are greater or less than the target (the point).
Then, if the character is on the point, start moving to the next point.

You may want to store more than just coordinates in the file, maybe a simple code so:
0 = MoveTo
1 = Say
2 = Wait

Then have something like
0, 5, 5
0, 10, 5
1, "Nice day"
2, 5
0, 10, 10

Hope this helps
Just incase you want any more help, I was the anon poster before. Mail me, ragonastick@whale-mail.com

"Only a fool quotes himself"
Andy Owen

My Homepage (Non games related)
My Current Project (Games related... I think)
Trying is the first step towards failure.
okay, first off, if you''re just gonna walk in a straight line between waypoints, use a real line algorithm. second, what exactly are you planning on doing when you run into the first tree?
and what if the characters are actually supposed to do something based on the circumstances (that little thing known as AI)?


--
Float like a butterfly, bite like a crocodile.

--Float like a butterfly, bite like a crocodile.
Thanks for your posts. Here''s an example of what I''m hoping to get a particular character to do. Start at position A and head straight for position B, once there pick up object and return to position B. If character 2 is within range at anytime head for character 2 and attempt to engage. If succesful head for Position A again. This is just an example.
I''m going to try and set something up along the lines of the suggestions you have made.
I think the best thing for that would be a FSM (finite state machine) for your AI. In case you aren''t familiar with this I will give a brief explaination.

First, you define a set of states for your NPC. In your example you might have 4 states (A, B, C, D) In state A, your character is walking to location A. In state B, he is walking to location B. In state C, he is walking to engage charater 2. And in state D he is actually engaging character 2.

Next, you set up a serise of transitions between the states and conditions when these transitions should occur. From state A, you would want to keep walking if you are not at A. If you are at A, then you would want to transition to state B (walking to location B.) From state B, you would transition to state A if you had reached location B. If player 2 was within a specified range, you would transition to state C and in any other case, you would keep walking toward B (remaining in state B.)

You can probably figure out the rest of the details and decide when you need more states or transitions, etc. Basically, though, each update you check the state of the character and then check any conditions that can lead to state changes from the current state (and change state if needed.) Then, you have the character perform an action based on its current state.

Hope that helps, if you need more info, drop me an email (cbradford@hmc.edu)

This topic is closed to new replies.

Advertisement