Thats really cool. I can see that being really handy in evo sims. But, is 30 mutations enough? When I ran a zerobot sim there were thousands of mutations before anything reproduced, that graph might get pretty cluttered.
In 2.43.1m, species can be forked either manually or automatically. There's a new dialog where you set options for what attributes should be used to declare new species. It contains a "fork now" button for one time forking as well as an option for automatic forking where the code will automatically fork species, checking every 100 cycles if the criteria for forking have been met.
In either case, the decision to fork species can be made based upon the maximum genetic distance within species, the maximum generational distance within species or both. Maximum genetic distance as I'm using it is a bit of a misnomer in that is not an exact computed genetic distance. I am not examining extant genomes and computing genetic distance. Rather, I'm using ancestor lists and thus the maximum genetic distance is really the number of mutations that separate the genomes of the two most distantly related (based on genetics) individuals in the species. Generational distance is the number of generations separating the two most distantly related individuals (based on ancestral relationship).
Consider two extant bots of the same species, A and B. Since they are of the same species, they have a most recent common ancestor. Lets call that bot C. Let's say bot C is 20 generations back for bot A and 25 generations back for bot B (the generation time on B's side of the family has been shorter for whatever reason). 45 generations separate bots A and B. That is the generational distance. The genetic distance (as I'm using the term) is the sum of the mutations that have occurred along both lines of descent, from C down to A and from C down to B.
A new species can be said to have come into existence when a single species splits into two or more separate and independent lines of descent. Drift and/or selection works to separate the genomes on the lines of descent over time. If they don't die off, at some point they can be said to have forked and to have become separate species. The new dialog allows the human to specify when a new species should be declared for the purposes of separate tracking via the population and other graphs based on generational distance and/or genetic distance.
New graphs for maximum genetic distance and maximum generational distance in 2.43.1m allow you to watch this happen for all species and tune your speciation settings accordingly. With either graph, a species value that greatly exceeds those of the others is a clear indication that speciation has occurred within that species I.e. that multiple independent lines of descent exist within the species. In future versions, I may provide the option to detect this and fork species automatically based on these relative measures rather than specific human-specified trigger values. e.g. fork a species once it's maximum genetic distance reaches 10X the average for all other species.
The weather is still really nice here in Seattle, so my DB coding time has been limited, but it looks to turn crappy later this week at which point my time working on DB should increase. Hopefully should be able to release this relatively soon.