Em este post RPG.SE uma página há muito perdida com vários geradores on-line é mencionado.
Estou particularmente curioso sobre a maneira como as cidades foram geradas. Veja esta imagem, por exemplo:
Embora muitas coisas pudessem ser melhoradas em termos de gráficos, foi muito bom, considerando as ferramentas disponíveis na época (meados dos anos 90):
- O layout da estrada parece bastante orgânico (mesmo considerando todas as estradas serem colocadas de maneira ortogonal).
- Nem todas as estradas estão necessariamente conectadas, mas parece certo .
- Os edifícios são colocados em locais confiáveis .
- Até as árvores parecem colocadas em pontos lógicos .
Eu acho que seria divertido tentar e tentar sozinho. Especialmente porque minhas tentativas anteriores foram muito "em blocos":
Você notará que estou descrevendo muitas das qualidades com adjetivos não muito mensuráveis ( parece , sensações , credíveis etc.), por isso estou tendo dificuldade em traduzi-las para instruções e, finalmente, para um algoritmo.
Existem algoritmos testados e comprovados para a geração de cidades?
Entendo que isso parece muito amplo, considere o seguinte: se eu pedisse um algoritmo para gerar mapas de massas continentais, obteria referências a Perlin e outros algoritmos de ruído imediatamente; seguido de perto por Voronoi.
Eu já vi perguntas como essa, mas elas parecem ter uma idéia mais concreta em mente (ou seja: casas 2x2, número fixo de casas, restrições de posicionamento de canais e estradas).
O que eu gostaria de ter é algo menos restrito. Exceto, talvez, o layout da grade, que deve ser muito mais fácil para uma primeira tentativa do que, digamos, o sistema L.
fonte
Respostas:
Introversão Software fez um gerador cidade realmente impressionante para sua
canceladoprojeto indefinidamente suspenso Subversion :O algoritmo foi projetado para gerar metrópoles grandes e modernas. Mas as mesmas técnicas podem ser usadas para gerar mais assentamentos rurais.
É um algoritmo de cima para baixo que gera primeiro os contornos brutos e depois gera mais e mais detalhes para se encaixar neles (para a abordagem de baixo para cima da geração de procedimentos, verifique a resposta por uliwitness). Aqui está um vídeo que visualiza o algoritmo em andamento .
O algoritmo parece funcionar da seguinte maneira (ligeiramente simplificado):
Com relação à localização das árvores: Minha primeira abordagem seria integrar as do algoritmo de geração de edifícios. Um edifício não precisa preencher seu lote completamente. Você pode preencher o espaço livre com objetos decorativos apropriados.
O problema com a abordagem de cima para baixo é que, embora possa gerar uma cidade plausível, ela pode não gerar uma cidade plausível com tudo o que você deseja . Digamos que toda cidade do seu jogo precise de uma loja de armas, uma loja de armaduras, uma loja de poções e uma pousada. O algoritmo acima escolhe edifícios com base nos requisitos do lote, então você pode acabar com 12 oficinas de blindagem, mas não uma única pousada. Eu abordaria esse problema na fase de geração de edifícios. Antes de começar a gerar edifícios aleatoriamente, consulte sua lista de edifícios obrigatórios e selecione o lote mais apropriado para cada um deles. Em seguida, preencha os lotes restantes com edifícios aleatórios.
Estou ansioso para explorar as cidades geradas processualmente em seu jogo.
fonte
Obtenha restrições da vida real
Muitas vezes, a resposta sobre como encontrar o algoritmo certo começa com a observação de como essas coisas acontecem na vida real. Você já olhou para isso? De cabeça para baixo, posso pensar no seguinte:
Aplique-os à sua topografia
Depois de ter essas restrições, você pode tentar criar um algoritmo em torno dela. Por exemplo, gere sua topografia e distribua os recursos necessários ao redor do mapa (talvez esteja de olho em colocar pequenos depósitos dos recursos mais importantes na área inicial, depois depósitos maiores, mais afastados e afastados um do outro). É aqui que as necessidades e mecânicas do seu jogo entram em jogo, é claro, mas você provavelmente também adicionará um elemento aleatório.
Em seguida, construa empresas (e seus edifícios residenciais) perto dos recursos que as utilizam. Por exemplo, uma pedreira ao lado de uma grande montanha. Em seguida, adicione a infraestrutura necessária por eles. Por exemplo, um posto comercial com correios e tabernas, onde eles podem fazer negócios e vender seus produtos, uma ferraria para fornecer ferramentas etc.
Para decidir o que vai aonde, divida o mapa em blocos onde você calcula um número para cada bloco, quão desejável é para uma determinada finalidade, usando uma função de ponderação. Coloque os edifícios nos ladrilhos mais desejáveis para esse tipo de edifício. Adicione regras como "um posto comercial pode lidar com 50 empresas ou 100 residências", o que aumenta a probabilidade de adicionar outro posto comercial se uma cidade atingir um determinado tamanho.
Depois de ter isso, você deve obter alguns mapas decentes. Se você notar que todos os mapas terminam em formas não naturais, adicione penalidades às suas funções de ponderação para essas formas, como "se minha rua acabar bem ao lado de outra rua, -100 desejabilidade" ou "se minha rua se cruzar, -100 desejabilidade "etc. Você sempre pode adicionar um elemento aleatório para permitir uma sensação mais peculiar ou adicionar outras mecânicas como" se um cruzamento tiver mais de N edifícios conectados às suas estradas, transformá-lo em uma rotatória ".
Você pode até usar essas restrições para dar a diferentes mapas uma sensação diferente, como fazer com que um determinado país tenha mais montanhas em sua topografia ou uma certa cultura construa mais estradas sinuosas e outra prefira estradas retas etc. Tudo apenas modificando uma de suas funções de ponderação.
Simplificar
Obviamente, essa abordagem é muito complexa para jogos que não são simulações de comércio, mas resolva isso de qualquer maneira e veja quais tipos de construções fazem sentido para o seu jogo e elimine os desnecessários. Em seguida, crie regras simplificadas como "coloque cidades próximas a um rio, uma montanha ou solo bom. 1 construção por 100 recursos, empresas baseadas no tipo de recurso, 10 edifícios residenciais para cada conjunto completo de recursos de alimentos / artesanato ... ou apenas" 1m de rio / 1sqm de solo pode suportar 10 edifícios residenciais ... o que fizer sentido para um jogo. Ainda assim, depois de saber quanta área você tem (por exemplo, sem prédios nas encostas íngremes das montanhas) e quantos prédios a área pode suportar, basta colocar conjuntos de prédios nessa área até ficarem cheios (como 1 prédio comercial, 10 residenciais). , 3 infraestrutura ou o que for) e conecte-os às estradas.
fonte
Have you looked into that?
Eu tenho. Bem, mais ou menos (eu não conseguia pensar em muitas "regras da vida real"). Mas isso é bastante revelador em comparação com as minhas tentativas anteriores: eu estava falhando em reconhecer os recursos que não poderia desenhar (ou seja: há uma floresta ao leste ... independentemente de eu a desenhar ou não).