This project was the natural continuation of my 2D Boids Experiment. Like in that one, this focusses on having many small, independent objects performing flocking behavior (boids) while tracking goals and avoiding obstacles. These are also governed by the principles of avoidance, alignment and cohession where they avoid colliding with neighbors, attempt to stay alligned with their neighbors and attempt to be as close to the center of their local group as they can. Put together, this is what forms the "flocks" of objects flying around the scene.
Additionally, the behavior of the boids is governed by attempts to move towards the center of their space while avoiding the cube placed there. The attraction is stronger the further they are from it which keeps them bound in the area, but they seek to avoid the cube which leads to an interaction where they float closely around its surface.
Takeaways
Overall, you can watch the simulation above to see how the project worked out. I am quite happy with it and if you are interested in the code then you can access it through the GitHub link on this page.