¿Cómo se comienza con la generación de procedimientos?


147

La generación de procedimientos ha sido puesta en escena recientemente (por Spore, MMO, etc.), y parece una técnica de programación interesante / poderosa.

Mis preguntas son estas:

  • ¿Conoces proyectos medianos que utilicen técnicas de generación de procedimientos?
  • ¿Qué idioma / clase de idiomas es mejor para la generación de procedimientos?
  • ¿Se puede usar la generación de procedimientos para el código "serio"? (es decir, no es un juego)

1
¿Te preguntas si este artículo de X-Team te sería útil? x-team.com/blog/…
Adam Gerard

Respuestas:


117

Probablemente debería comenzar con una pequeña teoría y ejemplos simples, como el algoritmo de desplazamiento del punto medio . También debe aprender un poco sobre Perlin Noise si está interesado en generar gráficos. Utilicé esto para comenzar con mi proyecto de último año sobre generación de procedimientos.

Los fractales están estrechamente relacionados con la generación procesal.

Terragen y SpeedTree le mostrarán algunas posibilidades sorprendentes de generación de procedimientos.

La generación de procedimientos es una técnica que se puede usar en cualquier lenguaje (definitivamente no se limita a lenguajes de procedimiento como C, ya que se puede usar en lenguajes OO como Java y lenguajes lógicos como Prolog). Una buena comprensión de la recursividad en cualquier idioma fortalecerá su comprensión de la Generación Procesal.

En cuanto al código 'serio' o ajeno al juego, se han utilizado técnicas de generación de procedimientos para:

  • simular el crecimiento de las ciudades para planificar la gestión del tráfico
  • para simular el crecimiento de los vasos sanguíneos
  • SpeedTree se utiliza en películas y presentaciones arquitectónicas.

Este ruido de Perlin se parece mucho al filtro de "nubes" de Photoshop.
doubleOrt

Primer enlace roto
Jean Carlo Machado

Parte de la música Electro utiliza la generación procesal puede ser creado
Poyda


12

La generación de contenido procesal ahora está escrita para la GPU, por lo que deberá conocer un lenguaje de sombreador. Eso significa GLSL o HLSL. Estos son lenguajes vinculados a OpenGL y DirectX respectivamente.

Si bien mi preferencia personal es Dx11 / HLSL debido a la velocidad, una curva de aprendizaje más fácil y Frank D Luna , OpenGL es compatible con más plataformas.

También debe consultar WebGL si desea saltar directamente a los sombreadores de escritura sin tener que pasar el (considerable) tiempo que lleva configurar un motor de juego OpenGL / DirectX.

El contenido del procedimiento comienza con el ruido.

Por lo tanto, deberá aprender sobre el ruido Perlin (y su ruido sucesor Simplex ).

Shadertoy es una excelente referencia para aprender sobre la programación de sombreadores. Le recomendaría que lo haga una vez que haya probado la codificación de sombreador, ya que el código no es para matemáticamente aprensivo, pero así es como se realiza el contenido de procedimiento.

Shadertoy fue creado por un genio procesal, Inigo Quilez , un producto de la escena de demostración que trabaja en Pixar. Tiene algunos videos de YouTube ( gran ejemplo ) de sesiones de codificación en vivo y también puedo recomendarlos.


17
¿Qué quiere decir que "la generación de contenido procesal ahora está escrita para la GPU"? ¿Estás hablando de cosas como briznas de hierba? No te refieres a la generación de mapas o ciudades para juegos, por ejemplo, ¿verdad?
Dronz

2
Sí, creo que el comentario de "todos" aquí es una generalización excesiva, pero en el área de la generación de paisajes (que supongo que es el tipo más común), esta es una respuesta útil. Aunque no puedo imaginar quién querría ver a alguien escribir código en un video.
Nate CK

1
Alguien que quiera aprender a escribir código complejo, como sombreadores, o aprender a utilizar patrones complejos en su diseño. Y eso es solo arañar la superficie.
Ultroman el Tacomán

"La generación de contenido procesal ahora está escrita para la GPU, por lo que necesitará conocer un lenguaje de sombreador". es simplemente falso y 100% engañoso. (Estoy haciendo un proyecto simple de generación de procedimientos, escribí 0 líneas de código de sombreador en mi vida)
reduciendo la actividad el


8

No soy un experto en esto, pero puedo intentar aportar algunas respuestas:

  1. NetHack y su brethern son de código abierto y dependen en gran medida de la generación de niveles de procedimiento (mapas). Enlace a las descargas de la misma. Si está más interesado en la generación de paisajes / texturas / nubes, le recomiendo que busque en Gamasutra y GameDev, que tienen bastantes artículos sobre esos temas.

  2. AFAIK No creo que haya mucha diferencia entre los idiomas. La mayor parte del código que verá estará en C / CPP porque sigue siendo el idioma oficial de los desarrolladores de juegos, pero puede usar lo que quiera ...

  3. Bueno, depende si tiene un proyecto que pueda beneficiarse de dicha tecnología. Vi la generación de procedimientos utilizada en simuladores para el ejército (que puede considerarse un juego, aunque no son muy jugables :)).

Y una pequeña nota: mi definición es que si la generación de procedimientos es algo que genera muchos datos a partir de una pequeña cantidad de reglas o patrones y mucha aleatoriedad, sus resultados pueden variar :)


8

Hay un excelente libro sobre el tema:

http://www.amazon.com/Texturing-Modeling-Third-Procedural-Approach/dp/1558608486

Está sesgado hacia la generación de animación y efectos visuales en tiempo no real, pero supongo que la teoría y las ideas se pueden usar fuera de estos campos.

También vale la pena mencionar que hay un paquete de software profesional que implementa un flujo de trabajo de procedimiento completo llamado Houdini de SideFX. Puede usarlo para inventar y crear prototipos de soluciones de procedimiento a problemas, que luego puede traducir al código.

Si bien es un paquete bastante costoso, tiene una licencia de evaluación gratuita, que se puede utilizar como una herramienta educativa y / o de ingeniería muy agradable.


7

La generación de procedimientos se usa mucho en el demoscene para crear gráficos complejos en un pequeño ejecutable. Will Wright incluso dijo que se inspiró en el demoscene mientras hacía Spore. Ese puede ser tu mejor lugar para comenzar.

http://en.wikipedia.org/wiki/Demoscene


3

Lo más importante es analizar cómo se estructuran las carreteras, ciudades, bloques y edificios. descubra qué tienen en común, por ejemplo, todos los edificios. mira fotos, mapas, planos y realidad. Si lo hace, estará un paso por delante de las personas que consideran la construcción de ciudades como una cuestión meramente tecnológica.

a continuación, debe desarrollar soluciones sobre cómo crear esa geometría en pasos pequeños y distintos. tienes que definir reglas que componen una ciudad creíble. Si te gusta el modelado 3D, debes repensar mucho de lo que has aprendido para que la computadora pueda seguir tus instrucciones en cualquier situación.

Para no perder la pista, debe configurar muchos operadores que solo son responsables de pequeñas partes de todo el proceso. eso hace que la depuración, la expansión y la mejora de su sistema sean mucho más fáciles. en el siguiente paso, debe vincular esos operadores y verificar los resultados cambiando los parámetros.

He visto demasiados "generadores de ciudades" que consisten principalmente en cuadros de forma aleatoria con algunas texturas de ventana en ellos: (


3

(Más de 10 años después ...)

La generación de procedimientos solo significa que el código se usa para generar los datos en lugar de que se hagan a mano. Por ejemplo, si desea generar un bosque con varios árboles, no va a diseñar cada árbol a mano , por lo que la codificación es más eficiente para generar las variaciones. Podría ser la generación de los gráficos del árbol, tamaño, estructura, ubicación ...

En general, existe algún tipo de interacción con algunas reglas , además de que puede agregar algo de aleatoriedad y lógica propia, combinar todas estas técnicas ... Cualquier cosa un tanto caótica pero no demasiado caótica puede producir resultados interesantes.

Aquí hay algunas técnicas notables:

Algunos juegos famosos por su generación procesal:

Video tutorial sobre Generación de masas de tierra procesales .

La conferencia sobre generación de contenido procesal para juegos tiene muchos videos sobre el tema: todo el procedimiento

Que te diviertas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.