Retour au blog

Comment sont programmées les machines à sous HTML5

Couverture de l'article : Comment sont programmées les machines à sous HTML5

Cherchez « comment sont programmées les machines à sous » et vous obtiendrez deux types de réponse : la théorie du complot (« le casino resserre le jeu depuis son back-office ») et le cliché (« tout repose sur un générateur de nombres aléatoires »). Ni l’une ni l’autre ne décrit ce qu’un développeur de slots écrit réellement. Voici l’architecture d’une machine à sous HTML5 moderne, couche par couche, du nombre qui décide du résultat au pixel qui l’affiche.

Couche 1 : le résultat

Un tour se décide par une seule chose : un jeu de positions d’arrêt des rouleaux (ou, pour les jeux en grille, un ensemble de symboles). L’endroit où cette décision est prise dépend de la plateforme.

  • RNG côté serveur. Le modèle classique. Le serveur tire des nombres depuis un générateur certifié, les convertit en arrêts sur les bandes virtuelles, évalue les gains et renvoie le résultat au client. Le client est un dispositif d’affichage : il ne peut pas influencer l’issue.
  • Résultats pré-calculés. Le modèle plus récent, utilisé par des plateformes comme Stake Engine. Le studio simule le jeu à l’avance ; chaque tour possible est stocké avec un poids, et le tour servi est tiré dans cet ensemble. Cela change le pipeline de production, pas la logique : un générateur certifié choisit toujours l’entrée.

Dans les deux cas, le client ne décide de rien. C’est pourquoi l’idée de « resserrer le jeu depuis l’administration » ne tient pas : modifier le retour suppose de changer la configuration mathématique certifiée, donc un nouveau build et une nouvelle vérification.

Couche 2 : le module de mathématiques

C’est le cœur du jeu : bandes de rouleaux, table de gains, logique des fonctions et code d’évaluation. Les bons studios gardent ce module indépendant de la plateforme, écrit une fois (en Python, C# ou TypeScript) et exécuté à trois endroits : dans le simulateur qui produit la fiche PAR, dans le serveur (ou le pipeline de pré-calcul) et — pour la présentation seulement — dans le client, qui doit savoir quelles positions surligner. Si les trois divergent, la certification échoue ; c’est pourquoi le module est versionné par hash et traité comme source de vérité.

Couche 3 : le protocole de tour

Le client et le serveur échangent un petit ensemble de messages : authentification, configuration du jeu (table de gains, niveaux de mise, solde), mise, résultat, accusé de fin de tour, et pour les fonctions des messages « continuer » ou « choisir ». Le résultat contient tout ce qu’il faut au client pour rejouer le tour de façon déterministe : arrêts, gains avec positions, étapes de la fonction, solde avant et après. La reconnexion fait partie du protocole : à la réouverture, le client demande s’il existe un tour inachevé et reprend la présentation depuis l’état enregistré, pas depuis le début. Les laboratoires testent précisément cela.

Couche 4 : le client, une machine à états

Le client HTML5 est une machine à états dessinée sur un canvas WebGL. États typiques : repos → mise posée → rouleaux en rotation → arrêt des rouleaux (avec anticipation) → évaluation → présentation du gain par paliers → intro de la fonction → tours de la fonction → sortie de la fonction → repos. Chaque état possède ses animations, ses sons et sa disponibilité d’interface (impossible de changer la mise pendant la rotation). Le moteur en dessous est généralement PixiJS — le même rendu sur lequel s’appuie le SDK front-end de Stake — ou une couche maison au-dessus. La question « Phaser ou PixiJS pour jeux de casino » se tranche en général en faveur du second dès que le jeu réclame un contrôle fin sur les lots de sprites et les shaders.

Composants clés du client :

  • Rendu des rouleaux — une bande défilante de sprites avec flou, rebond et capacité d’arrêt sur une position donnée ; l’anticipation ralentit les derniers rouleaux quand il manque un symbole pour déclencher la fonction.
  • Présentateur de gains — surligne lignes ou clusters, anime les symboles par palier, fait défiler le montant et escalade vers des écrans Big / Mega / Epic selon des seuils configurés.
  • Chargeur de ressources — atlas de textures, sprite sheets, rigs Spine et audio, chargés par ordre de priorité pour que le jeu soit jouable avant la fin du téléchargement de la séquence de gros gain.
  • Contrôleur audio — musique en couches par état, stems d’anticipation, pool d’effets, règles de ducking.
  • Couche interface — contrôles de mise, solde, autoplay, turbo, table de gains, réglages, plus les drapeaux de juridiction qui masquent ou restreignent certains contrôles.

Couche 5 : les performances

Une machine à sous doit tenir 60 images par seconde sur un Android de trois ans, en connexion mobile. Cela dicte tout le reste : atlas sous 2048 pixels, feuilles de symboles partagées entre états, nombre de particules plafonné, audio compressé à quelques mégaoctets et un premier chargement total de 8 à 12 Mo, le reste étant diffusé ensuite. L’optimisation de machines à sous HTML5 est souvent ce qui sépare une note de deux étoiles d’une note de trois sur une plateforme sélective — pas les maths, mais une scène de gros gain qui saccade. Le chargement des ressources par priorité est le levier le moins cher : le joueur commence à jouer pendant que le reste arrive.

Couche 6 : les tests

Trois familles. Les tests de simulation sur le module de maths, qui confirment RTP, fréquence de gain et distribution du gain maximum sur des milliards de tours. Les tests fonctionnels sur le client, avec des résultats forcés pour parcourir chaque règle et chaque cas limite. Et les tests sur appareils : les mêmes cinq téléphones d’entrée de gamme, toujours, avec mesure des images par seconde, de la mémoire et du temps de chargement.

Ce que cela signifie concrètement

Programmer une machine à sous, c’est beaucoup moins « écrire un RNG » que construire une chaîne auditable entre un nombre et une animation, dont chaque maillon peut être vérifié par un tiers. D’où les maths hors du client, le protocole déterministe et le build figé par hash.

Si vous évaluez un prestataire, lisez comment se déroule la production sur Stake Engine et ce que contient une fiche PAR. Chez Giro Games, cette architecture complète — maths, protocole, performances et builds de certification — constitue le service de développement de machines à sous HTML5, livré sur Stake Engine ou contre le RGS du client.

Continuer la lecture

Vous aimerez aussi