Controls
Start a run. Bots = population size. Boards = parallel tables. Gens = how long we evolve. Speed 10 + Turbo is fastest. Lower speed to watch matches. Last match opens that game from the first ply on /play — arrows step through. Play against NEAT is at the bottom; Full Play seats you vs the saved champion.
Gen 0 · idle
Train
Full PlayWhat we are doing
NeuroEvolution of Augmenting Topologies. We do not backprop a fixed net. We keep a population of genomes — each a small neural net that looks at the Hexalt board and picks a move. They play free-for-alls. Fitness ranks them. The fitter ones breed. Mutation adds links and hidden neurons, so topology grows only when it helps.
The best mind
Current champion genome. Blue nodes are sensors (own marble, foes, the ring of hexes). Pink nodes are actions and hex weights. Violet nodes appear when a mutation splits a link. Hover a neuron. Drag to orbit. Live fire means this net is deciding on a board right now.
Species
Protect new topologies. A baby net with an extra hidden node usually loses to a mature one. NEAT clusters similar genomes into species (compatibility δ) so they compete among relatives first. Too few species is a monoculture. Too much churn means lineages die before they matter.
Fitness
What the score is teaching. Fitness is not “looks smart.” It is the sum of match grants: winning, placing, uranium, not looping. Peak is the best score this run has ever seen. A long stretch since peak means the population is circling a local optimum.
Mutation
How the graph grows. Start simple: inputs wired toward outputs. Each generation can add a connection, add a node, or tweak a weight. Mean links and hidden nodes are complexity. Compatibility δ is genetic spread — if it collapses, everyone is the same wiring.
Tables
How a genome is tested. Each generation sits genomes at parallel Hexalt tables. Smaller seats (2p+3p) avoid early pile-ons. Turbo hides the boards so the engine can run long slices. Drag Speed down to watch a match like a student, not a batch job.
—
A finished game
What winning looks like. A true win board is a genome that ended the FFA. Until then we show the highest-fitness snapshot so you can see what “better play” looks like on the hexes — reactors, boats, who is still standing.
Telemetry
Live metrics. The loop is train tables → champion eval → breed. Throughput is gens per second. Eval win rate is how often the prospect beats a fresh table. Green values are healthy. Orange means this gauge is sliding the wrong way.
Overview
Gen 0
Idle
ready
Progress
Wall-clock time when this training run first began (kept across Resume).
Time since the run started, including pauses while the tab was backgrounded.
Where this generation is in the loop: train tables → champ eval → breed.
Average engine steps on live boards vs the step cap (how far matches have run).
Active boards vs boards in the current parallel wave.
Speed
Rolling generations completed per second.
Wall-clock time for the most recent finished generation.
How many free-for-alls run at once (auto-scales with machine cost).
Engine steps advanced per animation slice (higher = faster sim, less UI).
Fitness
Highest fitness in the current scored population.
Best fitness ever recorded this run (survives noisy crash gens).
Generations since the all-time peak last improved — long stretches mean stagnation.
Average fitness across the population this generation.
Share of champion free-for-alls the prospect won after training. Sparkline shows the trend across gens.
Consecutive eval rounds the champion stayed strong enough to count as undefeated.
Diversity · complexity
How many NEAT species the population is split into.
Species born vs extinct vs last gen (sparkline = born+extinct). Steady low churn with many species = healthy exploration; high turnover = lineages die before they matter.
Distinct play-style signatures this generation (behavior variety).
Shannon entropy over styles — higher means a more even mix of behaviors.
Mean pairwise genetic distance — higher means topologies are more spread out.
Average enabled connection genes — network wiring complexity.
Average hidden neurons per genome.
● doing great● struggling▲ higher is better▼ lower is better
History
Fitness and diversity over gens. The left chart is selection pressure: best and mean fitness. The right chart is whether the population is still exploring — links, genetic distance, style entropy. A rising peak with flat diversity is a warning, not a victory.
Fitness
Complexity · diversity
Landscape
Local peak vs global peak. Think of fitness as terrain. Species camp on ridges. A local peak is a style that wins today’s tables but cannot climb further. The landscape is here so you can see whether we are exploring valleys or sitting on one hill.
Waiting · 12% converged
drag to orbit · yellow local peak · blue global peak
drag to orbit
Start training to see the population on the landscape.
Play styles
Behavior, not just wiring. Two nets can share a topology and still play differently. Style tags (turtle, looper, rush…) are behavioral signatures. Entropy high means a mix. One tag dominating every seat is how a species tree collapses.
- No tags yet
The scoring rubric
Every grant is a lesson. These numbers are the teacher. Rewards pull the population toward finishing games and building a real engine. Penalties and culls push it off loops and empty motion. Change the table size and the placement range changes with it.
Match fitness (2p+3p FFA). Leaders score is the average of these grants across tables.
- +120Win the matchSeat is the FFA winner.
- +0…50Win speed bonusExtra if you win fast: max(0, 50 − steps/100).
- +18…54Placement3p: 1st +54 … last +18 (rank × 18).
- +12 eachUranium collectedPer uranium gained during the match (+20 the first time).
- +5 eachPushesShoving another marble.
- +14 eachTerrain buildsEach tile spent from inventory (+24 the first time).
- +1.5 eachShop buysWall, boat, or shield purchase.
- +12Reactor placedOnce per match if a reactor goes down.
- +28First real activityAny non-looper play (not pure roll→end).
- +0.35 / turnTurns aliveCapped at 50 turns — only if not a looper.
- −15 eachOcean fallsFalling into the water.
- ≤ −50Idle looper cullNo win, uranium, push, build, buy, or reactor → score − 150, then capped at −50.
Leaderboard
Who breeds next. Top genomes this generation. Rank is fitness, not age. Species id and style sit beside the score so you can see whether one family owns the table or several lineages are still in the fight.
gen 0 · 0 species
- No scores yet
Play against NEAT
You vs the current net. Same Play table, simpler room — no forest, no lobby, left-drag to orbit. Seat the genome on screen across from you and take turns. Open full Play if you want the whole table.
You vs the current net — simplified Play table (same engine as /play).
Start a 1v1. Drag to orbit, same moves as Play.