Recentemente, fiquei fascinado pelas coisas que podem ser feitas com terrenos processuais e comecei a experimentar um pouco a construção do mundo. Eu gostaria de poder fazer dos mundos algo como a Fortaleza dos Anões, com biomas criados a partir da junção de vários mapas.
Então, o primeiro passo foi feito. Usando o algoritmo de diamante quadrado, criei alguns hieghtmaps agradáveis. O próximo passo é adicionar algumas características da água e gerá-las de maneira realista com a chuva. Eu li sobre algumas abordagens diferentes, como começar nos pontos altos do mapa e "descer" para o ponto vizinho mais baixo, acumulando / desgastando enquanto desce até o nível do mar.
Existem algoritmos documentados com isso ou eles estão mais fora do manguito?
Adoraria qualquer conselho / pensamentos.
Respostas:
Amit Patel, um usuário deste site, criou um recurso maravilhoso de informações sobre a geração aleatória do mundo que certamente será útil para você.
Além disso, existem algumas ótimas perguntas / respostas sobre geração de procedimentos neste site.
Geração de estradas / rios no mapa de grade 2D
Geração processual mundial orientada para os recursos de jogabilidade
Como posso gerar lagos e rios aleatórios no meu jogo?
Geração aleatória de mapas
fonte
Quando experimentei esse tipo de coisa (final dos anos 90), li alguns papéis e livros para aprender sobre o fluxo de água, mas não mantinha um registro de quais deles eu olhava. Acabei fazendo minhas próprias coisas porque queria lidar com a erosão. Eu queria que os rios produzissem desfiladeiros e várzeas. Eu queria que os reservatórios da barragem se enchessem de sedimentos. Eu queria que os rios produzissem efeitos como os meandros e os lagos de oxbow. Eu queria canais para irrigação e desvio de água. Eu queria inundações para danificar fazendas e casas nas planícies de inundação.
Eu guardei algumas anotações (links) na seção Geografia desta página . Há um artigo de Jos Stam que é uma leitura obrigatória. Infelizmente, nunca organizei as anotações. Infelizmente também, o jogo era para o OS / 2, então não posso fornecer facilmente um executável executável para você brincar. E também, infelizmente, meu código é terrível, mas se você quiser dar uma olhada, consulte water.cpp no código-fonte (zip).
Coisas que eu brincava na minha simulação (nem todas realistas):
No geral, minha experiência foi de que tudo isso foi muito divertido de se jogar, mas foram necessárias muitas heurísticas e ajustes para fazê-lo funcionar. Eu nunca cheguei a um ponto em que eu poderia dizer que a criação de rios parecia natural e inevitável sem ajustes. Foi tão divertido (tanto como programador quanto como jogador) que passei anos nele e nunca terminei o resto do jogo. :)
fonte
A maioria das implementações que vi foram combinando um "mapa do rio" (usando uma banda estreita do ruído Perlin ou alguma abordagem semelhante) ou o método "gota de chuva" que você mencionou.
Aqui estão alguns pontos de partida:
fonte