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:
- Existem estradas para conectar prédios e outros pontos de interesse
- Os edifícios são colocados ao longo das estradas existentes, se possível
- Se não houver estrada, um edifício é colocado em um local vazio e conectado a uma estrada próxima por sua própria estrada
- Os edifícios são colocados perto de outros edifícios que são de interesse de seus habitantes: as pessoas se mudam para morar perto de seus locais de trabalho, lojas de alimentos e roupas etc.
- Os edifícios são colocados perto de recursos necessários para o uso pretendido. Por exemplo, uma serraria é colocada perto de florestas, ou mesmo em uma clareira. as pessoas precisam de água e comida (plantas, animais) para morar em algum lugar.
- Os edifícios são colocados longe de outros edifícios que são prejudiciais ao uso pretendido ou aos quais seriam prejudiciais. Por exemplo, uma loja de tintureira cheira horrivelmente, por isso geralmente não é colocada em uma área residencial. Da mesma forma, as tabernas e restaurantes são barulhentos, então os moradores não querem morar em cima deles, mas precisam de clientes, por isso precisam estar perto de áreas residenciais.
- Alguns países têm leis de zoneamento que também influenciam a colocação de edifícios. Geralmente, essa é uma maneira mais formal de antecipar que tipos de edifícios podem ser prejudiciais um para o outro ou quais recursos são exclusivos da área (como solo de alta qualidade é para campos, não para a construção de estacionamentos).
- Os edifícios são para habitantes e seu estilo e preferências pessoais são refletidos neles. Por exemplo, se uma população é pobre, é muito mais provável que compartilhe terreno (arranha-céus, prédios de apartamentos), se estiver mais bem, eles podem obter preservativos, se são ricos, ficam em uma vila independente. Se certos grupos não gostarem de outros, eles terão menos probabilidade de coabitar. Se houver uma afinidade entre certos grupos, eles podem se mover para áreas semelhantes.
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.