I’ve been thinking recently about how to organise species splitting in the population system. If at the start there is a single species (1 hex of cytoplasm) then how do you get from there to many species in many patches? Moreover if the species you are playing is wiped out when can you switch to another species and play as them?
If anyone else has other suggestions I’d be very happy to hear them. This is just an idea that I think might work reasonably well.
Firstly when you go to the editor and make changes that doesn’t always split your species (as otherwise we would end up with too many species). Maybe you add a flagella and that means all members of your species get that flagella.
Secondly, at a random time (based probably on population), you might get “split” when you enter the editor. This means that your old species is deleted and two new ones are created. Each of the new ones gets 100 mp (so when they come out the editor they are different) and you then continue to play as one of them.
Thirdly this results in there being a binary tree of species. Each parent has two children, that is the only operation. We can then measure the relatedness of two species as the number of steps along the tree between them. For example if two species share the same parent their relatedness is 2 (1 step up to the parent and 1 step down again). If two species share a grand-parent but not a parent then their relatedness is 4 (2 steps up to the grand parent and 2 steps down again).
Fourthly we could give the player a certain number of “respawn points”. If your species dies out you have to spend these points to get to another species to play. For example if you are wiped out and you want to switch to a species which has relatedness 4 to you this costs 4 respawn points. If you do not have enough respawn points to switch to a species which is alive then it’s game over. On iron man mode you could get 0 respawn points, on “creative” you could get unlimited (play as any species any time). We could give +1 respawn points every 20 mins of play or something like that.
Fifthly the way species move to new patches is when they split one of the offspring species gets a chance to move to an adjacenct patch and try living there. They are still equally related to you as if they were in the same patch.
What do you think? Does this make sense? is it implementable? Do you have improvements or other ideas or a whole different system? All feedback welcome.
Edit: Here is a diagram which might help explain things. The species which are alive are E F D G I K L (as a species is deleted when it is split). The relatedness of D and I is 5 and the relatedness of L and E is 7.
I love the idea of using a binary tree! I assumed we would just have a genus name variable and an epithet variable and if you share a genus those are “related” but a binary tree is much more powerful then that. I assume we will still have genus name and epithet for the naming of species though.
One thing that bugged me about auto evo is how non-Darwinian it comes off as, do you think we can use the binary tree and do mutation on a (I already sim each species and alter population numbers and they only split into new species/genuses/do mutation at a certain population and go extinct at certain populations) a per species basis to create what is effectively a Darwinian evolution sim for them and have that be auto evo? That way we dont have to loop through every individual which is the main reason we didn’t go full Darwin. (Each species can be treated as an individual by auto evo for Darwinian evolution)
Also, if a whole section of the tree (down to the last clade (a whole branch) goes extinct, do we keep them in the tree or “shave” off the extinct branch?
Also with a tree we can do an actual clade diagram.
This sounds good! I mentioned this earlier, but what happens if your species travels to a new patch and then adapts to it? If your species doesn’t split, will other members of your species in other patches get the adaptation even if it doesn’t help or even hurts them?
@Untrustedlife yeah I think having each species be a unit for darwinian selection to act upon sounds like the right thing. I think we can have a formula for how well a particular species is suited to a patch and then adjust it’s population accordingly, I haven’t figured out the details of that though.
Also I guess we can leave things in the evolutionary tree even in they are all extinct, it might be interesting for the player to look back at. Though if it makes the system slow or anything we could get rid of them.
@Narotiza I think it might make sense to have the process of spreading to another patch be a species split. So you split into two children species and one of them goes to the new patch. This would mean there would be no species which existed in multiple patches.
I think this is reasonably realistic as the patches could be quite big and, as you say, it wouldn’t be great if a species got worse to help it’s other members in another patch with different conditions.
What if we had a “mainline” branch? A central branch from which other species break off from over time? Like each branch is a new mutation, and the mainline is the “average” of the genus?
Like a mutation bring around a poison sack; if the poison sack helps survival to a large extent, and the prior version has large casualties, the “new” version becomes the next chain of the mainline. So that that mutation would be seen as a “critical development” in the species. Like opposable thumbs or bipedal locomotion in humans.
These shifts could be categorized as different species, too.
Change in species; when a large enough change in evolutionary terms to create a large difference in survival rates.
Would this offer different results (ie. is it worth it) than just simulating a few possible mutations and then picking the best one (based on how well it did against the other species in the biome) to change the species to?
Lots of good ideas here. I’m wary about choosing “critical developments” though I feel like the end result of a system like that is a far less interesting batch of species, because if we arbitrarily choose toxins as a critical development (and arbitrarily choose other “critical developments” what happens is we always get at least one species that is totally specialized to shooting toxins. I want to have a fundamentally different batch of species each world. Critical developments reduce variety,
Very interesting ideas here! To add my two cents I would like to add what if two different species, under very rare circumstances both mutated into the same species? Would they become the same species or different species but with exactly the same organelles? And how would this be represented in game, how would it affect the binary tree and population?
I think this happens quite a lot in nature, it’s called Convergent Evolution. For example flight has evolved 4 times seperately in birds, bats, pterosaurs and insects. So I think it makes sense to keep them as seperate species that just happen to be similar. The more organelles we have the lower the chance of two species being identical, but under the same evolutionary pressures they may well end up very similar.
Oh yeah, for sure, convergent evolution happens in 0.4.0 already, you could have two differnet genuses and they end up looking very much the same after a few steps right now. I’ve seen it happen quite a bit.
One fun thing ive seen evolve alot is bacteria without anything other then cytoplasm evolving to have really high alpha so that they are almost invisible if you are playing as a species that hunts bacteria alot and arn’t being observant.
Edit:
I find it pretty humerous whenever i see it happen. And i see it happen alot.
ive also seen some species transition into super aggressive predators from something super docile. And the evolution of toxins so that things dont eat them (because if they eat them the toxins are released) Eg, teh species wont use them at all, they will just have them. (Because its factored into wthey something tagets them, in the predator/prey calculations, and me avoiding eating them lol)
On the subject of species splitting what I’ve got in the OP is what I’m currently thinking. That if there is a single species in a patch it will split over and over until the patch is full of life, species with a very low pop will become extinct. Also if there are neighbouring patches sometimes there will be a split and some part of your species will get moved to the neighbouring patch. I think this sort of splitting is relatively close to what @Untrustedlife is already doing, though feel free to correct me if I have misunderstood.
If anyone has other ideas or contributions to species splitting feel free to post them. This stuff is slated to be implemented this patch so now is a good time to speak up if you want any changes made.
I haven’t fully thought this out but I think species splitting shouldn’t be based on the population.
Some other ideas I’ve had:
Species splits when a part of the population is cut-off from the rest. So if you have 1 species spread to 3 patches and the population of it goes to (near) zero in the connecting patch then both of the populations in patches 1 and 3 get converted to new subspecies.
A species is split when it has good amount of population, some time has passed since splitting, and auto-evo ends up creating 2 almost as viable mutations. So at that point the main species would take 1 of those and a new subspecies would be created from the other mutation.
And then there could be some niche detection where separate niches would bet split into different species. I think this is the most similar to just “have a large population to split” approach, but also a lot more involved.
These are much more difficult to implement and depend on a proper auto-evo implementation, which isn’t going to be in 0.4.1. So these can’t be implemented yet, but this is the direction I’d want to take species splitting.
I think species splitting inside a patch is realistic if we want to use it, it’s called Sympatric speciation.
I’m not sure what niches means in this context, could you explain a little more about it?
You’re not the first person to talk about having a single species spread to multiple patches. I may need to relent on this one. I think my questions about it are:
if every species is only in a single patch then we can run auto-evo and population calculations separately for each patch, however if there are single species which exist in multiple patches then we need a more global system
with auto evo what if the species is being pulled in two different directions? For example if a species is in two patches, one which has sunlight and another that doesn’t and auto-evo recommends a chloroplast that seems quite unrealistic for the part of that species that doesn’t live in the sunlit patch.
If anyone has a clear idea how to get this stuff to work I am open to it.
I think that’s what I mean. I just didn’t have the words to describe “living in the same space but managing to split the breeding population”.
This would be one of the places where auto-evo should split the species, by finding two mutations that greatly benefit different parts of the population. Thanks for finding a concrete example for how my idea could work.
My thinking is that each species doesn’t have a global population, only population per patch. So the calculations would only be different in terms of how the effectiveness of a change for a species is calculated, and the migration as I’d like that a species that has low population in some patch but high population in a nearby patch would “reinforce” its numbers from the other patch, and this would be way more common than other migration attempts. And with the effectiveness calculation it would get the overall best mutation for all the patches it inhabits or as I said before the species could split with regards to some criteria.
I think maybe there isn’t so much difference. For example if population and auto-evo are run per patch then the difference is that either you split the species when they transfer patches or you split the species when auto-evo starts diverging them, the result would be similar I think. I can see that having a species across multiple patches would be cool.
One thing is a species could spread to 6 patches and then 3 of them could break off to form new species so it means a binary tree wont work, it needs to be a non-binary tree, which makes things more complicated to implement but not hugely I guess.
I’m looking forward to handing this off for implementation so if you’ve got ideas you’d like to add then go for it. I’ve got the plan in op of this thread and the energy based auto evo here. Hopefully that is enough for a tier 1 implementation and I’m also happy to discuss stuff.