Inspiration
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
- bevy
- rust
Log in or sign up for Devpost to join the conversation.