Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

Unite Europe 2016

Génération procédurale de contenu

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

Aaron Chapin (développeur chez Goodgame Studios) a donné une conférence lors du Unite Europe 2016 sur la génération procédurale de contenu.

II. Vidéo


Unite Europe 2016 - Génération procédurale de contenu


III. Résumé

Aaron Chapin donne un aperçu de ce qu'est la génération procédurale de contenu et comment la mettre en place. Même si la conférence a eu lieu au cours du Unite Europe en 2016, celle-ci peut être abordée par n'importe quel créateur de jeux vidéo et n'est donc pas limitée aux utilisateurs du moteur de jeux vidéo Unity.

III-A. Définition

La génération procédurale de contenu est le fait de créer une ressource (texture, niveau…) à l'aide d'un algorithme utilisant un processus aléatoire ou pseudo aléatoire. Ainsi, le contenu généré peut offrir une infinité de parties différentes.

III-B. Qu'est-ce que l'on peut générer de manière procédurale ?

À l'aide de la génération procédurale, vous pouvez générer :

  • des planètes ;
  • des donjons ;
  • des armes (Bordelands) ;
  • de la musique ;
  • des puzzles ;
  • des religions ;
  • des ennemis ;
  • des animations ;
  • des mondes (Dwarf fortress).

En conclusion, il est possible de tout générer de manière procédurale.

III-C. Quelles sont les techniques utilisées pour la génération procédurale ?

Chaque ressource demande une technique appropriée pour générer un résultat intéressant. Généralement, les développeurs utilisent :

L'important est de déterminer les entrées du système et les résultats.

III-D. Intérêt du public et des développeurs

Que ce soit pour les joueurs ou les développeurs, la génération procédurale est intéressante. Du point de vue des joueurs, un tel monde offre une partie unique à chaque joueur, qu'il peut potentiellement partager (grâce à la graine), mais surtout, à partir de laquelle il peut raconter sa propre histoire à ses amis. De plus, cela augmente le temps de jeu et l'intérêt que le joueur aura dans sa partie.

Pour les créateurs, les designers peuvent gagner du temps en demandant à la machine de générer le monde correctement. Le jeu sera aussi plus intéressant à regarder à travers les Let's Play.

III-E. Implémentations

III-E-1. Fallout 4

L'implémentation est importante. En effet, il est possible que la génération procédurale de contenu apporte une routine lorsque celle-ci est mal exécutée (Fallout 4). Les quêtes générées automatiquement étant trop similaires, le joueur s'en lasse.

III-E-2. Génération de voitures (modèle 3D)

Pour générer une voiture (qui est un modèle 3D), il est nécessaire de générer les sommets, les normales et les coordonnées de textures. Ensuite, les règles de la programmation 3D s'appliquent (suivre l'ordre des sommets pour l'orientation des faces, déterminer les coordonnées de texture pour telle ou telle face).

III-E-3. À la création du jeu

Il n'est pas nécessaire d'utiliser la génération procédurale uniquement au cours de la partie. Il est possible de créer des outils pour les artistes ou les designers afin de générer automatiquement une partie de leur travail, qu'ils pourront modifier pour correspondre aux besoins du jeu. Ainsi, vous gagnerez du temps de production.
Finalement, il suffit de rajouter le contenu dans le jeu, tel que vous le feriez avec une ressource créée manuellement.

III-E-3-a. Ajouter des fonctionnalités à Unity

Unity permet d'étendre l'éditeur à travers les scripts. Pour cela, deux mots-clés peuvent être intéressants :

 
Sélectionnez
[CustomEditor(typeof(MyClass))]
public class MyClassEditor : Editor {

    public override void OnInspectorGUI()
    {

et

 
Sélectionnez
public class CustomEditorWindow : EditorWindow {

    [MenuItem("Unite 2016/ProcGen")]
    public static void ShowWindow()
    {
        EditorWindow.GetWindow(typeof(CustomEditorWindow));
    }

    void OnGUI()
    {
        GUILayout.Label("Whoo Unite!";
    }

III-E-4. Génération de terrain

Un terrain est aussi un modèle 3D. Il est aussi possible d'utiliser le système de terrain de Unity. Les techniques intéressantes pour cela sont les diagrammes de Voronoi, Lloyd Relaxation et la triangulation de Delaunay. Ensuite, vous pouvez changer la hauteur de chaque cellule pour créer votre relief. Pour une rivière, vous pouvez utiliser un algorithme de calcul des flux d'eau. Et finalement, pour les biomes vous pouvez utiliser le diagramme de Whittaker. Un peu de bruit pour augmenter l'aspect érodé et le tour est joué.

III-E-5. Génération de niveau

Lors de la génération d'un niveau, il faut veiller à ce que le joueur puisse atteindre la sortie. Vous pouvez utiliser une bibliothèque de segments (grammaire) que vous allez coller les uns à la suite des autres (Spellunky, Binding of Isaac, XCom 2).

Sinon, vous pouvez utiliser un explorateur aléatoire (Nuclear Throne), ou une subdivision récursive (labyrinthe). Chaque sous-portion sera creusée pour créer une entrée et une sortie, connectées aux portions précédentes et suivantes.

III-E-6. Circuit

Pour créer un circuit (une boucle), vous pouvez placer des blocs se recouvrant les uns sur les autres et dessiner votre circuit en faisant la boucle autour de ces blocs.

III-F. Outils

Certains outils pour les jeux vidéo utilisent la génération procédurale :

IV. Liens

V. Commenter

Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2016 Unity Technologies. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.