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 !