By Praccho Muna-McQuay, Alaina Lin, and Tanish Makadia; submitted for CSCI 1230 (Computer Graphics) final project at Brown University.
If you're interested in the math used to model the simulation's slime foraging behavior, consider visiting the project website.
- Inspired by Sebastian Lague's Coding Adventure: Ant and Slime Simulations.
- Agent behavior implemented based on Characteristics of pattern formation and evolution in approximations of physarum transport networks (Jones).
- Food behavior implemented based on Stepwise slime mould growth as a template for urban design (Kay, Hatton).
- Slime agents modeling behavior of plasmodial slime molds like physarum polycephalum.
- support for up to four different slime species at once.
- Foraging behavior based on an attractor-field of food sources.
- optional depletion of food sources with slime agent interactions.
- Brushes to paint food/slime and to erase material on the canvas.
- Starting seed library to begin the simulation, including a "circle," "big-bang," and "starburst".
- Rapid simulation supporting over 1-million concurrent slime agents.
- utilization of compute shaders in Unity to accelerate simulations using parallel computations on the GPU.
- Customizable parameters for nearly every aspect of the simulation displayed on an interactive GUI.
- Install Unity 2022.3.14f1.
- Clone this repository on your machine.
- Open the cloned root directory in Unity and double click the
GUI
scene inAssets/Scenes
. - Click the 'play' button at the top of the screen. Alternatively, click "Build and Run" to execute outside the editor.
In Assets/Scripts
:
- In
/SlimeSettings
: files containing various species settings. SlimeSimulation.cs
: main entry point running the simulation.SlimeSettings.cs
: global settings for the simulation.SlimeAgent.cs
: definition of a single slime agent.ComputeUtilities.cs
: utils for creating and writing to textures.FoodSource.cs
: definition of a single food source.
In Assets/Shaders
:
SlimeSimulation.compute
: multiple entry points for slime agent logic and reading/writing from textures using the GPU.