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 Play

What 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.

Generation
0
Population
48
Phase
STANDBY
Table mix
2p+3p

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.

Status
SEED PREVIEW
Genome
Fitness
Hidden · links
seed
input 0→1hiddenoutput

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.

Species
Churn
Waiting for clusters…

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.

Best this gen
All-time peak
Since peak
Mean
Eval wins
Undefeated
0

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.

Mean links
Hidden nodes
Compat δ
Style entropy

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.

No finished game yet

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

Started

Wall-clock time when this training run first began (kept across Resume).

Elapsed

Time since the run started, including pauses while the tab was backgrounded.

PhaseIdle

Where this generation is in the loop: train tables → champ eval → breed.

Match steps

Average engine steps on live boards vs the step cap (how far matches have run).

Live boards

Active boards vs boards in the current parallel wave.

Speed

Throughput

Rolling generations completed per second.

Last gen time

Wall-clock time for the most recent finished generation.

Parallel boards

How many free-for-alls run at once (auto-scales with machine cost).

Steps / frame5

Engine steps advanced per animation slice (higher = faster sim, less UI).

Fitness

Best this gen

Highest fitness in the current scored population.

All-time peak

Best fitness ever recorded this run (survives noisy crash gens).

Since peak

Generations since the all-time peak last improved — long stretches mean stagnation.

Mean fitness

Average fitness across the population this generation.

Eval win rate

Share of champion free-for-alls the prospect won after training. Sparkline shows the trend across gens.

Undefeated streak0

Consecutive eval rounds the champion stayed strong enough to count as undefeated.

Diversity · complexity

Species

How many NEAT species the population is split into.

Species churn

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.

Unique styles

Distinct play-style signatures this generation (behavior variety).

Style entropy

Shannon entropy over styles — higher means a more even mix of behaviors.

Compatibility δ

Mean pairwise genetic distance — higher means topologies are more spread out.

Mean links

Average enabled connection genes — network wiring complexity.

Hidden nodes

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

No data yet

Complexity · diversity

No data yet

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.