Apr 2, 2022
Last summer I read a book “The Blind Watchmaker” by Richard Dawkins, it’s on evolution, and Darwin's theory. In the book Dawkins presented a video game to show cumulative selection, he called it “Biomorphs” based on the idea of artificial selection, the organism which pleases our eyes survives. I only saw the images of that video game in the book but I wanted to create the game myself, so this week I found sometime to work on the game. You can play it here, but you’ll need desktop or tablet because of screen size constraints.
The gameplay is simple, you are presented with 9 organism, the center one is the parent organism and other 8 are its offspring with some mutations. The organism are trees and genes are “Branch Length” “Branch angles” “Number of recursive branches” and “Angle Difference on different levels”.
In the image above, the center tree is the parent organism with just one level which is trunk, all the other organism are its offspring with mutation errors like different length, or levels ( like bottom center one ). If we pick any organism ( killing all others ), we are presented with its offspring then. Like if I pick the bottom center one.
All the offspring of the organism I picked are its copy with some trait difference, the special one is bottom right one. It’s has level 2 branch, and if I pick it because it looks pleasing — artificial selection, I get this.
The top left one looks good, let’s keep picking, and after few generations I got this.
Below are some interesting biomorphs I got.
Remember they are all evolved form of the simple organisms. The game can be improved by adding more traits to the organisms and even coloring them. Instead of single parent, we can implement multiple parents, selecting their traits to create offspring.
The Darwin theory of evolution is extraordinary and l enjoyed the reading the book and recommend to everyone to give it a read. The source code of the game is available at https://github.com/humayunj/biomorphs and if you’re curious I’ve used p5.js library for canvas abstraction and recursive approach to generate fractal trees.