
Steering
This application was built from a school exercise we had in third year at Creajeux about steering behaviors. Steering is a movement method applicable on objects in a game, it is used to create behaviors and it is possible to mix them to obtain new ones.
The program contains multiple behaviors as follows :
- Seek / Flee: Pairs of entities are created, one seeking for the other, which flees. This behavior is quite simple but can be used to create other ones.
- Pursuit / Evasion: Similar to the previous one but with a little prediction in the mix. The pursuing enitity goes to the future position of the evading one that avoids the future position of the first.
- Arrival + Obstacle avoidance: Entities try to reach the user’s cursor while avoiding the red circles on the screen.
- Wander: Random determination of the next direction of the entity within a restricted range to keep some consistency and smoothness to its movements. It can be used to simulate some sort of idle state of an AI.
- Path following: Red cricles form a path that the enitities take. Once they’re at the end, they turn around and do the same path in reverse.
- Unaligned Collision Avoidance: Each entity predicts the movements of others around them and uses the obstacle avoidance to react when their trajectories interesct.
- Separation: Each entity goes to the opposite direction of the average one formed by their neighbors in a given area.
- Cohesion: Each entity calculates the average position of the others around and try to reach it.
- Alignment: Each entity goes in the same direction as the others around.
- Flocking: A combination of Alignment and Separation, the entities go in the same direction while keeping some distance between them. This behavior can be compared to a shoal.
- Lead following: All the entities follow the same leader while they keep distance between each other.
- Formations: A specific kind of lead following behaviour where the enities form a given shape when following their leader. The available formations are Circle, V, Line and Multiline.
I enjoyed this exercise as I found it quite interesting and rewarding, I often found myself just looking at my results when debugging instead of closing the application right away. Flocking in particular can be really mesmerizing with enough entities. I also liked using those behaviors for the first time in WarCreaft as we were creating the two at the same time so after developping a behavior in the app, we put it in the game. Watching the game characters moving with my behaviors filled me with joy.
Screenshots#




