A movement behavior that simulates an NPC walking around randomly. The behavior will pick a random direction to move in then move in that direction for a certain amount of time then stop. Then the behavior will remain stopped for a certain amount of time then pick a random direction to move again.
This type of movement is common in many games to simulate villagers, shop keepers, etc. moving around so they don't look so static. It is also used for enemies to who haven't spotted the player yet. One game in particular I'm thinking of is "Zelda: A Link to the Past" where the guard enemies walk around randomly until the player walks inside their line of sight, then they change into a pursue state where they chase the player. Then if the player gets too far out of range the guard enemies transitions back into walking around randomly.
Movement options for 8 way, 4 way, up & down, left & right movement
An option to obey a grid
Grid size width (only applicable if obeying a grid)
Grid size height (only applicable if obeying a grid)
Smooth grid movement (determines if the object moves smoothly to the next grid space or teleports (only applicable if obeying a grid)
Max speed and acceleration.
It would not be able to move through solids or custom objects
It would take into account the solid objects around it before moving (so it doesn't just walk into a wall even though it was standing right next to it)
An option for what to do if the object runs into a solid: it can either "do nothing", "stop" (which fires stop event) or "pick a new direction and keep going"
An amount of seconds to keep moving
An amount of seconds to stay stopped
On started moving
On stopped moving
This doesn't sound like something general purpose enough to be applicable to many kinds of games. It's not clear precisely what the algorithm would be to simulate the random movement, and even if one was specified, it seems likely other types of games would want something significantly different. So it seems better to implement this type of logic in events. The new Tile movement behavior in the C3 runtime may help too.