¿Cuáles son los algoritmos conocidos para crear un planeta con una red de cuevas subterráneas?

Conozco algunos algoritmos para construir un mapa de elevación de un planeta, pero la mayoría de ellos no tienen en cuenta los aspectos subterráneos del planeta (cuevas, túneles, ...).

¿Hay algún algoritmo para encargarse de esto? ¿Se usan solo después de que se haya creado un mapa de elevación inicial o podrían usarse conjuntamente para crear una red de cuevas/túneles de manera más eficiente?

¡Cualquier puntero a descripciones de algoritmos, encuestas o bibliotecas de trabajo es bienvenido!

¿No se basan las cuevas en ríos subterráneos, así como en rocas débiles donde el agua erosiona la roca? Así que realmente no habría un algoritmo.
No solo, algunas cuevas son creadas por movimientos tectónicos... Pero, mi punto no es realmente ser lo más realista posible. Me gustaría saber cuáles son los métodos existentes (entonces, la erosión es uno como usted sugirió).
Me alegro de no haber publicado una respuesta. A veces me muevo rápido. ¡Siempre es bueno aprender!
Como notó, hay varios tipos diferentes de tipos de formación, y las características de cada uno varían según el tipo de roca en la que se crean. Dudo que encuentre un algoritmo que logre abarcar todo eso en una escala planetaria. .
De hecho, no conozco ningún algoritmo que se haga cargo del subsuelo... Entonces, mi pregunta no es ni siquiera para ser realista, me gustaría saber algún algoritmo que esculpe el planeta y construya una red de cuevas y túneles y cómo ellos lo hacen. Incluso si nos enfocamos en cuevas excavadas por la erosión, no veo cómo construir tales cuevas/túneles bajo tierra y qué algoritmo usar.
Esta respuesta sobre el desbordamiento de pila podría ser útil como punto de partida para alguien que busca escribir una respuesta, como punto de partida para la investigación.
Minecraft obviamente hace esto, aunque los resultados no se basan en simular la creación de cuevas y no siempre son realistas.
Dwarf Fortress (disponible para Linux, Windows y Mac) crea tres niveles de cuevas en cada nuevo juego. Sin embargo, el código no está disponible.

Respuestas (2)

Este tipo de cosas se pueden "modificar" muy fácilmente, no hay necesidad de simular el mundo y la erosión, ya que te preocupas más por que las cosas se vean bien.

Hay un ejemplo simple aquí: http://hub.jmonkeyengine.org/forum/topic/how-to-approach-random-cubic-cave-generation/

Algoritmo básico:

  • comience con un punto aleatorio y un radio aleatorio utilizando algún factor de escala.
  • calcular un número aleatorio de ramas de una longitud aleatoria y un ancho aleatorio en función del factor de escala
  • cree puntos al final de esas ramas con un tamaño aleatorio y un factor de escala basado en el factor de escala local
  • recurrir a una profundidad máxima

Aquí hay un artículo largo y muy informativo de GPU Gems que habla sobre la generación de terreno de procedimiento:

http://http.developer.nvidia.com/GPUGems3/gpugems3_ch01.html

Los detalles son demasiado largos para incluirlos en esta respuesta, pero la idea principal es que combina diferentes funciones de ruido para generar dinámica y procedimentalmente un terreno como este:

Ejemplo 1 Ejemplo 2

Técnica extremadamente interesante (¡que yo no conocía!). Gracias por compartir !

Es posible que pueda usar un autómata celular para simular la formación de cuevas, no en el sentido simple del Juego de la vida de Conway, sino programando el autómata para simular la tierra de densidades variables que se colocan aleatoriamente en una cuadrícula 2D o 3D, fluido, que podría ser agua o magma, y ​​aire.

Estableciendo las reglas correctamente, el agua vendría desde arriba en intervalos y áreas aleatorias y erosionaría la tierra, debilitando cada celda hasta desaparecer, o podría causar la deposición de rocas en espacios vacíos (estalactitas y estalagmitas). Si tuviera una simulación 3D, también podría agregar gravedad, lo que requeriría que el agua siempre se moviera horizontalmente o cuesta abajo, a menos que la tasa de flujo estuviera restringida en algún punto (en cuyo punto podría subir río arriba del bloqueo), o a menos que se calentara lo suficiente. .

La gravedad también podría usarse para determinar los colapsos: si se le pide a la tierra insuficientemente fuerte que abarque una distancia demasiado grande sin soporte, colapsaría.

El magma vendría desde abajo, originándose en un punto caliente, cuya intensidad y posición de calor máximo puede variar con el tiempo, y el magma podría solidificarse para formar roca dura, o hundirse nuevamente para dejar cavidades (dependiendo del tipo de punto caliente y/o o factores aleatorios), y también calentaría el agua, haciéndola subir.

Esto no sería necesariamente rápido de programar, y no sería particularmente rápido de ejecutar, pero si se hace correctamente, podría producir resultados muy realistas.

En el otro extremo de la escala, para generar vistas de mapas muy básicas de cuevas, aquí hay un enfoque de autómatas celulares muy simple .