The AI is a small neural network (106 inputs → 64 neurons → one score per possible move; each brain can optionally use a second 64-neuron layer, selectable in “The brain”). It looks at the table
exactly as a player sees it — its own tiles, the tiles already played, the two ends, el bote, hand sizes and tallies,
plus what each opponent has shown this round (which numbers they played, how many tiles they drew from el bote, their pasos)
— and picks a move by probability. Three copies of the same brain play full rounds against each other.
At the end of each round, every player receives a negative reward equal to the points added to their tally (pips rounded up to the next 10, /10).
Moves that led to good outcomes become more likely, bad ones less likely (a policy-gradient method called REINFORCE, with a
round-average baseline and a small entropy bonus). No game-tree search, no move simulation, no online data.
Because dominoes is a game of hidden information, the brain must infer what the others hold — that is what training discovers.
There are two brains (choose in “The brain” card): v1 is the fast one just described — opponents' histories enter as
small summaries. v2 additionally gives each player a recurrent memory that is updated after every event of the round
(any play, draw or paso, in order) and trained through the whole sequence — it can in principle learn finer patterns like
“he drew twice from the bote and still hasn't played a 5”, but it trains noticeably slower. Train them separately and compare
them with the experiments below.
The cards on this page, in order:
A flat network. It sees what each opponent has shown this round as compact summaries: which numbers they played, how many tiles they took from el bote, their pasos. Fast (~0.5 ms per training round); the solid workhorse.
Changing this rebuilds v1 from scratch (untrained) at the new depth — its saved brain and history are cleared.
Same head, but each player also carries a memory updated after every event of the round (plays, draws, pasos, in order) and trained through the whole sequence. It can in principle learn finer patterns (“he drew twice and still hasn't played a 5”), but it is ~4× slower per round and noisier to train.
Changing this rebuilds v2 from scratch (untrained) at the new depth — its saved brain and history are cleared.
Copies v1's trained head into v2 (memory parts start fresh). v2's training counter restarts at 0.
The active brain is saved automatically in this browser every 500 training rounds. Each architecture has its own saved brain and training history. To play against trained brains, use the separate play page and seat Serondo / Cazurro — load their exported weight files there.
Two honest baselines for everything else on this page. Uniform random play is the true chance level. A fresh untrained brain (of the active architecture and depth, straight from init) is not a random player: its random weights give it a fixed, arbitrary policy that usually lands a few points above chance — proof that even a fixed strategy beats picking blindly. Both are measured over 10,000 complete matches to 11 and 10,000 to 21 — round after round, with tallies and eliminations — against two random opponents, with every number wobbling only about ±1%. Compare trained brains against these references, not against 33% alone.
Train the active brain (from “The brain”) by REINFORCE, in chunks so the page stays responsive. With “learner copy” in both seats it is classic self-play (three copies of the same brain); pick “random” or any loaded file brain instead and it trains against frozen opponents — the same choice as the Curriculum, but without the scheduled measurements. The learning rate applies to the active brain; if the curve sawtooths, lower it (e.g. 0.001–0.002). A training round is one hand, so 200,000 rounds is roughly 10,000 hours of playing domino. Press Stop to pause at any point; the button then becomes Continue for the rounds still owed, so you can change the learning rate or the opponents mid-run.
Green: average points the AI concedes per round when playing greedy against two random opponents (lower = better; a strong player trends toward 0–1). Grey: average points per player during training. Red dashes: the untrained baseline.
Trains all four brains — v1 · 1L, v1 · 2L, v2 · 1L and v2 · 2L — each from fresh random initial conditions, one after the other, always against themselves (three copies of the same brain, self-play REINFORCE). Each brain gets four phases of 20,000 rounds at learning rate 0.0005 → 0.0003 → 0.0001 → 0.00005 — 80,000 rounds in total. After every 4,000 rounds the brain as it stands plays 10,000 complete matches to 21 against two random players and its win rate is recorded; a first measurement is taken before any training (untrained, fresh random init). Results land in the table and the graph below and are downloadable as CSV and as a full HTML report. It is a very long run — many hours. Press Stop anytime: everything measured so far is kept in this browser and the tour can be continued later from exactly where it stopped. The brains of this tour are independent of “The brain” above — your active brain is untouched and fully restored when the tour stops. The matches count only the win rate of the trained seat; the two random seats never learn.
Win rate in 10,000 matches to 21 vs two random players, measured after every 4,000 self-play rounds. Chance (uniform random play) is about 33% — see “Random strategy beats random play” for the honest baselines.
The same protocol as the grand tour, but five independent v1 · 1L brains, each from its own fresh random initial conditions — so you can see how much of the learning curve is the architecture and how much is the luck of the draw. Each of the five runs gets four phases of 20,000 rounds at learning rate 0.0005 → 0.0003 → 0.0001 → 0.00005 (80,000 rounds each), always in self-play; after every 4,000 rounds the brain plays 10,000 complete matches to 21 against two random players and its win rate is recorded. A first measurement is taken before any training (untrained). The mean of the five is the thick dark line in the graph and the last column of the table. Very long run — press Stop anytime and continue later; everything is kept in this browser. Your active brain is untouched and fully restored. Results downloadable as CSV and as an HTML report; each finished run's trained weights can be downloaded too.
The strategy, in four phases. Phase 0 — breed: a small population of fresh brains (seeds of v1 · 1L and v2 · 1L, the two architectures that earned their place in the grand tour) is trained from random initial conditions in classic self-play, with the proven decaying learning rate 0.0005 → 0.0003 → 0.0001 — optionally with up to twice the pre-training for the v2 · 1L seeds, which mature more slowly than v1 · 1L. This gets every player to ~59–61% vs randoms fast and cheap. Phase 1 — league training: each member, in turn, trains a block of rounds as the learner while the other two seats are frozen opponents drawn at random from the pool: the other members' current brains, snapshots of every member's past selves, the loaded champion file, and a selectable share of random players (to stop drift against the general game — raise the share if the population drifts off it). Nobody overfits to one table for long, and every learner faces opponents whose habits it has not absorbed — the lever that self-play, with its 61–62% ceiling, cannot pull. Phase 2 — evaluate and replace: a round-robin (modest sample per pairing, alternating chairs) ranks the members head-to-head and against two randoms. The bottom half is replaced by fresh clones warm-started from the top half's weights (Adam state reset, doubled learning rate for exploration) — soft selection: nobody dies from one noisy day, and the population ratchets upward. Phase 3 — sharpen and crown: the top two fine-tune at low learning rate against only the elite, the final ranking is computed, and the champion is put to the test: 10,000 matches to 21 vs two random players and, if a champion file is loaded, 10,000 head-to-head vs that champion (chairs alternating). Progress, populations and results are kept in this browser — Stop anytime and continue later. Your active brain is untouched. Everything is downloadable: cycle history as CSV, a full HTML report, and the champion's trained weights (.json).
A controlled experiment, in segments of 10,000 rounds. Each press of the button measures the brain as it is (5,000 matches to 11 and 5,000 to 21 against two random opponents), then trains 10,000 self-play rounds, measuring after every 1,000. It never resets anything by itself — reset the brain in “The brain” first if you want the from-scratch curve. Between presses you may switch brain (v1/v2 below), change the learning rate or the depth: the moment you do is marked with a vertical red line in the graph and a red line in the table, so you can see what each setting contributed. Thick lines: win rate over 5,000 matches. Faint lines: last 1,000 only (raw noise). Shaded: ±2σ pure-chance spread of each line. The x-axis counts rounds trained during this experiment.
Load brains from weight files (exported with “Download weights”); they become frozen opponents. The active brain (from “The brain”) trains in seat 1 by REINFORCE while the frozen opponents play greedy and never change. Pick who sits in seats 2 and 3: the learner's own copies, random players, or any loaded file. Every 1,000 rounds the learner is measured over 5,000 matches: vs two random players and vs two copies of each loaded brain. Segments of 10,000 rounds per button press; between presses you may switch brain or learning rate — the moment is marked with a red line. Nothing is ever reset automatically.
Benchmarks the active brain (seat 1, playing greedy) over 10,000 complete matches to 11 and 10,000 to 21 — round after round, with tallies and eliminations — against two copies of each available opponent. Random is always available; the trained brains appear as soon as you load their weight files (load them with the button below or in the Curriculum card — files land in the slot that matches their architecture and depth). For the chance level and the untrained baseline, see “Random strategy beats random play” above. With 10,000 matches, chance wobbles each number by only about ±1%.
Load up to 12 brain files — any mix of v1/v2, 1L/2L. Every entrant plays 10,000 complete matches to 21 against two random players, and every pair of entrants plays 10,000 matches to 21 against each other with a random player in the third seat. Seats are swapped every other match, so nobody benefits from a fixed chair. Each cell shows the row brain's win rate against the column brain; the last column is its rate against two randoms. With 10,000 matches per pairing, chance wobbles each number by only about ±1%. It is a long run — press Stop anytime and everything already measured is kept. Results are downloadable as a webpage.