Hi again :) ,
Today I'm releasing another patch version of FakeLife that brings many interesting improvements, although most of them consist of internal implementation details that will help me to unlock new interesting features in the future.
First, we'll start with the "visible" changes:
- I added support for Windows, from now on, you can run FakeLife in your Windows machine :D .
- New stats counters: nothing fancy, but now we can keep track of a few extra statistics of our simulation.
- New algae genes, we now have 9 of them:
- Colour-related genes (H, S, V)
- I removed one reproduction-related gene, and added another two, now we have:
- mutation rate: yep, the mutation rate is also controlled by a gene
- split threshold (how much mass has to have an algae before splitting)
- split weight (how much mass is transferred to the new child)
- "Stickiness" genes (they control how likely is for an algae to stick to other algae):
- looseness: it controls how intense will be its Brownian motion
- stickiness: it controls how much it will "copy" the movement of other algae when it collides with them.
- tightening: it controls how much will be reduced the looseness phenotype when there's a collision with another algae
- Death! Until now, our algae didn't die, ever. I did not want to introduce death due to arbitrary causes, and it was also my intention that it played a critical role in adaptive evolution. So it was kind of a requirement that, if there was a gene that could affect death rate, a tradeoff should be present to ensure that diversity for that gene didn't degenerate into one single dominant variant.
Because we still don't have predators in our system, split threshold & split weight will slowly shift to be as low as possible, leading to very small algae. That's why I introduced a new tradeoff: the probability of an algae cell's death is bigger when it divides being very small.
Another detail is that, when algae die, they release the minerals they consumed into the medium, so other algae can ingest them, preserving our closed cycle (as I commented in my previous post).
What about the under-the-hood changes?
- Minor optimizations that bumped the frame rate by ~9%. Another relevant change is that, for now (until I implement more optimizations), I decreased the size of the simulation, to make it faster on slow machines (that's on top of the previous 9%).
- Major refactor. Godot is cool, but when one is used to work on huge backend projects (like me), it can feel excessively unstructured, flaky, and chaotic. That's why I've been trying my best to improve my understanding of what's the best way to organize GDScript code, and applying these ideas to make it easier & faster to introduce new changes.
Leave a comment
Log in with itch.io to leave a comment.