@akkartik Already looking great! Barricelli's conceptual setup is so wildly flexible, you can have a lot of fun (and literally can spend days/weeks/months) coming up with new replication rules for the different cell collision cases, i.e. deciding how to resolve them and adding more factors to encourage emergent behaviors, for example using combinations of:
- recursively search for free neighbors, incl. using varied step sizes (per gene/number) and allow scattering/spilling to future generations if needed
- use per-gene LUTs with different "symbiosis" equations for combining numbers and choosing behaviors in case of collisions
- including multiple neighbor cells into symbiosis/mutation decision making (a kind of halfway house to cellular automata)
- define fields (e.g. image/mask based) or probabilities for using smaller ring sizes (for modulo, per cell!), acting as a kind of environmental and/or time-based gene reset/limiter/filter (also include an ring offset to remove bias and so that resulting genes aren't always zero-based)
- add probabilistic noise (either by mutating genes/numbers themselves or their target location, pre/post collision also can make a big difference here)
- define/randomize gene priorities, in case of collision migrate the gene with lower priority (related to scattering in #1
These are just some ideas I've been experimenting with myself (attached image uses several of the above approaches)...
Look forward to seeing more of yours!!!