Geração processual mundial orientada para os recursos de jogabilidade


36

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.


Sua abordagem parece estranha. Não vejo por que cidades e centros populacionais viriam primeiro ... mesmo assim, você não poderia colocar algumas cidades e atribuir a esses pontos parâmetros favoráveis, ainda que aleatórios, e trabalhar a partir daí?
The Duck comunista

1
Acho que você está no caminho certo com o design cultural primeiro, o terreno (e o clima) depois. No mundo real, sociedades, culturas e redes e estruturas econômicas não surgem em qualquer lugar. Em vez disso, eles surgem (ou deixam de surgir) com base no terreno. Alguns terrenos não são propícios ao surgimento de uma sociedade, e outros são. As grandes cidades não surgem no meio do deserto ou da tundra congelada porque: a) quase não há comida ou água; eb) é difícil trazer mercadorias para a cidade.
Tim Holt

2
Entendo o seu ângulo, @Tim Holt. Na minha opinião, a regra do legal e a regra do divertimento sempre superam a plausibilidade ao projetar um cenário de jogo. Uma cidade que forma uma ponte sobre a cratera de um vulcão ativo pode não ser plausível, mas é legal. Além disso, quando os jogadores precisam de cidades distribuídas uniformemente pelo mundo do jogo para fins de jogo, você precisa entregá-las, mesmo quando suas localizações geográficas não façam sentido.
Philipp

Respostas:


12

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/


2
Trabalho adorável, mas a distribuição ainda aleatório da paisagem apresenta elementos em primeiro lugar, a civilização / jogabilidade segunda
Richard Fabian

Não é completamente aleatório, mas eu concordo, não há elementos de civilização. Eu acho que a técnica pode ser adaptada a muitos elementos de jogabilidade diferentes, mas os da demo eram para um jogo multiplayer (~ 80 jogadores por mapa): (a) ilha cercada por água, para que as pessoas não chegassem a uma borda ( b) áreas fáceis na praia com jogadores espalhados, (c) áreas duras nas montanhas com jogadores concentrados, (d) estradas o levam a outras áreas da mesma dificuldade, (e) rios levam você a áreas de maior dificuldade. Os jogadores começavam sozinhos nas praias e se agrupavam enquanto iam em direção ao centro.
Amitp

1
O principal que eu estava tentando explorar foi começar primeiro com as restrições de jogabilidade e depois construir um mapa que preenchesse os detalhes, em vez de começar com os geradores aleatórios ou "realísticos" de terreno habituais e tentar encaixar os elementos de jogabilidade no topo . Eu acho que funcionou bem para esse estilo de jogo, mas eu não tentei para outros estilos de jogos.
Amitp

4

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)


2

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.


2

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.


Suponho que você quis dizer que as estradas existentes cortariam a geração do terreno, levando ao que poderia parecer um homem feito de vales. Isso é interessante, onde você já viu um gerador de terrenos tomar a paisagem e julgar difícil demais dirigir, mas barato o suficiente para atravessar? Ele não responde à minha pergunta, mas adiciona à lista de coisas que um gerador deve considerar, por exemplo, o caso oposto (onde uma estrada está acima do solo) exigiria uma ponte ou viaduto, não algo normalmente visto em PCGs.
Richard Fabian

Eu estava pensando sobre como isso é feito na vida real:
Exilyth 01/08/11

1
Montanhas se formam, corroem-se. Plantas e árvores crescem na terra. Milhões de anos depois, os primeiros nômades aparecem, vagam, talvez se acalmem. Eles começam a afetar a terra ao seu redor, por exemplo, poços de pedra ou madeira. Mais tarde, eles encontrarão outras cidades, começarão a negociar com elas e, portanto, precisarão de estradas. Geralmente é mais fácil seguir o terreno do que mudá-lo, para que eles adaptem suas estradas à paisagem (exceto um pouco de suavização / achatamento). Como você pode ver, estou analisando o problema mais de uma perspectiva de construção do mundo.
Exilyth 01/08/19

2

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.)


1
Isso soa como um trabalho feito com geradores de enredo procedimentais, ele realmente gerou os detalhes do mundo para corresponder ao enredo exigido dessas missões, ou fez as missões de como era o mundo, ou teve sorte de as missões serem difíceis ou fácil com base no que você gerou?
Richard Fabian

1

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.


1

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.


1

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.


0

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í

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.