summaryrefslogtreecommitdiffstats
path: root/docs/GAMES.md
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-10-29 22:55:49 +0100
committersalmonik <salmonik@tuta.io>2026-10-29 22:55:49 +0100
commit49df948de25d28601469e9ca993f33530989ebd0 (patch)
tree291aae0f57d0d7d12a27eb28038e43f942d6b991 /docs/GAMES.md
parentv2.4.0: key stored credentials by certificate fingerprint (diff)
downloadzagan-bet-49df948de25d28601469e9ca993f33530989ebd0.tar.gz
zagan-bet-49df948de25d28601469e9ca993f33530989ebd0.zip
v3.0.0: cursor-driven roulette felt with splits and corners; drop schema migrations; require 80x24
Diffstat (limited to '')
-rw-r--r--docs/GAMES.md43
1 files changed, 32 insertions, 11 deletions
diff --git a/docs/GAMES.md b/docs/GAMES.md
index 2b8adf5..364cfef 100644
--- a/docs/GAMES.md
+++ b/docs/GAMES.md
@@ -79,19 +79,32 @@ Q forfeit an active hand (bet is lost), or leave when no hand is active
79## Roulette 79## Roulette
80 80
81- European wheel: 0-36, one green zero. 81- European wheel: 0-36, one green zero.
82- Bets: red, black, even, odd, and straight numbers. 82- The felt is drawn in full and bet with a cursor. Over the numbers the cursor
83- Bets can be split across all of those; every winning bet is added together. 83 sits on a *lattice point*, the way a chip sits between numbers on a real
84- Straight pays 35:1 (36x returned), outside bets pay 1:1 (2x returned). 84 felt: an inner point covers four numbers (corner), an edge point covers two
85- 0 loses all outside bets. RTP is 36/37 = 97.30%. 85 (split), and an outer corner is a straight.
86- Numbers are color-coded in the TUI: red numbers are red, 0 is green, and 86- Bet types and returns (per unit staked, stake included):
87 black numbers stay at the default terminal color. Bet amounts and balances 87
88 are not colored. 88 | Bet | Covers | Return |
89 | --- | --- | --- |
90 | Straight | one number | 36x |
91 | Split | two adjacent numbers | 18x |
92 | Corner | four numbers | 9x |
93 | Dozen | 1-12, 13-24, 25-36 | 3x |
94 | Column | 1,4,...,34 / 2,5,...,35 / 3,6,...,36 | 3x |
95 | Outside | 1-18, 19-36, EVEN, ODD, RED, BLACK | 2x |
96
97- 0 loses every outside bet, both dozens and every column. It pays a straight,
98 and split/corner bets containing 0 are not offered.
99- Every chip is settled independently and added together. RTP is 36/37 =
100 97.30% because every bet uses the same European odds.
101- Bet amounts and balances are not colored in the TUI.
89 102
90Client controls inside roulette: 103Client controls inside roulette:
91 104
92``` 105```
93R / B / E / O add the current chip to red/black/even/odd 106arrows move the cursor over the felt, including between numbers
94digits + Enter add the current chip to that number 107ENTER place the current chip on the cursor
95C clear all bets 108C clear all bets
96+ or = / - change the chip size 109+ or = / - change the chip size
97SPACE spin 110SPACE spin
@@ -125,7 +138,7 @@ plays (
125{"reels":"CCCCLLCLODGSDGS","win_type":"win","win_lines":"1","win_cells":"0,3,6"} 138{"reels":"CCCCLLCLODGSDGS","win_type":"win","win_lines":"1","win_cells":"0,3,6"}
126 139
127// roulette 140// roulette
128{"number":"17","color":"black","bets":"{\"red\":10,\"black\":10,\"even\":10,\"odd\":10,\"numbers\":[{\"number\":17,\"amount\":5}]}"} 141{"number":"17","color":"black","bets":"{\"chips\":[{\"target\":{\"bet\":\"outside\",\"kind\":\"red\"},\"amount\":10}]}"}
129 142
130// blackjack 143// blackjack
131{"player":["10S","6H","5D"],"dealer":["9D","8C"],"player_total":21,"dealer_total":17,"bet":10,"result":"win","winnings":20} 144{"player":["10S","6H","5D"],"dealer":["9D","8C"],"player_total":21,"dealer_total":17,"bet":10,"result":"win","winnings":20}
@@ -174,13 +187,21 @@ PLAY_START slots <bet>
174GAME_RESULT <session> <winnings> <bet> <balance> <reels> <win_type> <win_lines> <win_cells> 187GAME_RESULT <session> <winnings> <bet> <balance> <reels> <win_type> <win_lines> <win_cells>
175``` 188```
176 189
177Roulette adds a compact bets payload and a roulette-specific result: 190Roulette sends the chips and gets a roulette-specific result:
178 191
179``` 192```
180PLAY_START roulette <total> <bets-json> 193PLAY_START roulette <total> <bets-json>
181ROULETTE_RESULT <session> <winnings> <bet> <balance> <number> <color> <bets-json> 194ROULETTE_RESULT <session> <winnings> <bet> <balance> <number> <color> <bets-json>
182``` 195```
183 196
197`bets-json` is `{"chips":[{"target":{...},"amount":N}]}`. A target is one of
198`{"bet":"straight","number":17}`, `{"bet":"split","a":1,"b":2}`,
199`{"bet":"corner","numbers":[1,2,4,5]}`, `{"bet":"dozen","index":1}`,
200`{"bet":"column","index":0}` or
201`{"bet":"outside","kind":"red"}` (`low`, `high`, `even`, `odd`, `red`,
202`black`). The server rejects unknown, out-of-range or duplicate-number
203targets, and requires the total to equal the sum of the chips.
204
184Blackjack is a multi-step session: 205Blackjack is a multi-step session:
185 206
186``` 207```