Question

La

génération procédurale a été récemment mise à l'honneur (par Spore, MMO, etc.), et cela semble être une technique de programmation intéressante / puissante.

Mes questions sont les suivantes:

  • Connaissez-vous des projets de taille moyenne utilisant des techniques de génération procédurale?
  • Quelle langue / classe de langues convient le mieux à la génération procédurale?
  • Pouvez-vous utiliser la génération procédurale pour " sérieux " code? (c'est-à-dire pas un jeu)
Était-ce utile?

La solution

Vous devriez probablement commencer par un peu de théorie et par des exemples simples tels que l’ algorithme de déplacement du point médian . Vous devriez également en savoir un peu plus sur Noise Perlin si vous souhaitez générer des graphiques. J'ai utilisé cela pour me lancer dans mon projet de dernière année sur la génération de procédures.

Les fractales sont étroitement liées à la génération procédurale.

Terragen et SpeedTree vous montrera des possibilités étonnantes de génération de procédures.

La génération procédurale est une technique qui peut être utilisée dans n’importe quel langage (elle n’est certainement pas restreinte aux langages procéduraux tels que C, car elle peut être utilisée dans les langages OO tels que Java et les langages Logic tels que Prolog). Une bonne compréhension de la récursion dans toutes les langues renforcera votre compréhension de la génération procédurale.

En ce qui concerne le code "sérieux" ou le code du jeu, les techniques de génération procédurale ont été utilisées pour:

  • simule la croissance des villes afin de planifier la gestion du trafic
  • simuler la croissance des vaisseaux sanguins
  • SpeedTree est utilisé dans les films et les présentations architecturales

Autres conseils

Wiki de génération de contenu procédural:

http://pcg.wikidot.com/

si ce que vous voulez n'est pas là, ajoutez-le;)

La génération de contenu procédural est désormais entièrement écrite pour le GPU. Vous devez donc connaître un langage shader. Cela signifie GLSL ou HLSL. Ce sont des langues liées respectivement à OpenGL et DirectX.

Bien que ma préférence personnelle soit pour Dx11 / HLSL en raison de sa rapidité, d’une courbe d’apprentissage plus facile et Frank D Luna , OpenGL est pris en charge sur d'autres plates-formes.

Vous devriez également consulter WebGL si vous souhaitez passer directement à l'écriture de shaders sans perdre le temps (considérable) nécessaire à la configuration d'un moteur de jeu OpenGL / DirectX.

Le contenu procédural commence par du bruit.

Vous devrez donc vous familiariser avec le bruit Perlin (et son successeur Bruit simulé ).

Shadertoy est une excellente référence pour en savoir plus sur la programmation par shader. Je vous recommanderais d'y aller une fois que vous avez codé le shader vous-même, car le code n'existe pas mathématiquement, mais c'est ainsi que le contenu procédural est fait.

Shadertoy a été créé par un génie procédural, Inigo Quilez , un produit du monde de la démonstration qui travaille chez Pixar. . Il a des vidéos youtube ( excellent exemple ) de sessions de codage en direct et je peux également les recommander.

Je ne suis pas un expert en la matière, mais je peux essayer d'apporter quelques réponses:

  1. NetHack et ses partenaires sont open source et reposent fortement sur la génération procédurale de niveaux (cartes). Créez un lien avec les téléchargements. Si vous êtes plus intéressé par la génération de paysages / textures / nuages, je vous recommande de rechercher Gamasutra et GameDev qui contient de nombreux articles sur ces sujets.

  2. J'accepte que je ne pense pas qu'il y ait beaucoup de différence entre les langues. La plupart du code que vous verrez sera dans C / CPP car il reste encore la langue officielle des développeurs de jeux, mais vous pouvez utiliser ce que vous voulez ...

  3. Cela dépend si vous avez un projet qui peut tirer parti de cette technologie. J'ai vu la génération procédurale utilisée dans les simulateurs pour l'armée (qui peut être considéré comme un jeu, bien qu'ils ne soient pas très jouables:)).

Et une petite remarque - ma définition si la génération procédurale est quelque chose qui génère beaucoup de données à partir d’un petit nombre de règles ou de motifs et beaucoup d’aléatoire, vos résultats peuvent varier:)

Il existe un excellent livre sur le sujet:

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

Il est axé sur les effets visuels et la génération d’animation en temps non réel, mais la théorie et les idées sont utilisables en dehors de ces champs, je suppose.

Il convient également de mentionner qu’il existe un progiciel professionnel qui implémente un flux de travail procédural complet appelé Houdini de SideFX. Vous pouvez l’utiliser pour inventer et mettre au point des solutions procédurales aux problèmes, que vous pourrez ensuite traduire en code.

Bien qu’il s’agisse d’un package assez coûteux, il est fourni avec une licence d’évaluation gratuite, qui peut être utilisée comme un très bon outil pédagogique et / ou technique.

Si vous voulez un exemple de générateur de tectonique de plaques, d'érosion, de pluie-ombre, etc., consultez: https://github.com/ftomassetti/lands

A cela s’ajoute un simulateur d’évolution des civilisations:

https://github.com/ftomassetti/civs

Un blog complet sur les ressources intéressantes est:

dungeonleague.com /

Il est abandonné maintenant, mais vous devriez lire tous ses messages

La génération procédurale est fortement utilisée dans la démo-séquence pour créer des graphiques complexes dans un petit exécutable. Will Wright a même dit qu'il s'était inspiré de la demoscene pour fabriquer Spore. C'est peut-être votre meilleur endroit pour commencer.

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

l’important est d’analyser la structure des routes, des villes, des blocs et des bâtiments. Découvrez ce que tous les bâtiments, par exemple, ont en commun. regardez des photos, des cartes, des plans et la réalité. Si vous faites cela, vous aurez une longueur d’avance sur ceux qui considèrent la construction de villes comme une simple question de technologie informatique.

Ensuite, vous devez développer des solutions pour créer cette géométrie en plusieurs étapes distinctes. vous devez définir des règles qui constituent une ville crédible. si vous aimez la modélisation 3D, vous devez repenser tout ce que vous avez appris pour que l'ordinateur puisse suivre vos instructions dans toutes les situations.

pour ne pas perdre la trace, vous devez configurer de nombreux opérateurs qui ne sont responsables que de petites parties du processus. cela facilite beaucoup le débogage, l’extension et l’amélioration de votre système. à l'étape suivante, vous devez lier ces opérateurs et vérifier les résultats en modifiant les paramètres.

J'ai vu trop de & génér; générateurs de ville " qui consistent principalement en des boîtes de forme aléatoire avec des textures de fenêtre: (

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top