Ricochet
A single-step instant game. The player picks a shot pattern — Tight, Scatter or Wild — and a bet, and presses FIRE: pellets ricochet around a chamber off reflectors, and canisters burst into secondary pellets. Every distinct prize plate a pellet hits adds its displayed value once, and the total is the round's return multiplier × the bet (the total includes the stake). A red hazard plate wipes the whole shot. Five of the prize plates carry cartridge badges: three matching badges on a clean shot unlock BREACH, four OVERKILL and five FULL METAL — an automatic bonus volley at twelve bonus plates, whose return is added to the shot's. One press = one round: one stake, one draw, one payout, and nothing is decided after the press.
The outcome is decided by the RNG at the bet: one draw picks one entry of the pattern's catalogue — a catalogued shot of the game's pinned collision model (the plates it hits, a hazard included) and, for a special round, the catalogued bonus volley that follows it. The pellets, ricochets and bursts are presentation: the client replays the catalogued shot from its seed and cannot change the result.
| Property | Value |
|---|---|
| Game ID | ricochet |
| Engine version | 1.0.0 |
| Type | single_step |
| Volatility | Player-selectable: Tight lower, Scatter medium, Wild higher (registered as medium) |
| Max Win | 215.30× bet (a FULL METAL special round with the Wild pattern; Tight 25.10×, Scatter 72.70×) |
| RTP variants | 92.00% / 94.00% / 96.00% / 97.00% — exact for every accepted round, uncapped or under any operator or money cap (a round whose cap would fall below 2× is refused); payouts round down to the minor unit |
| 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 | A ricochet chamber: reflectors, canisters, prize plates, hazard plates and cartridge badges |
How a round works
| Phase | Description | Player input |
|---|---|---|
| Set up | Choose the shot pattern and the bet | Pattern selector, bet |
| Fire | The stake is debited, ONE draw decides the whole shot — and any special round — and the round settles in the same call | Press FIRE, tap the chamber, or Enter / Space |
| Reveal | The client replays the shot: pellets ricochet, canisters burst, plates light up and add their values; a hazard plate wipes the shot; three or more matching badges on a clean shot play the special round's bonus volley, whose return is added; the result and the balance are shown as it settles | None |
The round is complete when the response arrives: there is no round to resume, cash out or abandon. Returns at or below the stake are shown neutrally ("Partial return", "Stake returned"), never as a win, and a wiped shot is shown plainly.
Shot patterns
The three patterns share the chamber. Each has its own plate values and its own special-round values:
- Tight — a focused spread: the most frequent returns and modest special rounds.
- Scatter — a wider spread: the same plate values, more special rounds and bigger ones.
- Wild — the widest spread: the biggest plate values and the biggest special rounds, with rarer returns.
| Pattern | Bet value (mode) | Badge plates b1 · b2 · b3 · b4 · b5 | Prize plates p1 … p9 | All plates | BREACH: twelve bonus plates | OVERKILL: twelve bonus plates | FULL METAL: twelve bonus plates | Max win |
|---|---|---|---|---|---|---|---|---|
| Tight | tight | 0.15× · 0.25× · 0.30× · 0.40× · 0.55× | 0.10× · 0.10× · 0.20× · 0.15× · 0.10× · 0.10× · 0.10× · 0.10× · 0.10× | 2.70× | 2.10× | 8.40× | 22.40× | 25.10× |
| Scatter | scatter | 0.15× · 0.25× · 0.30× · 0.40× · 0.55× | 0.10× · 0.10× · 0.20× · 0.15× · 0.10× · 0.10× · 0.10× · 0.10× · 0.10× | 2.70× | 2.80× | 14× | 70× | 72.70× |
| Wild | wild | 0.25× · 0.35× · 0.60× · 0.95× · 1.25× | 0.10× · 0.25× · 0.50× · 0.35× · 0.20× · 0.10× · 0.10× · 0.20× · 0.10× | 5.30× | 8.40× | 42× | 210× | 215.30× |
Each plate pays once per shot, however many pellets hit it. A hazard plate pays nothing and wipes the shot — whatever else the pellets hit, badges included — so a hazard shot never starts a special round.
Special rounds
| Pattern | Special round | Unlocked by | Tier factor × pattern scale | Bonus plates q0 … q11 | Shot + volley total (catalogue range) |
|---|---|---|---|---|---|
| Tight | BREACH | 3 matching badges on a clean shot | ×0.75 × 0.04 | 0.05× · 0.10× · 0.20× · 0.25× · 0.10× · 0.15× · 0.25× · 0.35× · 0.05× · 0.10× · 0.20× · 0.30× | 2.65× – 4.30× |
| Tight | OVERKILL | 4 matching badges on a clean shot | ×3 × 0.04 | 0.25× · 0.50× · 0.70× · 0.95× · 0.35× · 0.60× · 0.95× · 1.45× · 0.25× · 0.50× · 0.70× · 1.20× | 8× – 10.95× |
| Tight | FULL METAL | 5 matching badges on a clean shot | ×8 × 0.04 | 0.65× · 1.30× · 1.90× · 2.55× · 0.95× · 1.60× · 2.55× · 3.85× · 0.65× · 1.30× · 1.90× · 3.20× | 14.70× – 25.10× |
| Scatter | BREACH | 3 matching badges on a clean shot | ×1 × 0.04 | 0.10× · 0.15× · 0.25× · 0.30× · 0.10× · 0.20× · 0.30× · 0.50× · 0.10× · 0.15× · 0.25× · 0.40× | 3.10× – 5.10× |
| Scatter | OVERKILL | 4 matching badges on a clean shot | ×5 × 0.04 | 0.40× · 0.80× · 1.20× · 1.60× · 0.60× · 1.00× · 1.60× · 2.40× · 0.40× · 0.80× · 1.20× · 2.00× | 12× – 16.40× |
| Scatter | FULL METAL | 5 matching badges on a clean shot | ×25 × 0.04 | 2.00× · 4.00× · 6.00× · 8.00× · 3.00× · 5.00× · 8.00× · 12.00× · 2.00× · 4.00× · 6.00× · 10.00× | 42.20× – 72.70× |
| Wild | BREACH | 3 matching badges on a clean shot | ×1 × 0.12 | 0.25× · 0.50× · 0.70× · 0.95× · 0.35× · 0.60× · 0.95× · 1.45× · 0.25× · 0.50× · 0.70× · 1.20× | 7.40× – 13.10× |
| Wild | OVERKILL | 4 matching badges on a clean shot | ×5 × 0.12 | 1.20× · 2.40× · 3.60× · 4.80× · 1.80× · 3.00× · 4.80× · 7.20× · 1.20× · 2.40× · 3.60× · 6.00× | 33.85× – 46.85× |
| Wild | FULL METAL | 5 matching badges on a clean shot | ×25 × 0.12 | 6.00× · 12.00× · 18.00× · 24.00× · 9.00× · 15.00× · 24.00× · 36.00× · 6.00× · 12.00× · 18.00× · 30.00× | 124.10× – 215.30× |
A special round starts automatically after the clean shot that unlocked it. Its bonus volley pays every bonus plate it hits, once each, and that return is added to the shot's own — one stake, one payout. The values are the same in every RTP variant; a lower variant only makes an empty shot a little more likely.
Near misses are never more frequent than in the collision model's own play. A clean shot with exactly two badges, and a hazard shot that had two — or three or more — badges before the wipe, appear at most as often as the physics produces them naturally: in every RTP variant and at every cap the game accepts (2× and above), not just uncapped. The game's math model lists each rate uncapped, at the worst accepted cap, and in the physics' natural play.
Every accepted round returns the RTP
Each pattern's catalogue entries carry integer weights over an exact draw range, built so that the pattern returns the variant's RTP exactly — not approximately, and never above. There is no decision after the press, so no way of playing returns more or less than the RTP: choosing a pattern changes the spread of results, not their average.
| Variant | Pattern | RTP | Below the RTP (points) | Max win | SD of one round (stakes) | Rounds to 99.9% house-ahead (normal approximation, optimistic for right-skewed outcomes) |
|---|---|---|---|---|---|---|
| rtp-92 | Tight | 92.00% | 0 (exact) | 25.10× | 1.258 | 2,363 |
| rtp-92 | Scatter | 92.00% | 0 (exact) | 72.70× | 2.791 | 11,624 |
| rtp-92 | Wild | 92.00% | 0 (exact) | 215.30× | 5.337 | 42,507 |
| rtp-94 | Tight | 94.00% | 0 (exact) | 25.10× | 1.265 | 4,242 |
| rtp-94 | Scatter | 94.00% | 0 (exact) | 72.70× | 2.818 | 21,064 |
| rtp-94 | Wild | 94.00% | 0 (exact) | 215.30× | 5.393 | 77,162 |
| rtp-96 | Tight | 96.00% | 0 (exact) | 25.10× | 1.270 | 9,632 |
| rtp-96 | Scatter | 96.00% | 0 (exact) | 72.70× | 2.844 | 48,287 |
| rtp-96 | Wild | 96.00% | 0 (exact) | 215.30× | 5.449 | 177,193 |
| rtp-97 | Tight | 97.00% | 0 (exact) | 25.10× | 1.273 | 17,199 |
| rtp-97 | Scatter | 97.00% | 0 (exact) | 72.70× | 2.857 | 86,634 |
| rtp-97 | Wild | 97.00% | 0 (exact) | 215.30× | 5.476 | 318,189 |
"Rounds to 99.9% house-ahead" is the normal approximation (3.09 × SD / edge)² for a casino whose every round is played with that pattern. It is an indication, not a guarantee, and it is optimistic for right-skewed outcomes such as Wild's: the real horizon is longer.
Max win and caps
The round's effective cap is the lowest of the pattern's max win, the operator's multiplier cap (when one is set for your casino) and the money cap (the tenant's or the jurisdiction's maximum win per round ÷ the stake). It is fixed at the bet, before the draw, and a round never pays more than cap × stake. Ricochet has no default operator cap.
Caps are RTP-neutral (rule fair-cap-v1): when a cap binds, the weight it removes from the entries above the cap moves to empty shots, so every accepted round still returns the variant's RTP exactly — the cap lowers the spread, not the return. A bet whose effective cap would fall below 2× is refused (HTTP 422, before anything is debited or drawn), so an operator multiplier cap must be at least 2× for the game to play, and at large stakes the money cap can refuse a stake (the game shows "This stake is above the maximum for this game. Lower your stake.").
| Effective cap | Tight (max 25.10×), rtp-96 | Scatter (max 72.70×), rtp-96 | Wild (max 215.30×), rtp-96 |
|---|---|---|---|
| below 2.00× | refused before the draw (no round is played) | refused before the draw (no round is played) | refused before the draw (no round is played) |
| 2.00× | 96.000% — exact (trim) | 96.000% — exact (trim) | 96.000% — exact (trim) |
| 3.00× | 96.000% — exact (trim) | 96.000% — exact (trim) | 96.000% — exact (trim) |
| 5.00× | 96.000% — exact (trim) | 96.000% — exact (dead) | 96.000% — exact (trim) |
| 10.00× | 96.000% — exact (dead) | 96.000% — exact (dead) | 96.000% — exact (dead) |
| 25.00× | 96.000% — exact (dead) | 96.000% — exact (dead) | 96.000% — exact (dead) |
| 50.00× | no effect (above the pattern's max) | 96.000% — exact (dead) | 96.000% — exact (dead) |
| 100.00× | no effect (above the pattern's max) | no effect (above the pattern's max) | 96.000% — exact (dead) |
| 200.00× | no effect (above the pattern's max) | no effect (above the pattern's max) | 96.000% — exact (dead) |
The money cap binds only at large stakes — with a 500,000.00 max win per round, Wild above a 2,322.34 stake, Scatter above 6,877.57 and Tight above 19,920.31 — and the RTP stays exact there too.
Ricochet needs no operator cap: its largest win is 215.30× (Wild, FULL METAL). An operator who wants a lower ceiling can set one of 2× or more; the RTP stays exact under it, and a capped round is shown as MAX WIN. The spread at rtp-96:
| Operator cap | Tight: SD / rounds to 99.9% house-ahead (normal approx., optimistic) | Scatter: SD / rounds to 99.9% house-ahead (normal approx., optimistic) | Wild: SD / rounds to 99.9% house-ahead (normal approx., optimistic) |
|---|---|---|---|
| none (the pattern's max) | 1.270 / 9,632 | 2.844 / 48,287 | 5.449 / 177,193 |
| 100× | — (above the pattern's max) | — (above the pattern's max) | 4.356 / 113,261 |
| 50× | — (above the pattern's max) | 2.570 / 39,406 | 3.957 / 93,430 |
| 20× | 1.248 / 9,300 | 2.111 / 26,592 | 2.708 / 43,756 |
| 10× | 1.155 / 7,963 | 1.644 / 16,125 | 2.250 / 30,211 |
Payout rounding
The payout is floor(stake × multiplier) in the currency's smallest unit — never rounded up — so the money returned can sit slightly under the RTP at stakes where a multiplier does not divide evenly. Every plate and bonus plate value is a multiple of 0.05×:
| Pattern | Every payout exact at stakes that are multiples of | Why |
|---|---|---|
| Tight | 20 minor units | every multiplier is a multiple of 0.05× |
| Scatter | 20 minor units | every multiplier is a multiple of 0.05× |
| Wild | 20 minor units | every multiplier is a multiple of 0.05× |
(A cap that is not itself one of those multiples can round a capped payout.) At other stakes the rounding costs less than one minor unit per paid round — a fraction of a point of return at most (the worst stake from 1.00 to 10.00 is the table's last row), and less as the stake grows (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) | Tight, rtp-96 | Scatter, rtp-96 | Wild, rtp-96 |
|---|---|---|---|
| 0.10 (below the 1.00 floor) | 93.810% | 94.967% | 95.428% |
| 0.50 (below the 1.00 floor) | 95.562% | 95.793% | 95.886% |
| 1.00 | 96.000% | 96.000% | 96.000% |
| 1.01 | 95.871% | 95.882% | 95.897% |
| 1.05 | 95.742% | 95.875% | 95.916% |
| 1.10 | 95.801% | 95.906% | 95.948% |
| 1.50 | 95.854% | 95.931% | 95.962% |
| 9.99 | 95.949% | 95.977% | 95.989% |
| 10.00 | 96.000% | 96.000% | 96.000% |
| 10.01 | 95.987% | 95.988% | 95.990% |
| 100.00 | 96.000% | 96.000% | 96.000% |
| Worst stake from 1.00 to 10.00 | 95.569% at 1.19 (−0.431 pt) | 95.806% at 1.19 (−0.194 pt) | 95.886% at 1.03 (−0.114 pt) |
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 — Ricochet is a single-step game like Slotty Slots, Shatter, Strike and Overload), purpose label shot, a uniform integer in [0, W − 1], where W is the total weight of the pattern's catalogue for the round's variant and cap. The published paytable carries the whole scenario table — every catalogued shot with the plates it hits, every bonus volley with the bonus plates it hits, the plate values and the group weights — and the catalogue's SHA-256 (catalogueHash); the verifier regenerates the catalogue from the table and checks the hash before reading the draw, and never needs to run the physics. The round record stores the pattern (mode) and the round's effective cap (capHundredths); with them and the published paytable that priced the round, the verifier reproduces the weights, the draw, the entry, the shot (plates, hazard, badges, special round and bonus plates) 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/ricochet/roundswith{ "betAmount": <whole minor units>, "mode": "tight" | "scatter" | "wild", "currency": "…" }. The pattern is required. Refused with HTTP 422 before anything is drawn or debited: an unknown or missing pattern (20001, "mode must be one of tight, scatter, wild"), a stake that is not a whole number of minor units (20001), an effective cap below 2× (20001, "This stake is above the maximum for this game. Lower your stake.", withdetails.reasonmax_win_capanddetails.engineCode30605), a stake under the 1.00 floor (30007) or above the maximum bet (30008), and an insufficient balance (40001). - 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/ricochet/rounds/activealways answers{ "round": null }). The response'sbalanceis the balance after the debit and the credit, and its outcome carriesmode,seedandbonusSeed(the catalogued shot and volley the client replays),group,hazard,plates,badges,tier(0 none, 1 BREACH, 2 OVERKILL, 3 FULL METAL),bonusPlates,baseHundredths,bonusHundredths,fullMultiplierHundredths(the shot's total),multiplierHundredthsandmultiplier(what the round paid, after the cap),capped,winAmountandcatalogueVersion— everything the client needs to animate the result, and no RNG internals. - Game metadata (
rules):catalogueVersion,catalogueHash, theplatesandbonusPlatesids, the special rounds (tiers: name and badges needed), and per pattern the platevalues, thebonusValuesof each special round andmaxMultiplier, plusoperatorMaxWinMultiplierwhen the operator set a cap and the round's money ceiling (roundMaxWin,maxWinAmount) — never weights, chances or the RTP.