J'ai un jeu Sudoku le plus vendu sur l'App Store iOS. Voici comment j'ai généré des puzzles.
J'ai d'abord une application de génération de puzzles. Mais cela ne fait pas partie du code du jeu. C'est une application autonome que j'utilise pour faire des puzzles. Il est très modifié, je peux donc le configurer pour créer différents types de motifs, niveaux de difficulté, nombre de données, etc.Générer des puzzles et obtenir un niveau de difficulté constant est difficile à faire à la volée et prend plus de temps qu'un joueur ne voudrait attendre. Donc, je génère ce que j'appelle des "puzzles de base" et c'est ce qui est utilisé par le code du jeu pour générer les puzzles auxquels les gens jouent.
Je ne réponds pas ici comment coder un générateur. Vous pouvez google et trouver des tonnes de code générateur de puzzle en ligne. Commencez par là. Mais pour faire un bon jeu, vous devez faire un bon jeu. Mon jeu ne génère pas de puzzles à la volée.
La façon dont mon application de générateur de puzzles fonctionne est qu'elle génère des milliers de puzzles par minute, mais ils ne sont pas tous bons et ne correspondent pas tous à un niveau de difficulté spécifique. Le générateur crée un casse-tête, puis le résout et calcule un niveau de difficulté, et marque le casse-tête en fonction des techniques nécessaires pour résoudre le casse-tête, et détermine si une supposition est nécessaire pour le résoudre (ce qui est généralement mauvais). Il lance des puzzles qui ne correspondent pas à un critère. Pour les puzzles difficiles mais pas impossibles, sur une machine rapide, il peut prendre une heure pour générer 100 puzzles qui correspondent à mes spécifications exactes. C'est pourquoi je ne fais pas cela dans l'application. Générer des puzzles à la volée avec ces spécifications strictes ne fonctionnerait pas pour la qualité des puzzles que j'ai dans mon application.
Les puzzles sont des chaînes, 162 caractères de long, 81 caractères avec des chiffres et des tirets ou des points où les blancs vont être, puis 81 autres avec la solution. Ensuite, des colonnes pour chacune des statistiques, comme le nombre de simples, de doubles, etc.
Ma sortie de toutes les sessions de génération sont des lignes délimitées par des virgules avec les statistiques sous forme de colonnes. Je prendrai peut-être 10 000 puzzles, les amènerai pour exceller et les trierai par difficulté. Amenez-les ensuite dans une application pour les voir sur le plateau de jeu. Je les regarde également pour leur attrait visuel et les motifs visibles du puzzle. Ensuite, je les choisis à la main.
Je les appelle des puzzles de graines et voici ce que je veux dire. Les nombres dans un jeu de sudoku ne sont vraiment que des jetons. Au lieu d'être des nombres de 1 à 9, ils pourraient être des couleurs, des symboles ou des lettres. Donc mes puzzles de graines ne sont pas des nombres, ce sont les lettres ai. Chaque puzzle de semences est changé à la volée pour en faire un puzzle jouable:
- Randomisez les nombres / jetons. Lorsque je remets les lettres ai dans les nombres 1 à 9, la table de recherche est aléatoire. Ce qui signifie qu'un n'est pas toujours 1. Cela crée à lui seul environ 300 000 variations sur chaque puzzle.
- Faites pivoter le puzzle de 90, 180 ou 270 degrés. Cela ajoute 4 variantes supplémentaires.
- Basculez le puzzle horizontalement, verticalement ou les deux. Cela ajoute 4 variantes supplémentaires.
Chaque puzzle de graines peut donc créer 5 806 080 variations. Je l'ai testé sur le terrain avec de vrais joueurs. Les gens ne savent pas qu'ils jouent essentiellement le même puzzle. C'est impossible en fait. Seulement s'ils devaient remarquer que le schéma dans lequel les données se trouvent sont les mêmes à chaque fois. Mais avec même 100 graines différentes, personne ne le remarquera. Pas un million d'utilisateurs de mon jeu. Je l'ai également testé avec des applications de solveur. Une application de résolution ne résoudra pas un puzzle de la même manière lorsqu'il est tourné ou floppé. Il va même parfois l'analyser comme un niveau de difficulté différent même s'il s'agit techniquement du même casse-tête.
Cependant, Big Bad Sudoku Book propose 10 des 1000 puzzles de graines dans 5 niveaux de difficulté et plusieurs types de modèles de puzzle. Cela signifie qu'il y a des milliards de puzzles dans mon jeu. Pour chaque tranche de 10 000 puzzles, il y a 58 060 800 000 puzzles différents.
Dans Sudoku Book version 4 (prévue pour 2016), j'ai trouvé un moyen de spécifier un puzzle exact sur ces 58 milliards et d'obtenir le même puzzle sur l'appareil de chaque joueur.