[Outil] Game Maker
Salut à tous,
Je vais tenter de vous présenter un outil de création de jeu vidéo rapide accessible à tout le monde pour deux raisons :
- il est gratuit, mais une version payante donnant accès à toutes les fonctions existe pour 15¤ il me semble
- les actions de base sont trés facilement implémentable (déplacement, collision, évènements clavier et souris ...)
Tout d'abord, il existe une version stable la 6.1 disponible ici : http://www.clubic.com/telecharger-fiche10725-game-maker.html ou bien la dernière version 7 sur le site officiel : http://www.yoyogames.com/gamemaker/
Une fois installé, on vous demande de choisir entre le mode expert et le mode normal, on bien entendu choisir le mode expert pour avoir accès à tout ! Voici le menu de gauche :
Dans les dossiers jaunes se trouvent toutes nos ressources, les sprites sont les images ou les animations, les paths sont les chemins que prendront vos monstres/ennemis dans le jeu, les objects représentent en fait chaque entité de votre jeu (personnage, mur, monstre ...) et rooms les niveaux de votre jeu. Je pense que le reste est facilement compréhensible !
Ensuite, le bouton qui vous servira le plus est sans aucun doute la petite flèche verte qui sert à tester votre jeu.
Un objet comment ça marche ?
Un objet possède des paramètres qui lui sont propres, des méthodes également lui permettant d'effectuer des actions (sur lui ou sur un autre objet). Dans GM, on vous facilite grandement la vie, en effet, un clique suffit pour mettre tout en place. Ensuite si on veut plusieurs objets identiques en les plaçant dans la scène, on cré alors des instances de cet objet. Ici l'héritage s'applique aussi, essayez d'y penser avant de faire plusieurs objets casi identiques ... On va donc faire un petit test et essayer de créer un personnage qui avance sur des plateformes.
Il nous faut quoi donc ?
Un personnage (notre carré), un sol (qui servira aussi de mur) et ... bien cela suffira pour un simple post sur un blog. Cela nous fait donc 2 objets. Commençons par le personnage, clique droit sur le dossier "Objects", "Add Object". Une nouvelle fenêtre va alors s'ouvrir, c'est elle qui contient les propriétés de notre objet.
Nous allons faire simple ici, on va le nommé "Personnage" et lui assigner une image (un sprite) en cliquant sur le bouton New dans le cadre Sprite. Une nouvelle fenêtre s'ouvre alors, on va directement faire un "Load Sprite" pour charger une image (Note : préférez le foramt PNG qui est bien mieux gérer que le jpg par GM, et en plus qui autorise la transparence (le premier pixel en haut à gauche)). Prenons par exemple ce bonhomme :
Validez, et validez l'objet, vous devriez juste avoir ça :
On recommence pour le sol, prenez ce sprite :
Ici une variante, il faut cocher la case "Solid" dans l'objet pour lui dire que cet objet servira en fait de référence pour les zones à collisions. Voilà, maintenant on va gérer les collisions avec le sol pour ne pas que le personnage passe à traver déjà, revenez donc dans l'objet Personnage, et ajoutons lui un évènement (Event) en cliquant sur le bouton "Add Event", il apparait alors plusieurs sortes d'event que l'on peut lui attribuer, choisissons "Collision",puis dans la liste des objets "Sol". On va pouvoir maintenant décider de l'action à effectuer lors de cet évènement.
Les actions
Dans le menu de droite d'un objet, on peut y trouver plusieurs onglets qui permettent d'assigner une action suivant un évènement à l'objet courant ou à un autre objet. Ici, on va faire en sorte que notre personnage ne tombe pas et se colle correctement au sol. Pour cela, on va prendre "Move to contact position" et le faire glisser dans le cadre Actions. On nous demande ici la direction à prendre, voilà comment ça marche, c'est en fait un angle suivant le cercle suivant :
Voilà, vous l'aurez compris, on va le faire aller vers le bas notre personnage, donc une direction de 270. Donc maintenant quand il y aura un contact, on aura l'impression de marcher. D'ailleurs comment marcher ? Et bien rajoutons 2 évènements, un sur la touche "Left" et un sur la touche "Right" de votre clavier. Dans "Add Event" choisissez "Keyboard" au lieu de "Key Press", ça nous permet de gérer plusieurs touches en même temps. Une fois la touche ajoutée (gauche par exemple), lui met comme action "Jump to a given position" , avec x = -4 et y = 0, en cochant bien la case "Relative", ce qui signifit que à chaque pression ça fera x = x - 4. Idem pour la touche droite en supprimant le - évidemment.
Pour tester tout ça on va créer notre niveau.
Room
Faites "Add Room" et laissez la taille par défaut, ça ira trés bien comme ça. Allez dans l'onglet "objects" de la room, puis choisissez le "Sol" et placez le en bas (vous pouvez laisser appuyer le "Shift" pour en placer plusieurs à la fois). Pour finir placez le personnage ou vous voulez mais sans contact direct avec le sol. Par exemple :
Et lancez le test !
Oui, le personnage de descend pas ... Normal, il faut lui spécifier la gravité à utiliser, par défaut y en a pas donc le personnage va flotter. Pour cela on va vérifier à chaque fps que notre personnage touche le sol, si ce n'est pas le cas on va simplement mettre de la gravité pour le faire redescendre naturellement.
Retour donc dans l'objet Personnage, ajoutez comme Event "Step", et les actions suivantes : Test de collision à la position inférieure (y - 1), si TRUE alors on met la gravité à 0, si FALSE alors on met la gravité à 0.5 par exemple. Les IF et les ELSE se trouvent dans l'onglet "control". Vous devriez obtenir ceci :
Allez retestez ça devrait fonctionner !
Saut
On va intégrer cette dernière petite partie qui semble indispensable dans un jeu de plateforme. Pour cela on va rajouter un Event clavier pour écouter la touche "Up" mais cette fois en "Key press". Ici, on va simplement lui dire de changer la vitesse verticale de notre personnage appelée vspeed. Onglet move, . Et mettez par exemple -10 comme valeur. (L'axe d'origine est en haut à gauche, pour remonter, c'est du négatif en y)
En testant on s'aperçoit que l'on peut sauter en l'air ... Pour régler ce soucis, rajouter simplement un test de collision qui doit être TRUE avant le saut ! Et voilà, rudimentaire mais on y a vu les axes, les déplacements, la gravité et les collisions =)
Evidemment on peut programmer directement en code sur GM.
Langage de programmation
Le langage est appelé GML et ressemble à un langage comme un autre, il possède les mêmes mots clés mais possède évidemment quelques fonctions précodées pour vous faciliter la vie (comme celle qui détecte les collisions, qui joue un son, change de room ... ) Pour créer vos propres fonctions on utilise les scripts qui peuvent prendre jusqu'à 5 arguments.
Indispensable pour arriver à ses fins lorsque le jeu devient compliquer, son apprentissage est trés rapide.
Voici les sources du tuto : www.temps-radies.com/_soft/tuto.gm6 (clique droit / enregistrez sous)
Liens à consulter :
Site offciciel : http://www.yoyogames.com
Site de la communauté française : http://www.gamemaker.fr/
[Tuto] Un terrain 3D à partir d'un bitmap
Billets similaires | Tagsgame maker jeux video gratuit |
Commentaires 8 commentaires
Seb le 26 Janvier 2008 à 11:12
Enorme, je m'y met cet aprem.C'est typiquement le genre de billets que j'espérais voir un jour sur Kookyoo :) Merci Dante
farwarx le 26 Janvier 2008 à 12:26
Ca à l'air bien sympa ce log!dante le 26 Janvier 2008 à 18:31
de rien, ça prend juste énormément de temps ^^Seb le 10 Février 2008 à 22:33
Héhé, on vient de passer une petite heure pour pondre un embrayon de clone de Space Invaders :) Excellentdante le 23 Janvier 2009 à 11:29
tiens, y a des bots qui postent sur kookyoo maintenantSeb le 23 Janvier 2009 à 13:37
vraiment des enfoirés !maxime le 12 Décembre 2009 à 10:43
xd je commence a lire ai jaissaye de comprende si tu a des truc pour maider sur game maker voila mon adresse msn : maxime0424@hotmail.fr merci d'avance xd a+!!Seb le 12 Décembre 2009 à 12:51
Si tu as des question je t'invite à les poser ici, au moins je peux prendre le temps pour y répondre et ça sert à tout le monde ;)Suite à de trop nombreux débordements les commentaires pour ce billet ont été fermés. Merci de votre compréhension.