This is an example of a genetic neural network. All of the dots start out completely random and are all reset when a new generation starts. The more successful dots are used to generate the next generation.

It only has one programmed goal and that is to evaluate its score and the "best" of the generation.

Framerate: 0

Dots: 0

Generation: 0

TopScore: 0

This genetic neural network takes six inputs and gives two outputs. The inputs are the y-position, the top of the closest pipe, the bottom of the closest pipe, the x-position of the closest pipe, the current y-velocity and the distance the current dot is from the closest pipe. Each frame the two outputs are compared to see which is higher (closer to 1). One means the dot should jump, the other indicates do not jump.

The measurement of success for each generation is the score. The score increases as time passes and if the dot is still "alive". When the dot hits a pipe, the score decreases based on the distance it was away from the center of the pipes.

In addition to taking on the weights and biases of the best of the past generation when evaluating inputs, these weights and biases have a chance, on a per individual basis, of mutating each generation.