Thu, 1 Jun 2006
It has been challenging to work through some of the initial problems in the growth mutations. Previously, there was always a building process that preceded the evolution of locomotion, but that seemingly kept people from getting into using the program. The building works well for me, but not many other people have picked it up. With growth mutations there's a double advantage: muscle coordination and physical shape can evolve concurrently, and people can get in and play without having to learn something tricky first.
The mutations are now really pretty. You start with a seed structure, currently two face-connected tetrahedrons, and growth occurs by making a mirror-image of an existing tetrahedron. To accomplish that my algorithm scans the current structure of tetras and projects every possible location of a new mirror-tetra apex in space. It then filters out those candidate apexes which are too close to any existing joints. Finally, it chooses a random one of those and performs the mirror-image of the tetrahedron, creating a new one. It works nicely.
Of course there is some limitations on what kind of structures can be built purely with tetras, but I've decided to not worry about that right now, especially since there will be an interval length mutation. Besides, some interesting things happen when the body grows in this way, since they tend to curl back on themselves.
Now for some reason I'm not a big fan of creating bodies which curl up inside themselves, because then fluidiom intervals tend to pass through each other and that diminishes the realism. Realism isn't the main goal, but it saves a lot of explaining. To solve this problem I created a joint visitor object called knot-proximity which searches for pairs of joints which are too close together and makes them one. It sort of stitches up the wobbly things and gives a more solid impression.
Unfortunately it also causes the bodies to kind of implode because it keeps connecting joints together mostly on the outside, which puts the insides on progressively more stress until the bodies become unstable. Now I have to figure out how to strategically change interval spans or delete intervals to relieve this pressure.
Just a day in the life of the creator of a universe. heh heh.