Skip to content

Shots ​

A session-based crash game. A regular takes a seat and starts knocking back shots; a multiplier climbs from 1.00× while they keep it together. The player cashes out whenever they like, or sets an automatic exit before the round. If the regular pukes or passes out first, the stake is lost.

The outcome is decided by the RNG when the round starts: the crash point is drawn before the first shot and never changes. The player only decides when to leave.

PropertyValue
Game IDshots
Engine version1.0.0
Typesession_based
VolatilityHigh — the player sets it by where they leave
Max Win1,000× bet (the game cap)
RTP variants92.00% / 94.00% / 96.00% / 97.00% — returned however the player plays
Minimum stake100 minor units (1.00 in 2-decimal currencies), over any lower operator setting

How a round works ​

PhaseDescriptionPlayer input
StakeThe stake is debited and the crash point is drawnPlace the bet, optionally with an automatic exit (1.01×–1,000×)
StartThe regular sits down; the first shot lands 1 s after the betNone
ClimbThe multiplier climbs as e^(0.145 t) from the first shotCash out at any moment
EndA cash-out pays the multiplier reached when it arrived at the server; an automatic exit pays exactly its target; the round's cap (1,000×, or less where the operator's or the jurisdiction's maximum win requires it) pays the cap; the regular going down first pays nothingNone

The first payable exit is 1.01×. A cash-out that arrives earlier (during the start delay or the first milliseconds of the climb) is paid as a 1.01× exit, provided the regular survives the first shot. A tie goes to the player: an automatic exit at exactly the crash point wins.

The odds ​

VariantRTPOut on the first shotMedian crash pointReaches the 1,000× capBest exit point returnsWorst exit point returns
rtp-9292.00%8.91%1.84×1 in 1,087exactly 92.00% (20 exit points)2.2 × 10⁻¹¹ pt under (at 998.81×)
rtp-9494.00%6.93%1.88×1 in 1,064exactly 94.00% (20 exit points)2.2 × 10⁻¹¹ pt under (at 997.31×)
rtp-9696.00%4.95%1.92×1 in 1,042exactly 96.00% (20 exit points)2.2 × 10⁻¹¹ pt under (at 999.41×)
rtp-9797.00%3.96%1.94×1 in 1,031exactly 97.00% (20 exit points)2.2 × 10⁻¹¹ pt under (at 997.46×)

Exits and timings ​

Exit atShown after the first shotReached, rtp-92Reached, rtp-94Reached, rtp-96Reached, rtp-97SD of one round, rtp-96 (stakes)
1.01× (the first exit)0.069 s91.09%93.07%95.05%96.04%0.219
1.50×2.797 s61.33%62.67%64.00%64.67%0.720
2.00×4.781 s46.00%47.00%48.00%48.50%0.999
3.00×7.577 s30.67%31.33%32.00%32.33%1.399
5.00×11.100 s18.40%18.80%19.20%19.40%1.969
10.00×15.880 s9.20%9.40%9.60%9.70%2.946
20.00×20.661 s4.60%4.70%4.80%4.85%4.275
50.00×26.980 s1.84%1.88%1.92%1.94%6.861
100.00×31.760 s0.920%0.940%0.960%0.970%9.751
500.00×42.860 s0.184%0.188%0.192%0.194%21.888
1,000.00× (the cap: never leaving)47.640 s0.0920%0.0940%0.0960%0.0970%30.969

"Shown after the first shot" is when the multiplier first shows that value; the first shot lands 1 s after the bet. "Reached" is the chance the regular is still standing there.

RTP is the same whatever the player does ​

The crash point is set so that the chance of reaching a multiplier m is the RTP divided by m, exactly up to an integer floor: an exit at m pays m × stake that often, so every exit point returns the variant's RTP, never more, and less only by under m / 2^52 of the stake (about 2 × 10⁻¹³ at the cap). While a round runs the player learns nothing but "still standing", so every way of playing (a manual exit, an automatic exit at any target, never leaving) is a mix of exit points and returns the RTP the operator selected. The house edge is the chance of going down on the very first shot. The full model, with the exact bound, is in the game's math model (games/shots/docs/math-model.md).

Payouts are rounded down to the currency's smallest unit. A stake of whole units in a 2-decimal currency pays every exit exactly, as does any whole-cent stake in USDC or USDT. Below 1.00 the first exits would pay the stake back (0.10 × 1.05 pays 0.10), which is why the game's minimum stake is 1.00 there.

Unfinished rounds ​

SituationSettlement
Player reopens the game while the round is still runningThe round is picked up where it is, on the server's clock
Player gone (tab closed, connection lost)Settled as it would have ended without them: automatic exit, cap or crash
Player starts a new round while one is still runningThe running round is cashed out at that moment
A cash-out arrived in time but its answer was lostHonoured at the moment it arrived

The client finds an open round with GET /games/shots/rounds/active?currency=… (the session's player; null when there is none). It returns the same view a start response carries, re-timed to now — never the crash point.

Provably fair ​

For tenants with provably fair enabled, the round's three draws (the crash point, which regular drinks and how they go down) are derived from the committed server seed at sub-nonce 0. The seed is held while the round is open and revealed when it ends: with it, the crash point could be computed. The verifier reproduces the three draws and checks the exit recorded on the round (the automatic exit set, the round's cap and the exit paid) against the crash point. When the bet named the regular already at the bar, the round records it and the verifier shows that regular, with the drawn one as not used.

Integration notes ​

  • Bet fields: betAmount (minor units of the session currency), like Fox'n Flock and Pass the Jay, plus an optional automatic exit as autoCashout100 (an integer in hundredths: 250 = 2.50×) or autoCashout (a decimal with at most two places). Absent or null means no automatic exit; a malformed value refuses the bet (30611) rather than starting a round without it.
  • Optional patron (gym_bro, punk_woman, alien_woman, conspiracy_uncle or fake_guru): the regular already at the bar on the player's screen drinks this round instead of the drawn one. It is cosmetic (the draws and the payout are unchanged) and recorded with the round; an unknown name refuses the bet. Our client sends it for the first round after the game opens.
  • Actions (POST /games/shots/rounds/:roundId/actions): { "type": "cashout" } is priced at its arrival on the server's clock (a time sent by the client is ignored); { "type": "await" } is held until the round ends and answered with how it ended, or after 20 s with result: "running", and the client asks again.
  • A cash-out through the actions endpoint is answered the moment its exit is on record, before the payout is credited, so the player sees it at once: that answer has settled: false and no balance. The held await then answers with the settled round and the balance. A crash is announced the same way (the balance does not move); an automatic exit or the cap is credited before its answer, which carries the balance.
  • Cash out also works through the standard POST /games/shots/rounds/:roundId/cashout, which settles before it answers and returns the final balance.
  • While the round runs, responses carry elapsedMs (server time since the first shot, negative during the start delay), growthPerSecond, startDelayMs and capMultiplier100, so the client draws the curve on the server's clock. The final response reveals crashPoint100, the ending, the exit paid and winAmount.