Approved · live on Stake Engine

Case study · Vampir: Graveyard Shift

A vampire on the night shift. Approved and live.

Uncle Vlado took the only job that fits his hours: night watchman at the village graveyard. His bats do the real work. We designed the game, made every piece of its art and sound, animated the hero, simulated the math, built the client and took it through Stake Engine review. Here is the whole job, with the real files.

Or watch the real 25,000× max win: a Blood Moon Shift from the published books ▶18+ · Play responsibly

6×5Pay anywhere + tumbles
5Bet modes, 1× to 1,000×
96.50%RTP in every mode
25,000×Max win, every mode
500,000Books simulated and replayed against the rules100,000 per bet mode · 0 failures
14 / 143-star math risk checks passedplus all 5 Stake critical tests
36 passPlatform guidelines in our pre-submission review0 fail · 3 for a human · 1 n/a
11Filmed clips of Uncle Vladoan idle loop + 10 acts

The night shift, on camera.

Vampir is live on Stake, so this is where you watch it and Stake is where you play it. Every clip and still here is the live game build playing real rounds from its published books. We picked the rounds; the math paid them.

Bats that grow. Bats are wild, stay on the board through every tumble and gain +1 each time it drops. Here two of them climb to ×5 and ×7 in six tumbles.

Same game, phone layout
  • The base game6×5, 8 or more of a symbol anywhere pays, then the board tumbles.
  • Vlado's BiteEvery Bat on the board doubles. About 1 base round in 80.
  • Bloody WinThe top celebration, for 150× and up.
  • The buy menuThree Shifts at 100×, 300× and 1,000×, each at 96.50% RTP.
  • 03:00Blood Moon only: every Bat doubles again.
  • Feature Win25,000.00 on a 1.00 bet: the cap.

Live on StakeCaptured from the live game build. Play it for real on Stake.

01 · The brief

Built for the top of the lobby.

No client on this one: Vampir is our own title. We studied what the platform's top-10 games have in common, wrote that profile down before drawing anything, and held every decision to it.

Name check before the first sketch. No slot called "Graveyard Shift" turned up. "Night Shift" was dropped because a "Knight Shift" already exists, and since a well-known vampire slot already has wild bats, our bats had to look and behave like nobody else's.
Bold 2D cartoon→Thick outlines, night colours: deep navy, neon purple, cyan rims and one blood-red accent.
Dark humour→A vampire who works nights, bites the board when he gets peckish and hates garlic (it's a symbol).
One star character→Uncle Vlado, always on screen, with 11 filmed clips and a bust for phones.
Persistent multipliers→Bat wilds that never leave in a tumble and grow +1 with every one.
Tiered free spins→Three Shifts for 4, 5 or 6+ Coffins, played as one night on the clock.
Three-layer buy menu→Buys at 100×, 300× and 1,000×, plus a 2× Night Owl mode.
Five-figure max win→25,000× in every bet mode, inside the 3-star exposure tier.
02 · The hook

Three ideas a player can
explain to a friend.

One mechanic that is ours, one moment that is Vlado's, and a free-spin round with a clock on the wall. Try the first two right here.

Idea 1 · Bats that grow

The bats add up. They never leave.

A Bat is wild, stays on the board through every tumble and gains +1 each time the board tumbles. When the tumbles stop, the spin's award is multiplied by the sum of every Bat on the board. Bats add up; they never multiply each other.

Tumble award from a real published spin: 8.0× (11 Grave Lanterns + 1 Bat = 12 symbols)

Rules: MATH.md · Bats. Real spin: base book #1 (8.0× tumble award, Bat sum ×2, 16.0× for the spin). Past the first tumble, it's a toy.

Idea 2 · Vlado's Bite

Sometimes he gets peckish.

After a base-game spin that ends with an award and at least one Bat, Uncle Vlado can bite: every Bat doubles before the multiplier is applied. The book decides; the client only plays it.

Vlado's Bite, the painted title from the game Hover for the bite
1 in 80base rounds get a Bite (1.25%)
1 in 28.5with Night Owl on (3.50%)
Idea 3 · The night shift

Free spins are one night, on the clock.

4, 5 or 6+ Coffins start the Graveyard, Overtime or Blood Moon Shift: 10 spins, one per hour from 21:00. Bats stay all night and keep growing. Midnight doubles every Bat, and at 03:00 a new one flies in. Three Coffins in the Shift add 5 spins and the clock runs past 07:00. Below: a real Blood Moon Shift, captured from the shipped client.

The painted clock face from the game
21:00

Graveyard Shift

4 Coffins. Bats land at ×1; midnight doubles them.

Base game1 in 346
Buy100×

Overtime Shift

5 Coffins. Every Bat that lands starts at ×3, the 03:00 Bat too.

Base game1 in 4,571
Buy300×

Blood Moon Shift

6+ Coffins. Bats double at midnight and again at 03:00.

Base game1 in 63,977
Buy1,000×

Frequencies per base-game round: sdk/games/vampir/MATH.md · Final stats. Captures: the shipped client playing real books from the published math.

03 · The process

From a blank page to a live game. With receipts.

Every picture below is a real file from the project: the tests we threw away, the direction we kept, and captures of the client that shipped.

01
Concept

A design doc before a single pixel.

Pitch, board, pays, features, bet modes and targets on a few pages. The math got its own spec, with an event contract the client would later read line by line.

GDDMath specEvent contractTitle check

Vampir: Graveyard Shift · GDD v0.1

Pitch
Uncle Vlado took the only job that fits his hours: night watchman at the village graveyard. His bats do the real work.
Board
6 reels × 5 rows, 8+ of a symbol anywhere pay, tumbles.
Hook
Bats carry a multiplier and add up, they do not multiply each other.
Shift
10 spins, the clock from 21:00 to 07:00. Midnight doubles every Bat.
Targets
Hit rate about 1 in 3 · free spins about 1 in 250 (shipped at 1 in 320, see 09) · max win 25,000×.
02
Art · style tests

Two looks, one subject.

Before committing, we tested the look on the same cast: a bold cartoon with thick outlines, and a procedural, cel-shaded 3D set built in Blender.

Style test: bold 2D cartoon of Uncle Vlado
Bold 2D cartoon
Style test: cel-shaded 3D symbols from Blender
Cel-shaded 3D, Blender
03
Art · direction

Then a proper fight: A against B.

The hero and four symbols, both ways. B: modelled and rendered entirely in Blender. A: a 2D illustration, touched up in Krita and rigged in Spine. Drag the handle. A won; B went in the drawer.

Direction A: illustrated Vlado, coffin, bat, goblet and skull Direction B: the same cast modelled in Blender B · all 3DA · illustrated (kept) ⇆
04
Art · the star

Casting Uncle Vlado.

A 3D take and three bearded takes auditioned. The moustache got the job. That one picture became the still every one of his clips starts and ends on, so whatever he does, he always comes home to the same pose.

Casting: the 3D Vlado
3D take
Casting: bearded Vlado, take 1
Take 1
Casting: bearded Vlado, take 2
Take 2
Casting: bearded Vlado, take 3
Take 3
HIREDThe final Uncle Vlado
The one
05
Art · symbols

Ten symbols, one hand.

Uncle Vlado's portrait, the Blood Goblet, the Grave Lantern and the Garlic Braid he hates on top; Skull, Tombstone, Candle and Spider below; the Bat wild and the Coffin scatter. Each one has its own Spine rig for landing and winning, and the Coffin's lid really opens. Tap one for its pays.

Pays are multiples of the bet, before the Bat multiplier: 8–9, 10–11 and 12+ of a symbol anywhere.
06
Art · scene

Same graveyard, two nights.

Moonlight for the base game, a blood moon for the Shift. One composition for both, so starting the free spins feels like the night turning, not like loading a new level.

The Shift background under a blood moon The base game background under a full moon Base gameThe Shift ⇆
07
Art · UI kit

Not one CSS gradient on a button.

Our pre-submission pass hunted what reviewers mark down: gradient fills, emoji icons, stock fonts. Every control surface became art in the symbols' style, and every big moment got its own painted lettering: 16 titles, plus gold bitmap digits for amounts, multipliers and the clock. Hover the owl: that's the Night Owl switch, asleep and awake.

Painted spin button Painted clock face Painted gold button
Painted buy plaque
Big Bite title
08
Animation

A rig bends a picture. We filmed him instead.

Vlado got 11 video clips made from his own picture: an idle loop (breathing, cape and lantern swinging, blinks, the bat looking round) and ten acts. A clip only starts when the idle loop passes through his still pose, so he never jumps. The Spine rig stays as the fallback, and particle effects carry the big moments.

Stacked-alpha videoSpine 4.2Effekseer particles

Seven of the eleven clips, at phone size. Same technique as in the game: colour on top, alpha below, joined on a canvas.

09
Math

Simulate. Optimize. Play it. Fix the feel.

100,000 books per bet mode, an optimizer to land every mode on 96.50%, and then the step that matters: we played it. Version 1's base game felt stingy between Shifts, so we re-weighted it: same RTP, same max win, more wins that are worth having. The real log is on the right; the full numbers are below.

check_stats.py · vampir
== base (cost 1) books=100000 zero-weight=0 LUT/book mismatches=0   RTP 96.500%   std 14.77/cost (raw 14.8)   median 0.00x   hit rate 31.17% (1 in 3.2); stake or better (1x+) 1 in 4.5   free spins 1 in 320.0, avg 115.6x, FS RTP 36.13%, base game RTP 60.37%   max win 25,000x, 1 in 6,250,006.4   vladoBite 1.25%, midnight 0.31%, newBat 0.31%   ... nightowl, shift, overtime, bloodmoon ...   [PASS] RTP in 96.0-96.7% for every mode   [PASS] max win 25,000x reached in every mode   [PASS] Volatility: max std dev (per unit cost) <= 60   [PASS] Tail Probability: P(>=25,000x) <= 0.005   failed classes: 0 []
Excerpt from sdk/games/vampir/check_stats.log, unedited apart from the cut.
10
Front-end

First playable vs the client that shipped.

Same scene, same board, a very different game. Our shared engine (PixiJS 8 with a DOM HUD) does the heavy lifting; the game layer adds the clock, the bats, the owl and Vlado. Presentation follows the books: every Bat value, bite, midnight and award comes from a book event. Nothing is decided on the client.

No losses dressed as winsColumns refill in a waveMipmapped symbolsA board that never sits stillVlado's bust on phones
The shipped client: painted UI, frame and controls An early playable build with flat CSS controls First playableShipped ⇆
The shipped client on a phone, with Vlado's bust beside the logo
11
Review

We failed our own review first.

Before submitting, we ran every published guideline against the build, with a mock server serving the real books: screen sizes from 1280×720 down to 400×225 and a 425×812 phone, five currencies plus sweepstakes coins, social wording, replays, an unfinished round. The first pass found two fails. We fixed both, re-checked, and only then pressed submit.

Pre-submission review36 pass · 0 fail
  • 181Authenticates with the game server on launchPASS
  • 275Own loader, no platform loaderPASS
  • 25RTP and max win stated in the rulesPASS
  • 31High-cost modes ask for confirmationPASS
  • 219EUR, USD, CAD, MXN, JPY render rightPASS
  • 77Social wording everywherePASS
  • 171Replays load and playPASS
  • 195Popout 400×225: buy card overlapped the menuFIXED
  • 235Guide missed the Night Owl switchFIXED
3 items left for a human eye: content, originality, a real phone.✓ Approved · live
04 · The math

Numbers you can check.

Straight from our simulation of the published lookup tables: 100,000 books per bet mode, math version 1 with the re-tuned base game. The PDF carries the full sheet, the method and the risk checks.

96.50%RTP in every bet modelookup tables: 96.5000%
25,000×Max win in every modewatch one land ▶
1 in 3.21Base game hit rate31.17% of rounds
1 in 320Shift from the base game1 in 160 with Night Owl
Bet modeCostRTPHit rateMedian roundReturns ≥ costStd dev / cost25,000× max win
Base gameBats, bites, the Shift
1×96.50%1 in 3.210×1 in 4.5014.771 in 6,250,006
Night OwlMore Bats and Coffins
2×96.50%1 in 3.130×1 in 4.5011.051 in 3,125,001
Graveyard ShiftBonus buy, 4 Coffins
100×96.50%every round31.1×1 in 5.202.131 in 50,000
Overtime ShiftBonus buy, Bats start at ×3
300×96.50%every round126.7×1 in 3.291.351 in 19,984
Blood Moon ShiftBonus buy, double doublings
1,000×96.50%every round523.1×1 in 3.651.211 in 2,500

Where the base game's 96.50% comes from

Share of the bet returned, base mode.

Base game60.37%
Free spins (the Shift)36.13%

Which Shift you get

Share of Shifts triggered in the base game.

Graveyard · avg 97.6×92.50%
Overtime · avg 292.4×7.00%
Blood Moon · avg 974.8×0.50%

How often things happen

Base mode, per round.

  • Any win1 in 3.21
  • Win of 1× or more1 in 4.50
  • Bat multiplier ×2 or more1 in 17.4
  • Vlado's Bite1 in 80
  • The Shift (any tier)1 in 320
  • Average Shift115.6×
  • Retrigger in a bought Shift20.4–23.0%

Base-game rounds by payout

Share of all base-mode rounds. Rounds that start the Shift shown in violet. Linear scale: the tail is there, it's just thin.

Base-game books only. Night Owl has the same shares from 2× up, at twice the amounts. The 100×+ band is 191 books averaging 202×.

Risk, against the 3-star limits

Worst bet mode for each check. The red tick is the limit.

We played v1. It felt stingy. We fixed the feel, not the RTP.

Base game, before and after re-weighting the lookup table. Sessions: 20,000 simulated sessions of 200 spins each.

Base gamev1v2 (shipped)
RTP96.50%96.50%
Share of the RTP paid outside the Shift52.2%62.6%
Win of 1× or more1 in 6.431 in 4.50
Crumbs (wins below the bet)17.09%8.95%
Bat multiplier ×2 or more1 in 361 in 17
Vlado's Bite1 in 1451 in 80
The Shift1 in 2501 in 320
Sessions with no 1×+ win in the first 20 spins3.19%0.56%
Longest dry streak, median session22 spins16 spins
25,000× max win1 in 6,250,0061 in 6,250,006

The checks

  • Stake critical tests5 / 5 pass
  • 3-star non-critical checks14 / 14 pass
  • Books replayed against the rules500,000 · 0 bad
  • Strict book + lookup table check0 bad rows
  • Max win reachable in every modeyes
  • Full rebuild, all five modes22 min
The full math sheet, 3 pages.

Bet modes, volatility, feature frequencies, paytable, the simulation method and sample sizes.

Download the PDF ↓

Sources: sdk/games/vampir/MATH.md (final stats, base game v2), check_stats.log, session_sim.log, check_bats.log, check_books.log. Theoretical values from our simulations; individual sessions vary.

05 · Tech stack

What's under the cape.

Boring, proven tools, used carefully. The client is static files only: no outside requests, nothing but the game server.

∑

Math

Stake Engine's math SDK in Python, the SDK optimizer, our own band re-weighting, checkers that replay every book against the rules and the event contract.

PythonMath SDKOptimizerLookup tables
⚡

Client

Our shared slot engine: WebGL rendering with a DOM HUD, typed end to end, built per game. Vampir's own layer adds the clock, bats, owl, crest and Vlado.

TypeScriptPixiJS 8GSAPVite
✦

Motion

Spine rigs for every symbol, stacked-alpha video for the hero, particle effects for the big moments, warmed up off screen during the start screen so the first big win doesn't hitch.

Spine 4.2EffekseerVideo clipsMipmaps
✎

Art

2D illustration in layers, touched up in Krita, 3D tests and props in Blender, and a painted frame built to the board's proportions, so nothing stretches.

KritaBlenderBitmap fontsDesktop + mobile textures
♫

Audio

Sound effects designed from recordings and synthesis into one sprite; music mastered in REAPER and shipped in two codecs so every browser gets one.

REAPER 7LUFS + true peakOpusAAC
✓

QA

A mock game server serving the real books, a review switchboard for balance, bet levels, currency, social mode and unfinished rounds, and the full guideline pass before every submit.

Mock RGSReplay mode5 viewports7 currencies
06 · Sound

A graveyard. A fun one.

The brief for the score: harpsichord, pipe organ, pizzicato strings and a theremin for the gothic side, accordion and Balkan brass for Uncle Vlado, all in C minor. The tonal sound effects sit in the same key.

Base game loop

40 s excerpt · the shipped loop runs 74.9 s
0:000:40

Five cues, 23 effects

Base game loop74.9 s
Shift loop62.0 s
Shift intro9.3 s
Big win10.3 s
Dawn5.8 s

The effects live in one 40.7 s sprite, built from wood, creaks, cloth, glass and bell recordings, re-pitched and layered with synthesis in the acoustic of a stone crypt:

bat wingsbitecoffin creakchurch belltick-tockheartbeatowl hootghostthunderdrip+ 13 more

Mastered for loudness (loops at −17 and −16.5 LUFS, stingers at −14 and −15.5) with a true-peak limiter: every shipped file stays below 0 dBTP after encoding. Loops are rendered from a second back-to-back pass, so they enter the loop already settled.

07 · Result

Approved. Live. Now it's the bar.

Vampir: Graveyard Shift passed Stake Engine review and went live in October 2026, the first of our slots on the platform. Every game we've started since has to clear the bar it set.

  • Design doc, math spec and event contract
  • Math for 5 bet modes: books, lookup tables, demo books, stats
  • Front-end package for desktop and phone, with replay mode
  • Store media: cover, tile, logo and foregrounds
  • Reviewer notes and a launch page
Vampir: Graveyard Shift Approved · live on Stake Engine

RTP 96.50% · max win 25,000×
5 bet modes · 6×5 pay anywhere

18+ · Play responsibly

Want a Vlado
of your own?

A custom title with its own mechanic, or a reskin of one of ours. Either way you get the math sheet, the books and the receipts.