I’ve noticed in a lot 2D shmups, after enemies accelerate onto screen and arrive at their arrival point, they don’t simply sit static at their arrival position, but rather begin to gently move in place in what appear to be slow random movements in their immediate neighborhood.
For example, airborne bosses in Cave shmups have this kind of slow seemingly random movement.
This movement helps to give them life, as if they were really floating in space and subject to the capriciousness of their thrusters.
This principle is discussed briefly here.
My question is what are some effective ways to implement this kind of movement?
I think that a lot of shmups use steering behavior methods to get their enemies to arrive on screen and move from point to point (especially for the types of enemies that need to appear and remain on screen, as opposed to popcorn that follow parameterized bezier curve splines). For example, I imagine an enemy spawns just off screen and does normal SeekWithArrival()
behavior to their destination point on screen. (Though sometimes it looks like ships overshoot their destination point and get pulled back a bit—also curious how to implement this kind of thing!)
If this is true, and this technique is used for arrival, maybe you can also use some kind of Wander()
steering behavior to achieve the small random movements in the enemy’s neighborhood to achieve this effect? Does anybody have tips or techniques here?
Examples
- DoDonPachi - notice how the boss and the pods on the left and right moves at their locations
- Cho Ren Sha 68K - notice how when this enemy arrives at a point, he moves gently in place before moving to a new point on screen