Ruido Perlin, generación de contenido procesal y espacio interesante.

Probablemente, lo peor que sucedió en el campo de la generación de contenido procesal (suponiendo que esta sea realmente el área de la generación de contenido procesal, de la que no estoy completamente seguro) es el ruido de Perlin. El ruido de Perlin es increíblemente adecuado (al menos si no lo miras demasiado de cerca) para generar paisajes interesantes. En el subreddit / r / proceduralgeneration, no pasa una semana sin que alguien publique un "sistema de generación de procedimientos" que resulta ser el ruido de Perlin visualizado en diferentes colores. (Durante la redacción de este artículo, ¡aparecieron dos publicaciones de este tipo!)


No quiero humillar el ruido de Perlin. Esta es una herramienta increíblemente útil para la generación de procedimientos, que se ha convertido en un punto de entrada en esta área para muchas personas, incluido yo. Pero al mismo tiempo, es muy confuso porque implica que la generación de procedimientos es mucho más simple de lo que realmente es. La mayoría de las publicaciones semanales sobre "sistemas de generación de procedimientos" en / r / proceduralgeneration desaparecen sin dejar rastro cuando sus autores encuentran que el siguiente paso en la generación de procedimientos es mucho más complicado. La verdad es que el ruido de Perlin fue una especie de feliz coincidencia. Es ideal para generar paisajes interesantes, pero no hay razones sistemáticas o repetibles.

Mike Cook publicó recientemente un tutorial que contrasta el espacio de posibilidades con el espacio de generación. Si crea un sistema de generación para crear X, entonces el espacio de posibilidades es igual a todas las X posibles, y el espacio de generación es toda la X que su sistema puede generar realmente. Mike ilustra esta idea con Minecraft:


En el caso de mi juego Dragons Abound , el espacio de posibilidades incluye todos los mapas posibles, incluidos muchos casos degenerados, por ejemplo, un mapa que consiste completamente en el océano con una pequeña isla. El espacio de generación es el espacio más pequeño de todas las cartas que Dragons Abound puede generar. Gracias a las diversas reglas utilizadas, Dragons Abound no puede generar un mapa del océano con una pequeña isla, por lo que este mapa no está en el espacio de generación del juego. Comparar el espacio de posibilidades con el espacio de generación es una mirada interesante y útil a la generación de procedimientos, por lo que le recomiendo que lea la publicación de Mike , que explica esta idea con más detalle, y hay varios ejemplos interactivos.

Además del espacio de posibilidades y el espacio de generación, también es útil pensar en un "espacio interesante". Si creamos X, este es el espacio de todas las X interesantes . Es decir, en el caso de mi juego, este es el espacio de todas las cartas de fantasía interesantes . Un espacio interesante es un subconjunto del espacio de posibilidades y, esperamos, se cruza con el espacio de generación; por ejemplo, espero que al menos algunas de las cartas generadas por mi juego resulten interesantes.

Antes de continuar, admito que "interés" es un concepto vago y subjetivo. Mis y tus ideas sobre cosas interesantes probablemente no coincidan. Ni siquiera sé siempre lo que me parece interesante: a menudo veo algo nuevo y lo encuentro interesante, aunque no pensé que me gustaría hasta que lo vi. Peor aún, cuanto más interesante vemos, menos interesante se vuelve. Cuando ve una característica interesante en veinte cartas seguidas, ya no parece interesante. Por lo tanto, el "interés" no es tan fácil de entender. En el futuro, hablaré más sobre lo que hace que las cosas sean interesantes (y en el pasado tenía algo que decir sobre la idea cercana de un espacio de creatividad ), pero hasta ahora esto no es muy importante. Es suficiente para nosotros estar de acuerdo en que algunas cosas son más interesantes que otras, y que las cosas más interesantes están en un "espacio interesante", mientras que las cosas menos interesantes no lo son.

¿Es posible ilustrar un espacio interesante de la misma manera que Mike mostró el espacio de posibilidades y el espacio de generación? Como se sugirió anteriormente, un espacio interesante es un subconjunto del espacio de posibilidades, que (si tienes suerte) se cruza con el espacio de generación:


Un buen generador se cruza fuertemente con un espacio interesante; Un mal generador es débil.

Estos patrones son solo una metáfora, pero dentro del marco de esta metáfora quiero hacer la siguiente pregunta: ¿he indicado correctamente las formas de los diferentes espacios? La forma del espacio de posibilidades no es realmente importante, solo tiene que contener otros dos espacios. Pero las formas del espacio de generación y el espacio interesante son preguntas más interesantes (sic). Los pinté a ambos como formas compactas individuales dentro del espacio de posibilidades. ¿Es esto razonable?

Creo que designar el espacio de generación como una elipse compacta es una buena opción para muchos generadores de procedimientos, y especialmente para algo como el ruido de Perlin. La forma implica que el generador crea todas las soluciones dentro de un único espacio claramente definido y compacto. Si el generador puede crear X, entonces generalmente puede crear a todos los vecinos de X. Por lo general, no hay grandes "agujeros" o distorsiones extrañas en el espacio de generación.

Los espacios de generación generalmente se ven así por dos razones. En primer lugar, a nivel de aplicación práctica, un generador es una pequeña cantidad de código asociado con un espacio de posibilidades. Actualmente, Dragons Abound contiene alrededor de 28 mil líneas de código fuente. En comparación con muchos otros generadores de tarjetas de procedimiento, esto es mucho (tal vez incluso un registro), pero aún es extremadamente pequeño en comparación con el espacio de posibilidades de todas las tarjetas de fantasía. Por lo tanto, no importa cuán inteligente sea el código del juego, su espacio de generación ocupará solo una pequeña parte del espacio de posibilidades, y dado que el código de la computadora es, por definición, algorítmico y determinista, este espacio será relativamente compacto. Es decir, si el juego puede crear un tipo de tarjeta, seguramente creará muchas otras tarjetas similares.

La segunda razón por la que los espacios de generación son compactos es estratégica. Para mí, el objetivo de crear Dragons Abound es generar mapas interesantes para que se crucen con el espacio interesante tanto como sea posible. Y es difícil entrar en un espacio interesante, es muy pequeño en comparación con el espacio de posibilidades. De hecho, es muy, muy pequeño. Todos estos espacios tienen una gran cantidad de dimensiones, y el tamaño del espacio crece esencialmente como una potencia de la cantidad de dimensiones. La relación real entre el espacio interesante y el espacio de posibilidades se ve más o menos así:


Solo un espacio interesante es mucho, mucho más pequeño. Esto obliga a la generación procesal a adherirse a ciertas estrategias. Por ejemplo, ¿por qué el juego no crea mapas completamente al azar? Entonces el espacio de generación se vería así:


Solo los puntos verdes son mucho más pequeños. Las posibilidades de pasar de una de las cartas al azar a un espacio pequeño e interesante son esencialmente cero. Para aumentar las posibilidades de ingresar a un espacio interesante, el creador de la generación de procedimientos utiliza el conocimiento sobre el espacio de posibilidades y el espacio interesante para controlar la generación: el creador cambia el espacio de generación de modo que se ubique principalmente en el vecindario del espacio interesante, y no solo distribuido al azar.

Por todas estas razones, será lógico percibir el espacio de generación como un área conectada y compacta.

Pero creo que dibujar un espacio tan interesante probablemente sería completamente incorrecto. Debe describirse como un conjunto disperso y dividido de áreas de formas extrañas. Por qué Porque (1) las cosas pueden ser interesantes por varias razones ortogonales, y (2) el interés es una función discontinua.

Considere, por ejemplo, estos dos fragmentos de mapa:



El primer fragmento es interesante porque la costa es muy detallada y contiene muchas islas pequeñas. El segundo fragmento tiene una costa lisa y aburrida, pero la costa tiene características interesantes: está deshabitada y tiene el nombre ominoso "Bleak Shore". En cierto sentido, ambos fragmentos son interesantes, pero por razones completamente diferentes. Por lo tanto, no esperaremos que estas dos partes del espacio interesante sean vecinas.

Además, estas dos partes del espacio interesante probablemente ni siquiera estén conectadas. De ninguna manera será posible convertir gradualmente el primer mapa interesante en un segundo mapa interesante sin crear varios mapas interesantes en el camino. Por lo tanto, estas dos partes del espacio interesante están separadas.

Entonces, un espacio interesante no es un área única, sino un conjunto de áreas divididas. ¿Cada espacio interesante tiene formas suaves y compactas?

Repito, no declaro que puedo dar una definición completa de "interés". Pero en algunos aspectos, podemos estar de acuerdo en varios puntos. En primer lugar, si X es interesante, esto no significa que 2X sea el doble de interesante. Tomemos el ejemplo de la Costa Triste: un área de la costa misteriosa en el mapa es interesante, pero una docena de ellos será muy poco interesante. Probablemente pueda encontrar otros ejemplos de cómo el "interés" se comporta de una manera extraña y contradictoria. Entonces, el interés tiene algunos elementos de discontinuidad: no es una función fluida que cambia de manera racional y predecible cuando se mueve a través del espacio de posibilidades.

Todo esto nos hace comprender que debemos designar un espacio interesante como una serie de áreas divididas de una forma extraña.


Ya está comenzando a comprender por qué crear un buen generador de procedimientos es una tarea difícil. Debido a la forma en que funcionan los algoritmos y las limitaciones de nuestras capacidades, el espacio de generación será pequeño y compacto. Al mismo tiempo, queremos entrar en tantas áreas extrañas y dispersas de espacio interesante como sea posible. ¡Es sorprendente que incluso logremos entrar en ellos!

Ahora déjame volver al tema del ruido de Perlin. ¿Cómo será este esquema para el espacio de generación de ruido Perlin en el espacio paisajístico? Creo que algo como esto:


El generador de ruido de Perlin tiene más intersección con un espacio particular interesante dentro del universo de todos los paisajes posibles. Y esto es excelente: casi todo lo que se puede crear con el ruido Perlin cae en esta área y se ve bastante interesante.

Pero este rápido éxito es engañoso. Si eres nuevo en la generación de procedimientos, verás cómo funciona bien el ruido de Perlin y lo más probable es que decidas que el ruido de Perlin es una varita mágica para generar todo tipo de paisajes interesantes, sin mencionar todos los tipos de generación de procedimientos. Pero como muestra el diagrama, el espacio de generación de ruido de Perlin está realmente lejos de muchas otras partes del interesante espacio paisajístico. El segundo paso estándar en la generación de paisajes procesales es la adición de ríos. Pero si intentas realizar los ríos con la ayuda del ruido de Perlin, ¡encontrarás que es imposible! De ninguna manera se pueden expandir los límites del espacio de generación de ruido de Perlin para alcanzar espacios distantes e interesantes que contengan ríos realistas.

El ruido de Perlin es engañoso en otro sentido. Anteriormente, hablé sobre el hecho de que el espacio interesante es tan pequeño que si quieres entrar en él, debes tener cierto conocimiento sobre el espacio de posibilidades y el espacio interesante para controlar la generación de procedimientos. Pero el algoritmo de ruido de Perlin no sabe nada sobre paisajes, procesos geológicos, lo que la gente encuentra interesante y, sin embargo, de alguna manera funciona bien sin este conocimiento. El ruido de Perlin resultó ser la excepción, confirmando la regla (*). Pero si es nuevo en la generación de procedimientos, lo más probable es que no conozca esta regla. De hecho, está deduciendo una regla errónea: toda la generación de procedimientos en su conjunto debería funcionar como el ruido de Perlin.

(* No fue solo por casualidad que "resultó" ser una excepción. El ruido de Perlin se convirtió en un punto de partida popular precisamente porque es una excepción. Es muy fácil comenzar con el ruido de Perlin sin tener que estudiar una gran cantidad de información sobre paisajes).

Considere otro punto de partida popular en la generación de contenido procesal: esquemas de mazmorras. A diferencia de la generación de paisajes, los esquemas de mazmorras no tienen un algoritmo similar al ruido de Perlin, que mágicamente crea soluciones en un espacio interesante. Según lo que sabemos sobre el espacio de generación y el espacio interesante, podemos adivinar que los generadores de mazmorras deberían (1) incluir conocimientos específicos sobre los días posteriores y el interés, o (2) crear mazmorras en su mayoría sin interés. De hecho, si observa los generadores de mazmorras publicados durante el último año en / r / proceduralgeneration, verá que la mayoría de ellos no contienen ningún conocimiento sobre mazmorras que no sea verificar la conexión de todas las habitaciones, y por lo tanto, los datos mostrados por estos proyectos son más aleatorios que interesantes .


Entonces, si considera que está más o menos de acuerdo con lo que escribí, ¿qué lecciones se pueden aprender de este concepto de un espacio interesante?

  • La generación de procedimientos es fundamentalmente compleja porque el espacio interesante es un objetivo muy pequeño y difícil de alcanzar.
  • A pesar de las excepciones ocasionales como el ruido de Perlin, uno no debe esperar que los algoritmos simples e ingenuos generen con éxito contenido interesante. Una buena generación de procedimientos debe incluir y utilizar un conocimiento extenso y profundo del área temática y una comprensión de lo que hace que el contenido sea interesante.
  • Pero incluso en los mejores algoritmos de generación, el espacio de generación es compacto, pero el espacio interesante no lo es, por lo tanto, se espera que la generación de procedimientos a menudo se pierda y, por lo tanto, los sistemas deben construirse en consecuencia.
  • En áreas temáticas complejas, el espacio interesante está dividido y tiene una forma extraña. No debe esperar que un algoritmo o enfoque que funcione bien en una parte de un espacio interesante necesariamente funcione igual de bien en otra parte. Por lo tanto, deberíamos esperar que la generación de procedimientos incluya muchos algoritmos diferentes usando diferentes partes del espacio interesante.

Si recién comienza a trabajar con la generación de procedimientos, le recomiendo que piense en la diversión. ¿Qué hará que la salida sea interesante? ¿Qué necesita entender el algoritmo para producir datos que a menudo son interesantes? ¿Qué otra forma de generar datos podría ser interesante? ¿Qué nuevo algoritmo necesito para generar este tipo de interés? ¿Cómo combinarlo / equilibrarlo con el primer algoritmo?

Por ejemplo, si quería crear un generador de mazmorras, entonces pensé en las mazmorras por un tiempo, y decidí que, en mi opinión, las mazmorras son interesantes si:

  1. Parece que fueron creados para convertirse en almacenes, celdas de prisión
    y otra infraestructura subterránea del gran castillo
  2. Más tarde fueron llenados de monstruos y reconstruidos por ellos para satisfacer sus necesidades de refugio, comida, agua, protección contra ataques, etc.

Ahora puede pensar en cómo debería ser el nivel de los almacenes subterráneos, cómo podría ser el algoritmo para la generación de variaciones de este tema y cómo los monstruos pueden cambiar este esquema. Creo que pensar en estos temas le permitirá aprender más sobre la generación de procedimientos que la implementación de otro generador de paisajes con ruido Perlin o un generador de mazmorras de habitaciones y corredores aleatorios.

Source: https://habr.com/ru/post/440286/


All Articles