[TUTO]Créer un jeu de plateforme 2D avec GE

Bonjour tout le monde !
J'imagine que bon nombre d'entre vous aimeraient pouvoir créer leurs propres jeux video. Seulement le développement d'un jeu nécessite souvent l'apprentissage d'un langage de programmation ce qui est long et complexe. Cependant il existe des logiciels (comme Game Maker, Game Editor, The Game Factory ...) qui vous permettent de réaliser vos projet très rapidement.
Je vous propose donc un petit tutorial pour confectionner un moteur de jeu de plateforme 2D en quelques minutes avec Game Editor.

J'ai choisi Game Editor car il est grtuit, pas très difficile à utiliser et en plus il est executable sous linux.

A la fin du tuto vous serez capable de faire un jeu de ce style :
http://www.youtube.com/watch?v=V1CntfBVwS8

L'aspect graphique est bien entendu améliorable. J'ai pris des sprites de jeux NES pour tester.

I - Ce dont vous aurez besoin :

- Le logiciel Game Editor : http://game-editor.com/Download
- Les ressources que j'utilise dans le tuto : http://www.partage-facile.com/SIZLS0O9M7/ressources.zip.html

Pour que ce soit plus simple placez les fichiers ressources dans le répertoire "data" de Game Editor.

II - Mise en place du héros, d'une plateforme et de la gravité :

Commençons par placer une plateforme. Faites "add actor" donnez lui un nom "sol" par exemple puis faites "add". Vous verrez apparaitre un Pacman sur l'écran. C'est votre objet cependant il ne ressemble pas à une plateforme. On va donc changer son aspect. Faites un clic droit sur l'objet puis choisissez "actor control". Une fenêtre est apparue dans celle-ci cliquez sur "add animation". Donnez un nom à cette animation par exemple "sol". Et sur "file" allez chercher le fichier image correspondant dans notre cas c'est "sol.png". Cliquez sur "ok" puis "close". Voilà votre plateforme est créée, vous pouvez la placer où bon vous semble mais limitez vous au cadre blanc. En effet ce cadre délimite la vue et étant donné que l'on a pas encore mit en place le scrolling il vaut mieux pour l'instant se concentrer sur cette zone.
Maintenant créé un nouvel actor cette fois pour le héro. Changer l'animation en prenant "megaman.png".
Vous aurez quelques choses comme ceci :



On va à présent appliquer la gravité sur le héro. Pour celà faites un clic droit sur le héro puis "actor control". Dans la fenêtre suivante et dans l'onglet "events" cliquez sur "add" puis sur "Draw actor" puis "add action" et enfin "script editor". Ici vous aurez un editeur de texte qui vous permet d'entrer du code ecrivez tout simplement cette ligne :



Finissez en cliquant sur ok et "immediate action" ce sera le cas pour la majorité des cas.
Cette ligne de code aura pour effet de faire tomber le héro. Sauf qu'il ne va pas s'arrêter de tomber. Ils faut donc que lorsqu'il a contact avec le sol il se stop. Pour ce faire dans l"actor control" du hero faites un "add events", "collision", "top of the side" puis sélectionner l'objet correspondant donc "sol". Mettez "yes" à la ligne "repeat this event ..." et ajoutez comme action un "physical response" avec les paramètres suivant :



III - Les mouvements :

Maintenant on va faire bouger notre personnage. Tout d'abords le mouvement de gauche vers la droite. Ce mouvement fera suite à une pression sur la touche Flèche droite du clavier (enfin comme vous le souhaitez en fait). Mettez en place d'abords l'animation pour ce mouvement donc dans l'onglet animation de l'"actor control" du hero faites "add" et rentrez ceci :



Tant que vous y êtes ajoutez une autre animation pour le mouvement "megamanWalkL" avec les mêmes paramètres. Rajoutez également une animation avec le hero tourner vers la gauche. Appelez la "heroL" et selectionnez le fichier "megamanL"
N'oubliez pas de rechoisir l'animation de base du hero dans la liste juste à droite du "animation" :



Maintenant que les animes sont prêtes on va s'occuper des mouvements faites "add" dans "events" et "choisissez "key down" là tapez la touche voulue donc flèche droite du clavier. Puis dans "edit action" sélectionnez "Script editor" et rentrez ces lignes de code :



Faites la même chose pour le mouvement de droite vers là gauche en prenant soin de modifier là où c'est nécessaires (pression sur flèche gauche, animes "megamanWalkL" et xvelocity=-5).
Voilà votre héros bouge de droite à gauche selon les pression des flèches du clavier mais semble continuer à courir quand il est sur place. Donc il faut gérer les animes quand on relache les touche. Donc ajoutez un events, "key up" tapez la touche (flèche droite ici) , "Script editor" puis tapez ces lignes :



Faites de même pour la flèche gauche en oubliant pas de modifier le second paramètres de la fonction "changeAnimation" ("heroL" à la place de "hero").

Maitenant on va faire en sorte que notre héro puisse courir plus vite lorsqu'on pressera le bouton CTRL par exemple. Créez un nouvel event, "key down", "Script editor". Là faites "variables", "add variables" et nommez la "course". Faites ok et tapez la ligne de code: "course=1;". Faites aussi un "key up" avec comme ligne de code "course=0;". Maitenant il suffit de modifier les mouvements de gauche-droite et droite-gauche avec des conditions. Pour cela cliquez sur edit dans l'onglet event et selectionnez l'event correspondant. Puis rajoutez les boucles "if" et "else" au code comme ceci :



Ce qui signifie que si la variable "course" est égale à 1 donc à une pression sur la touche CTRL, le héro se déplacera deux fois plus vite. Reproduisez les boucles pour l'autre mouvement.

Un des ingrédients essentiels des jeux de plateforme est le saut. Pour le mettre en place faites un event "key down" sur la touche espace par exemple puis "Script editor". Créez une variables "saut" de la même manière que "course". Et tapez ce bout de code :



Ce bout de code permet un saut progressif en fonction de la durée de pression du bouton. Vous pouvez modifiez les valeurs pour ajuster le saut que vous voulez. Par contre dans l'état actuel le héro est capable de sauter qu'une fois puisque la variable "saut" n'est jamais remise à 0. Pour corriger ça faites un nouvel event "collision", "top side" sur le "sol" puis "script editor" avec la ligne de code "saut=0;"

Pour tester le saut on va rajouter une plateforme. Pour cela faites un clic droit sur le sol, "actor control" puis cliquez sur "clone" en haut à droite et "single". Une nouvelle plateforme apparait, placez la donc où vous le souhaitez.


IV - Les ennemies :

On va maintenant mettre un ennemi. Faites "add actor" nommez la "ennemy" et placez le où bon vous semble (sur une plateforme semble être un choix logique). Changez l'anime par celle de Goomba.png. On va faire comme dans Mario si le contact entre le hero et l'ennemi se fait par le haut (le hero au dessus) alors le monstre est détruit. Sinon c'est le héro qui le sera. Faites un clic droit sur l'ennemi "actor control", "add event", "collision"; "bottom side" sur le hero, puis "script editor" et tapez :



Ça aura pour effet de faire rebondir le héro et de détruire le monstre. Maintenant faites un "add event", "collision" ,"left or right" sur le hero et la ligne de code "DestroyActor("hero");". Codez cette ligne pour une collision avec "top side" du héro également dans le cas où le monstre lui tomberait dessus.

Bon on a un ennemi mais il est fixe et donc facilement évitable. On va donc le faire bouger. Cliquez sur "path" en haut de l'écran. "Add" donnez lui un nom par exemple "moveE" et 100 en frame. Placez les deux point (départ et arrivé du chemin). Créez un nouveau "path" nommez le "moveE2" par exemple et placez les deux mêmes point mais en les inversant. Comme ça un des deux fera avancer le monstre de gauche à droite et inversement. Par contre il faut associer le path au monstre Donc dans l'"actor control" du monstre sélectionnez le path "mouveE" en cliquant sur "path". Créez un nouvel event "path finish" sur le path "moveE" puis l'action "change path" pour le "moveE2". Refaite un "path finish" pour le "moveE2" en inversant le "change path". Voilà votre ennemi fait des aller-retour le long de votre chemin.

V - Le Scrolling :

Maintenant on va mettre en place le scrolling. Faites un "add actor" nommez le "vueR" et à la place de normal selectionnez "wire frame region". Un cadre apparait placez le le long du bord droit du cadre de vue à peu près comme ceci :



Faites un clic droit dessus, "actor control" et cliquez sur "parent" et selectionnez "view". Ce qui signifie que cet actor sera relatif à la vue donc se déplacera en même temps qu'elle. Ajoutez un event "collision" "any side" sur le héro "yes" au "repeat this event...", et "script editor" avec cette ligne de code "view.x+=5;". De la même manière faites un actor pour le coté gauche nommez le vueG et Faites également un event "collision" en tapant la ligne de code comme ceci "view.x-=5;" . Maintenant quand le héro sera en contact avec ces zones, la vue se déplacera. Vous pouvez bien entendu faire un scrolling vertical en plaçant une zone en haut et en bas et en utilisant l'attribut "view.y".

VI - Le background et la profondeur :

On va à présent s'occuper du fond et apprendre à gérer la profondeur. Créez un nouvel actor, selectionnez le fichier "bg. png". Là ça risque de prendre un peu de temps car le logiciel va calculer les frames. J'aurais pu optimiser ça mais pour un tuto je vais pas me prendre la tête. Une fois qu'il a fini mettez toutes les frames à 1. Puis dans l'actor control où il y a marqué "normal" sélectionnez "infinite". Ça va permettre de répèter à l'infinie l'acteur donc le background. Mettez le curseur "Z-depth" tout à gauche. Ça aura pour effet de mettre cet acteur tout au fond de l'écran (derrière le héros, les ennemies, les plateformes ...). On va rajouter un peu d'éléments dans le décor. Créez un nouvel actor avec le fichier "bgElement.png" et règlez la "Z depth pour qu'elle soit comprise entre celle des plateformes et celle du background.
Vous obtiendrez quelque chose comme ça :



VII - Les musiques et le son

Pour finir on va insérer des sons à notre jeu. Créez un nouvel event au héro, "create actor", "script editor" créez une nouvelle variable qu'on nomme "music" mettez "real" à la place de "integer". Puis tapez la ligne suivante (vous pouvez aussi cliquez sur "variables/functions" en bas de l'écran et choisir la function "PlayMusic2") :



Le 3ème paramètre correspond au nombre de fois où la musique doit se répèter. Modifiez le si vous jugez que la musique se termine trop vite.
Créez un nouvel event "destroy actor" , "script editor" avec le code suivant :



Donc quand le héro est créé la musique "smloverworld" se déclenche et elle s'arrête quand le héro est détruit. A ce moment là le son "smb1gameoveré" se lance. A vous de règler les sons comme vous le souhaitez.

Voilà ce tuto se termine. Je pense avoir fait le tour de tous ce qui est essentiel pour un jeu de plateforme maintenant je vous laisse gérer les détails. Aussi ce moteur doit comporter des bugs, à vous de les corriger. Si vous avez suivi le tuto en entier vous avez plus ou moins les bases pour utiliser Game Editor. Je ne suis pas non plus un expert donc il vaut mieux également se documenter sur le site de Game Editor qui est en anglais malheureusement.