title: Sokoban
text: # Sokoban
  
  Sokoban (倉庫番, Sōko-ban, litt. « garde d'entrepôt ») est un jeu vidéo de réflexion inventé au Japon.
  
  ## Règles du jeu
  
  Gardien d'entrepôt (divisé en cases carrées), le joueur doit ranger des caisses sur des cases cibles. Il peut se déplacer dans les quatre directions, et pousser (mais pas tirer) une seule caisse à la fois. Une fois toutes les caisses rangées (c'est parfois un vrai casse-tête), le niveau est réussi et le joueur passe au niveau suivant, plus difficile en général. L'idéal est de réussir avec le moins de coups possibles (déplacements et poussées).
  
  ## Historique
  
  Le jeu original a été écrit par Hiroyuki Imabayashi et comportait 50 niveaux. Il remporte en 1980 un concours de jeu vidéo pour ordinateur. Plus tard Hiroyuki Imabayashi est devenu président de la compagnie japonaise Thinking Rabbit qui détient aujourd'hui les droits sur le jeu depuis 1982.
  
  Aujourd'hui, il existe de multiples jeux dérivés de Sokoban, par exemple Boxworld, une variante fonctionnant sous Windows et incluant 100 niveaux. Microsoft proposait ce jeu sous le nom de « Pousse Bloc ». Comme les règles sont simples, le jeu est facile à programmer. Plusieurs versions ont été écrites en JavaScript ; il est ainsi possible de jouer en ligne avec un navigateur web. Il existe des logiciels proposant un affichage 3D (le principe du jeu reste en 2D, comme certains jeux d'échecs 3D).
  
  Certains jeux (par exemple Push Crate) mettent en place de nouveaux éléments de gameplay pour Sokoban tels que des trous, des téléportations, etc.
  
  ## Formats des fichiers
  
  Si, dans certaines versions du jeu, tous les niveaux jouables sont intégrés dans le jeu, sans permettre l'importation de niveaux, la majeure partie des versions permet de jouer des niveaux autres que ceux qui sont intégrés.
  
  Pour cela, plusieurs formats existent, comme :
  
  * le format .xsb, qui est, de loin, le plus courant ;
  * le format .sok, qui, bien qu'ayant été conçu pour remplacer le format .xsb, reste peu courant ;
  * le format .stb, peu courant, lui aussi.
  
  ### Exemple (le niveau 1 de Sokoban)
  
  Ce texte montre le contenu du fichier de format .xsb correspondant au premier niveau de la première version du jeu.
  
  Légende :
  
  # : mur
  
  $ : caisse
  
  . : destination
  
  * : caisse sur une zone de rangement (pas présente dans ce niveau)
  
  @ : personnage
  
  + : personnage sur une zone de rangement (pas présent dans ce niveau)
  
  ## Étude du jeu
  
  Le jeu de Sokoban peut être étudié du point de vue de la théorie de la complexité. Il a été démontré que la résolution des niveaux de Sokoban est un problème de complexité NP-difficile, en ce sens que le jeu fait partie de la classe plus générale des problèmes de planification de déplacements, où le joueur est autorisé à pousser ou à tirer un ou plusieurs objets à la fois. Le jeu est également intéressant pour les chercheurs en intelligence artificielle, car la résolution de niveaux pose des problèmes difficiles, pour lesquels il n'existe pas à ce jour d'algorithmes de résolution rapide. Des travaux ont par exemple montré que la version générale de Sokoban est incluse dans l'espace des problèmes $PSPACE-complets^,.$
  
  La difficulté du Sokoban provient de son facteur de branchement (en) (comparable à celui des échecs, bien que très inférieur à celui du jeu de go), mais aussi de la très grande profondeur de son arbre de recherche. Ainsi, certains niveaux nécessitent plusieurs milliers de déplacements et plus de 1 000 « poussées ». Les joueurs humains expérimentés se basent principalement sur des méthodes heuristiques. Ils sont généralement capables d'éliminer rapidement les tactiques de jeu inutiles ou redondantes, et ils identifient les dispositions du jeu et les sous-buts, ce qui leur permet d'élaguer sensiblement l'étendue des recherches.
  
  Les problèmes de Sokoban peuvent être résolus automatiquement à l'aide d'un algorithme de recherche à agent unique, tel que IDA*, amélioré par plusieurs techniques qui font appel à des connaissances spécifiques de ce domaine. C'est la méthode utilisée par Rolling Stone, un solveur développé par le groupe GAMES de l'Université d'Alberta, au Canada. Cependant, certains niveaux parmi les plus complexes semblent toujours hors de portée des meilleurs solveurs automatiques.
  
  