About


This is a simple implementation of Richard Dawkins' famous biomorphs. Dawkins first described biomorphs in his book The Blind Watchmaker, and this implementation is based on the program he wrote for it.

Some biomorphs resemble insects, microorganisms and all kinds of interesting objects.

I wrote a biomorphs implementation a long time ago when I was a CS student at Cal Poly Pomona. I've since rewritten it several times to keep it up to date. So far, it's gone from Java (an applet), to JavaScript, to TypeScript.

Each biomorph has a genome of 25 integers and is drawn as a binary tree, which its genes steer as it grows. For instance, the first gene sets the depth of the tree, eight set how far its branches reach in each direction, three set the color of each level, and others repeat and mirror the body. They're all described below.

Breeding biomorphs is simple:

  1. The biomorph in the middle is the parent.
  2. Around it are its eight children, each a copy of the parent with one gene moved up or down by one.
  3. Click the child you like best. It becomes the parent and has a litter of its own.

Click the parent for a new litter, or Random Monster to start over. A few generations of picking whatever looks a little more like an insect, a fern, a bat or a letter of the alphabet is enough to get surprisingly close.

The page's address always holds the parent's genes, so you can copy it to share a biomorph or come back to it later.

The genes

  • Depth: how many times the tree branches, from 1 to 9.
  • Steps: how far a branch reaches in each compass direction. Mirrored directions, like northeast and northwest, share a gene, which is why every biomorph is symmetric left to right. A negative step makes branches fold back on themselves.
  • Segments and spacing: the body can repeat, up to eight trees down a spine, like the segments of an insect or a centipede.
  • Gradients: each segment can be a little bigger or smaller than the one before, with a gradient for each step and one for the spacing.
  • Spokes: up draws the body as it grows, up/down adds its mirror image upside down, and radial adds those two turned on their sides as well.
  • Color and width: how the lines are drawn. These are this app's own and don't change the shape.

Hover over a biomorph, or click Show Genes, to see its genes. The gene that changed from its parent is highlighted, and genes that have no effect, like spacing on a biomorph with one segment, are dimmed.