Tutoriel/Créer un niveau

De WikiPlee.
Vidéo
Tutoriel-Créer un niveau.png
Voir sur Blip.tv Télécharger

Ce tutoriel décrit les bases de la création d'un niveau pour le jeu Plee the Bear en utilisant l'éditeur de niveaux.

Sommaire

Environnement de travail

Une simple conception de niveau ne demande qu'une préparation minimale, restreinte aux éléments détaillés dans la partie « Dossier des données » du tutoriel « Préparer une personnalisation du jeu ». Ces éléments sont expliqués ici et nous supposons par ailleurs que le jeu Plee the Bear est installé et se lance par la commande plee-the-bear.

Dans le répertoire de travail, un dossier data est créé. Ce dossier sera par la suite indiqué au moteur du jeu afin qu'il y cherche les ressources du jeu. Un sous-dossier nommé data/level est ensuite ajouté afin de recevoir les niveaux enregistrés ou compilés.

Note (m)
Start hand.png Cette arborescence est déjà disponible dans le fichier custom-bear.tar.gz obtenu à l'issue du tutoriel « Préparer une personnalisation du jeu ».

Dans la suite du tutoriel, un niveau sera créé dans le fichier data/level/tuto-level.lvl et automatiquement compilé en tant que data/level/tuto-level.cl. Finalement, il suffira d'exécuter la ligne suivante pour lancer un niveau :

 plee-the-bear --data-path=./data --start-level=level/tuto-level.cl

Où le premier paramètre demande de prendre le dossier data en compte dans la recherche des ressources et le second donne le chemin du niveau à lancer, relativement au dossier des données.

Préparation du niveau

La fenêtre des propriétés d'un niveau dans l'éditeur de niveaux.

Après avoir lancé l'éditeur de niveaux, nous créons un nouveau niveau via le bouton « Nouveau » de la fenêtre principale ou en passant par le menu « Niveau/Nouveau… ». La fenêtre des propriétés du niveau s'affiche alors. Nous devons y indiquer la taille du niveau. La résolution par défaut de l'écran dans Plee the Bear est de 800 pixels sur 600. Nous allons ici indiquer 1600 en largeur et 1200 en hauteur, afin d'avoir un niveau mesurant quatre fois la taille de l'écran. Les autres champs sont facultatifs, nous les laissons vides pour l'instant.

Détails (m)
Start hand.png Le champ « Musique » permet d'indiquer la musique qui sera jouée en boucle durant le niveau, tandis que le champ « Nom » permet de donner un nom au niveau, qui sera affiché à son lancement dans Plee the Bear.
La fenêtre des propriétés d'un calque dans l'éditeur de niveaux.

Dans l'onglet « Calques » de la fenêtre principal de l'éditeur, nous cliquons sur le bouton « Nouveau » pour créer le calque principal du niveau. La fenêtre des propriétés d'un calque s'affiche alors. Le nom de la classe du calque doit être action_layer. Il s'agit en effet du seul type de calque dans lequel la physique s'applique. La taille à indiquer doit être égale à celle du niveau, soit 1600 en largeur et 1200 en hauteur.

Détails (m)
Start hand.png Avoir des calques de taille différentes, s'ils sont ordonnés du plus petit au plus grand, permet d'obtenir un effet de profondeur. Le moteur de jeu utilise pour cela une technique nommée « défilement parallaxe » pour positionner la caméra dans les calques. Cette technique implique des décalages sur les calques dont la taille est différente de celle du niveau. Ainsi, si le calque contenant les joueurs n'a pas la taille du niveau, alors ceux-ci n'auront plus l'air d'être suivis par la caméra.

Ajouter des objets au niveau

La liste des objets dans la fenêtre principale de l'éditeur de niveaux.

Cette section décrit la construction du niveau par l'ajout d'objets dans le calque d'action. Les objets disponibles sont listés dans l'onglet « Classes » de la fenêtre principale. Pour en ajouter un au niveau, il suffit de faire un glisser-déposer depuis son nom dans cette liste vers la fenêtre d'édition du niveau. L'objet sera alors ajouté dans le calque actif.

Structure du niveau

Structure du niveau de ce tutoriel. Les objets utilisés sont : (1) block pour les murs et les sols ; (2) straight_slope pour les sols et plafonds près des pentes ; (3) slope pour les pentes ; (4) descending_ceiling pour les plafonds inclinés. Les cotés alignant et l'inclinaison des pentes sont représentés par un trait vert épais.

La structure des niveaux est principalement constituée de quatre types d'objets présentés ci-dessous. Chacun de ces objets est utilisé dans le niveau construit dans ce tutoriel et illustré par l'image ci-contre.

L'objet « block » est un bloc utilisé pour les murs, les sols et les plafonds. Lorsqu'un objet entre en collision avec lui, il est ré-aligné sur le premier côté du bloc qu'il a touché. Il est possible de désactiver cet effet sur certains cotés du bloc. En pratique, le côté haut est actif pour les sols, le côté bas pour les plafonds et les côtés gauche et droit respectivement pour un mur à droite et un mur à gauche.

L'objet « slope » permet de faire des pentes. Son principal paramètre est un entier nommé slope.steepness et représentant l'inclinaison de la pente par le décalage de hauteur entre le côté gauche et le côté droit. Une valeur négative fait commencer le sol dans le coin en haut à gauche de l'objet et la fait se terminer sous le coin en haut à droite. À l'opposé, une valeur positive le fait commencer sous le coin en haut à gauche pour terminer sur le coin en haut à droite. Il est possible d'activer l'alignement par le dessous de la pente via le paramètre slope.opposite_side_is_active, de même que ses côtés via les paramètres slope.left_side_is_active et slope.right_side_is_active.

L'objet « descending_ceiling » est l'équivalent de l'objet slope pour les plafonds. Il s'agit en effet d'un plafond incliné.

Enfin, l'objet « straight_slope » est un bloc particulier à utiliser pour placer un sol en juxtaposition à une pente, ou un plafond dans la continuité d'un plafond incliné. Il est nécessaire de passer par ce type d'objet pour placer un sol dans la continuité du côté haut d'une pente. L'utilisation d'un objet de type block entraînera des problèmes d'alignement durant le jeu.

Paramétrage du niveau

En lançant le niveau tel quel, vous pourrez remarquer quelques manques. En particulier, il n'y a pas de joueur. Pour remédier à cela, il suffit d'ajouter un objet player_start_position qui créera un joueur si la valeur donnée au paramètre player_start_position.player_index est inférieure ou égale à la valeur de la variable de jeu scenario/players_count.

Le type de la caméra suivant les joueurs est shared_camera. Les caméras sont des objets qui représentent l'espace à afficher. Il n'y a toujours qu'une seule caméra active dans un niveau. Son contenu sera redimensionné pour tenir dans la fenêtre de jeu. Ainsi, si sa taille est plus grande que l'écran, les objets paraîtrons petit et inversement. Nous lui donnons donc une taille correspondant à l'écran, soit une largeur égale à 800 et une hauteur de 600.

L'objet world_parameters permet de configurer les constantes de la physique. Nous modifions dans Plee the Bear la valeur du paramètre world_parameters.unit, indiquant le nombre d'unités du monde dans un mètre réel. La valeur donnée est de 50, ce qui signifie qu'un objet mesurant 50 unités dans le jeu est l'équivalent d'un objet réel mesurant un mètre. La valeur donnée à world_parameters.gravity.y représente l'accélération donnée sur l'axe vertical et est de -60 (mètres par seconde), ce qui est beaucoup plus que la gravité réelle (-9,81 m.s-1, la valeur par défaut). Enfin, la valeur 0,001 est affectée à world_parameters.default_density. Elle représente la densité de l'air dans le monde et joue sur le comportement des objets.

Deux autres objets, relativement moins importants, sont aussi ajoutés au monde. Le premier est du type layer_border. Il ajoute automatiquement des objets sur les bords du calque, pour éviter que les joueurs puissent en sortir. Par défaut, ceux ajoutés en bas tuent les joueurs entrant en contact avec eux (leur classe est player_killer) et les autres sont des blocs n'alignant que les joueurs (leur classe est player_stop_block).

Note (m)
Start hand.png Si le joueur va contre ces blocs alignant, il aura l'air d'être aligné contre rien. Pour éviter cet effet, une solution est de limiter l'espace accessible à la caméra à l'aide de ses paramètres camera.valid_min.{xy} et camera.valid_max.{xy}.

Le second objet facultatif est add_ingame_layers. Il permet d'ajouter les calques d'interface permettant entre autres de mettre le jeu en pause, d'afficher l'introduction des niveaux et d'autres effets, les bulles, les scores, etc.

Décorations

L'objet principal pour les décorations est decorative_item. Il s'agit d'un objet affichant un sprite ou une animation et un texte éventuel. Si possible, ce type d'objet est ajouté dans un autre calque que le calque principal, afin de ne pas surcharger le moteur physique. Un calque de type decoration_layer est un candidat parfait.

Il existe un troisième type de calque, nommé pattern_layer. Celui-ci ne considère pas la position des objets qu'il contient et se contente de reproduire leur affichage sur tout le niveau. Il est utilisé pour produire des effets de pluie dans le niveau de la forêt.

Exécution du niveau

Le niveau et sa version compilée sont disponibles dans l'archive tuto-level.tar.gz. Il suffit d'extraire l'archive directement à la racine du dossier créé par l'archive custom-bear.tar.gz obtenue à l'issue du tutoriel « Préparer une personnalisation du jeu » pour pouvoir tester le jeu en lançant l'une des commandes ci-dessous.

Avec le script fourni dans l'archive :

 sh run-game.sh --start-level=level/tuto-level.cl

Avec le jeu Plee the Bear installé :

 plee-the-bear --data-path=./data --set-game-var-uint=scenario/players_count=1 --start-level=level/tuto-level.cl

Cette dernière commande fonctionnera aussi si vous ne passez pas par l'archive custom-bear.tar.gz, modulo l'adaptation de la valeur du paramètre --data-path.

Liste des Tutoriels (m)
Préparer une personnalisation du jeu · Créer un niveau · Créer un objet · Liens physiques · Création d'une animation · Script Scheme
Outils personnels