Katapuuult
A session-based launch game. The player chooses a risk tier, the catapult fires, and the rock's flight is animated through a world of collectibles and hazards before landing.
The outcome is decided by the RNG at bet commit, not by the flight. The player's tier choice selects which of three pre-drawn results applies; the arc, the objects struck and the landing zone present that result.
| Property | Value |
|---|---|
| Game ID | katapuuult |
| Engine version | 2.0.0 |
| Type | session_based |
| Volatility | Medium |
| Max Win | 60× bet |
| RTP variants | 91.96% / 94.00% / 95.98% / 97.00% |
Risk tiers
The player's only decision. All three carry identical expected value — to the cent — and differ solely in shape. You choose how wild the ride is, never your edge.
| Tier | Landing shot | Any win | Top prize | Volatility (SD) |
|---|---|---|---|---|
safe | 86% | 93.67% | 3× | 0.63 |
medium | 66% | 84.63% | 10× | 1.39 |
risky | 35% | 70.61% | 50× | 3.33 |
"Any win" exceeds "landing shot" because the four bonus draws pay independently of the shot — a missed launch can still collect. Both columns are identical in every RTP variant: variants change multiplier VALUES, never weights.
Every tier's ladder totals the same weight and the same weight × multiplier, so E[primary] = 0.88× for all three in every RTP variant. This is asserted by test ("keeps every risk tier at IDENTICAL expected value"); if it stopped holding, the build would fail.
Game phases
| Phase | Description | Player input |
|---|---|---|
CHOOSING | The three tiers are offered | Select a tier |
FLIGHT | The rock is animated to the drawn result | None |
RESULT | Payout settled | None |
What determines the outcome
At bet commit the engine draws, from the committed seed:
- one primary result per tier — always all three, in a fixed order, so the request shape never reveals which tier will be chosen
- four independent bonus draws
The launched tier selects which primary applies:
finalMultiplier = primary[tier] + Σ bonus
winAmount = round(finalMultiplier × 100) × bet / 100The win cap never binds — it sits above the largest reachable value (risky's 50× plus four bonus draws).
Aiming was removed
Earlier versions paid on where a physically-simulated rock landed, so how long a player held a power button moved real money. That could not be certified: RTP became a property of the player rather than the game, with no provable floor and no provable ceiling.
It could not be kept as decoration either. Measured against the shipped physics, a 25° launch cannot reach above the lowest zone at any power — so "the rock lands in the drawn zone" and "the rock flies at the player's angle" are mutually exclusive. Rather than let a player aim and then silently override them, the tier choice became the only input.
Flight presentation
The flight uses the original physics, solved backwards for a launch that reaches the drawn zone: a low result is a flat, fast throw and a high one a steep, powerful arc, so no result produces a weak-looking lob.
The multiplier climbing during flight is a decomposition of the drawn payout across the objects struck — collectibles add, hazards subtract — and the running total closes exactly on the amount paid. It relabels the journey; it cannot change the result.
Provably fair
For tenants with provable fairness enabled, the outcome derives from a seed committed before the bet. The public verifier reproduces it given the seed and the risk tier recorded on the round — read from the round record, never from the caller, so a player cannot verify whichever branch paid best.
Engine and verifier are held byte-identical by an equivalence test across every variant and tier.