Case battles

Case opening systems that convert

The reel is your product: timing, sound, and payoff clarity matter as much as the odds. We build high-polish open sequences, provably fair backends, and battle modes that stay in sync when thousands spectate a high-stakes lobby.

What we deliver

Reel Animation Engine

110-slot virtual reels with cubic-bezier easing (0.15, 0, 0.10, 1) for ~8s spins, frame-synced tick SFX on cell boundaries, rarity-driven bloom and trail shaders, and distinct land sounds per tier. Canvas 2D or WebGL path depending on device tier; offscreen rendering for thumbnails. Server sends only the committed outcome index — animation is client-side interpolation.

Provably Fair Drops

Same HMAC-SHA256 construction as our casino core: hashed server seed pre-round, client seed + nonce per case. Byte stream mapped to cumulative distribution over the curated pool (alias method or binary search on prefix sums). Public verifier accepts paste of seeds and reproduces the item roll. House edge and published weights stay in sync via config versioning.

Real-Time Case Battles

Lobbies for 1v1, 1v1v1, 1v1v1v1, and 2v2 team modes. Match coordinator locks all participants, issues synchronized `round_start` over WebSocket, and streams each opener’s reel phase for spectators. Late join blocked; reconnect replays state from CRDT-style event log per match ID.

Case Economy Design

Price cases from expected value, volatility, and liquidity of top pulls. Tooling for pool curation, duplicate suppression on high tiers, pity systems if you want them, and configurable margin that shows up in disclosed odds. Monte-Carlo sims and house-edge reports before you ship a pool change.

Inventory & Trading

Per-player inventory with non-fungible rows keyed by `asset_id` or internal UUID, peer trades with double-confirm, marketplace listings with fee schedules, and withdrawal rails to Steam bots or on-chain if you bridge digital goods.

3D Item Previews

Three.js inspectors with environment maps, wear float mapped to texture roughness masks, and stencil wear patterns for CS-style skins. Lazy-loaded GLTF/JSON pipelines so the shop stays fast on mobile.

How it works

01 — Configure

Pools & disclosure

You define item weights, price, and display odds. We version every change, hash configs for audit, and expose JSON for regulators or community tools. Simulator runs 10M draws in CI to catch rounding errors before deploy.

02 — Open

Commit / reveal

Server commits `hash(server_seed)`; client supplies seed; outcome bytes select the item. The reel animates to the winning index without exposing it early. Battle mode sequences rounds so tied EV scenarios still have deterministic ordering.

03 — Scale

Realtime ops

Autoscale WS gateways on concurrent battles; backpressure policies drop spectator updates before player channels. Admin can pause a case SKU, force-rotate seeds, or refund a stuck match from tooling with full audit log.

Technical depth

  • WebSocket rooms backed by Redis pub/sub or NATS for horizontal scale; server authoritative tick prevents desync on simultaneous opens.
  • Deterministic animation: client seeds easing from server `outcome_index` only after commit, so scrubbing DevTools cannot leak future items.
  • PostgreSQL for ownership and case configs; Redis for match ephemeral state and spectator fan-out with capped backlog per connection.
  • CDN strategy for 110+ icon sprites per case; HTTP/2 push or module prefetch for battle lobbies.
  • Load tests with synthetic spectators — we measure p95 fan-out latency before you run influencer events.

Build your case platform

Reels, battles, and economies — engineered so your players feel the weight of every roll without doubting the math behind it.

Start a Project