Quais são alguns bons recursos relacionados à geração de conteúdo procedural no contexto da geração de masmorras?
O artigo mais próximo que pude encontrar foi o algoritmo para gerar um labirinto 2D , o que não é exatamente o que estou procurando. Recursos, como salas e corredores conectados, são ideais.
Obrigado!
procedural-generation
Gabriel Isenberg
fonte
fonte
Respostas:
Isso já foi mais ou menos respondido antes. Seu primeiro ponto de parada deve ser http://pcg.wikidot.com/
Desde que fui acusado de não ser uma resposta útil (sério? Alguém pede um recurso e eu coloco um link em um wiki que trata do assunto? ), esta página no wiki trata especificamente de geradores de Dungeon e links para vários artigos sobre o assunto.
http://pcg.wikidot.com/pcg-algorithm:dungeon-generation
Eu ainda recomendaria navegar em todo o wiki, pois a geração de conteúdo procedural é apenas uma abordagem muito criativa e todas e quaisquer idéias são válidas. É um desafio de pensamento lateral - e divertido nisso.
fonte
Consegui obter níveis razoavelmente bonitos usando o seguinte algoritmo, com base em uma grade quadrada:
Primeiro, crie um conjunto de salas. Parâmetros aleatórios definirão o tamanho das salas e seus números. Um algoritmo adaptável pode até definir algumas zonas feitas de grandes corredores e outras de salas muito pequenas.
Então, você precisa garantir que todas as salas estejam conectadas umas às outras. Para isso, execute um pathfinder para cavar corredores (digamos, A *) entre cada par de salas, atribuindo um peso escolhido aleatoriamente aos espaços existentes (salas ou outros corredores) em comparação com o espaço ainda não esculpido (nas paredes). Se a diferença de peso for pequena, cavar novos corredores será razoavelmente barato, e o algoritmo criará muitos corredores entre as salas, com muitas possibilidades de ir de um lugar para outro. Se a diferença de peso for alta, o algoritmo preferirá passar por salas e corredores existentes, tornando os caminhos mais tortuosos e com menos opções para chegar a um determinado destino.
Isso permite que você, a partir de um pequeno número de parâmetros, crie níveis de aparência muito diferentes, de salas esparsas e enormes com pequenos corredores que os ligam a um labirinto de câmaras estreitamente interconectadas.
Aqui está um exemplo de um nível gerado.
Com base nesse algoritmo, você pode adicionar decoração de parede que depende da zona, diminuir ou aumentar os corredores, criar salas especiais e assim por diante.
fonte
Se você gosta de ler código e pode analisar C #, posso sugerir o gerador de masmorras que meu amaranto semelhante ao roguelike usa? Está aqui . Ele lida com salas conectadas, recursos extensíveis e outras coisas interessantes.
Se você puxa e constrói o projeto inteiro, há uma ferramenta independente que irá gerar e desenhar as masmorras para que você possa ajustá-las e ver como funciona.
fonte
Todas essas são ótimas idéias. Tomei um pouco de RogueBasin e pcg.wikidot.com, e ter escrito minha própria implementação em C #.
Eu realmente gostei da aparência 'natural' de níveis semelhantes a cavernas que podem ser gerados usando o método de autômatos celulares. Para entender o que quero dizer com método de autômatos celulares, imagine o Jogo da Vida de Conway. Meu código usa o que é chamado de método 4-5, o que significa que um bloco se tornará uma parede se for uma parede e 4 ou mais de seus nove vizinhos forem paredes, ou se não for uma parede e 5 ou mais vizinhos forem paredes. Começo preenchendo o mapa aleatoriamente com paredes ou espaço, depois visito cada posição x / y de forma iterativa e aplico a regra 4-5. Para ajudar a aliviar o problema de formar cavernas isoladas, depois de preencher o mapa aleatoriamente, coloco uma linha horizontal no mapa, definindo cada bloco para um espaço em vez de uma parede, antes de aplicar a regra 4-5 para cada bloco.
Você pode visualizar o código da minha classe de manipulador de mapas e quaisquer melhorias que eu fizer aqui
ou uma versão arquivada aqui .
fonte
Eu acho que o lugar mais direto para descobrir isso é realmente olhar para o código fonte. Dois grandes players no campo, Angband e Nethack, são ambos de código aberto.
fonte