Sign in to follow this  
Followers 0

How to check if a unit is doing the same thing over and over?

2 posts in this topic

On my journey through creating myself a 2D scroller, in the Terraria genre, I've started updating my basic AI a little. Since I've decided against pathfinding, I am currently using a very basic, "move towards player position" for hostile mobs. I've spiced it up with some basic abilities to jump over obstacles, within a certain height, and also jumping over holes if they are too deep to jump into, and aren't too wide.

This approach does end up with many situations where the mob will get stuck in doing the same thing like trying to jump over an obstacle, but because there's some tiles above it, it can't jump over it and stuff like that. It will quickly turn into a lot of code if I have to take everything into account, so instead I decided to look at how Terraria did it. So I took a look at how Terraria zombies work (haven't tested on other mobs) and, apart from being a bit more smooth in their movement, there are certain situations, like mine, where they just keep doing the same thing over and over. In Terraria however, the zombies will, after a short while, simply leave. They turn around and walk away, until they're offscreen or the player attacks them.
I would like to mimic this behavior. But I am trying to think up a smart way to do this. So far I've considered the following:
[i]- Over the course of a few seconds, check a few times if the mobs position is the same, or within a very short range (for cases where the mob moves back and forth because it's on top of you, but with solid tiles between you).
- Make a small list of the mobs movement and compare all the elements, and check if the same position is passed multiple times.[/i]

So my question is:
Are there any better ways than the ones I've described above? - and if so,what should I do? [img][/img]

Thank you for reading.

Share this post

Link to post
Share on other sites
Hey there, thanks for your reply.

Your post was really informative, and I'm glad I wasn't totally off in my way of thinking.
I think I will go with your last suggestion, since that should cover all the possible "stuck situations".

You actually covered this so well that I should be able to jump right into it. So thanks a lot for your reply, and for taking your time to explain things [img][/img]

Share this post

Link to post
Share on other sites

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  
Followers 0