Como posso criar um "mundo" aleatório em um mecanismo de bloco?

22

Estou projetando um jogo que está trabalhando em um mecanismo de blocos clássico, mas cujo mundo é gerado aleatoriamente. Existem jogos ou algoritmos existentes que fazem isso? Os algoritmos de geração de procedimentos que eu encontrei nunca usam um sistema de blocos ... Qual seria a melhor maneira de gerar um "mundo" inteiro usando um sistema de blocos? Não estou falando de labirintos de blocos, mas de um "mapa do mundo" geral, graças

lezebulon
fonte
5
Isso já foi solicitado muitas vezes, tente pesquisar aqui: geração aleatória do mundo Editar: Aqui está um para um mecanismo de blocos.
Richard Marskell - Drackir 19/10/11
2
-1: esta pergunta não pode ser respondida em sua forma atual. É muito vago, apenas afirmando que é um "mapa do mundo" feito de azulejos. OK, que tipo de ladrilhos? O que essas peças fazem em termos de jogabilidade? Pode ser qualquer coisa, desde Final Fantasy até Civilization, e a "melhor maneira" de gerar terreno para esses dois jogos é completamente diferente . Não há como fornecer uma resposta que proporcione uma boa jogabilidade sem saber nada sobre como você planeja usá-la. Antes de poder falar sobre a geração procedural de qualquer coisa, você deve poder fazer manualmente uma boa versão dela.
Nicol Bolas

Respostas:

34

Sua pergunta leva você ao campo da geração de conteúdo processual.

Geração mundial baseada em blocos, derivada de métodos contínuos / analógicos

Por contínuo, quero dizer algo que não é lado a lado, algo que é analógico, um exemplo sendo um mapa vetorizado. Você pode usar qualquer técnica contínua para geração e depois quantificá-la. Por exemplo, gere uma imagem de ruído Perlin de alta resolução, reduza a resolução para ajustar o tamanho do seu mapa de mosaico e experimente os pixels para fornecer um mapa de altura. (Os mapas de altura podem ser um excelente ponto de partida para o seu mundo.) Isso porque você mencionou ter visto fontes que não mostravam o que fazer em relação a como aplicá-lo a blocos.

Geração mundial baseada em blocos usando uma abordagem de escultura "piscada"

Com uma abordagem baseada em bloco (célula), você pode fazer uma espécie de geração cega em que gera o mundo pouco a pouco, sem olhar além do que, por exemplo. os azulejos diretamente vizinhos, mas isso tende a parecer com o trabalho de um inseto. Isso é típico da CA (autômato celular) e exibe uma inteligência de escala pouco maior.

Geração de mundo baseada em blocos usando uma visão mais ampla do mundo, de cima para baixo

Isso requer uma abordagem mais inteligente para a construção do mundo lado a lado, pois ele primeiro será construído região a região. Desta forma, você obtém controle sobre, por exemplo. diferentes biomas, regiões políticas, etc., como Tarn Adams fez em Dwarf Fortress. Claro que isso exige que você pense um pouco sobre como gostaria de dividir seu mundo. Existem muitas maneiras de você fazer sua própria pesquisa.


A geração de conteúdo processual é um tópico bastante amplo, portanto você precisará ler bastante antes de ter uma idéia sólida do que realmente deseja e como proceder - o diabo está sempre nos detalhes . Por esse motivo, algumas boas fontes para isso são a lista de discussão rec.games.roguelike.development (uma tonelada de informações sobre mundos procedimentais baseados em blocos ), as páginas de programação de jogos do AmitP (consulte "Outros tópicos") e, por último, mas não menos importante, o Wiki de geração de conteúdo processual .

Engenheiro
fonte
Nenhum desses métodos leva em consideração o objetivo da jogabilidade do mapa. Qualquer um desses métodos pode gerar terríveis mapas de jogo. Claro, o OP não disse o que um bom mapa seria parecido, então ...
Nicol Bolas
6
@NicolBolas Exatamente. O OP precisa de algo para continuar. Não preciso escrever um ensaio completo para todas as respostas (embora as evidências mostrem que eu faço isso com bastante frequência).
Engenheiro de
Concordado, "jogável" é uma heurística melhor para OP. "Reproduzível" é uma camada acima da geração real de um "mundo aleatório" e não é exigido pela pergunta original.
Patrick Hughes
6

A geração processual é um tópico imenso. Quão profundo você está disposto a ir?

As respostas de Nick Wiggill são excelentes. Eu acrescentaria isso sugerindo que você analise alguns métodos matemáticos de criação de terrenos aleatórios coerentes.

O ruído Perlin oferece uma ótima maneira de criar aleatoriedade suavizada e funciona muito bem para todos os tipos de terreno. Simular a erosão pode dar uma impressão realista da altura (embora você não precise disso, pois está fazendo um jogo baseado em blocos)

Muitas das técnicas discutidas em artigos como este de Oddlabs , criadores do Tribal Trouble, funcionam bem em 2D e em baixa resolução também. Se você se sentir mais confortável com esse tipo de abordagem, vale a pena aprender essas técnicas.

Centigonal
fonte