Em grandes jogos de paisagem processual, a terra parece monótona, mas provavelmente porque o mundo real é muito monótono, com apenas lugares limitados onde o cenário é dramático ou tático.
Observando a geração mundial desse ponto de vista, um gerador de paisagem para um jogo (ou seja, não por uma questão de cenário, mas por uma questão de jogabilidade) precisa não seguir as regras do paisagismo, mas algumas regras casadas com o expectativas do jogador. Por exemplo, poderia haver um gerador de ponto de estrangulamento / rota que cria desfiladeiros, rios e montanhas entre cidades, em vez da maneira natural como as cidades surgem, espalhadas pela terra com base em recursos ou condições gerados pelas montanhas e padrões de chuva.
Existe algum trabalho existente sendo feito assim? Comece com cidades ou centros populacionais e depois adicione o terreno depois?
A razão pela qual estou perguntando é que eu já havia pensado em pegar mapas existentes de ficção de fantasia (minha e de outras pessoas), colocando as informações no sistema como ponto de base e, em seguida, gerando um bom mundo para usá-lo. Isso parece coberto pela tecnologia existente, ou seja, onde o projetista coloca todas as informações necessárias, como populações da cidade, recursos, biomas, redes de estradas e rios, permitindo que o PCG preencha as lacunas.
Mas agora estou pensando se é possível que um gerador de conteúdo gere também o design geral. Gere as cidades e os centros populacionais, equilibrando-os para que haja uma necessidade aparente natural de comércio, gere posições e conectividade; em seguida, a partir do tipo de cidade, produza a lista de recursos necessários que devem estar próximos e, somente então, talvez algumas regras sobre como tornar a jornada entre cidades crível e interessante, geram o conteúdo final, incluindo as estradas, os pontos de estrangulamento, as pontes e os túneis, as balsas e o terreno, incluindo os biomas e a costa necessários.
Se isso já foi feito antes, eu gostaria de saber e gostaria de saber o que deu errado e o que deu certo.
fonte
Respostas:
Aqui está um ótimo exemplo de geração processual de terrenos, usando parâmetros como umidade, altura, etc ... http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/
fonte
Acredito que tenho olhado para essa pergunta nos últimos três dias, enquanto me perguntava como a geração procedural de mundos ou mesmo galáxias pode, ao mesmo tempo, ser determinística (como sempre gerar o mesmo conteúdo da mesma semente ), parecem naturais e ainda possuem recursos exclusivos, interessantes, incomuns ou mesmo bonitos em sua paisagem.
Eu continuo voltando à mesma resposta genérica de que isso depende muito do gênero do jogo e de sua própria história consistente interna na história. Por exemplo, gênero pós-apocalíptico, por que alguém construiria uma metrópole com paredes maciças no meio de um terreno baldio e faria com que todos dentro dele vivessem miseravelmente? Por que colonizar esses planetas? Em alta fantasia, por que fazer uma cidade no topo de uma ilha flutuante? Por que os anões fazem cidades dentro das montanhas? E seu inimigo maligno genérico vem de terras ardentes com vulcões ativos? Regra de legal?
Então, tudo volta à sua própria resposta, onde você insere informações no PCG e preenche a lacuna, e também à outra resposta sobre a geração de mundos que correspondem às linhas da trama e à história geral.
Então o enredo gera elementos de jogabilidade que geram uma paisagem adequada.
Dito isso, pergunto-me se uma história que gera uma árvore de tramas consistentes gerará o design geral da jogabilidade que você está procurando.
(PS: Esses mesmos três dias de pensamento também me levaram a encontrar outra resposta para um problema que pode surgir: deve haver uma ferramenta de teste automatizada para verificar se o design do jogo gerado é bom; por exemplo, você deve ter um exército medieval com dificuldades. hora de derrotar uma fortaleza gerada)
fonte
Apenas um artigo que lida com questões semelhantes que eu pude achar fora de mão é o " Um Algoritmo para Deformação Automatizada do Terreno Fractal de Stachniak e Stuerzlinger ". Ele pressupõe que você crie o terreno primeiro e o deforme (ou seja, deixe o algoritmo escolher os parâmetros para deformar automaticamente) para ajustar suas restrições posteriormente, para que não responda diretamente à pergunta. Ainda assim, os métodos apresentados podem ser úteis para outras pessoas com problemas semelhantes.
fonte
Tal algoritmo não geraria automaticamente mais terrenos 'táticos' quando estradas são geradas entre cidades?
Supondo que as estradas possam ter apenas uma certa alteração de elevação por distância, a altura do terreno seria adaptada à altura da estrada, o que levaria à geração de pontos de estrangulamento sempre que uma estrada passar por uma colina / ravina / qualquer outra coisa. Obviamente, a quantidade de mudanças na altura do terreno também precisaria ser limitada, ou você teria estradas correndo diretamente pelos picos mais altos.
fonte
Quando eu estava no Cryptic Studios, estávamos trabalhando em algo assim para a geração de missões / missões. Os projetistas especificaram os objetivos da missão de maneira um tanto abstrata e os definiu com alguma aleatoriedade na "ordem de viagem dos jogadores" e abriu caminhos entre eles.
Uma versão inicial fornecida com o Star Trek Online como Missões Genesis (arquivo) . Na época, estávamos muito empolgados com isso, mas não tenho idéia de quanto continuou depois que saí, ou se está disponível nas ferramentas Foundry do usuário final. (Qual era o objetivo final.)
fonte
Uma abordagem típica para a geração processual de terrenos é desenhar recursos específicos manualmente e usar o gerador para preencher o restante. VTerrain é obrigado a ter algo interessante sobre este tópico.
fonte
O Lighthouse 3D tem uma boa pesquisa de alguns algoritmos simples para geração de terrenos. Se você está começando com um mapa que contém cidades ou outras áreas interessantes, você pode usar algumas dessas técnicas para gerar o terreno que desejar. Por exemplo, o uso inteligente do algoritmo de falha pode ser usado para criar falésias ou vales em sua cidade que funcionariam como pontos de estrangulamento. Além disso, o uso do algoritmo de círculo seria uma ótima maneira de gerar terrian para a colocação da torre. Estes são apenas alguns exemplos, mas o uso desses algoritmos simples seria uma maneira bastante fácil de gerar terrenos interessantes em suas cidades.
fonte
Talvez eu seja simplista demais, mas por que ignorar o fato de que as cidades são construídas em terrenos vantajosos ou, nesse caso, qualquer tamanho de uma área civilizada por qualquer motivo? Talvez o terreno ofereça uma vantagem tática para uma parcela militar ou talvez exista uma serraria no cruzamento de uma grande floresta e um rio que tem uma vila maior a jusante. Até os lugares "sagrados" são baseados no terreno, mesmo que pelo simples fato de que determinada parte da terra tenha sido considerada santa em algum momento etc. Não importa quais sejam as consequências, o local de descanso final da esmagadora maioria da civilização existe em um local físico por razões muito baseadas no terreno. Mesmo no caso de uma cidade surgir simplesmente porque há comércio suficiente entre duas cidades maiores para justificar um intermediário, se você preferir, a localização da cidade seria escolhida com base no caminho de menor resistência. Seria colocado em algum lugar que oferecesse boas terras agrícolas planas para o suprimento local de alimentos, juntamente com terras que se prestam bem à construção de estradas. Tenho certeza que você pensou sobre isso ...
Então, se você vai construir as cidades primeiro, claro, por que não? Por que não construir a cidade, vila, assentamento ou o que quer que seja, juntamente com um pedaço decente do terreno circundante, construído à mão, que suporta esse tipo de estabelecimento?
Tome biomas processuais como um exemplo. Eles geralmente são aplicados a mapas pseudo-aleatórios de temperatura, umidade e altura. Se você já projetou a cidade (ou a serraria, etc.), provavelmente terá um conceito firme de como a terra precisa ser, que, se não estou entendendo mal, é exatamente o seu ponto. Pegue um edifício de fantasia como Orthanc, repleto de plantas e terrenos circundantes, que você replicou obedientemente. Bem, sabemos que, dependendo da linha do tempo, Orthanc estava cercado por uma enorme floresta povoada de Ents (criaturas de árvores) etc. Se você está tentando replicar isso, aplicar um terreno aleatório não faz sentido para mim. Dito isto, depois de criar esse cenário para a própria torre e a floresta circundante, o que há entre Orthanc e qual é a sua próxima cidade?
A abordagem simples pode ser escrever sua geração processual de terrenos, colocar sua configuração dentro de um sistema de terrenos gerado aleatoriamente e ler suas alturas em torno de seu cenário fixo e viola.
Penso, no entanto, que você seria melhor com uma combinação de cenário, terreno e bioma definido e certificando-se de que Orthanc seja colocado dentro de um bioma de floresta grande gerado processualmente. Dependendo de como codificá-lo, você pode definir bioma mínimo / máximo, terreno, umidade etc. para cada configuração pré-definida, prédio ou cidade que você esculpiu. Isso seria uma tarefa pequena em um mundo 3d fotorrealista de pleno direito? Obviamente não.
Penso que, se tentasse, pesquisaria primeiro os algoritmos procedimentais da costa. Adotando a abordagem de que quase todas as civilizações ao longo da história seguiram qualquer litoral, seja oceano, mar ou grande lago. É o caminho de menor resistência ao crescimento, já que provavelmente há pesca abundante, árvores próximas para madeira e, certamente, viagens mais rápidas, mesmo com embarcações rudimentares (pelo menos de mão única).
Eu acho que você teria que construir completamente para trás. Pense, pontos pseudo-aleatórios em um mapa representando pontos da civilização, possivelmente com um algoritmo de ruído que determina as populações dessas civilizações antes que qualquer outra coisa seja determinada. OK, então um ponto chega a uma população de 1.000, outros 2.000.000 (ou qualquer outra proporção, dependendo da população mundial, é claro). Por quê? Por que esse número de populações está lá? Uma população de mil habitantes pode ser a pequena comunidade de serrarias. Talvez seja uma comunidade de mineração, se estiver no lado norte do mapa, caso você esteja criando um mundo esférico 3D. Aqui fica um pouco confuso, porque eu não sei se você está indo infinitamente em todas as direções, tornando o NESW inútil na determinação de biomas ou se você quer uma "Terra" muito real
No entanto, se você derrubar suas civilizações, com base em populações de ruído pseudo-aleatórias, acho que podemos assumir com segurança algumas regras (mas talvez não absolutas) como ... Quanto maior a civilização, provavelmente, maior número de recursos úteis em mão e o terreno para apoiá-los. Minerais preciosos, madeiras, etc. ad nauseam devem estar presentes ou deve haver um grande sistema comercial para apoiar uma empresa tão vasta. Com base nisso, você pode começar a gerar rodovias de cidade em cidade e estradas para os assentamentos periféricos, como uma operação de mineração profunda, etc. Escolha pontos da civilização que formulariam boas costas e derrubariam completamente os pontos da população do mapa, onde você precisa preencher seu oceanos (ou talvez você tenha Atlantis em seu mundo, ou exercícios de petróleo offshore).
O preenchimento do terreno no meio depende novamente da abordagem do bioma. Se você tem um infinito em todas as direções, em seguida, coloque o Orthanc onde quer que seja adequado para a população, force-o a um bioma florestal e construa-o para fora até chegar a meio caminho do seu próximo destino predefinido em que seu algoritmo está executando a mesma geração processual por aí. Lerp / Misture os dois terrenos enquanto se encontram e sim, isso é uma simplificação excessiva óbvia.
Sem um conhecimento real do que você está realmente tentando realizar mecanicamente, só posso descartar idéias e possivelmente más. Eu acho que sua abordagem tem mérito, mesmo que seja completamente fantástica na realidade, porque você está mirando o que é sempre o fator mais importante em qualquer jogo: o jogador está se divertindo? Ou estou criando um mundo aleatório que não é chato e, portanto, não divertido?
O que também seria interessante, e isso poderia fazer parte da geração de civilizações em qualquer jogo, primeiro ou não no terreno, é o que acontece se você derrubar 2 grandes cidades próximas uma da outra? O que isso significa? Eles estão em guerra? São operações comerciais maciças entre duas nações florescentes? Que tipo de inimigos se escondem na floresta daquele serrador?
Eu acho que uma coisa é certa se você está tentando construir terrenos com base em "cidades" e esse é o terreno seria diretamente afetado pela população dessa cidade, tanto na paisagem quanto nos recursos naturais (e talvez até na beleza).
Não tenho certeza se realmente respondi alguma coisa ou se isso foi apropriado, mas é um conceito muito interessante e eu adoraria ouvir onde você se dirige a ele.
fonte
Eu geraria os recursos de jogabilidade simultaneamente como parte do mesmo processo. Existem várias maneiras de construir terrenos com base em regras. Esta conversa do YouTube com os desenvolvedores do Path to Exile é um bom exemplo: https://www.youtube.com/watch?v=GcM9Ynfzll0 . Além disso, para uma abordagem menos pré-criada, isso parece interessante: https://www.youtube.com/watch?v=RAtdFKiqs34 . Você pode usar o ruído perlin para gerar alturas para cada vértice voronoi e partir daí
fonte