Devin Üner

Genesis

The basic idea behind this project is simple, I set up a variety of virtual “creatures” which each contain their own “DNA” and have their own “memory”. The creatures require food to survive, and can move around in their virtual environment. The interesting bit is that they are also able to reproduce, spawning new creatures with instructions that differ only slightly, if at all, from their own. Over time more efficient creatures get created, and more complex behaviors can emerge.

This is essentially a really trimmed down and simplified version of the evolutionary process that takes place in the real world.

You can select an action and then click in the world to preform that action, adding walls, food, or erasing everything. You can also inspect an individual creature and see it’s code, though it’s unlikely any human will be able to make much sense of the code without a very lengthy review process.

The base instructions, or “DNA” for the creatures was based around a language called brainfuck. In typical brainfuck there are 8 instructions, I played around a lot with brainfuck and evolutionary programs in college, but for this project I needed something slightly different. The core concept is the same, there are only about a dozen instructions, but I changed up a few of them to make it both easier for the creatures to evolve, and make it easier for me to write.

The two main changes are the addition of a random number generation command, which simply writes a random number from 1 to 10, and the simplification of the loop mechanism. Instead of conditional loop commands to jump forwards and backwards in the program, I just let it jump forwards by whatever amount is currently in memory at the data pointer. Mostly this was because I was too lazy to write out the code to find where loops start or end, but also I thought that this simplification might make it easier for complex behaviors to evolve.

I also added the ability to self-terminate the program at any point, since there is an associated cost to running every command (thinking costs food).