Each car's brain is a genome: a list of node genes (sensor inputs, a bias, two outputs for steering and throttle, and whatever hidden neurons evolution has grown so far) and connection genes (a weight between two nodes, tagged with the "innovation number" that records when that exact connection first appeared anywhere in the run). Reproduction mostly perturbs existing weights, but sometimes it splits a connection to insert a new neuron, or draws a brand new connection between two nodes that were not linked before — that is the "augmenting topologies" part: structure grows only when it survives, never all at once. When two parents breed, matching genes (same innovation number) are inherited from either parent at random, while the leftover "disjoint" and "excess" genes come from the fitter parent, so a lucky structural mutation cannot be lost by careless crossover. Cars are grouped into species by how similar their genomes are; each species only competes against its own kind (fitness sharing), which protects a fresh, still-clumsy structural innovation from being wiped out by older, already-tuned designs before it gets a chance to improve. Species that stop improving for 15 generations are dropped, except whichever species is currently sitting on the best car found so far. A car dies when it hits the track edge, or when it stops making forward progress for a few seconds — fitness is simply how far along the centerline it got, so idling and driving backwards are never rewarded. Not keen on the three built-in tracks? Hit "Draw track", click out your own closed loop on the canvas, and evolve cars on it instead — it is saved in your browser so it stays around next time.