Métodos para generar un mapa


27

Estoy buscando crear un mapa simple, generado "al azar" para un juego pequeño.

El juego consiste en una vista de arriba hacia abajo de un mundo, con áreas terrestres y oceánicas. Piense en un mapa de esquema simple del mundo, por ejemplo.

Lo más parecido a lo que puedo pensar que he visto antes fue el generador de niveles para los viejos juegos de SimCity , o la serie Civ , donde puedes establecer una preferencia por un solo continente en lugar de muchas islas, etc.

¿Qué tipo de algoritmo sería adecuado? El mapa deberá ser moderadamente ampliable, de modo que pueda tener una vista de "todo el mundo", y también una vista local más ampliada, pero creo que lo solucionaré más adelante.

Inicialmente no necesito ningún concepto de alturas, solo dos áreas: tierra y mar, aunque podría extenderlo más tarde.


Estaba pensando en la línea de la generación usando una función de ruido perlin de algún tipo, pero no estoy seguro de cómo pasar de lo que es esencialmente un mapa de altura 2D a un conjunto de líneas que conectan todas las áreas a la altura X.
Cilíndrico

Respuestas:


21

El "famoso" Amit (con la página gigante de varios temas de programación de juegos) tiene un blog de programación de juegos, y acaba de completar un tutorial de 3 partes de un método interesante de generación de mapas. Realmente disfruté las lecturas, y hay una demostración funcional en la parte inferior del tercer artículo que es bastante estelar.

"Generación de mapas poligonales" parte 1 , parte 2 , parte 3 .

¡Esta puede ser una técnica que quieras adaptar a tus necesidades! Como mínimo, menciona los algoritmos que usa en cada paso del proceso: comienza generando polígonos Voronoi , los relaja a una distribución más uniforme utilizando la relajación de Lloyd , usa "una función simple para dividir el mundo en tierra y agua". , y luego inundaciones para determinar los océanos y lagos. Parece que puede detenerse allí, o seguir leyendo montañas y valles y convertirlo en 3D, etc.


2
Oh wow, usé la guía de Amit una gran cantidad para aprender A *. Es como se ve en mi cabeza :) Tiempo de conseguir que "<3 Amit" tatuaje ...
cilíndrico

1
Esos son realmente geniales
Colm

Voronoi, bien. :)
user712092
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.