Game Connection 2013 : La génération procédurale

Alexandre Laurent

La quatrième session technique durant la Game Connection 2013 a été présentée par Maurico Hollando du studio Silvermile.

Commentez

- Titre : Game Connection 2013 : La génération procédurale

- Auteur : Alexandre Laurent

- Parution : 6 février 2014

- Licence : Copyright ® 2014 LittleWhite. 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.

Sommaire

- Navigation

- II. Introduction

- III. La génération procédurale

- IV. Pourquoi utiliser la génération procédurale

- V. Tests

- VI. Création d'un monde procédural

- VI-A. Génération de niveaux

- VI-B. Calcul de la difficulté du niveau

- VI-C. Adapter la difficulté

- VI-D. Optimisations

- Navigation

Navigation

Retrouvez les autres conférences et le compte rendu de l'événement.

II - Introduction

SilverMile est un studio de jeu vidéo basé à Helsinki en Finlande se consacrant aux « free to play » pour mobiles et PC.

III - La génération procédurale

La génération procédurale consiste en la création de n'importe quelles ressources ou fonctionnalités crées à l'aide d'un algorithme et par des paramètres qui lui sont passés. Cela peut être :

- l'emplacement des ennemis et des objets ;

- les armes et les spécifications de celles-ci ;

- les mondes 2D ;

- les jeux isométriques ou les jeux vus de dessus (Binding of Isaac) ;

- les mondes 3D (Beneath Apple Mano (1978)), Elite (1980) ;

- les jeux mobiles.

IV - Pourquoi utiliser la génération procédurale

La génération procédurale nécessite beaucoup de travail durant la phase initiale du développement, mais une fois que le système est en place, l'ajout de nouveau contenu est aisé.

Cette technique vous permettra de permuter des espaces et environnements ou de concevoir un jeu qui s'adapte au joueur (Left 4 Dead). Dans certains cas, le joueur se sentira comme un chasseur de trésors : sa partie est unique, c'est son trésor, rien que pour lui (qu'il peut montrer aux autres). Le système peut aussi apporter de la variété (Borderlands).

V - Tests

Pour pouvoir tester votre jeu, il faut être capable de récréer plusieurs fois une même situation. Pour cela, vous allez pouvoir utiliser la même graine à l'origine de vos nombres aléatoires.

De plus, comme le jeu est généré par le code, il est plus facile de le tester automatiquement, notamment avec des tests unitaires.

VI - Création d'un monde procédural

Un monde procédural possède un environnement fort pour la partie narrative du jeu. En effet, les joueurs vont associer les différents éléments du jeu et les interpréter dans leur ensemble. Ainsi, le joueur apporte ses propres expériences et interprétations pour les mélanger à la narration du jeu. La narration est plus paisible et moins mise en avant.

Les sous-entendus sont très efficaces (les meilleurs murs sont ceux qui sont sous-entendus). Un autre point est lié à la loi de l'enfermement, notamment dans Portal où vous ne verrez pas l'extérieur, mais vous en recevez une image détaillée).

VI-A - Génération de niveaux

Dans un système basé sur une grille, il est simple de contrôler les environnements, car ils peuvent être interprétés à l'aide de paramètres mesurables. La modification de ces paramètres et la grille permettront d'avoir un mécanisme facilement redimensionnable et s'adaptant à des besoins individuels.

Un niveau est constitué d'une série d'espaces dans la grille. Le niveau doit au moins avoir une entrée et une ou plusieurs sorties et un chemin. Vous pouvez générer plusieurs types d'espaces :

- démarrage ;

- fin ;

- puzzle ;

- solution ;

- thématique ;

- général.

Un puzzle doit proposer un problème et une solution. Évidemment, il faut un chemin possible entre le problème et la solution, sans quoi le niveau est impossible à passer.

Les étapes de la création d'un niveau sont :

- création du monde (création de la grille et de la forme du monde) ;

- création du réseau (placement des différentes pièces/motifs, chacune veut être au plus proche des autres (diagramme de pertinence). Les paramètres du diagramme de pertinence permettent de générer différents thèmes ;

- création des connexions entre les salles (diagramme des chances de connexions (nombre de connexions)). Les différents paramètres permettent de créer des thèmes ;

- définition des zones et calcul des données importantes (distance de départ à l'arrivée (de même dans le sens inverse), chemin optimal, distance entre le puzzle et la solution) ;

- remplissage des zones (détermine le nombre de puzzles, ajoute les solutions et les place de façon à ce qu'elles soient toujours accessibles de leur puzzle respectif) ;

- ajout des objets du thème de la zone, des objets optionnels et de décoration, des ennemis, des sons ambiants.

VI-B - Calcul de la difficulté du niveau

Pour calculer la difficulté du niveau, vous pouvez utiliser l'algorithme de calcul de distance menant à la fin du niveau (et cela, en incluant les chemins menant aux solutions). Vous pouvez aussi prendre en compte le nombre de puzzles sur le chemin solution, le nombre d'embranchements, la taille totale du niveau.

VI-C - Adapter la difficulté

Il est possible d'adapter la difficulté du jeu suivant ce que le joueur arrive à faire : combien de récompenses le joueur a-t-il manquées, à quelle distance il était du chemin principal.

Il en est de même avec les solutions (combien de temps il a eu la solution (clé) sans l'utiliser.

Vous pouvez déterminer la difficulté idéale pour le joueur grâce à ses différentes parties. Celle-ci est par exemple, là où le joueur obtient 90 % de succès.

Une autre métrique intéressante est de savoir combien de fois le joueur peut échouer sans abandonner pour autant le jeu. Dans un tel cas, vous pouvez lui faciliter le jeu avant qu'il ne l'abandonne.

VI-D - Optimisations

L'utilisation d'un gestionnaire d'instances et d'une gestion intelligente de la mémoire est un plus dans ce genre de cas.

Les combinaisons de modèles 3D peuvent être mises en cache sur le disque afin d'optimiser une future utilisation.

Il est aussi possible d'utiliser des optimisations sur les algorithmes de construction de graphes et de recherche dans les graphes, mais les développeurs chez SilverMile n'ont pas remarqué de réels gains.

Navigation

Retrouvez les autres conférences et le compte rendu de l'événement.