summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--docs/SLOTS.md92
-rw-r--r--docs/TESTING.md7
2 files changed, 70 insertions, 29 deletions
diff --git a/docs/SLOTS.md b/docs/SLOTS.md
index b8c670b..1dbaba5 100644
--- a/docs/SLOTS.md
+++ b/docs/SLOTS.md
@@ -20,19 +20,33 @@ line 5: bottom, middle, top, middle, bottom
20 20
21## Paytable 21## Paytable
22 22
23Multipliers are applied to the total bet. 23```
24 24payout = total bet x symbol multiplier x shape multiplier
25| Symbol | 3 of a kind | 4 of a kind | 5 of a kind | 25```
26| --- | ---: | ---: | ---: | 26
27| C | 2x | 5x | 15x | 27Symbol multipliers:
28| L | 3x | 7x | 20x | 28
29| O | 3x | 8x | 25x | 29| Symbol | Multiplier |
30| G | 4x | 12x | 40x | 30| --- | ---: |
31| D | 6x | 18x | 70x | 31| C | 1 |
32| S | 9x | 30x | 150x | 32| L | 2 |
33 33| O | 3 |
34- Exact RTP: **425/432 = 0.983796...** (1.62% house edge). 34| G | 4 |
35- Maximum win: 5 lines x 150x = **750x total bet**. 35| D | 6 |
36| S | 10 |
37
38Shape multipliers (how many matching symbols on the line):
39
40| Shape | Multiplier |
41| --- | ---: |
42| 3 of a kind | 1 |
43| 4 of a kind | 3 |
44| 5 of a kind | 14 |
45
46Every winning payline is added together.
47
48- Exact RTP: **3835/3888 = 0.986368...** (1.36% house edge).
49- Maximum win: 5 lines x S(10) x 5-shape(14) = **700x total bet**.
36- Chance of any win on a spin: about **13%**. 50- Chance of any win on a spin: about **13%**.
37- The RTP is checked by `SlotsGame::theoretical_rtp()` and `tests/slots.rs`. 51- The RTP is checked by `SlotsGame::theoretical_rtp()` and `tests/slots.rs`.
38 52
@@ -67,19 +81,45 @@ The board is ten lines:
67``` 81```
68=== SLOTS === 82=== SLOTS ===
69Bet: 10 PLN Balance: 1000 PLN 83Bet: 10 PLN Balance: 1000 PLN
70[ C ] [ L ] [ O ] [ G ] [ D ] 84{ G } [ L ] [ S ] [ O ] [ G ]
71[ S ] { C } { C } [ O ] [ G ] 85[ D ] { G } [ L ] [ S ] [ C ]
72[ D ] [ S ] { C } [ L ] [ O ] 86[ O ] [ O ] { G } [ L ] [ O ]
73Pays 3/4/5 x bet: C 2/5/15 L 3/7/20 O 3/8/25 87Pays bet x symbol x shape
74G 4/12/40 D 6/18/70 S 9/30/150 88Symbol C1 L2 O3 G4 D6 S10 Shape 3:1 4:3 5:14
75Won 20 PLN 89Won 40 PLN
76Winning lines: 2 90Winning lines: 4 (V)
77[+/-] Bet [SPACE] Spin [Q] Quit 91[+/-] Bet [SPACE] Spin [Q] Quit
78``` 92```
79 93
80The two lines above the status are the compact paytable: for each symbol, the 94The two lines above the status show the payout formula and the two multiplier
81multipliers of the total bet for 3, 4 and 5 of a kind. It is split so it does 95tables. Winning cells use braces and are rendered yellow/bold in the terminal.
82not wrap on a narrow terminal. Winning cells use braces and are rendered 96The line list below the status names the paylines that won. Both come from the
83yellow/bold in the terminal. The line list below the status names the paylines 97server's `win_lines` and `win_cells`, which are already carried through the
84that won. Both come from the server's `win_lines` and `win_cells`, which are 98client state for the animation pass. Multiple winning lines are summed; the
85already carried through the client state for the animation pass. 99board lists all of them and highlights the union of their matched cells.
100
101## Reading a win
102
103A payline is one of five fixed paths across the five reels:
104
105| Line | Name | Rows on reels 1-5 |
106| ---: | --- | --- |
107| 1 | top | top, top, top, top, top |
108| 2 | middle | middle, middle, middle, middle, middle |
109| 3 | bottom | bottom, bottom, bottom, bottom, bottom |
110| 4 | V | top, middle, bottom, middle, top |
111| 5 | inverted V | bottom, middle, top, middle, bottom |
112
113A line pays only when the first **3, 4 or 5** symbols on that line match,
114reading from the leftmost reel.
115
116In the example above, line 4 (V) contains `G G G S G`:
117
118- reels 1-3 are `G`, so three `G` symbols pay;
119- reel 4 is `S`, which breaks the run, so the `G` on reel 5 does not count;
120- `G` has symbol multiplier 4 and 3-of-a-kind has shape multiplier 1, so the
121 win is `10 x 4 x 1 = 40 PLN`.
122
123A diagonal of `L` symbols that is not one of the five paylines does not win,
124and a run must start on reel 1. That is why only the three `G` cells are
125marked in the example.
diff --git a/docs/TESTING.md b/docs/TESTING.md
index 84d98e7..acdcdd4 100644
--- a/docs/TESTING.md
+++ b/docs/TESTING.md
@@ -36,12 +36,13 @@ Use an 80-column terminal because several output lines are width-sensitive.
36 prompt, Ctrl+C exits and restores the terminal. 36 prompt, Ctrl+C exits and restores the terminal.
374. `help` fits 80 columns. Tab completion wraps within 76 columns and the 374. `help` fits 80 columns. Tab completion wraps within 76 columns and the
38 cursor stays visible. 38 cursor stays visible.
395. `play slots 50` shows a 5x3 grid, the `Pays 3/4/5 x bet:` paytable line, and 395. `play slots 50` shows a 5x3 grid, the `Pays bet x symbol x shape` lines, and
40 the fetched balance. 40 the fetched balance.
416. Space shows `Spinning...`, then the 3 rows, win text, winning-line list, and 416. Space shows `Spinning...`, then the 3 rows, win text, winning-line list, and
42 new balance inside the same 10-line board. Winning symbols appear as 42 new balance inside the same 10-line board. Winning symbols appear as
43 yellow/bold `{ X }` cells; the `Winning lines:` list matches. The controls 43 yellow/bold `{ X }` cells; the `Winning lines:` list names the payline
44 line is never overwritten. Slots rules and RTP: `docs/SLOTS.md`. 44 (e.g. `4 (V)`). The controls line is never overwritten. Slots rules and RTP:
45 `docs/SLOTS.md`.
457. `+` / `-` after a spin changes only the bet; no stale grid or result lines 467. `+` / `-` after a spin changes only the bet; no stale grid or result lines
46 appear. 47 appear.
478. `q` clears the board. Ctrl+C in a game clears the board and exits. 488. `q` clears the board. Ctrl+C in a game clears the board and exits.