Génération aléatoire de niveaux de puzzle intéressants?

8

Je fais un jeu de type Sokoban, c'est-à-dire qu'il y a une grille avec des caisses que vous pouvez pousser et vous devez obtenir les caisses sur les croix pour gagner le niveau (bien que je vais y ajouter des éléments supplémentaires). Existe-t-il des algorithmes généraux ou du matériel de lecture sur lesquels je pourrais chercher comment générer des niveaux intéressants (comme dans, pas triviaux à résoudre) pour ce style de jeu? Je sais que des générateurs de niveaux aléatoires existent pour Sokoban mais j'ai du mal à trouver les descriptions des algorithmes.

Je suis intéressé à faire un jeu où la machine peut générer beaucoup de niveaux pour moi, triés par difficulté. Je suis même prêt à contraindre les règles du jeu pour faciliter la génération de niveau (par exemple, je limiterai probablement la taille de la grille à environ 7x7). Je soupçonne qu'il existe des moyens généraux de générer des niveaux ici, comme je l'ai vu, par exemple, des jeux de type Traffic Jam (où vous devez déplacer des blocs autour du bloc gratuit) avec des milliers de niveaux où chacun a une solution unique.

Une idée que j'avais était de générer une carte aléatoire dans son état final (c'est-à-dire où toutes les caisses sont au-dessus de leurs croix) et ensuite l'ordinateur tirait (au lieu de pousser) ces caisses pour créer un niveau. La bonne propriété ici est que nous savons que le niveau est résoluble. Cependant, j'aurais besoin d'heuristiques pour m'assurer que le niveau était intéressant.


la source
Cette idée que vous avez pour générer des niveaux est très intéressante. Honnêtement, j'irais de l'avant et j'essaierais, plutôt que d'attendre une discussion à ce sujet. Je suppose que vous pouvez régler la difficulté des niveaux générés en définissant le nombre de tractions, et une heuristique que vous voudriez probablement est de répartir les tractions sur plusieurs caisses, à la fois pour que chaque caisse soit déplacée de manière équitable, mais aussi de sorte que le joueur doit parfois faire des allers-retours entre les caisses (je suppose que ce type de logique entrelacée est plus intéressant que celui d'une caisse à la fois).
jhocking du

Réponses:

6

Voir l'article: Création automatique de problèmes Sokoban

Du résumé:

Cet article décrit notre programme qui crée automatiquement des problèmes avec Sokoban. Sokoban est l'un des puzzles à une personne inventé au Japon. Le programme comprend trois étapes: génération, vérification et évaluation. Tout d'abord, les candidats aux problèmes sont générés de manière aléatoire par un prototype et trois modèles. Deuxièmement, les candidats insolubles sont supprimés par le solveur Sokoban. Enfin, les candidats triviaux ou sans intérêt sont supprimés par l'évaluateur. Les problèmes posés par le programme sont jugés bons par des experts humains. La création d'art par ordinateur est une cible importante de l'intelligence artificielle. Notre travail peut être caractérisé comme l'une des tentatives de création de certains arts par les ordinateurs.

CeeJay
la source
1

Pour les casse-tête résolubles, il est souvent facile de simplement jouer le jeu à l'envers, à partir d'un état résolu et de mouvements défaits, planifiés ou aléatoires (ou dans un éditeur).

Sokoban correspond très bien à cette approche et sera beaucoup plus facile à mettre en œuvre qu'une stratégie d'exclusion et de résolution.

John Haugeland
la source