For a class project Tom Batkiewicz and I simulated fish behavior in a physically realistic environment. We were trying to develop a model that was more realistic (in terms of behavior and physical interactions) than boids but simpler than the detailed physical fish model of Demetri Terzopoulos. Essentially, we wanted a model that would allow schools of hundreds of fish in real time with full collision detection on a single core PC, which we achieved.
Our fish model includes a simple box-shaped volume sensor, a global directional bias (i.e. swim forward most of the time), local directional biases (e.g., avoid obstacles, follow friendly fish, avoid predators), and force-based motion control. Our model is very general. For example, instead of avoiding pre-defined obstacles and predators, it processes general object properties like volume and relative velocity. This results in novel behaviors when the fish interact with new objects.