I’ve made a new branch, GitHub - Revolutionary-Games/Thrive at signaling_agents_prototype
It’s never going to pass CI/CD (sorry), and I don’t have the art or ability to use babel to finish it out, but I think I’ve got a good model for how the AI can handle swarming behavior that works for making a colony but doesn’t turn the game into a squad-based shooter.
Essentially, this branch replaces Oxytoxy with Cuddletoxy*, which while still toxic to other species now serves as a signaling agent with a simple follow command when it hits the same species. Once hit, a microbe will try to move closer to other microbes of the same species within a certain range of distances.
The minimum distance, which is lower in microbes with higher focus, also goes up a little every time a microbe needs to turn to stay in a swarm, naturally letting faster moving swarms spread out a little. The maximum distance (beyond which the microbe doesn’t bother trying to follow anyone) goes down a little every time the microbe runs from prey or finds food, because it has more pressing matters. Getting hit with Cuddletoxy* again resets both of these values. If the player wants, they can lead microbes on for an indefinite period, but it costs compounds to keep doing so. On the other hand, not asking much of the other microbes (by not moving very fast and not running them into predators) will keep your new friends around for a while.
Swarming behavior is overwritten by detection of predators and prey. A smarm encountering a predator will scatter and possibly fight (haven’t tested this aspect yet), and a swarm that finds prey breaks formation to rush it down, possibly returning to the swarm later.
When there are two or more others of the same species to choose from, a smarming microbe picks the furthest. This has the effect that swarms tend to grow thinner and thinner then fully disperse instead of splitting into two, and makes it so that progressively larger swarms are harder to control. On the other hand, it means that a single player microbe can “out-vote” several other, simply by being the furthest out, without the need for an explicit leader microbe, which I felt would result in too “smart” feeling behavior for single-celled organisms.
You have to use git to get the branch, but feel free to try it out and let me know what you think. If anyone wants to handle actual implementation feel free to take it, since I can’t do it in my development environment right now.
*scientific names have not been verified by theory team