Shatter
A single-step instant game. A suspended glass panel, held by two clamps, carries 12 multiplier tokens. The player picks a fracture mode and a bet and strikes the panel once. The panel breaks into one of 13 fixed fracture outcomes; every fragment no longer connected to a clamp falls into the tray ("keep what falls"), and the tokens on the fallen fragments are collected. The round returns the sum of their values × the bet — the total includes the stake, so a total below 1× is a partial return. One stake, one draw, one payout: nothing is decided after the strike.
The outcome is decided by the RNG at the bet: one draw, read with the published weights of the mode chosen. The crack spreading across the glass, the falling fragments and the tokens landing in the tray are presentation: the client animates the outcome the server returned and cannot change it.
| Property | Value |
|---|---|
| Game ID | shatter |
| Engine version | 1.0.0 |
| Type | single_step |
| Volatility | Medium overall; the player sets it with the mode — Controlled low, Unstable medium, Extreme high |
| Max Win | 316.55× bet (the near-total collapse in Extreme mode) |
| RTP variants | 92.00% / 94.00% / 96.00% / 97.00% — every mode returns it exactly (less sub-unit rounding of the payout) |
| Minimum stake | 100 minor units (1.00 in 2-decimal currencies), over any lower operator setting |
| Random draws | One per round, at the bet |
| Theme | Glass, light and metal — a suspended panel, two clamps, a tray |
How a round works
| Phase | Description | Player input |
|---|---|---|
| Set up | Choose the fracture mode and the bet | Mode selector, bet |
| Strike | The stake is debited, ONE draw picks the fracture outcome, and the round settles in the same call | Tap the panel or press Shatter |
| Reveal | The client shows the crack, the fragments that fall and the tokens collected; the credit is shown as the collection finishes | None |
The round is complete when the strike response arrives: there is no round to resume, cash out or abandon.
Fracture modes
The three modes share the panel, the tokens and the 13 outcomes. They differ in the token values (one scale per mode) and in how often each outcome happens:
- Controlled — frequent, smaller collections.
- Unstable — empty strikes, small takes and substantial wins.
- Extreme — mostly empty strikes, rare and much larger collections.
| Mode | Token scale | Token values (the 12 tokens, largest first) | Max return | Draw space W |
|---|---|---|---|---|
| Controlled | ×0.29 | 5.22×, 3.48×, 2.32×, 1.74×, 1.45×, 1.16×, 0.87× (×2), 0.58× (×2), 0.29× (×2) | 18.85× | 96,947 |
| Unstable | ×0.66 | 11.88×, 7.92×, 5.28×, 3.96×, 3.30×, 2.64×, 1.98× (×2), 1.32× (×2), 0.66× (×2) | 42.90× | 98,538 |
| Extreme | ×4.87 | 87.66×, 58.44×, 38.96×, 29.22×, 24.35×, 19.48×, 14.61× (×2), 9.74× (×2), 4.87× (×2) | 316.55× | 970,591 |
A token of raw value r is worth r × scale of the bet; the raw values of the 12 tokens are 18, 12, 8, 6, 5, 4, 3, 3, 2, 2, 1 and 1. The draw space W is the sum of a mode's outcome weights; it is the same in every RTP variant.
The fracture catalogue
Every strike ends in one of these outcomes. "Tokens that fall" counts the tokens on fragments released from both clamps; the multiplier is their raw sum × the mode's scale:
| # | Outcome | Tokens that fall | Raw sum | Controlled | Unstable | Extreme |
|---|---|---|---|---|---|---|
| 1 | Connected fracture (the glass holds) (hold) | 0 | 0 | 0.00× | 0.00× | 0.00× |
| 2 | Blank corner (nick) | 0 | 0 | 0.00× | 0.00× | 0.00× |
| 3 | Left corner (leftCorner) | 1 | 2 | 0.58× | 1.32× | 9.74× |
| 4 | Right corner (rightCorner) | 1 | 1 | 0.29× | 0.66× | 4.87× |
| 5 | Lower edge (lowStrip) | 1 | 2 | 0.58× | 1.32× | 9.74× |
| 6 | Lower section (base) | 4 | 6 | 1.74× | 3.96× | 29.22× |
| 7 | Central bite (bite) | 2 | 3 | 0.87× | 1.98× | 14.61× |
| 8 | Left section (left) | 2 | 4 | 1.16× | 2.64× | 19.48× |
| 9 | Right section (right) | 4 | 8 | 2.32× | 5.28× | 38.96× |
| 10 | Diagonal fracture (diagonal) | 4 | 7 | 2.03× | 4.62× | 34.09× |
| 11 | Half panel (half) | 6 | 12 | 3.48× | 7.92× | 58.44× |
| 12 | Wide release (wide) | 8 | 21 | 6.09× | 13.86× | 102.27× |
| 13 | Near-total collapse (collapse) | 12 | 65 | 18.85× | 42.90× | 316.55× |
The geometry (53 fragments, 2 clamp anchors) and the fragments each outcome releases are fixed in the published catalogue (shatter-catalogue-1); the server and the client agree on it by a SHA-256 hash of the catalogue data.
Weights and chances
Each mode draws one integer u uniformly from [0, W − 1] and takes the first outcome, in catalogue order, whose running weight exceeds it. Every outcome's chance is exactly its weight ÷ W — integer weights over an exact range, with no rounding. These tables are for operators: the game itself never shows chances or the RTP to players.
Controlled
| Outcome | Multiplier | rtp-92: weight (chance) | rtp-94: weight (chance) | rtp-96: weight (chance) | rtp-97: weight (chance) |
|---|---|---|---|---|---|
| Connected fracture (the glass holds) | 0.00× | 8,259 (8.52%) | 6,331 (6.53%) | 4,403 (4.54%) | 3,439 (3.55%) |
| Blank corner | 0.00× | 2,760 (2.85%) | 2,820 (2.91%) | 2,880 (2.97%) | 2,910 (3.00%) |
| Left corner | 0.58× | 15,640 (16.13%) | 15,980 (16.48%) | 16,320 (16.83%) | 16,490 (17.01%) |
| Right corner | 0.29× | 15,640 (16.13%) | 15,980 (16.48%) | 16,320 (16.83%) | 16,490 (17.01%) |
| Lower edge | 0.58× | 16,560 (17.08%) | 16,920 (17.45%) | 17,280 (17.82%) | 17,460 (18.01%) |
| Lower section | 1.74× | 14,720 (15.18%) | 15,040 (15.51%) | 15,360 (15.84%) | 15,520 (16.01%) |
| Central bite | 0.87× | 7,360 (7.59%) | 7,520 (7.76%) | 7,680 (7.92%) | 7,760 (8.00%) |
| Left section | 1.16× | 5,520 (5.69%) | 5,640 (5.82%) | 5,760 (5.94%) | 5,820 (6.00%) |
| Right section | 2.32× | 5,520 (5.69%) | 5,640 (5.82%) | 5,760 (5.94%) | 5,820 (6.00%) |
| Diagonal fracture | 2.03× | 3,220 (3.32%) | 3,290 (3.39%) | 3,360 (3.47%) | 3,395 (3.50%) |
| Half panel | 3.48× | 1,380 (1.42%) | 1,410 (1.45%) | 1,440 (1.49%) | 1,455 (1.50%) |
| Wide release | 6.09× | 276 (0.285%) | 282 (0.291%) | 288 (0.297%) | 291 (0.300%) |
| Near-total collapse | 18.85× | 92 (1 in 1,054) | 94 (1 in 1,031) | 96 (1 in 1,010) | 97 (0.100%) |
Unstable
| Outcome | Multiplier | rtp-92: weight (chance) | rtp-94: weight (chance) | rtp-96: weight (chance) | rtp-97: weight (chance) |
|---|---|---|---|---|---|
| Connected fracture (the glass holds) | 0.00× | 42,326 (42.95%) | 41,104 (41.71%) | 39,882 (40.47%) | 39,271 (39.85%) |
| Blank corner | 0.00× | 16,560 (16.81%) | 16,920 (17.17%) | 17,280 (17.54%) | 17,460 (17.72%) |
| Left corner | 1.32× | 8,280 (8.40%) | 8,460 (8.59%) | 8,640 (8.77%) | 8,730 (8.86%) |
| Right corner | 0.66× | 8,280 (8.40%) | 8,460 (8.59%) | 8,640 (8.77%) | 8,730 (8.86%) |
| Lower edge | 1.32× | 8,280 (8.40%) | 8,460 (8.59%) | 8,640 (8.77%) | 8,730 (8.86%) |
| Lower section | 3.96× | 4,600 (4.67%) | 4,700 (4.77%) | 4,800 (4.87%) | 4,850 (4.92%) |
| Central bite | 1.98× | 1,840 (1.87%) | 1,880 (1.91%) | 1,920 (1.95%) | 1,940 (1.97%) |
| Left section | 2.64× | 3,220 (3.27%) | 3,290 (3.34%) | 3,360 (3.41%) | 3,395 (3.45%) |
| Right section | 5.28× | 3,220 (3.27%) | 3,290 (3.34%) | 3,360 (3.41%) | 3,395 (3.45%) |
| Diagonal fracture | 4.62× | 1,104 (1.12%) | 1,128 (1.14%) | 1,152 (1.17%) | 1,164 (1.18%) |
| Half panel | 7.92× | 552 (0.560%) | 564 (0.572%) | 576 (0.585%) | 582 (0.591%) |
| Wide release | 13.86× | 184 (0.187%) | 188 (0.191%) | 192 (0.195%) | 194 (0.197%) |
| Near-total collapse | 42.90× | 92 (1 in 1,071) | 94 (1 in 1,048) | 96 (1 in 1,026) | 97 (1 in 1,016) |
Extreme
| Outcome | Multiplier | rtp-92: weight (chance) | rtp-94: weight (chance) | rtp-96: weight (chance) | rtp-97: weight (chance) |
|---|---|---|---|---|---|
| Connected fracture (the glass holds) | 0.00× | 860,191 (88.63%) | 857,791 (88.38%) | 855,391 (88.13%) | 854,191 (88.01%) |
| Blank corner | 0.00× | 55,200 (5.69%) | 56,400 (5.81%) | 57,600 (5.93%) | 58,200 (6.00%) |
| Left corner | 9.74× | 13,800 (1.42%) | 14,100 (1.45%) | 14,400 (1.48%) | 14,550 (1.50%) |
| Right corner | 4.87× | 13,800 (1.42%) | 14,100 (1.45%) | 14,400 (1.48%) | 14,550 (1.50%) |
| Lower edge | 9.74× | 9,200 (0.948%) | 9,400 (0.968%) | 9,600 (0.989%) | 9,700 (0.999%) |
| Lower section | 29.22× | 6,440 (0.664%) | 6,580 (0.678%) | 6,720 (0.692%) | 6,790 (0.700%) |
| Central bite | 14.61× | 1,840 (0.190%) | 1,880 (0.194%) | 1,920 (0.198%) | 1,940 (0.200%) |
| Left section | 19.48× | 4,140 (0.427%) | 4,230 (0.436%) | 4,320 (0.445%) | 4,365 (0.450%) |
| Right section | 38.96× | 4,140 (0.427%) | 4,230 (0.436%) | 4,320 (0.445%) | 4,365 (0.450%) |
| Diagonal fracture | 34.09× | 920 (1 in 1,055) | 940 (1 in 1,033) | 960 (1 in 1,011) | 970 (1 in 1,001) |
| Half panel | 58.44× | 460 (1 in 2,110) | 470 (1 in 2,065) | 480 (1 in 2,022) | 485 (1 in 2,001) |
| Wide release | 102.27× | 276 (1 in 3,517) | 282 (1 in 3,442) | 288 (1 in 3,370) | 291 (1 in 3,335) |
| Near-total collapse | 316.55× | 184 (1 in 5,275) | 188 (1 in 5,163) | 192 (1 in 5,055) | 194 (1 in 5,003) |
Every mode returns the RTP
The variants are built from the delivered catalogue's rtp-97 weights: every outcome except "the glass holds" keeps R/97 of its rtp-97 weight, and the hold takes the rest of the fixed draw space W. So the expected return is exactly R% in every mode of every variant — the only thing a lower variant changes is how often the glass holds. There is no decision after the strike, so no way of playing returns more or less than the RTP: choosing a mode changes the spread of results, not their average.
| Variant | Mode | RTP (exact) | Glass holds | Any token collected | Return ≥ 1× | SD of one round (stakes) | Rounds to 99.9% house-ahead |
|---|---|---|---|---|---|---|---|
| rtp-92 | Controlled | 92.00% | 8.52% | 88.63% | 31.70% | 0.965 | 1,389 |
| rtp-92 | Unstable | 92.00% | 42.95% | 40.24% | 31.84% | 2.024 | 6,110 |
| rtp-92 | Extreme | 92.00% | 88.63% | 5.69% | 5.69% | 6.371 | 60,568 |
| rtp-94 | Controlled | 94.00% | 6.53% | 90.56% | 32.38% | 0.966 | 2,474 |
| rtp-94 | Unstable | 94.00% | 41.71% | 41.12% | 32.53% | 2.041 | 11,048 |
| rtp-94 | Extreme | 94.00% | 88.38% | 5.81% | 5.81% | 6.439 | 109,968 |
| rtp-96 | Controlled | 96.00% | 4.54% | 92.49% | 33.07% | 0.966 | 5,570 |
| rtp-96 | Unstable | 96.00% | 40.47% | 41.99% | 33.22% | 2.058 | 25,272 |
| rtp-96 | Extreme | 96.00% | 88.13% | 5.93% | 5.93% | 6.505 | 252,578 |
| rtp-97 | Controlled | 97.00% | 3.55% | 93.45% | 33.42% | 0.966 | 9,903 |
| rtp-97 | Unstable | 97.00% | 39.85% | 42.43% | 33.57% | 2.066 | 45,292 |
| rtp-97 | Extreme | 97.00% | 88.01% | 6.00% | 6.00% | 6.538 | 453,601 |
"Return ≥ 1×" is the chance that a strike returns at least the stake. "Rounds to 99.9% house-ahead" is the normal approximation (3.09 × SD / edge)² for a casino whose every round is played in that mode.
Max win and caps
The largest outcome is the near-total collapse in Extreme mode: 316.55× the bet. An operator's or a jurisdiction's maximum win per round still applies and truncates a payout above it, which only matters at very large stakes. Shatter 1.0.0 does not apply the operator multiplier cap (tenant_games.max_win_multiplier): its multipliers come from a fixed catalogue, the largest being 316.55×.
Payout rounding
The payout is floor(stake × multiplier) in the currency's smallest unit — never rounded up. At whole-unit stakes (1.00, 2.00, … in a 2-decimal currency) every outcome pays exactly; at other stakes the rounding costs less than one minor unit per paid round, a few hundredths of a point of return at most stakes (rtp-96, the table below). Below 1.00 it would cost more, which is why the game's minimum stake is 1.00.
| Stake (2-decimal currency) | Controlled, rtp-96 | Unstable, rtp-96 | Extreme, rtp-96 |
|---|---|---|---|
| 0.10 (below the 1.00 floor) | 89.794% | 94.219% | 95.705% |
| 0.50 (below the 1.00 floor) | 95.714% | 96.000% | 95.982% |
| 1.00 | 96.000% | 96.000% | 96.000% |
| 1.01 | 95.531% | 95.776% | 95.960% |
| 1.05 | 95.407% | 95.796% | 95.972% |
| 1.50 | 95.905% | 96.000% | 95.994% |
| 2.50 | 95.943% | 96.000% | 95.996% |
| 9.99 | 95.955% | 95.981% | 95.998% |
| 10.00 | 96.000% | 96.000% | 96.000% |
| 10.01 | 95.953% | 95.977% | 95.996% |
| 100.00 | 96.000% | 96.000% | 96.000% |
Provably fair
For tenants with provably fair enabled, the round's one draw is derived from the committed server seed at the bare round block (clientSeed:nonce, no sub-nonce — Shatter is a single-step game like Slotty Slots), purpose label fracture, a uniform integer in [0, W − 1] for the mode played. The round record stores the mode (mode) and the round's cap (maxWin); with them and the published paytable that priced the round, the verifier reproduces the draw, the outcome, the tokens collected, the multiplier and the payout, and the verification page does the same in the browser and compares it with what the round booked. See Provably Fair.
Integration notes
- Bet:
POST /games/shatter/roundswith{ "betAmount": <whole minor units>, "mode": "controlled" | "unstable" | "extreme", "currency": "…" }. The mode is required; an unknown mode or a stake that is not a whole number of minor units is refused (422) before anything is drawn or debited. - The response settles the round: the stake debit, the draw and the credit happen in the one call (there are no actions, no cash-out and no open round:
GET /games/shatter/rounds/activealways answersnull). Its outcome carriesmode,outcomeId,tokenIds,released(the fragments that fall),multiplier,multiplierHundredths,winAmount,cappedandcatalogueVersion— everything the client needs to animate the result, and no RNG internals. - Game metadata (
rules):catalogueVersion,catalogueHash,maxWinMultiplierand, per mode,scale,tokenValues(by token id) andmaxMultiplier— never weights, chances or the RTP. - The client checks the outcome against its own copy of the catalogue (and the catalogue version) before animating it, and shows a neutral error instead of inventing a result if they disagree.