I was able to make some progress on the Darwin at Home "Orb" which will be the new home for the evolution. The emphasis has shifted from the creatures (the focus of both the Build-Evolve and the Intelligent Design versions) to programming the individual elastic interval as if it were a cell.

You can see here that there is a kind of terrain visible on the surface of the Orb. This orb is made up of triangles, although you cannot directly see them (here and there you can detect 60 degree angles). The contents of the terrain (determines color) is nothing more than a single floating point number at each node of the triangulated Orb. The terrain was generated using a seeded pseudorandom number generator, and two simple functions I wrote corresponding to image-blur and image-sharpen. The random number trick allows the software to generate the Orb's features flawlessly on the client so that the colors do not have to be stored and communicated.

I'm thinking that the color differences might be analogous to altitude, and therefore affect physics via the "damping" or "viscosity" attribute (see previous versions). On the other hand, it may make sense to have the colors reflect the amount of food available, which would then change over time. That sounds really interesting because then you could see the food gradually get depleted as cells graze.

There is a lot of stuff built into this orb that you cannot see here. The nodes on the orb are (here we go...) Patches, which implement TerrainNode, and each contain a collection of Coalition objects which correspond to groups of Cell implementations residing on elastic intervals. It's a whole lot of fun to put this all together! I'm fairly well on the way already to implementing the Elastic Interval Cell programming idea.

Last night I started with the first cell implementation which is the Muscle Cell. That's a reformulation of the way things work now. Also, I'm busy programming the way you fly towards and around the Orb (real fun!) because this is now the only interaction. There's a beauty in that. There's only one screen and one point of view. I'm giving the PointOfView object a preferredAltitude and a preferredDistance from what is being viewed. This should be enough to situate the POV in space.

Soon I will explain the plans I'm working on to have the world actually exist on the server, and yet have the clients do the evolution work. Think about it. Quite a challenge.