En informática , la generación procedimental (a veces abreviada como proc-gen ) es un método de creación de datos algorítmicamente en lugar de manualmente, generalmente a través de una combinación de contenido generado por humanos y algoritmos junto con aleatoriedad generada por computadora y potencia de procesamiento. En gráficos de computadora , se usa comúnmente para crear texturas y modelos 3D . En videojuegos, se usa para crear automáticamente grandes cantidades de contenido en un juego. Dependiendo de la implementación, las ventajas de la generación procedimental pueden incluir tamaños de archivo más pequeños, mayores cantidades de contenido y aleatoriedad para una jugabilidad menos predecible.
El término procedimental se refiere al proceso que calcula una función particular. Los fractales son patrones geométricos que a menudo se pueden generar de manera procedimental. El contenido procedimental común incluye texturas y mallas . El sonido también se genera a menudo de manera procedimental y tiene aplicaciones tanto en la síntesis de voz como en la música. Se ha utilizado para crear composiciones en varios géneros de música electrónica por artistas como Brian Eno, quien popularizó el término " música generativa ". [1]
Aunque los desarrolladores de software han aplicado técnicas de generación procedimental durante años, pocos productos han empleado este enfoque de forma extensiva. Los elementos generados procedimentalmente han aparecido en videojuegos anteriores: The Elder Scrolls II: Daggerfall se desarrolla en un mundo generado principalmente por procedimientos, lo que le da un mundo de aproximadamente dos tercios del tamaño real de las Islas Británicas . Soldier of Fortune de Raven Software utiliza rutinas simples para detallar los modelos enemigos, mientras que su secuela presentó un modo de nivel generado aleatoriamente . Avalanche Studios empleó la generación procedimental para crear un grupo grande y variado de islas tropicales detalladas para Just Cause . No Man's Sky , un juego desarrollado por el estudio de juegos Hello Games , se basa en elementos generados por procedimientos.
La demoscene moderna utiliza generación procedimental para empaquetar una gran cantidad de contenido audiovisual en programas relativamente pequeños.
Anualmente se presentan nuevos métodos y aplicaciones en conferencias como la Conferencia IEEE sobre Inteligencia Computacional y Juegos y la Conferencia AAAI sobre Inteligencia Artificial y Entretenimiento Digital Interactivo. [2]
En particular, en la aplicación de la generación procedimental en videojuegos, que se pretende que sean altamente rejugables, existe la preocupación de que los sistemas procedimentales puedan generar una cantidad infinita de mundos para explorar, pero sin la suficiente guía humana y reglas para guiarlos. El resultado se ha denominado "avena procedimental", un término acuñado por la escritora Kate Compton, ya que, si bien es posible generar matemáticamente miles de cuencos de avena con la generación procedimental, el usuario los percibirá como iguales y carecerá de la noción de singularidad percibida que un sistema procedimental debería buscar. [3]
El uso de la generación procedimental en los juegos tiene sus orígenes en el ámbito de los juegos de rol de mesa (RPG). [4] El sistema de mesa líder, Advanced Dungeons & Dragons , proporcionó formas para que el "dungeon master" generara mazmorras y terrenos utilizando tiradas de dados aleatorias, ampliadas en ediciones posteriores con complejas tablas procedimentales ramificadas. Strategic Simulations, bajo licencia de TSR, lanzó Dungeon Master's Assistant , un programa de computadora que generaba mazmorras basadas en estas tablas publicadas. Tunnels & Trolls , publicado por Flying Buffalo , [5] fue diseñado principalmente en torno al juego en solitario y utilizó una generación procedimental similar para sus mazmorras. Otros juegos de rol de mesa tomaron prestados conceptos similares en la generación procedimental para varios elementos del mundo. [6]
Muchas herramientas en línea para Dungeon Masters ahora utilizan la generación de procedimientos en distintos grados. [ cita requerida ]
Antes de los videojuegos orientados a los gráficos, los juegos roguelike , un género inspirado directamente en Dungeons & Dragons adoptado para el juego en solitario, utilizaban en gran medida la generación procedimental para producir mazmorras aleatoriamente, de la misma manera que lo habían hecho los sistemas de mesa. Entre estos primeros juegos se encuentran Beneath Apple Manor (1978) y el homónimo del género, Rogue (1980). El sistema de generación procedimental en los roguelikes creaba mazmorras en ASCII (o sistemas regulares basados en mosaicos) y definía habitaciones, pasillos, monstruos y tesoros para desafiar al jugador. Los roguelikes, y los juegos basados en los conceptos de roguelike, permiten el desarrollo de una jugabilidad compleja sin tener que dedicar demasiado tiempo a crear el mundo de un juego. [7]
Maze Craze de 1978 para Atari VCS utilizó un algoritmo para generar un laberinto aleatorio de arriba hacia abajo para cada juego. [8]
Algunos juegos usaban generadores de números pseudoaleatorios . Estos PRNG se usaban a menudo con valores de semilla predefinidos para generar mundos de juego muy grandes que parecían estar prefabricados. The Sentinel supuestamente tenía 10,000 niveles diferentes almacenados en solo 48 y 64 kilobytes. Un caso extremo fue Elite , que originalmente se planeó para contener un total de 248 ( aproximadamente 282 billones) galaxias con 256 sistemas solares cada una. Sin embargo, el editor temía que un universo tan gigantesco causara incredulidad en los jugadores, y ocho de estas galaxias fueron elegidas para la versión final. [9] Otros ejemplos tempranos notables incluyen el juego de 1985 Rescue on Fractalus (que usaba fractales para crear procedimentalmente, en tiempo real, las escarpadas montañas de un planeta alienígena) y River Raid (el juego de Activision de 1982 que usaba una secuencia de números pseudoaleatorios generados por un registro de desplazamiento de retroalimentación lineal para generar un laberinto de obstáculos en movimiento).
Aunque los juegos de computadora modernos no tienen las mismas restricciones de memoria y hardware que tenían los juegos anteriores, el uso de generación procedimental se emplea con frecuencia para crear juegos aleatorios, mapas, niveles, personajes u otras facetas que son únicas en cada partida. [10] [11]
En 2004, un grupo de demostración alemán lanzó un juego de disparos en primera persona para PC llamado .kkrieger . Está contenido íntegramente en un ejecutable de 96 kilobytes para Microsoft Windows que genera cientos de megabytes de datos 3D y de texturas cuando se ejecuta. Según uno de los programadores, "fue un completo fracaso en lo que respecta al aspecto del juego (principalmente porque a nadie de los involucrados le importaba realmente ese aspecto)". [12]
RoboBlitz de Naked Sky utilizó la generación procedimental para maximizar el contenido en un archivo descargable de menos de 50 MB para Xbox Live Arcade . Spore de Will Wright también hace uso de la síntesis procedimental.
La generación procedimental se utiliza a menudo en sistemas de botín de juegos basados en misiones, como juegos de rol de acción y juegos de rol multijugador masivos en línea . Aunque las misiones pueden presentar recompensas fijas, se pueden generar otros botines, como armas y armaduras, para el jugador en función del nivel del personaje del jugador, el nivel de la misión, su desempeño en la misión y otros factores aleatorios. Esto a menudo lleva a que el botín tenga una calidad de rareza aplicada para reflejar cuándo el sistema de generación procedimental ha producido un artículo con atributos mejores que el promedio. Por ejemplo, la serie Borderlands se basa en su sistema de generación procedimental que puede crear más de un millón de armas únicas y otros equipos. [13]
Muchos juegos de mundo abierto o de supervivencia crean procedimentalmente un mundo de juego a partir de una semilla aleatoria o una proporcionada por el jugador, de modo que cada partida es diferente. Estos sistemas de generación crean numerosos biomas basados en píxeles o vóxeles con distribución de recursos, objetos y criaturas. El jugador con frecuencia tiene la capacidad de ajustar algunos de los parámetros de generación, como especificar la cantidad de cobertura de agua en un mundo. Algunos ejemplos de estos juegos son Dwarf Fortress , Minecraft y Vintage Story .
La generación procedimental también se utiliza en los juegos de exploración y comercio espacial. Elite: Dangerous , al utilizar las 400 mil millones de estrellas conocidas de la Vía Láctea como base mundial, utiliza la generación procedimental para simular los planetas de estos sistemas solares. De manera similar, Star Citizen utiliza la tecnología para crear planetas perfectamente cargados entre su universo hecho a mano. I-Novae Infinity presenta una gran cantidad de planetas que se generan procedimentalmente entre los cuales el jugador puede viajar a través de naves espaciales. Outerra Anteworld es un videojuego en desarrollo que utiliza generación procedimental y datos del mundo real para crear una réplica virtual del planeta Tierra a escala real.
No Man's Sky , que utiliza la generación procedimental, es el videojuego más grande de la historia, con un universo de 18 trillones de planetas en galaxias enteras, que se pueden explorar en vuelo o a pie. Todos los planetas tienen su propio terreno, clima, flora y fauna únicos y diversos, así como una serie de especies alienígenas que viajan por el espacio. El mismo contenido existe en los mismos lugares para todos los jugadores (gracias a un único número de semilla aleatorio en su motor determinista), lo que permite a los jugadores encontrarse y compartir descubrimientos. [14] [15] [16]
Al igual que en los videojuegos, la generación procedimental se utiliza a menudo en el cine para crear rápidamente espacios visualmente interesantes y precisos. Esto se aplica a una amplia variedad de aplicaciones.
Una de las aplicaciones se conoce como fábrica imperfecta , en la que los artistas pueden generar rápidamente muchos objetos similares. Esto explica el hecho de que, en la vida real, nunca hay dos objetos exactamente iguales. Por ejemplo, un artista podría modelar un producto para una estantería de un supermercado y luego crear una fábrica imperfecta para generar muchos objetos similares para llenar la estantería.
MASSIVE es un paquete de software de inteligencia artificial y animación por computadora de alta gama que se utiliza para generar efectos visuales relacionados con multitudes para películas y televisión. Fue desarrollado para crear automáticamente ejércitos de combate de cientos de miles de soldados para las películas de El Señor de los Anillos de Peter Jackson . [17]
El ruido coherente puede ser extremadamente importante para el flujo de trabajo procedimental en el cine. El ruido simplex suele ser más rápido y tiene menos artefactos, aunque también se puede utilizar una función más antigua llamada ruido de Perlin . El ruido coherente, en este caso, se refiere a una función que genera una pseudoaleatoriedad suave en n dimensiones.