STAKE_SLOT_AUDIT.md

Audit des machines à sous publiables sur Stake / Stake Engine — structures fonctionnelles & standards de production. Sources : docs officielles (math-sdk, RGS, web-sdk), analyse d'archétypes du marché (fonctionnel uniquement, zéro IP), et notre expérience de review réelle (Tails Never Fails, approuvé juil. 2026).


1. La plateforme (le cadre dur)

2. Structure générale (écran & responsive)

Sujet Standard observé Choix factory
Format Design 1920×1080, canvas scalé au viewport (pas d'art par device) Stage fixe scalé (validé TNF landscape)
Orientations Portrait-first sur mobile (device=mobile), les 2 orientations fonctionnelles, re-flow (pas de letterbox) Preset portrait « couches vw plein écran » (validé TNF v2) + preset landscape stage fixe
Organisation Grille centrée, logo haut, contrôles dans le tiers bas « thumb zone » en portrait, gros SPIN rond bas-centre/droit Identique
Cadre des rouleaux Optionnel mais quasi systématique (9-slice ou pièces) Module frame (2 modes, patterns TNF)
Fond Statique (JPEG/WebP) par défaut ; parallax/vidéo = opt-in coûteux Statique par défaut
UI intégrée vs séparée Bet bar séparée de la scène, ancrée bas Identique
Infos mise/gain Balance + mise + gain toujours visibles, en devise réelle Plaques du moteur
Safe areas env(safe-area-inset-*), rien de tappable dans les ~30 px du geste home Géré par le preset layout
Touch targets ≥ 44×44 px Lint de layout du Factory

3. Structure des rouleaux

4. Symboles (conventions)

5. Interface utilisateur (inventaire standard)

Composants attendus : Spin · Stop/slam · Autoplay (compte + conditions d'arrêt) · Turbo (si flag OK) · Mise −/+ (pilotée par betLevels[] du RGS, jamais une liste custom) · MAX · Balance · Mise · Dernier gain · Compteur de gain (rollup) · Menu/burger · Info/règles · Paytable (valeurs mises à jour avec la mise) · Settings · Son/musique on-off · Fullscreen (si flag OK) · Historique (opéré par la plateforme) · Bonus Buy (prix en multiple de mise, à côté de la grille) · Retour · Fermer · Modales · Tooltips · Notifications · Erreurs (codes RGS mappés) · Écran de chargement (logo + barre déterminée + « tap to continue » = geste de déverrouillage audio). États par bouton : normal ✔ / pressed ✔ / disabled ✔ / hover (desktop) / selected / loading / highlighted — fallbacks procéduraux au moteur.

6. Bonus & features (conventions du marché)

Feature Convention Notes factory
Free spins 3+ scatters (4 en 6×5) → célébration → écran intro « X FREE SPINS » → fond/musique dédiés → compteurs spins/gain persistants → retrigger toast → écran récap « TOTAL WIN » = books du mode BONUS ; module v1
Bonus buy 100× standard (gamme 25–500×, ladders multi-tiers 80/200/400×) ; buy-RTP déclaré séparément ; désactivé si ante bet Déjà maîtrisé (TNF ×100) ; module v1
Ante bet +25 % de coût → ×2 fréquence du trigger (désactive le buy) Module v2
Multiplicateurs Orbes 2×–500× sommés (scatter-pays) ou progressifs (cascade : +1×/tumble, persistants en FS) Module v1 (présentation)
Hold & Win / respins 3×3 cash symbols → 3 respins reset Module v2
Pick / Wheel Écrans dédiés, résultat du book Modules v2
Wilds spéciaux (expanding/sticky/walking/stacked) Présentation d'events du book Selon demande de jeu
Max win cap 5 000–50 000× déclaré ; le round s'arrête au cap avec célébration « MAX WIN » ; books cappés dans les maths Déjà maîtrisé (TNF ×15 000)
Gamble Rare sur Stake, contraintes réglementaires Hors périmètre v1

Présentation des gains (tiers) : régulier < 10× · Big ≥ 10–15× · Mega ≥ 30–50× · Epic ≥ 100× (ladders 25/50/100/250× aussi observés). Takeover plein écran escaladant + pluie de pièces + rollup skippable (~1 s petit gain, 3–8 s gros, tap-to-skip obligatoire). Pas de célébration pour un gain ≤ mise (règle UKGC saine à appliquer partout).

7. Vidéo & animations — quand utiliser quoi

Besoin Solution la plus légère/robuste
Micro-feedback (boutons, glow, pulse, compteurs) CSS/procédural — zéro asset
Anim de symbole Frame win + tween moteur (v1) → Spine (v2 si besoin)
Explosions/FX localisés Sprite-sheet atlas
Transition de scène Fondu/shader léger moteur
Intro bonus / max win Vidéo MP4 plein écran muette + piste Web Audio synchro (pattern TNF validé, contourne les autoplay policies)
Personnage réactif Chroma-key runtime sur canvas (clips MP4 fond uni, keying distance couleur + de-spill) — différenciateur Cool Kids, module opt-in
Scène bonus séparée Overlay DOM/Pixi (pas une page)

8. Audio (catalogue standard)

bgm base (loop) · bgm bonus (loop) · ambiance · spin · reel stop (par rouleau) · anticipation (riser) · win + tiers (big/mega/epic) · scatter/wild/bonus trigger · rollup tick + ding terminal · boutons · erreur · voix (opt-in). Déverrouillage sur premier geste, mute persisté, duck/hold de la bgm pendant les cinématiques (pattern TNF). Format : MP3 (notre pipeline Web Audio buffers validé) ; audio-sprites en option d'optimisation.

9. Compliance (checklist condensée — détail dans STAKE_SUBMISSION_CHECKLIST.md)

RTP par mode (buy inclus) dans les règles · max win déclaré · clause « malfunction voids all pays » · paytable complète et liée à la mise courante · autoplay avec conditions d'arrêt (flag-able) · turbo/fullscreen derrière les flags RGS · balance/mise/gain toujours visibles · social stake.us : XGC/XSC, wording sans bet/cash/$ (couche moteur, auditée 0 résidu sur TNF) · reprise de round exacte (authenticate + bet/event) · 16 langues ou fallback en propre · rien qui vise les mineurs · pas de « near-miss » fabriqué hors maths certifiées.

10. Budgets de perf observés (détail dans PERFORMANCE_BUDGET.md)

Payload initial jouable < 5–10 Mo (reste lazy) · total type 5–20 Mo (premium Spine-heavy 20–50 Mo gaté) · first playable < 5–10 s en 4G · 60 fps mobile milieu de gamme (WebGL) · atlas ≤ 2048² · audio ≤ 2–4 Mo · WebP partout (~−50 % vs PNG). Note Cool Kids : TNF (123 Mo, jeu vidéo-heavy) est l'exception assumée du style « personnage vidéo » — les slots reels du factory doivent tenir les budgets ci-dessus.

11. Ce que ça implique pour le moteur (synthèse)

  1. Le contrat RGS est la spec dure → la couche stake-rgs (déjà éprouvée) est le socle commun n°1.
  2. Les 5 archétypes web-sdk (lines/ways/cluster/scatter/price) = nos templates cibles ; v1 : lines-5x3, ways-5x3, ultra-simple (price-like, ADN TNF).
  3. Le pattern bookEvents → emitterEvents structure toute la présentation (déjà le nôtre).
  4. Les attentes joueurs les plus fortes : thumb-zone portrait, spin 2–3 s + turbo flag-é, ladder Big/Mega/Epic skippable, intro/récap de free spins, buy ~100×, RTP+max win dans l'info, wording social-safe.