2008-09-30 9 views
128

Procedural generation ha aparecido recientemente (por Spore, MMO, etc.), y parece una técnica de programación interesante/poderosa.

Mis preguntas son las siguientes:¿Cómo se puede comenzar con la generación de procedimientos?

  • ¿Conoce medianas cualquier proyecto que utilizan técnicas de generación de procedimiento?
  • ¿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)
+8

Esta pregunta parece ser cada vez un poco de atención desde la reciente liberación de ningún hombre de Cielo, interesante – Liam

Respuesta

107

probablemente debería comience con un poco de teoría y ejemplos simples como el midpoint displacement algorithm. También debe aprender un poco sobre Perlin Noise si está interesado en generar gráficos. Lo usé para comenzar con mi proyecto de último año sobre generación de procedimientos.

Fractals están estrechamente relacionados con la generación de procedimientos.

Terragen y SpeedTree le mostrará algunas posibilidades increíbles de generación de procedimientos.

La generación de procedimientos es una técnica que se puede utilizar en cualquier idioma (definitivamente no está restringido a lenguajes de procedimiento como C, ya que se puede usar en lenguajes OO como Java e idiomas lógicos como Prolog). Una buena comprensión de la recursión en cualquier idioma fortalecerá su comprensión de la generación de procedimientos.

En cuanto a código 'grave' o no juego, técnicas de generación de procedimiento se han utilizado para:

  • simular el crecimiento de las ciudades con el fin de planificar la gestión del tráfico
  • para simular el crecimiento de la sangre vasos
  • SpeedTree se utiliza en películas y presentaciones arquitectónicas
7

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

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

+12

Encontré el demoscene como un lugar difícil de aprender. – Liam

8

yo no soy un experto en esto, pero puedo tratar de aportar algunas respuestas:

  1. NetHack y es Brethern son de código abierto y se basan en gran medida en la generación procesal de los niveles (mapas) Link a las descargas de la misma. Si está más interesado en la generación paisaje/textura/nube, le recomendaría buscar 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 ve estará en C/CPP porque sigue siendo el idioma oficial de Game Developers, pero puede usar cualquier cosa que desee ...

  3. Bueno, depende si tiene un proyecto que puede beneficiar de tal 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 si la generación procesal es algo que genera una gran cantidad de datos de una pequeña cantidad de reglas o patrones y un montón de aleatoriedad, sus resultados pueden variar :)

46

procesal contenido Generación wiki:

http://pcg.wikidot.com/

si lo que desea no está allí, a continuación, agregarlo;)

+9

¡No puedo copiar todo el wiki aquí! No hay 'parte esencial'. – Martin

8

hay un excelente libro sobre el tema:

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

está sesgado hacia las no la generación de efectos visuales y animación en tiempo real, pero la teoría y las ideas son utilizables fuera de estos campos, supongo.

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

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

12

La generación de contenido procedimental ahora está escrita para la GPU, por lo que deberá conocer un lenguaje de sombreado. Eso significa GLSL o HLSL. Estos son idiomas 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 quiere pasar directamente a la escritura de sombreadores sin tener que pasar el tiempo (considerable) necesario para configurar un motor de juegos OpenGL/DirectX.

El contenido de procedimiento comienza con ruido.

Así que tendrá que aprender sobre el ruido Perlin (y su sucesor Simplex noise).

Shadertoy es una excelente referencia para aprender sobre la programación de sombreadores. Yo recomendaría que lo hicieras una vez que le hayas dado a shader la codificación, porque el código allí no es para los matemáticamente aprensivos, pero así es como se hace el contenido de los procedimientos.

Shadertoy fue creado por un genio procedimental, Inigo Quilez, un producto de la escena de demostración que trabaja en Pixar. Él tiene some youtube videos (great example) de sesiones de codificación en vivo y también puedo recomendar estos.

+13

¿Qué quiere decir con "la generación de contenido procedimental está ahora escrito para la GPU"? ¿Estás hablando de cosas como hojas de hierba? No quiere decir generación de mapas o ciudades para juegos, por ejemplo, ¿verdad? – Dronz

+2

Sí, creo que el comentario de "todos" 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 el código en un video. –

+0

Alguien que quiere 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. –

3

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

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

para no perder la ruta debe configurar una gran cantidad de 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 ciudad" que consisten principalmente en cajas en forma de azar con algunas texturas ventana en ellos: (

6

Si quieres un ejemplo de un generador de simulación placas tectónicas mundo, la erosión, la lluvia- sombra, etc. echar un vistazo a: https://github.com/ftomassetti/lands

además de eso hay también un simulador de civilizaciones evolución:

https://github.com/ftomassetti/civs

Un blog lleno de recurso interesante es:

dungeonleague.com/

Se abandonada ahora, pero usted debe leer todos sus mensajes

Cuestiones relacionadas