3-way solving
A spot three players reach on the flop, turn or river can be built and solved in Solve › Build with 3 players, on your own computer or on our server, and read in the viewer here. There is no 3-way library: three ranges and their sizes make too many spots to pre-solve, so you build the ones you want to study.
A build on this computer runs in a solver process here and nothing about it leaves the machine. A build on our server sends the spot's spec, and only that: never a hand, a hand id, a screen name or anything from your database.
Building one
In Solve › Build, switch Ranges from 2 players to 3 players. It is the same builder with a third seat:
- Ranges: three, in postflop order, the first to act on the left.
- Spot: the board (a flop, a turn or a river, picked from the deck or typed, as for heads-up; the dice deals a random one), the starting pot, each seat's stack, and 1bb in chips: no bet or raise is ever smaller than one big blind.
- Sizing: each seat has its own bet and raise sizes on every street, as % of the pot (a raise is % of the pot after calling). Several sizes go comma-separated. A blank bet box means no bets for that seat on that street, all-in included: it checks, and can still call or raise (a blank raise box: it never raises). Leaving a seat's bets out is the cheapest way to shrink a tree (what sizes cost); the Tree panel shows what it saves before you solve. BB → all and its neighbours copy one seat's sizes to the other two.
- Raise cap (raises a street) and All-in are kept per street: the 3-way engine has them for the street as a whole. The all-in is offered to every seat with bet (or raise) sizes on that street.
load preset… fills the three ranges, the pot and the stacks. Presets never fill sizes. They come from two places:
- The heads-up templates (CO open · BTN call · BB call): the opener's and the button's ranges are the templates' sides, 100bb deep. The big blind's range is marked approximate: it is the big blind's defence against an open alone, and against an open and a call it defends tighter.
- A preflop sim you have, downloaded from the library or imported under Data & imports › Preflop sims, named after the sim and its game (CO open · BTN call · BB call · 3x GTO - 2cc (200bb, ante)): the 3-way pots that sim itself reaches, one open called twice with everyone else folded. Each range is that seat's own range at the flop in the sim, weights included, so nothing is approximate; the pot and the stacks are the sim's chips (blinds, the open, the calls, the ante or dead money). A pot the sim reaches in fewer than 0.2% of its hands (one in 500) is left out, and so is every limped pot. The ⓘ beside a range says how often the sim gets there.
Greyed, with the reason on hover: rake, donk bets, merging close sizes, one size after a raise, forced bets, and added or removed lines. The 3-way engine has none of them yet.
Saved configs and the Jobs list are the heads-up builder's: a 3-way config loads back into 3 players.
What it needs, before you solve
The Tree panel asks the engine to count the tree, without building it, and states:
- its nodes;
- the memory it needs at most. 3-way solves are always 16-bit, so Solver memory does not apply to them;
- the time to your target, estimated: scaled by tree size and target from the 3-way trees we measured (a river in seconds, a turn in about 6 minutes, a flop with strength groups in about 6 hours on an 8-core desktop). Your ranges, sizes and CPU move it.
Then a verdict: fits easily; fits only with little else running; won't fit (Solve is off; strength groups is offered when the build is exact); and anything estimated in hours asks first: Start or Cancel, with the time and memory stated again.
How many sizes each seat has is what decides a flop. The same flop (Ks8d4c, CO open, BTN and BB call, the templates' ranges, all-in on every street, the same sizes on every street, strength groups), counted, never solved: the memory each needs at most.
| Each street | Every seat bets | BB never bets | BB and CO never bet |
|---|---|---|---|
| 1 bet size, 1 raise size | 8.13 GB | 3.39 GB | 0.91 GB |
| 2 bet sizes, 1 raise size | 41.3 GB | 15.9 GB | 3.54 GB |
| 3 bet sizes, 1 raise size | 61.4 GB | — | — |
| 2 bet sizes, 2 raise sizes | 60.8 GB | — | — |
| 2 bet sizes, 2 raises a street | 48.6 GB | — | — |
— is not counted. Exact hands need about three times as much (25.1 GB for the first row). A turn is megabytes: the first row's turn needs about 150 MB exact. Two sizes with BB and CO never betting is under half of one size for every seat: on a 32 GB computer, a seat on no bets is what makes a second size fit.
On our server
A flop that does not fit your computer, or that would hold it for hours, can be built on a megamaster box instead. In the Solve panel, Where is This computer or Our server. With our server chosen, the Tree panel puts the two places side by side for this tree: the memory it needs against each machine, the time here, the box-hours there, and how many box-hours your month has left.
- What leaves. Build on our server asks every time, listing exactly what is sent: the board, the pot, the stacks and 1bb, the three ranges (1,326 weights each), each seat's sizes, the buckets, the target and the time cap. Nothing else: no hand, no name, no database, not even the seat labels or your config's name. A spot filled in from one of your own hands builds on this computer only. Before you confirm, only a fingerprint of the spec (its hash) is sent, to find a stored build and your allowance.
- Box-hours. One box for one hour (a 32-core, 64 GB machine; a bigger one when the tree needs it). The estimate is scaled from what we measured on that box: our measured flop to ±2.5% is about 1.1 box-hours. Your allowance is 10 box-hours a month, charged what the box really used, not the estimate. A tree too big for any box we use is refused before anything is sent.
- While it builds. The builder's status block and the Jobs list show queued (waiting for a box), then the same ± per player as a build here, then done. Closing megamaster doesn't stop it: the result waits, and the builder says so the next time you open it. One build runs at a time for you, and three more can wait.
- The result downloads with Download and open into your saves (a server folder) and opens in the viewer here. Like a library tree, it opens with your licence. It is the trimmed save (Saves): rivers, turn re-solves and heads-up lines run on your computer, as for a build made here.
- Built once. Builds are kept on our server, without who asked, so the same spot is never built twice. Spots that differ only by suits are the same spot. If a stored build already meets your target, the Tree panel says already built: it opens at once, for 0 box-hours. A tighter target continues the stored build instead of starting again, and costs only the difference.
- Spot boxes. Our boxes are ones the cloud can take back at two minutes' notice. A build saves its progress every ten minutes and when the notice comes, and carries on from there on the next box, ending exactly where an unbroken build would.
Buckets
A 3-way flop is big because every turn and river has its own strategy for every hand. Buckets group hands on the river while solving: less memory, a higher floor on the ±, never faster. The ± is always measured on exact hands, in the real game, so a bucketed solve's figure is what the grouping cost. Choose in Settings › Solver & data › 3-way buckets or in the Tree panel's select (the same choice):
- Exact: every hand its own.
- Strength groups (the default): hands of the same river strength play one strategy.
- 50 a river and 20 a river: coarser still.
On one 3-way flop (Ks8d4c, CO open, BTN and BB call, the templates' ranges, one bet and one raise a street, all-in on every street) the four need at most 25.1, 8.1, 7.2 and 6.3 GB, counted at 8 threads; the strength-groups build measured 8.0 GB. Its turn, solved 600 iterations each way, reached a worst gain of ±0.07%, ±0.28%, ±0.67% and ±1.89% of the pot. A bucketed build carries a bucketed mark wherever its numbers show.
What the ± means
A heads-up solve reports its exploitability. A 3-way solve has no single figure like that: the ± is the worst player's gain, the most any one of the three could win, as a % of the pot, by changing their own strategy while the other two keep theirs. Each player's own gain is in the mark's ⓘ and in the builder's status block. A 3-way solve is one equilibrium of possibly several, never "GTO".
The target is that figure: ±0.2% of the pot for a river or a turn and ±2.5% for a flop unless you set another, with a time cap (6 hours for a flop). While it solves, the status block shows each player's ± at every check, the worst one bold, and the checks so far. Checks are spaced out: on a flop one costs minutes. Stop keeps the tree as it stands, after one last check, so the ± always describes the tree you open.
No rake
The 3-way engine has no rake: every 3-way EV is rake-free, and carries a no rake mark. Heads-up solves take Rake % in the builder.
Reading it in the viewer
Open in Viewer opens a finished build in the viewer you know:
- The OOP / IP picker is the three seats, the one to act marked acts. The grid shows the actor's strategy; pick another seat to see its range at the node.
- The header shows three EVs, each the seat's share of the pot from this node. There is no 3-way equity, so EV is the one figure, and the marks sit where heads-up has its EV / EQ / EQR switch: the ±, bucketed when it applies, and no rake. The ± is always for what is on screen: a river re-solved as you reach it shows that river's own, and a flop build's turn that turn's own (below). A figure the engine did not measure reads —, never 0: a seat that folded has none.
- Where the numbers came from (the save, or a re-solve on your computer) is not marked: they are the same claim either way, and the ± says how good it is.
- The range explorer, Share, Lock & exploit, runouts and Subtree from here are heads-up only for now, so the tree strip's right end holds only ✕, which closes the build.
After a fold: heads-up
When a player folds, the two left are re-solved exactly by the heads-up engine, as trainer subtrees are, from the start of the street the fold was on: that street's actions to the fold are kept as they were, and each player bets and raises with their own 3-way sizes from there. The two ranges are the ones the 3-way solve reached. The heads-up engine keeps the folded player's cards in the deck. A river takes about a second, a turn a few. A fold on the flop goes heads-up from the turn: pick a turn card. The EV / EQ / EQR switch comes back, with heads-up and no rake marks beside it; ← 3-way, at the tree strip's right end, goes back to the 3-way build.
The 3-way solve played these lines too, so that the 3-way streets above them are right, but a save keeps none of them past the fold (Saves): what you read after a fold is always the heads-up engine's, never a stored 3-way line.
A turn of a flop build
A flop build's turns are its own (bucketed, if it was), and the viewer shows them at once, marked with the turn's own ±, measured from the turn as a % of its pot, not the build's. Under the header, Solve it exactly offers an exact re-solve of that turn, from the ranges the flop build reached, with how long it takes: it is asked for, never started for you, and leaving the viewer does not stop it. When it lands, the viewer walks on in it: its ± is the re-solve's own, and the bucketed mark goes. ← flop build, at the tree strip's right end, goes back.
Saves
A finished build is saved beside your own solves, strategies only, with its seats, sizes, buckets and ± in the file: it opens from Solve › Viewer like them, marked 3-way. It cannot be solved further; build it again with a tighter target instead.
The save is trimmed, as library saves are: it keeps every spot where all three players are still in, before the river. Everything else is re-solved when you reach it, never shown from storage:
- A 3-way river is re-solved exactly on your computer as you open it, from the ranges the build reaches it with, to ±0.2% of its pot: a few seconds, while the viewer says solving this river. The ± beside its numbers is that river's own.
- After a fold, the heads-up engine takes over (above).
Every EV where the build hands over is kept, so the 3-way streets read exactly as the build left them. A 3-way flop like the measured one would save an estimated 70-90 MB instead of about 0.6 GB. A turn's own ± needs the rivers under it, so on a trimmed build a turn's ± reads ± —: not measured, never 0. A line where one player is all-in for less (a side pot) is kept whole, and so is a build that starts on the river. Builds saved by earlier versions hold every node and open as they always did. A re-solved turn is saved trimmed too.
A build from our server comes down as the same trimmed save, in the server folder, and opens with your licence.
Not in Analyse
Analyse grades heads-up flops only. A hand three or more players saw the flop in is counted under Multiway flop; to study the spot, build it here.