Autômatos Celulares

Descrição
Autômatos Celulares são uma implementação de agentes baseado em um grid, representando um conjunto de células. O estado de cada célula varia conforme o tempo, conforme seu estado anterior e o estado anterior das células ao seu redor.

Esse é um modelo discreto, introduzido por von Neumann e Ulam como modelos para estudar processos de crescimento e auto-reprodução.

Exemplo e implementação
Nesse exemplo, implementamos um sistema de geração procedural de cavernas para jogos. Ao início da execução, um grid é gerado com elementos aleatórios, de valor 0 (Caminho) ou 1 (Parede). A cada iteração de suavização, executada através do algoritmo de automato celular, o grid se atualiza, até tomar um formado semelhante à uma caverna.

A regra básica de iteração é simples: cada célula se pergunta se existem mais de 4 paredes ao redor de si. Caso a resposta seja sim, a célula se torna uma parede. Caso a resposta seja não, a célula se torna um caminho. Essa regra promove o agrupamento de paredes, mantendo o quesito de aleatoriedade.

É possível gerar diferentes tipos de estruturas, basta mudar essa regra de iteração das células.

Seguem as classes implementadas:

MapGenerator.cs

Referências
Procedural Cave Generation por Sebastian Lague