Initiation à la création de Jeux Vidéos avec le logiciel GameMaker 6.1
Par Bast
Ressources du Tutoriel: ici
Nous allons voir dans ce tutoriel les bases de la création de jeux avec GameMaker. Étant un logiciel relativement complet et pourvu d’un très grand nombre de fonctions, nous allons nous attarder uniquement sur celles qui nous serviront lors de ce tutoriel.
Nous allons pour cela créer un Jeu simple, de type Casse-brique, qui ressemblera à ceci:

Ce tutoriel est pour vous, même si vous n’avez pas la moindre connaissance en programmation, étant donné que GameMaker permet de créer des jeux aux plus débutants facilement, quelque soit leur niveau.
Bien, maintenant, commençons la conception de notre jeu !
Commencez tout d’abord par ouvrir GameMaker 6.1. Vous devriez voir apparaître ceci:

Avant tout, dans un jeu vidéo, la première chose que le joueur remarque, c’est ce qu’il voit à l’écran. C’est d’ailleurs la base d’un jeu: un jeu sans graphismes n’existe pas, ou alors c’est un cas très particulier. Nous allons donc commencer par insérer des images dans notre jeu, qui seront la représentation graphique des objets que le joueur verra à l’écran. Dans le jargon, on appelle ces images des Sprites (Ce qui n‘a pas de rapport avec la boisson gazeuse du même nom).
Faites un clic droit sur le répertoire Sprites, se trouvant tout en haut de la colonne de gauche, puis cliquez sur Add Sprite. Une fenêtre, appelée Sprites Properties, va s’ouvrir. C’est ici que vous définirez toutes les caractéristiques de votre sprite. Cliquez sur Load Sprite pour charger une image se trouvant sur l’ordinateur. Des sprites de ma création sont fournies avec ce tutoriel, elles se trouvent dans le dossier Sprites GameMaker. Ouvrez ce dossier, puis double-cliquez sur le fichier Batte. Vous retournerez à votre éditeur de sprites, avec cette fois-ci l’image que vous avez sélectionné affichée sur la droite. Réglez l’origine X et Y au centre de votre sprite, en cliquant sur Center. (L’origine d’une sprite est son centre, son point X:0 et Y:0. Ce sont ses coordonnées X et Y de base.). Changez ensuite le nom de votre sprite, à partir de la petite case en haut à gauche, et inscrivez-y spr_batte. (Ca n’a aucune incidence technique, c’est juste pour mieux se repérer dans vos fichiers, une fois que vous en aurez un nombre plus important. D‘ailleurs vous avez le droit de choisir n‘importe quel nom pour ces sprites, ce que je donne est juste un petit exemple.)
Cliquez maintenant sur OK: Vous venez de créer votre première sprite ! C’est votre batte, l’objet que le joueur contrôlera et qui servira à rattraper la balle.
Continuons dans cette voie, et rajoutons 4 autres sprites: la balle, et 3 types de blocs. Ils se trouvent tous dans le même répertoire que la sprite de batte. Répétons donc la même opération.
Note: pour aller plus rapidement dans la création
de
nouvelles sprites, vous pouvez cliquer sur cette icône, se trouvant
dans la
barre des tâches, dans la partie haute de GameMaker:
. Il suffit de cliquer
dessus pour qu’une
nouvelle sprite se crée.
Ensuite, même opération pour chaque nouvelle sprite: Load sprite, puis le fichier image correspondant, ensuite centrez l’origine en cliquant sur Center, renommez la selon vos envies, puis OK. Vous devriez donc obtenir ceci:

Nous avons donc toutes les sprites de notre jeu réunies ici. Il y a, en général, deux seules et uniques sources de rendus graphiques dans un jeu: les Sprites et les Backgrounds. C’est tout ce qui constitue ce que l’on voit à l’écran. (Un Background est, comme son nom l’indique, un arrière-plan) Après, on peut aussi créer des particules ou des rendus 3D, mais nous n’allons pas voir ça ici.
Que disons-nous au début ? Avant tout, dans un jeu vidéo, la première chose que le joueur remarque, c’est ce qu’il voit à l’écran. Ca, nous nous en sommes occupé. Mais un jeu constitué uniquement d’images, ce n’est pas un jeu, c’est une fresque. On va donc passer au stade suivant: les objets, appelés ici, Anglais oblige, des objects.
Comment créer un objet ? De la même manière
qu’une
sprite ou tout autre élément du jeu: clic droit sur le
répertoire en
question, puis add quelque chose. On va s’intéresser
maintenant au
répertoire Objects, vous vous en doutez bien. Vous pouvez
aussi, et
c’est plus rapide, cliquer sur l’icône object de la barre des tâches:
.
Nous allons commencer par créer l’objet que contrôlera le joueur: la batte. Une fois votre nouvel objet créé, vous verrez apparaître une fenêtre: Object Properties. Nous allons renommer cet objet en obj_batte, a l’aide de la petite case en haut à gauche, et faire en sorte qu’il obéisse au demandes du joueur et prenne toutes les caractéristiques de la batte.
Pour le moment, notre objet est invisible. Ce n’est qu’une entité sans aucune apparence, et nous allons lui en donner une, en lui assignant la sprite de batte que nous avons précédemment intégrée dans le jeu.
En haut à gauche, juste en dessous de la case définissant le nom de l’objet, se trouve celle servant à lui assigner une sprite. Cliquez sur la petit icône bleue pour faire apparaître un petit menu déroulant, répertoriant toutes les sprites que vous avez insérées dans votre jeu. Sélectionnez la sprite de batte, comme ceci:

Nous allons maintenant donner vie à notre objet, en programmant quelques actions. Tout, dans la programmation d’actions dans un jeu, fonctionne avec ce schéma: S’il se passe ça, alors j’exécute ceci.
Si le joueur appuie sur une touche, alors je fait ça. Si cette variable est égal à ce taux, alors je fait ceci, etc. Tout n’est qu’une suite de ce qu’on appelle dans GameMaker des Événements et des Actions. Si tel événement se produit, alors telle action s’exécute. Ca marche comme ça.
Dans votre object properties, il y a justement deux grandes cases représentant cette logique, Events et Actions:

Ce que l’on veut dans un casse-brique, c’est éviter que la gentille baballe ne nous fausse compagnie trop rapidement en filant à l’anglaise dans le bas du niveau. On doit donc pouvoir bouger pour la rattraper. Nous allons ici faire bouger notre batte avec la souris, en opérant de la façon suivante:
Cliquez sur Add Event, situé en dessous de la case Events. Une petite liste apparaîtra, référençant tout les événements disponibles. Cliquez sur Step, puis sur l’autre Step. L’événement que vous avez sélectionné s’ajouteras alors dans la case Events. Step est un événement qui s’exécute à chaque nouvelle FPS (Frames Par Seconde), donc qui se répète en permanence. Et ce qu’on veut que la batte fasse en permanence, c’est se diriger à partir de la souris. Pour ajouter une action, nous allons utiliser ceci, se situant sur la droite de votre object properties:

C’est dans cette partie, composée de plusieurs onglets, que sont répertoriées les fonctions en D&D (Drag and Drop, signifiant littéralement Glisser Déposer). Vous n’avez besoin d’aucune connaissance en programmation pour pouvoir utiliser ces actions, c’est justement ça l’avantage de GameMaker. On appelle aussi ces fonctions des .lib. Ce sont ces petites icônes qui définissent les actions, et nous allons maintenant les utiliser.
Cliquez sur l’icône Jump to a given
position
, laissez appuyé et faites la
glisser dans
la case Actions. C’est une action de mouvement, permettant de
déplacer
un objet vers une position définie. Nous voulons que la souris dirige
la batte
de droite à gauche, nous allons donc faire comme ceci:
Il faut que nous définissions les coordonnées auxquelles l’objet doit aller. Dans GameMaker, la position X et Y de la souris est définie à partir des variables mouse_x et mouse_y (X étant horizontal et Y vertical). Nous voulons déplacer la batte uniquement de droite à gauche, nous n’allons donc utiliser que les coordonnées X du pointeur de la souris. Et comme la position Y, verticale, ne change pas pendant le jeu, nous allons simplement la réassigner à la position Y de l’objet lui même.
Nous allons donc écrire ceci:

Note: Applies to sert à définir à quelle entité associer une action. Ici, self est coché, ce qui veut dire que l’action s’exécute pour l’objet dans lequel elle se trouve. La case Relative définit si la modification de coordonnées se fait à partir de l’origine de l’objet (Cochée), ou a partir de l’origine de la room (Décochée).
Notre action de mouvement maintenant définie, cliquez sur OK pour valider.
Nous avons donc l’événement step qui enclenche l’action de mouvement, ce qui veut dire que cette action va se répéter en permanence, donc la position de la batte sera continuellement réassignée à celle de la souris. Nous avons notre batte qui bouge !
Nous n’avons plus rien à faire pour cet objet, mis à part le passer en solid pour des besoins de collisions, ce que nous verrons quelques lignes plus bas.
Nous allons maintenant rajouter une balle qui bouge et rebondit, et quelques blocs.
On crée un nouvel objet, que l’on nommera obj_bloc_3, et auquel on assignera la sprite de bloc correspondante (spr_bloc_3). La balle devra rebondir sur ce bloc, il suffit pour cela de cocher la case Solid, se trouvant juste en dessous de la zone où l’on assigne la sprite de l’objet. Les collisions de la balle que l’on programmera par la suite interagiront avec les objets solid, il faut donc s’assurer que tout les objets aient cette case cochée, y compris la batte. Cliquez ensuite sur OK pour valider, nous n’avons rien d’autre à faire sur cet objet.
Nous allons maintenant créer la balle, élément important de notre petit jeu. Insérez un nouvel objet, nommez-le obj_balle, assignez lui la sprite de balle correspondante, et cochez la case Solid.
Nous voulons que la balle bouge par elle
même, nous
allons donc lui donner une vitesse et une direction de départ. Ajoutez
l’événement Create en cliquant sur Add event, comme
nous l’avons
vu. Comme son nom l’indique, cet événement sert à exécuter une action
lorsque
l’objet est créé dans le jeu, donc au moment ou il entre en scène.
Insérez
l’action Start moving in a direction
, qui sert à donner une
direction et une
vitesse à un objet. Ces directions sont représentées par des flèches,
cliquez
sur chacune des flèches en diagonale. Ce sont les directions
potentielles que
pourra prendre notre balle lors de sa création. Assignez lui 7 en tant
que
vitesse (Dans la case Speed), puis cliquez sur OK pour
valider.
Il faut maintenant faire rebondir notre balle lorsqu’elle entre en collision avec notre batte ou notre bloc.
Insérez l’événement Collision, avec l’objet obj_batte. Cet événement exécute une action lorsque l’objet dans lequel il se trouve entre en collision avec l’objet désigné, ce qui signifie qu’ici, l’action s’exécutera lorsque la balle et la batte entreront en collision. Insérez ensuite l’action Bounce against objects, que vous définirez comme ceci:

Une fois tout ceci effectué, cliquez sur OK pour valider.
Il faut maintenant faire en sorte que la balle rebondisse aussi contre notre bloc: il suffit de répéter la même opération, mais pour l’objet obj_bloc_3.
Vous devriez donc avoir tout ceci:

Après avoir fait tout ça, vous devez certainement avoir envie de pouvoir tester les résultats de vos manipulations, n’est-ce pas ? C’est ce que nous allons maintenant faire.
Après les Sprites et les Objects, voici maintenant les Rooms. Une room est l’endroit ou se déroule le jeu: c’est une map, un niveau. C’est ici que vous placez tout les éléments de votre jeu, c’est ici que vous organisez ce qui apparaîtra à l’écran. Un élément tout aussi fondamental pour le jeu que ce que nous avons déjà vu.
Pour créer une nouvelle room, même chose que
pour les
sprites et objets: clic droit sur le répertoire, ou clic sur l’icône
correspondante:
. La fenêtre Room properties
apparaît
alors.
Il vous suffit maintenant de placer vos objets, a l’aide du bouton gauche de la souris. Clic gauche pour placer, clic droit pour effacer. Vous pouvez sélectionner l’objet à placer avec la petite case en bas à gauche:

Pour sélectionner d’autres objets, cliquez sur la petite icône bleue, cela fera apparaître un petit menu déroulant répertoriant tout les objets de votre jeu. Il vous suffit de le sélectionner pour ensuite pouvoir le placer dans la room.
A vous maintenant de concevoir votre petit niveau !

Une fois votre niveau terminé, il vous suffit
de
lancer le jeu, avec l’icône de flèche verte se trouvant en haut à
droite dans
la barre des tâches:
. Ceci permet de tester votre
jeu à
n’importe quel moment.
Vous pouvez déjà vous amuser en faisant rebondir la balle sur les blocs.
C’est assez minime, mais déjà un bon début ! Vous avez votre base de jeu.
Nous allons maintenant rajouter quelques blocs à casser, pour rendre notre jeu un peu plus fun.
Créez un nouvel objet, que vous nommerez obj_bloc_1,
en lui assignant la sprite correspondante (spr_bloc_1) et
cochant comme
d’habitude la case Solid. Nous allons simplement rajouter le
fait qu’il
se détruise au contact de la balle: insérez l’événement Collision,
avec
l’objet obj_balle. Insérez ensuite l’action Destroy the
instance
, se trouvant dans l’onglet main1,
puis cliquez sur OK pour valider l‘action. Cette action sert à
effacer
un objet pendant le jeu, en l’occurrence ici l’objet bloc lui même.

Et aussi rapidement que ça, vous avez votre nouvel objet. Cliquez ensuite sur OK pour valider vos manipulations.
Nous allons maintenant créer un deuxième bloc destructible, mais sans avoir à le reprogrammer. Il suffira d’en faire une sorte de « clone ».
Créez un nouvel objet, que vous nommerez obj_bloc_2, en lui assignant comme d’habitude la sprite correspondante et en cochant la case Solid. Mais cette fois ci, pas besoin de rajouter l’événement: il suffira de définir l’objet obj_bloc_1 en tant que Parent. Qu’est-ce que cela signifie ? Simplement que ce que l’on a programmé dans obj_bloc_1 va se retrouver dans obj_bloc_2, sans qu’on ai à le reproduire soi-même. On assigne le parent d’un objet dans une case se trouvant sur la gauche de l’object properties, comme ceci:

Cliquez ensuite sur OK pour valider votre objet. Voilà, vous avez vos deux blocs destructibles ! Il suffit maintenant de faire en sorte que la balle rebondisse aussi sur ces deux nouveaux objets.
Rouvrez obj_balle en double-cliquant dessus, et ajoutez deux événements collision, pour chaquin des deux objets bloc que nous venons de créer. Vous n’avez pas besoin de recréer l’action vous même: il suffit de faire un copier-coller des collisions programmées avec obj_batte ou obj_bloc_3. (Clic droit sur l’action à copier puis Copy, et clic droit à l’endroit ou la coller puis Paste).
Nous allons aussi faire en sorte que le
niveau redémarre
si la balle sort de l’écran, donc si le joueur n’arrive pas à la
rattraper.
Insérez l’événement Other => Outside Room, puis l’action Restart
the current room
, se trouvant dans l’onglet main1.
Cette action sert à redémarrer la room en cours de jeu. Cliquez ensuite
sur OK
pour valider vos modifications.
Vous devriez donc avoir tout ceci:

Il suffit maintenant de placer tout ça dans la room, et vous avez votre casse-brique !

Votre casse-brique est terminé. Vous pouvez maintenant profiter de votre travail en vous amusant un peu avec le jeu que vous venez de créer : )
Vous pouvez aussi le fignoler, comme par exemple rajouter des bruitages ou des blocs supplémentaires. Vous pouvez pour cela vous servir du .gm6 d’exemple gm6_exemple_cassebrique pour observer quelques techniques en plus.
Vous êtes maintenant initié aux bases de la création de Jeux Vidéos avec GameMaker, a vous de jouer pour créer vos propres jeux à présent !
Voilà, j’espère que ce tutoriel vous a plu, et qu’il vous a été utile ! Bonne chance pour la suite de vos projets !
@3 Bast
2005 - Le CBNA
