Estou fazendo um jogo parecido com o Sokoban, ou seja, há uma grade com algumas caixas que você pode empurrar e você precisa colocar as caixas nas cruzes para ganhar o nível (embora eu vá adicionar alguns elementos extras). Existe algum algoritmo geral ou material de leitura que eu possa ver como eu poderia gerar níveis interessantes (como não são fáceis de resolver) para esse estilo de jogo? Estou ciente de que existem geradores de nível aleatório para o Sokoban, mas estou tendo problemas para encontrar as descrições dos algoritmos.
Estou interessado em fazer um jogo em que a máquina possa gerar muitos níveis para mim, classificados por dificuldade. Estou disposto a restringir as regras do jogo para facilitar a geração de níveis (por exemplo, provavelmente limitarei o tamanho da grade para cerca de 7x7). Eu suspeito que existem algumas maneiras gerais de gerar níveis aqui, como eu já vi, por exemplo, jogos do tipo Engarrafamento (onde você precisa mover blocos ao redor do bloco) com milhares de níveis, onde cada um tem uma solução única.
Uma idéia que tive foi gerar um mapa aleatório em seu estado final (ou seja, onde todos os caixotes estão no topo de suas cruzes) e, em seguida, o computador puxaria (em vez de empurrar) esses caixotes para criar um nível. A boa propriedade aqui é que sabemos que o nível é solucionável. No entanto, eu precisaria de algumas heurísticas para garantir que o nível fosse interessante.
Respostas:
Veja o artigo: Criação automática de problemas de Sokoban
Do resumo:
fonte
Para quebra-cabeças solucionáveis, geralmente é fácil jogar o jogo ao contrário, começando de um estado resolvido e fazendo movimentos não planejados, planejados ou aleatórios (ou em um editor).
Sokoban se encaixa muito bem nessa abordagem e será muito mais fácil de implementar do que uma estratégia de exclusão e solução.
fonte