Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox
EN CHANTIER
Cette page n'est pas terminée et est en cours d'écriture. Merci de votre patience.

Menu général

Compatible ActionScript 3. Cliquer pour en savoir plus sur les compatibilités.Par Monsieur Spi, le 24 septembre 2010

Mode7 : Définir le terrain

Nous allons nous intéresser à la construction du terrain de jeu et aborder ici quelques notions spécifiques aux processus qui se trouvent derrière le fonctionnement de votre moteur.

Le moteur comprend tout ce qui va gérer les déplacements et actions à mener autant pour votre caméra que pour vos sprites. La plupart du temps vos jeux comprennent également des zones franchissables et d’autres qui vont interagir avec le joueur.

Structure du terrain

Prenons l’exemple d’un circuit de voiture comme dans Super Mario Kart.
Les karts réagissent différemment en fonction du sol sur lequel ils se trouvent.
(terre, bitume, herbe, eau, turbo, ralentissement, bosse, creux, etc…).

Ce qu’il est important de saisir ici c’est la différence qui existe entre le moteur et l’affichage de votre jeu.
Le moteur effectue les calculs de position, rotation etc… de l’objet dans le plan en 2 dimensions.
L’affichage est le résultat de la projection, c’est à dire la représentation de ce que vous êtres sensés voir une fois tous les calculs effectués dans le plan.

Vous allez donc devoir poser des repères ou des marqueurs sur le circuit que le moteur va pouvoir interpréter et traiter.

Il existe différentes méthodes pour faire correspondre vos marqueurs avec le terrain, la plus classique, et celle que les développeur auront tendance à choisir instinctivement, c’est d'utiliser une grille virtuelle (un tableau à deux dimensions ou une seule selon le développeur) représentant le terrain.

A gauche terrain est composé d’un bitmap d’une taille définie, qu’il est possible de symboliser par une grille virtuelle (à droite). Chaque case de la grille contient un chiffre, 0 pour la route, 1 pour la terre, 2 pour un objet (turbo), 3 pour un autre objet (bosse), etc… (dans l’exemple ci-dessus j’ai remplacé les chiffre par des cases noire pour une meilleure lisibilité).

L’inconvénient de cette technique c’est qu’il vous faudra travailler avec de très grandes grilles. En effet, plus les cases de votre grille sont nombreuses, et donc petites, et plus vous pourrez affiner les détections.

Or pour un jeu comme Super Mario Kart le nombre d’informations nécessaires pour gérer les objets est assez peu important, vous avez quelques surfaces différentes (terre, herbe, bitume, eau, …) et quelques objets fixes (turbos, bosses, trous, ralentisseurs, …). Alors que ce qui importe surtout c’est une détection très fine des différents tracés des sols, ce que vous ne pourrez obtenir qu’en travaillant au pixel près.

Généralement on utilise le Tile Based pour essayer de soulager l’affichage d’images trop grandes, ce qui n’est pas notre cas ici puisque nous travaillons avec une projection, c’est à dire un retraçage des lignes visibles.

Votre terrain, pour être efficace et pas trop pixellisé, doit faire une taille minimale de 1024*1024 pixels, donc 1 048 576 cases (une par pixel) à gérer dans votre grille !! Vous conviendrez aisément qu’inscrire plus d’un million de pixels à la main dans une grille est tout à fait ingérable.

En y réfléchissant un peu un bitmap (une image) est par définition une grille composée de pixels, avec autant de colonnes et de ligne que nécessaire. Nous allons donc tout simplement utiliser une autre image de la taille du plan qui ne comporte que des couleurs spécifiques, une par type de marqueur et donc par type de terrain et d’objet utile pour nos détections.

L’avantage c’est que vous pouvez facilement répertorier les objets se trouvant sur votre terrain de manière graphique, il suffit de les dessiner d’une couleur unie puis de vérifier la couleur du pixel où se trouve le kart. Une couleur différente pour le terrain entraine une réaction différente du kart.

Pourquoi ne pas utiliser l’image du plan directement ?
Tout simplement parce que votre plan comporte une gamme de couleurs variable, il est par exemple tout à fait possible de retrouver du vert dans une texture représentant de la terre. Or nous détectons le terrain au pixel près en fonction de sa couleur, comment être sur dans ce cas qu’il s’agit bien de la terre et non de l’herbe ?

La solution est d’utiliser des couleurs unies pour chaque type de terrain et chaque type d’objet fixe. Vous avez donc d’un côté la texture de votre terrain (à gauche) et de l’autre la grille de votre terrain (à droite)

Certains préfèrent séparer chaque type de terrain via des images différentes, sachez que rien ne vous empêche d’utiliser un seul bitmap sur lequel vous posez des couleurs différentes.

A retenir

Éviter d'utiliser des tableaux inutiles et extrêmement longs à éditer.
Préférer travailler avec des images dont le nombre de couleurs est limité pour vérifier les terrains.
Les objets réagissent en fonction de la couleur qu'ils survolent.

Page suivante > « 06-Sprites et objets »