Carreteras curvas 2D generadas por procedimientos en el mapa

9

He estado experimentando con algoritmos para generar automáticamente mapas de ruta para un juego en el que estoy trabajando.

Estoy usando los juegos de " Kingdom Rush " como punto de referencia, ya que tienen algunos mapas muy atractivos.

Ejemplos de mapas de carreteras del juego "Kingdom Rush"

Soy nuevo en la generación de contenido procesal, y me preguntaba si alguien aquí tiene algún indicador. He experimentado con la generación de topologías de carreteras aleatorias, por ejemplo, algunos nodos de entrada / fuente, varios nodos internos (bifurcación y fusión) y algunos nodos de sumidero de salida, luego utilizando algoritmos de diseño gráfico para crear un mapa de ruta real basado en esta información.

Aquí hay un ejemplo usando el algoritmo Fruchterman-Reingold para el diseño de carreteras:

Mapa 1 generado por PCG

El gráfico azul utiliza algunos puntos de control Bézier generados aleatoriamente para que los bordes se vean menos rectos.

Aquí hay otro ejemplo generado usando el mismo algoritmo pero diferentes números aleatorios:

Mapa 2 generado por PCG

El problema es que la mayoría de los resultados terminan pareciéndose bastante similares, y no estoy seguro de qué reglas puedo agregar para mejorar la capacidad de control y la diversidad de los mapas generados por procedimientos.

Cualquier consejo apreciado.

SixTwoOne
fuente
Impresionante pregunta. Las imágenes de referencia ayudan mucho, al igual que las cosas que has probado hasta ahora. ¿Puedes explicar un poco más sobre lo que quieres decir con 'controlabilidad'? Hay un montón de cosas que podía controlar; Algunos ejemplos ayudarían.
Pikalek
¡Hola! Gracias por la respuesta. Por controlabilidad, quiero decir, ¿es posible escribir ciertas reglas (por ejemplo, no coloque las intersecciones más cerca que una cierta distancia entre sí; no permita ángulos más nítidos que x grados) y haga que el algoritmo de generación respete estas restricciones? Además, estas reglas no deberían obstaculizar la capacidad del algoritmo para generar una amplia gama de mapas interesantes. Sin embargo, su aliento es alentador. ¡Estaba empezando a sentirme frustrado con los detalles para que esto funcione!
SixTwoOne

Respuestas:

2

Sus carreteras de ejemplo tienen curvas en los segmentos entre intersecciones donde las generadas no. ¿Has intentado agregar más puntos de control "redundantes" en tus carreteras?

¿Qué tal si el número de bucles es un parámetro de generación? También "curvatura" (número de puntos de control redundantes) El número de salidas sería otro.

Creo que también podría terminar las carreteras cuando chocan con las intersecciones dándoles puntos de control dobles. Eso debería hacer que las intersecciones se vean mejor.

Osthekake
fuente
¡Creo que la sugerencia de puntos de control intermedio es buena! El algoritmo de diseño gráfico que estoy usando en este momento solo produce líneas rectas, pero podría colocar un nodo de "curva curva" en algún lugar entre otros dos nodos y usar una heurística para colocar puntos de control cercanos que lo hagan ver bonito. Definitivamente necesito analizar esto más, ya que también se relaciona con la creación de intersecciones más atractivas.
SixTwoOne