NodeBox

Create visual output with Python programming code
Home Download Reference Tutorial Library Gallery About

Evolution

evolution-headerThe Evolution project is a sequel to Ludivine Lechat's Graphic Cellular Domestication postgraduate program at Transmedia. She devised a set of parental cells and evolutionary rules with which she could domesticate graphic cell organisms from microscopic components.

 

 

 

These cells are great material for a genetics proof-of-concept in NodeBox. By recombining the domesticated cells creatures are created that interact with each other in a hostile environment. The idea is to extract a tested set of genetic algorithms from the project later on. These can be used in parts of the planned Gravital research project by applying them on graphic design in general instead of roaming creatures. What happens when we use genetics to describe or create visual communication? Is there a generative strategy to design? Is there something like a design crossover, a historical gene tree from which contemporary design emerges? Is it possible to recombine "good designs" to create even better ones?

Anyway, on to the Evolution project.

 


The factory

The factory is the place where creatures are born and bred. Each creature is constructed randomly from a pool of components (or body parts): we discern between heads, tails, cores, flippers and tentacles. The way a creature is constructed determines it's behaviour later on in the survival game. This makes the environment entirely procedural: there is an endless variation of creatures and therefore an endless variation of behaviour and ways creatures interact with each other!

Different components and their behavioural impact:

 

 


Genetic recombination

The factory gets a bit more interesting once we have determined a number of creatures that have a high potential of surviving a hostile environment. These we can then use as ancestors to evolve new creatures that are better balanced and have a higher chance of rising up in the food chain. A good breeding programme is essential for the world's evolution.

In the example below we cross-bred Docole and Timude species. The Docole is a fast and aggressive predator, but not too bright. The Timude on the other hand is a cute and docile flocker, fast and bright which gives it good evasive qualities. Notice how their children have both the Docole's tentacles and the Timude's flippers, it's not that ferocious anymore but it has flippers for speed and some basic intelligence, which will likely improve its chances of finding food.

 

Play movie

 

Internally in the programming code, each creature is stored as a little piece of DNA. Creatures are recombined using a genetic algorithm that constructs a new DNA from the information stored in both ancestors' DNA. You can watch the movie in which an even better generation is spawned from crossing the Docole and the Timude.

 

Docole ancestor

Timude ancestor

Vubipo child

 


The arena

Creatures pit their strengths against each other in the arena. Here, they get to fly around, flock together, hunt down enemies, struggle for survival. In the example below, the Docole is pitted against three of the Timude species, which is kind of a long and boring match because the predator is way to dumb to catch any of Timude, and the Timude are way to weak to fight the Docole. What you get is a lot of running around in circles.

The creatures' motion is handled by the flocking algorithm in the Boids library, expanded with procedures for chasing and evading, cooperation and hunting strategy.

Typically, a fight goes a bit as follows:

 

Play movie

 

Play movie

 

In the example above we offer a reversed scenario: three of the Docole species against one of the Timude. You can instantly see the difference in the animation as the three work and fight together in a very aggressive manner. The poor Timude doesn't stand a chance and is eliminated from the gene tree. Life is cruel!

 


Further reading

 


Downloads

Download Siggi's music and a 100 creatures:

 


Exhibitions

 


Credits

The genetic algorithm was written in NodeBox, the creatures' flocking behaviour was based on Boids and Photobot was used to render the creature PNG images files.