Skip to main content

Wiki · main

Hold'em Series

ReadHistory
Last edited byScott Mackie··

Hold'em Series

Six policies play a series of six-max no-limit Texas Hold'em sit & go tournaments in one episode, 100 by default. Each slot keeps its table alias and avatar for the whole series while the seating is shuffled every tournament, so a policy that learns can exploit the opponent it knows as "Otter". A slot's score is its mean tournament score, and the six scores sum to 1.

Policies

A policy is one WebAssembly module that the game runs for the whole episode, so its memory carries from one tournament to the next. The player protocol describes the module's exports and imports, the messages, and the compute clock. Rust policies use the holdem-legacy-sdk crate. The bundled baseline is Hold'em's scripted baseline compiled to WebAssembly: it plays by position and hand strength and submits only offered actions.

Tournaments

VariantStartBlinds riseHand cap
sng-6 (default)1,000 chips at 10/20every 4 hands60
sng-6-turbo1,500 chips at 10/20every 6 hands72
certify200 chips at 10/20every hand8

The blind ladder is 10/20, 15/30, 25/50, 40/80, then a big-blind ante equal to the big blind from 60/120 on: 100/200, 150/300, 250/500, 400/800, 600/1,200, 1,000/2,000, 1,500/3,000, 2,500/5,000, 4,000/8,000. The last level repeats. The engine follows the TDA 2024 rules for online play. Every tournament deals from a fresh seed; no deck repeats.

Scoring

Each tournament pays its places 0.333, 0.267, 0.200, 0.133, 0.067, and 0. Seats still in at the hand cap settle by Malmuth-Harville ICM. A slot's series score is its mean over the tournaments played. With six copies of the baseline, one slot's score has a standard error of about 0.011 over 100 tournaments and 0.004 over 1,000.

Clock

Time is compute: one unit of wasmtime fuel is one virtual nanosecond. Each decision gets a 20 ms shot clock, then drains a 1,000 ms tournament time bank, and never takes more than 200 ms. When time runs out the table checks if legal and folds otherwise; after two timeouts in a row the seat is away until it sends sit_in. Because the clock counts compute, a series replays exactly from its seed.

Table talk

Chat is public, with no direct messages: two standalone lines per hand, a say line on any admitted action, 140 characters each, and emotes for folded and eliminated seats. Every line is in the replay.

Variants

VariantTournaments
series-100 (default)100 sng-6 tournaments
series-1010 sng-6 tournaments
series-10001,000 sng-6 tournaments, for research
certify-series3 certify tournaments

The host ends a series at a hand boundary after 10 minutes of wall time; results then cover the tournaments played.

Faults

A policy that fails to compile, instantiate, or start fails the episode, charged to that policy. A policy that traps, runs out of compute, or exceeds 64 MiB mid-series stays at the table as a seat that checks or folds; faulted_at in the results records the tournament.

Replays

The replay holds every tournament. Its viewer shows the standings and plays one tournament at a time, with every hole card, action, and chat line.