# Traitez une graine comme entrée pour une mise en page reproductible

> Utilisez une graine stockée pour recréer des dispositions de jeu procédurales, séparer la génération de la validation et conserver un niveau défaillant facile à reproduire.

- URL: https://oneshotgems.ai/fr/topics/seeded-random-level-generation
- Catégorie: Pour les développeurs de jeux
- Type: Guide
- Mis à jour le: 5 octobre 2026

Lorsqu'une salle générée de manière procédurale est injuste ou impossible, la question clé du débogage est de savoir si vous pouvez reconstruire la même salle. Une graine donne à un générateur aléatoire un point de départ reproductible, à condition que tous les choix de génération utilisent ce générateur dans un ordre cohérent. Cette tâche diffère de celle de juger si des résultats aléatoires semblent justes : ici, l'objectif est de reproduire une configuration, d'inspecter sa construction et de la rejeter lorsqu'elle viole les règles structurelles du niveau.

## Transmettez un générateur prédéfini via le générateur de mise en page

Créez un générateur pseudo-aléatoire prédéfini et transmettez-le à chaque fonction de génération plutôt que d'appeler Math.random via des assistants non liés. MDN note que la graine initiale de Math.random ne peut pas être choisie ou réinitialisée par l'utilisateur, elle ne peut donc pas fournir à elle seule une graine rejouable. Stockez la graine à côté d'un niveau généré ou de son rapport de bug. Si vous ajoutez ou réorganisez des tirages aléatoires ultérieurement, la même graine peut produire une disposition différente ; versionnez le générateur ou enregistrez la carte générée lorsque la relecture exacte à long terme est importante.

Séparez les choix par objectif lorsque cela est possible : un flux pour la forme de la pièce, un autre pour la décoration et un autre pour le placement de l'ennemi. Ensuite, l’ajout d’un tirage décoratif ne déplacera pas automatiquement le motif ennemi.

## Générer, valider, puis présenter

Après avoir construit une pièce, effectuez des vérifications structurelles avant de la montrer : l'entrée et la sortie existent, les clés requises tiennent sur des tuiles praticables et un algorithme de recherche de chemin peut atteindre la sortie tout en collectant les éléments obligatoires. Si la mise en page échoue, réessayez avec un nombre limité de nouvelles graines, puis utilisez une salle de secours connue ou affichez un échec de génération clair. Enregistrez la graine rejetée et l'invariant ayant échoué afin qu'une mise en page inattendue puisse être rejouée localement.

Testez un petit ensemble de graines délibérément sélectionnées, y compris des valeurs de type limite acceptées par votre analyseur de graines, ainsi qu'un échantillon de graines ordinaires. Cela ne prouve pas que toutes les graines possibles sont valides. C'est un moyen pratique d'exercer à la fois la reproduction déterministe et le chemin de rejet du générateur.

## Gardez la graine séparée des réclamations de difficulté

Une salle reproductible n’est pas automatiquement une salle équitable. Jouez des exemples générés et demandez si les dangers sont visibles et si l'itinéraire prévu laisse suffisamment de temps pour réagir. Séparez cet examen de l’analyse de la distribution dans le cadre d’un examen d’équité. Lorsqu'un défaut est détecté, la graine permet à l'équipe de discuter d'une disposition exacte au lieu de décrire une disposition approximative de mémoire.

## Questions

**Puis-je reproduire un niveau avec Math.random et un numéro enregistré ?** Pas en réinitialisant l'état intégré de Math.random ; MDN indique que sa graine initiale ne peut pas être choisie ou réinitialisée. Utilisez un générateur pseudo-aléatoire initialisé avec une graine que vous contrôlez, puis faites passer tous les choix de génération par ce générateur.

**Une graine garantit-elle que chaque niveau généré peut être résolu ?** Non. Une graine reproduit une séquence de choix ; il ne valide pas la carte résultante. Vérifiez l'accessibilité et les règles relatives aux objets requis, puis rejetez ou réparez les mises en page qui échouent.

## Suivez votre curiosité

- [Rendre le hasard juste dans un jeu](https://oneshotgems.ai/fr/topics/fair-randomness-in-games): Décidez de ce que le hasard détermine, donnez aux joueurs de quoi réagir et vérifiez que les résultats semblent variés sans paraître arbitraires.
- [Rendre les tests de jeux par navigateur répétables](https://oneshotgems.ai/fr/topics/deterministic-game-tests): Contrôlez les valeurs aléatoires, l'heure et les conditions de départ afin que les tests de jeu produisent des résultats comparables et que les échecs soient plus faciles à diagnostiquer.

## Pour aller plus loin

- [MDN Math.aléatoire](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random)

---
Page canonique: https://oneshotgems.ai/fr/topics/seeded-random-level-generation
