Métodos para gerar um mapa


27

Estou procurando criar um mapa simples, gerado aleatoriamente, para um pequeno jogo.

O jogo consiste em uma visão de cima para baixo de um mundo, com áreas terrestres e oceânicas. Pense em um mapa simples do mundo, por exemplo.

A coisa mais próxima que eu já vi antes foi o gerador de níveis dos jogos antigos do SimCity , ou da série Civ , onde você pode definir uma preferência por um único continente versus muitas ilhas, etc.

Que tipo de algoritmo seria adequado? O mapa precisará ser moderadamente com zoom, para que eu possa ter uma visão de "mundo inteiro" e também uma visão local mais ampliada, mas acho que vou resolver isso mais tarde.

Inicialmente, não preciso de nenhum conceito de altura, apenas duas áreas - terra e mar, embora eu possa estendê-lo mais tarde.


Eu estava pensando ao longo das linhas de geração usando uma função de ruído perlin de algum tipo, mas não sei como obter o que é essencialmente um mapa de altura 2D, para um conjunto de linhas conectar todas as áreas na altura X.
Cylindric

Respostas:


21

O "famoso" Amit (com a página gigante de vários tópicos de programação de jogos) possui um blog de programação de jogos e ele acabou de concluir um tutorial em três partes de um método interessante de geração de mapas. Gostei muito das leituras, e há uma demonstração de trabalho na parte inferior do terceiro artigo, que é bastante estelar.

"Geração de mapa de polígono" parte 1 , parte 2 , parte 3 .

Essa pode ser uma técnica que você deseja adaptar às suas necessidades! No mínimo, ele menciona os algoritmos que usa em cada etapa do processo: ele inicia por geração de polígonos Voronoi , relaxa-os para uma distribuição mais uniforme usando o Lloyd relaxation , usa "uma função simples para dividir o mundo em terra e água" e, em seguida, enchimentos para determinar oceanos e lagos. Parece que você pode parar por aí ou ler sobre montanhas e vales e transformá-lo em 3D e assim por diante.


2
Oh uau, eu usei o guia de Amit uma quantidade enorme para aprender A *. É como ele olha na minha cabeça :) Tempo para obter a tatuagem "<3 Amit" ...
cilíndrico

11
Aqueles são realmente enlouquecendo grande
Colm

Voronoi, legal. :)
user712092
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.