A keystone species is a species which has a large effect on its environment whether good or bad. Such a species is the orca or killer whale. Being an apex predator in the ocean, they hunt small fishes like salmon to giant beasts like an elephant seal or a big white shark. By observing an orca's behaviour, it's possible to estimate its health and a small part of its psychology. Thus, Sakamata Watch was born from a man who loves the ocean too much.

What it does

Sakamata Watch is an ecosystem simulation tool. At it's core, it simulates orcas and other prey species as boids - entities who follow certain flocking rules, leading to emergent AI behavior that closely mimics to how school of fish or flocks of birds do in real. Furthermore, Sakamata Watch simulates many traits such as gender, age and pod behavior, which all impact how an individual behaves and what decisions it decides to make. Does a orca follow the rest of it's pack, or does it break off to hunt for itself once it gets really hungry? These are some emergent behaviors that are possible in Sakamata Watch.

How we built it

Sakamata Watch was written in Rust using the Bevy game engine.

Challenges we ran into

Boid simulations are quite hard to get right since there are so many parameters in play and so many entities influencing each other. A great deal of trial and error was requierd.

Accomplishments that we're proud of

Creating a project that isn't entirely tech-focused but instead incorporating aspects of sustainable engineering. Environmental topics should be tackled more as they contribute to many of the Earth's problems such as pollution, wildlife conservation, and water treatment.

What we learned

Very intensive research was done on orcas and the organisms they prey on. We learn a ton about pod dynamics, hunting strategies and orca behavior.

On the software side, a decent amount of UI work was required for the inspector and organism analyzer tool. This was written using the egui library for Rust. It was surprisingly easy to work with compared to other Rust UI tools.

What's next for Sakamata Watch

Simulating so many entities at once and also all the interactions between them can get quite computationally intensive. It will be beneficial to start thinking about potential optimizations if we decide to take Sakamata Watch further. Some potentials ideas include chunking entities so calculations are only performed locally, parallelizing the code or moving the intensive calculations into a compute shader to be ran on the GPU.

Built With

Share this project: