¿Por qué es esta generación de contenido procesal mientras que la otra no?

18

Estoy leyendo el libro de Generación de contenido procesal en línea y en el capítulo 1, página 2, hay un ejemplo de lo que PCG es y otro de lo que PCG no es y no puedo distinguirlos.

Esto es PCG según ellos:

middleware del motor del juego que puebla rápidamente un mundo de juegos con vegetación

Esto NO es PCG según ellos:

un motor de juego capaz de integrar vegetación generada automáticamente

También en la página 1 dijeron explícitamente que no consideran un PCG de motor de juego

Un término clave aquí es "contenido". En nuestra definición, el contenido es la mayor parte de lo que contiene un juego: niveles, mapas, reglas del juego, texturas, historias, artículos, misiones, música, armas, vehículos, personajes, etc. El motor del juego en sí no se considera contenido. en nuestra definición

Supongo que el ejemplo de PCG es un código en un juego (o podría ser un código que se adapta a cualquier juego) que reconoce el mapa del juego y lo rellena con vegetación de acuerdo con él. Y el ejemplo no PCG para mí sería como una opción disponible desde el motor del juego donde el desarrollador puede agregar la vegetación fuera de línea a través de la interfaz de usuario.

La última es una suposición muy salvaje de mi parte, estoy bastante seguro de que estoy equivocado porque a primera vista ambos suenan como PCG. Por favor, ayúdame a diferenciarlos.

Adocad
fuente
99
Compare a dos hombres: A entra en una habitación, la mira, construye muebles basados ​​en la habitación y coloca los muebles en la habitación. B hace lo mismo, pero él va a IKEA (personas que han construido los muebles) para obtener muebles para poner en la habitación. ¿Diría que tanto A como B están creando muebles? Esa es la diferencia que están tratando de señalar. A menos que esté creando los muebles desde cero, en realidad no está creando muebles, solo está utilizando los muebles existentes de nuevas maneras.
Flater

Respuestas:

27

A modo de analogía

Un circuito no genera energía. Una bombilla no genera energía. Una batería no genera energía. Ninguna de las cosas que usan o almacenan energía generada son generadores de energía.

Un generador a gasolina es un generador de energía . La configuración de un panel solar es un generador de energía . Se puede esperar que se generen espontáneamente cuando se inician. Otras cosas pueden usar la energía que generan: refrigeradores y televisores y PC y calentadores y bombillas.

Del mismo modo, cualquier código o programa que realmente genere contenido en tiempo de ejecución es PCG. El resto son solo usuarios de ese contenido generado por procedimientos (PGC). Ahora,

Generación de contenido procesal

no es lo mismo que

Contenido generado por procedimientos

PGC es el artefacto resultante de un proceso (programa) que participa en PCG.

PCG se desarrolla (programa) hasta un punto en el que puede producir de forma autónoma contenido para alguna u otra especificación, pero en (típicamente) innumerables variaciones; PGC se genera por lo tanto como una sola variación de los espacios de contenido posibles de otro modo ilimitados dentro de esa especificación algorítmica más amplia. Los PGC son finitos y estáticos una vez generados. Los PCG tratan con el infinito (o lo suficientemente cerca).

Abordar detalles

"Generación de contenido procesal" se refiere a código / aplicaciones que generan contenido.

Cualquier juego puede considerarse un juego PCG si, en tiempo de ejecución , genera dinámicamente contenido nuevo a través de parte de su conjunto de instrucciones.

Si usted (o su motor) usa algún otro código de programa que genera contenido, luego incluya ese contenido como parte de su juego en el momento de la compilación / compilación , entonces su juego (y su código) NO es PCG. Por lo tanto:

un motor de juego capaz de integrar vegetación generada automáticamente

... no es PCG, ya que ese motor en sí mismo no produce contenido nuevo en tiempo de ejecución, simplemente usa contenido generado desde otro lugar, que ha sido incluido manualmente por artistas, diseñadores o desarrolladores.

reconoce el mapa del juego

PCG no tiene nada que ver con el reconocimiento. Tiene que ver con hacer el trabajo activo de crear contenido. En general, las aplicaciones PCG producen su propio formato de datos que ya pueden entender y trabajar. Por lo general, no leen en fuentes externas, aunque cuando lo hacen, eso es simplemente lógica de programa antigua ... no PCG como tal. PCG tiene que ver con la generación . Por lo tanto, PCG y no PCR :)

Perspectivas historicas

Lo que consideramos "contenido" en este contexto generalmente cubre aquellas cosas que, en el pasado, los humanos tuvieron que producir por sí mismos. Por ejemplo, en los años 70 y 80, casi todos los juegos (con la excepción de algunos muy especiales) tenían que tener su arte, su historia, su música, su personaje y nombres de planetas, y similares, producidos por un ser humano. . Ese fue el polo opuesto de PCG.

PCG comenzó cuando los programadores de juegos se dieron cuenta de que, en lugar del rigor de contratar artistas, músicos, escritores, etc., y aún así tener que integrar su trabajo con el código, o peor aún, hacer todo ese trabajo por sí mismos y codificar , podrían en su lugar, escriba programas para generar todo eso para ellos. Esos esfuerzos fueron algunas de las primeras funciones, módulos y programas verdaderamente PCG. Un ejemplo perfecto es el XCom / UFO original , donde el código del juego genera un nivel completamente único para ti antes del combate. Más temprano aún (1979) fue el Templo de Apshai .

Elite era un caso diferente: parte de su contenido se generaba cuando el juego estaba en desarrollo; no solo ese código fue escrito por los mismos autores, sino también que el contenido pregenerado generalmente se usaba en tiempo de ejecución elite.exe(es decir, cuando el jugador ejecutaba el juego) por otros generadores que formaban parte del código del juego , creando el mundo jugado en.

Un ejemplo más nuevo es Minecraft (y otros juegos inspirados en él) donde el mundo literalmente genera a tu alrededor mientras caminas hacia el horizonte, gracias en gran parte a la potencia informática moderna. ¡Compare esto con Rogue o Moria jugado en una PC-XT en la década de 1980, por lo que es posible que deba sentarse en algún momento esperando que se genere el nivel! (dependiendo de la configuración de juego elegida).

No todo PCG está históricamente arraigado en la industria de los juegos. Por ejemplo, hay quienes escriben generadores de ficción. Por ejemplo, Ken Perlin en el campo de los gráficos y la geometría computacional creó el algoritmo Perlin Noise, por el cual más tarde se le otorgó un premio de la academia. Por ejemplo, el músico Brian Eno se ha dedicado durante mucho tiempo a la generación procesal de partituras musicales. Y como otro ejemplo, los juegos de mesa no digitales como HeroQuest / Warhammer Quest inventaron hace mucho tiempo una dinámica de procedimiento para crear un tablero de juego diferente en cada jugada.

Ingeniero
fuente
66
Una excepción técnica muy pequeña: hubo un proyecto / juego de investigación de prueba de concepto en el que el juego en sí mismo se generó de manera procesal. Es decir, los objetivos, las reglas y, en cierta medida, la representación se generaron dinámicamente en tiempo de ejecución. Desdibuja un poco la línea entre el contenido y el motor, pero la prueba de fuego de "¿genera" todavía se mantiene incluso allí. Excelente destilación
Pikalek
3
@ Pikalek Estoy totalmente de acuerdo con esa línea de pensamiento. Podemos llevarlo tan lejos como lo hace Lisp: que finalmente no hay distinción entre instrucciones y datos. Sin embargo, no quería complicar demasiado las cosas en la respuesta. Gracias por comentar
Ingeniero
2
@ Adobe: Creo que se perdió un pequeño detalle en la respuesta: "Si usted (o su motor) usa algún otro código de programa que genere contenido , y luego incluya ese contenido como parte de su juego en el momento de la compilación / compilación, su juego ( y su código) NO ES PCG " Si hubiera incluido el programa en su juego, en lugar del contenido generado por el programa, y ​​su juego activaría el programa cuando fuera necesario (localmente, en la computadora de un jugador), entonces de hecho sería PCG fuera de línea. Pero ese no es el caso cuando simplemente incluye un resultado de una generación PCG (que ahora es estática).
Flater
2
@AC: Creo que la distinción es más clara cuando se etiqueta como contenido generado por procedimientos o generación de contenido procesal .
Flater
44
@Flater Gracias, esa es una mejor manera de decirlo: el contenido generado por procedimientos se puede generar sin conexión y / o en tiempo de ejecución, pero la generación de contenido de procedimientos es explícitamente en tiempo de ejecución. (Tenga en cuenta que una herramienta que genera contenido que luego se compilará está haciendo PCG, sin embargo, después de que ese contenido ha sido pregenerado y compilado, el juego que usa ese contenido NO está haciendo PCG)
AC