¿Cómo puedo generar mapas aleatorios que parezcan mapas aleatorios de Age of Empires II?


18

Me gusta la forma en que Age of Empires II genera mapas aleatorios (buena variedad, transiciones de biomas decentes, mapas parecidos aleatorios sin sentirse caóticos), pero estoy luchando por replicar el estilo. He intentado utilizar, por ejemplo, el ruido Perlin, pero todo sale demasiado homogéneo o, si no, el valor Perlin -> las heurísticas del terreno son demasiado sensibles y frágiles para crear una variedad de tipos de mundo.

Recuerdo que el tipo de mapa AoE2 "The Unknown" anunciaba "100,000 mapas posibles", sugiriendo cierto uso de números de semillas, pero no estoy seguro de cómo usar los números de semillas para producir la variedad que vi.

¿Qué algoritmos y heurísticas podría usar para producir mapas aleatorios que se sientan como mapas aleatorios de AoE2?

Editar para ser más específico:

Pensando más en mi problema y estudiando lo que me gusta del motor de mapas aleatorios de AoE2, creo que mi mayor problema es administrar la distribución del agua y la vida de las plantas en el mapa . Ahora veo que también lo he vinculado a mi mente con "transiciones de bioma que tienen sentido", pero ese es un problema diferente (aunque espero que mi uso continuo del ruido de Perlin dificulte la resolución).

He agregado varios mapas aleatorios de AoE2 que resaltan lo que me gusta de su motor de mapeo, que mis propios esfuerzos no pueden reproducir. Todas las capturas de pantalla se toman del tipo de mapa aleatorio, "Personalizado" -> "Lo desconocido". No le dije al juego que usara geografías específicas como archipiélagos.

Más abajo hay imágenes de mi propio motor de mapas. Cada píxel corresponde a un mosaico de mapa AoE2.

Una complicación para mi proyecto es que quiero que los mapas sean mucho, muchas veces más grandes que los mapas AoE2. Por lo tanto, cualquier motor que use debe ser capaz de crear el rango completo de biomas en cada mapa, y no un conjunto estrecho de biomas por mapa, como los que usa AoE2.

Mapas de Age of Empires II

Lagos interiores

Aquí hay un ejemplo que presenta lagos del interior y algún tipo de cosas que parecen ríos. Me gusta cómo el mapa incluye una gran cantidad de agua dispersa, pero esa agua todavía está algo concentrada: hay grandes extensiones de tierra disponibles para construir su imperio. No tienes que pasar todo el juego planeando tu ciudad alrededor del agua.

Islas conectadas

Aquí hay un ejemplo similar donde el juego fue lo suficientemente inteligente como para conectar islas con pantanos transitables. No puedo imaginar cómo un algoritmo basado en ruido crearía el pantano allí, y solo esos lugares. Además, observe cómo el juego creó la tierra de modo que cada jugador tiene su propia franja de tierra privada y grande, todo para comenzar. No creó parches de tierra al azar, luego adivina cuál sería el menos terrible para cada jugador.

Islas

Me gusta que este mapa también haga un uso intensivo del agua, pero no incluye muchos lagos del interior. Contraste con la primera imagen. Me gusta la forma en que AoE2 crea geografías completamente diferentes utilizando los mismos bloques de construcción. Mi intento de usar el ruido de Perlin falló aquí: o recibo enormes océanos en expansión que eclipsan la masa terrestre, o la Tierra de los 10.000 lagos. También me resultó difícil obtener ambas islas y continentes conectados (piense en Norteamérica / Sudamérica).

Seco, exuberante Desierto seco

Contrasta esta imagen con la de arriba. Muestran que la aridez de un mapa no depende del nivel del agua. La primera imagen presenta un mapa casi desprovisto de agua, pero que contiene bosques y hierba. La segunda imagen tiene una cantidad moderada de agua, pero es un desierto. Me gusta que eso sea posible (piense en tener a Nuevo México o el Sahara y Costa Rica en su mundo).

Mis propios mapas

He leído en muchos lugares que una buena forma de construir mapas es superponer varios niveles de ruido de Perlin, cada uno de los cuales representa una dimensión diferente de los datos. Siguiendo las recomendaciones populares, fui con elevación y humedad, seleccionando tipos de terreno de la tabla Whittaker aquí .

Tomé dos mapas de perlin, cuantifiqué los valores de cada uno en enteros a través de un simple if perlin_val < x { i=some_int } else if perlin_val < y..., luego asigné los pares de enteros (elevación, humedad) a una tabla de tipos de terreno (por ejemplo, [1,0] -> desierto tropical, [1,1 ] -> pastizales). Los océanos se incluyeron en este sistema: elevación = 0 océano definido.

g1_success

Hay una buena variación, y en muchos sentidos se siente como un mundo real, pero hay algunos problemas:

  • Primero, no hay patrón en las profundidades del océano. Es de esperar aguas poco profundas cerca de la costa y aguas profundas más lejos, no hay rima o razón sobre dónde es

  • Segundo, toda el agua se concentra en los océanos; no hay lagos o ríos, porque el ruido de Perlin no cae repentinamente a un valor más bajo en medio de un continente.

  • Crear un equilibrio entre las cantidades de cada bioma es muy, muy difícil. Atribuyo esto a:

    • El ruido de Perlin sigue una distribución normal, por lo que es difícil estimar cómo ajustar la probabilidad de mapeo de cada dimensión

    • Tratar de equilibrar múltiples dimensiones es difícil, tal vez quiero más (2,3), así que tengo muchas posibilidades de obtener (n, 3). Bueno, ahora tengo demasiado (3,3) y todo parece estar mal.

    • Cuando acerqué el ruido lo suficiente como para tener datos uniformes, no estaba obteniendo una muestra muy completa de los valores de Perlin. Así que modificaba mis distribuciones para el mapa que tenía delante, recargaba un nuevo mapa aleatorio y obtenía resultados muy diferentes.

x-agua-separada

Traté de solucionar el problema de los ríos / lagos haciendo agua a partir de un tercer conjunto de valores de Perlin. Una decisión binaria de agua / tierra, luego aplique todas las cosas anteriores a la tierra. Esto hace que sea mucho más fácil controlar la distribución del agua (aún no es perfecta, pero sí mejor), pero introduce el problema de que hay muchas transiciones de bioma que no tienen sentido. Por ejemplo, parches inexplicables de desierto en medio de exuberantes praderas, nieve en la playa, etc. También es difícil controlar las proporciones de los biomas terrestres, por las razones mencionadas anteriormente.

Falla unidimensional

Al observar los problemas anteriores, probé un algoritmo más simple que solo asignaba el ruido de Perlin a una dimensión. Ahora tengo una variedad de tipos de terreno que aumentan desde 0 = océano profundo -> 1 = océano poco profundo -> 2 = playa ... -> N = nieve. Si bien esto produce islas y continentes, y hace que sea mucho más fácil equilibrar la proporción de cada terreno, los tipos de terreno están demasiado agrupados. Cada masa terrestre parece un mapa de elevación, generalmente sin tipos de terreno dispersos en su superficie. Cada masa terrestre tiene aproximadamente las mismas características, siempre en el mismo orden y siempre en la misma forma de anillo.


No estoy seguro de que alguien que no esté en el equipo de desarrollo original realmente pueda responder a su pregunta, pero sugeriría que la semilla es mucho más baja de lo que esperaba. La semilla casi seguramente genera diferentes mapas por tipo de mapa base, y es muy probable que incluirlos en cualquier combinación sea lo que le permita llegar a 100,000.
Magus

Esta pregunta parece estar fuera de tema porque está pidiendo detalles de implementación sobre un juego específico existente, en lugar de crear un juego.
Trevor Powell

@TrevorPowell Después de revisar las pautas para las preguntas sobre el tema de este sitio, reformulé la pregunta.
spiffytech

Publicaste esa edición unos diez segundos después de mi comentario. Ahora que es servicio! ;)
Trevor Powell

1
-1 Todavía demasiado amplio, creo. Debe ser específico sobre lo que significa "mapas que se sienten como". Se requieren ejemplos específicos de lo que está hablando para responder esta pregunta. La generación procesal es más artística de lo que la gente suele pensar. La creación y la percepción del arte es un tema subjetivo. Elija una cosa específica en la que desee enfocarse y pregunte solo sobre eso. El alcance de esta pregunta es actualmente muy amplio.
MichaelHouse

Respuestas:


9

Echa un vistazo al excelente artículo de Amit Patel que creo que es una especie de recurso por excelencia para la generación de terreno procesal ...

http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/

Lo principal que hace es usar la estructura gráfica para modelar su terreno, no mapas de ruido directos (Perlin et al). No incrustaré sus ilustraciones, pero leí el artículo, y creo que le resultará útil hacerle pensar en un enfoque diferente.

Si está haciendo un juego tipo CIV / AOE, la ubicación de los recursos será importante. No puede hacer que los recursos clave sean demasiado raros, o que los de alto valor sean demasiado comunes. Si presume que cada polígono es una zona con una característica dada (vea las ilustraciones del artículo, tendrá más sentido), podría ver la asignación de recursos a cada polígono en función de algún algoritmo de su elección. Puede ser bastante inteligente haciendo que los recursos en un polígono sean sesgados estadísticamente por los vecinos para que un bosque al lado de un desierto pueda ser raro, pero el bosque al lado de los pastizales sea más común, por ejemplo.


2
La guía de Amit produce un terreno que es demasiado realista para Age of Empires. :)
Seth Battin

Jeje sí, cierto. Pero el concepto básico de usar celdas de diferentes tamaños (donde cada uno es un tipo de terreno específico) funcionaría bien como un enfoque, creo. Eliminar la idea de altura del terreno de la ecuación.
Tim Holt

Revisé el artículo de Amit, pero está demasiado optimizado para tener una sola isla. Hacer que la elevación sea una función simple de la distancia desde la costa produciría resultados incómodos con múltiples islas o continentes más grandes, y su método de distribución de agua supone un pico prominente en el paisaje que finalmente fluye hacia el océano. Si tuviera que eliminar la altura del terreno del esquema de Amit, no estoy seguro de cómo adaptar su idea de distribución del bioma a mi proyecto.
spiffytech

5

Creo scripts de mapas aleatorios para Age of Empires 2 . Mi más reciente es para la versión HD.

Si está buscando comprender cómo crear mapas para Age of Empires 2, existe esta excelente guía para RMS (Random Map Scripting) .

Age of Empires utiliza un sistema experto, que permite que los scripts escriban rutinas para las reglas de generación, de las cuales puede aprender mucho. En cuanto a las regiones, imagino que sería simplemente un caso de enmascarar áreas y aplicar diferentes scripts / rutinas a las áreas enmascaradas en consecuencia. Puede ver fácilmente las reglas de generación de los scripts de mapas existentes abriéndolos en un editor de texto. Escribo el mío en el Bloc de notas

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.