Gerador de Cavernas Aleatórias

Recentemente estive a ler uns artigos relacionados com a geração procedimental de níveis para videojogos, isto é, geração aleatória e única de níveis.

Como tinha em mente uma ideia relacionada a um personagem perdido numa caverna, pensei em experimentar brincar nessa área.

Encontrei um artigo que apresenta um algoritmo simples para a geração de cavernas, Cellular Automata. A página também refere algumas optimizações que “amaciam” o resultado final.

O artigo tem código para que possamos estudar o algoritmo em detalhe, mas como estava a pensar aplicar essa ideia num jogo meu decidi tentar criar o meu próprio código.  :3

cellautomata.zip – contem o algoritmo em c/c++ e uma aplicação de teste para Windows.

Nota: O algoritmo não fecha os cantos da caverna, mas sim coloca-os em conformismo com o canto oposto… O objectivo é ser possível pegar na matriz da caverna gerada e repetir diversas vezes, criando um mosaico infinito. Fiz isso assim porque planeio que o mapa possa ser infinito no meu jogo.