This is a project I made using GLFW when I was first learning about steering behaviours. I simulated schools of fish by combining flocking and wander behaviours. The fish scatter if you get too close and then gather back into a "school" as they continue to wander around the environment.
I came across a book called The Nature of Code sometime later and its my go-to reference whenever I need to write movement related code: https://natureofcode.com/book/
An "under the sea" environment with "fish".