Création de jeux avec Game Maker
Les Chemins
Dans les jeux plus avancés, vous désirerez souvent que les instances suivent des chemins particuliers. Bien que cela soit parfaitement réalisable en utilisant des événements de temps ou encore du code GML, ceci reste plutôt compliqué. Les ressources Path (chemins) fournissent un mécanisme plus commode pour réaliser ceci. L'idée est assez simple. Vous définissez un chemin (path) tout simplement en le dessinant. Ensuite, vous placerez une action dans l'événement de création de l'objet pour indiquer à cet objet de suivre le chemin souhaité. Ce chapître explique en détail ce mode de fonctionnement.Définition de chemins (Defining paths)
Pour ajouter un chemin dans votre jeu, choisissez Add Path du menu Add menu. L'écran suivant apparaîtra alors (dans cet exemple, nous avons déjà ajouté un petit chemin).
En haut à gauche de l'écran, vous pourrez donner un nom au chemin comme à l'accoutumée. En dessous, vous trouverez les points qui définissent le chemin. Chaque point posséde à la fois une position et une vitesse (indiquées par sp). Selon l'utilisation du chemin, la position sera soit absolue, c'est à dire que l'instance utilisée plus tard suivra le chemin à cet endroit bien précis, soit relative; l'instance débutera toujours à la première position du chemin puis suivra le chemin jusqu'à la fin de celui-ci. La vitesse est à interpréter de la façon suivante. Une valeur de 100 signifie que le chemin assigné à l'instance aura une vitesse normale. Une valeur plus faible réduira la vitesse, une valeur plus grande l'augmentera (cela indique donc le pourcentage de la vitesse actuelle). La vitesse sera interpolée entre les points. Ainsi, la vitesse changera progressivement.
Pour ajouter un point, pressez le bouton Add. Une copie de l'actuel point sélectionné sera faite alors. Maintenant, vous pouvez changer l'actuelle position et la vitesse en modifiant les valeurs dans la boîte d'édition. Si vous sélectionnez un point dans la liste, vous pourrez également changer ses valeurs. Pressez Insert pour insérer un nouveau point avant le point courant et Delete pour effacer le point actuel.
A droite de l'écran, vous apercevrez le chemin actuel. Le point rouge indique le point de contrôle actuellement sélectionné. Les points bleus concernent les autres points de contrôle. Le carré vert signale la position où débute le chemin. Vous pouvez aussi changer le chemin en utilisant la souris. Cliquez quelque part dans l'image pour ajouter un point. Cliquez sur un point existant et déplacez-le à la souris pour modifier sa position. Quand vous maintenez pressée la touche <Shift> tout en cliquant sur un point, vous insérerez un nnouveau point. Enfin, vous pouvez utiliser le bouton droit de la souris pour supprimer des points (veuillez noter que vous ne pouvez changer la vitesse de cette façon). Habituellement, les points seront alignés avec la grille. Vous pouvez modifier les paramètres de la grille avec la barre d'outils située en haut. A cet endroit également, vous pourrez indiquer si la grille doit être visible ou non. Si vous voulez positionner un point avec précision, maintenez la touche <Alt> lors des opérations d'ajout ou de suppression.
Vous pouvez influencer la forme du chemin de deux manières. Premièrement, vous pouvez utiliser le type de connexion. Vous pourrez soit choisir une ligne droite ou encore un chemin tout en courbe. Deuxièmement, vous pourrez indiquer si le chemin doit être fermé ou pas.
Dans la barre d'outils, il existe de nombreux contrôles importants. De la gauche vers la droite, les contrôles sont les suivants. Le premier bouton indique que vous êtes prêt et que vous voulez fermer l'écran, tout en conservant les modifications effectuées (si vous ne souhaitez pas les conserver, pressez la croix pour fermer la fenêtre et indiquer que vous ne souhaitez pas effectuer la sauvegarde des modifications). Ensuite, il y a un bouton pour défaire la dernière modification effectuée.
Le jeu de boutons suivants de la barre d'outils vous permet d'effacer le chemin, d'inverser l'ordre dans lequel le chemin sera parcouru, de décaler le chemin, de le copier horizontalement avec un effet de miroir, de le retourner verticalement, de le faire pivoter ou encore de modifier son échelle. Puis, vous trouverez les boutons pour décaler la vue (et non le chemin en lui-même; la zone de la vue courante est indiquée dans la barre de statut en bas) et pour centrer cette dernière.
Comme déjà mentionné plus haut, vous pouvez ensuite paramétrer les valeurs de rupture et indiquer si elles doivent être affichées sur la grille. Enfin, il existe un bouton pour signaler que vous souhaitez voir une room particulière en guise d'arrière-plan pour ce chemin ( vous pourrez ainsi mettre facilement le chemin à un endroit précis de la room, par exemple une piste de course, de cette façon les instances suivront la bonne route (cela a un sens que lorsque vous utilisez des chemins absolus; voir plus loin)).
Assigner des chemins à des objets (Assigning paths to objects)
Pour assigner un chemin à une instance d'un objet, vous pourrez placer l'action du chemin dans un événement, par exemple dans l'événement de création. Dans cette action, vous devrez indiquer le chemin à partir du menu "drop down". Il y a quelques valeurs que vous pourrez fournir.Vous devrez mentionner le chemin à suivre et la vitesse en pixels par step. Si la vitesse est positive, l'instance commencera au début du chemin. Si elle est négative, l'instance débutera à la fin. Souvenez-vous bien de cela quand vous souhaiterez définir pour le chemin la vitesse actuelle qui sera relative à la vitesse indiquée. Il y a aussi une action pour changer la vitesse d'exécution du chemin. Vous pourrez, par exemple, utiliser cette action pour ralentir ou accélérer une instance le long du chemin. Veuillez noter que la vitesse normale de l'instance sera ignorée dans ce cas précis (actuellement réglée à 0) quand le chemin sera exécuté. Egalement, certaines choses comme la gravité et la friction n'auront pas d'influence sur le mouvement le long du chemin.
Ensuite, vous indiquerez le comportement de fin, c'est à dire ce qui doit se passer lorsque la fin de chemin est atteinte. Vous pouvez choisir d'arrêter le mouvement et d'aller en fin de chemin. Vous pourrez aussi redémarrer au début du chemin, ce qui forcera donc l'instance à revenir à la position de départ du chemin pour exécuter de nouveau ce chemin. Une troisième option est de relancer à partir de la position courante, ce qui signifie que l'instance suit de nouveau le chemin mais maintenant, sa nouvelle position de départ sera à cet endroit (ce sera la même chose lorsque le chemin sera fermé). Finalement, vous pouvez choisir d'inverser le mouvement, forçant l'instance à faire marche arrière le long du chemin. Notez qu'un événement survient à la fin du chemin; voir plus loin.
Vous pourrez aussi indiquer si le chemin doit être absolu ou relatf. Un chemin absolu est exécuté à l'endroit où il a été défini. L'instance est placée à la position de début et se déplace à partir de cette position (la position de fin quand la vitesse est négative). C'est utile par exemple quand vous avez une piste de course de voiture pour laquelle vous avez défini le chemin. Si vous choisissez relatif, les instances commenceront d'exécuter le chemin à la position actuelle. Utile quand une instance doit faire un déplacement local. Par exemple, les vaisseaux dans un jeu de type Invader peuvent effectuer un tour à partir de leur position courante.
Quand vous placez l'instance à un point différent le long du chemin, vous pouvez utiliser l'action pour fixer la position du chemin. Une position de chemin posséde toujours une valeur entre 0 et 1, 0 indiquant la position de départ et 1 la position de fin du chemin. Veuillez notez qu'à chaque step, la variable de direction sera automatiquement paramétrée à la direction correcte le long du chemin. Vous pouvez utiliser cette variable afin de choisir la bonne orientation pour les sprites.
Si vous utilisez des scripts ou du code de programmation GML, vous disposerez davantage de contrôle sur l'exécution du chemin. Il existe une fonction pour fixer le début de chemin d'une instance. La variable path_position indique la position actuelle du chemin (entre 0 et 1 comme indiqué ci-dessus). La variable path_speed indique la vitesse à suivre dans le chemin. Une variable path_scale peut être utilisée pour mettre le chemin à l'échelle. Une valeur de 1 correspond à la taille d'origine. Une valeur plus grande signale un chemin plus grand; une valeur plus petite un chemin plus petit. La variable path_orientation indique l'orientation vers laquelle le chemin est exécuté (en degrés et dans le sens contraire des aiguilles d'une montre). Cela vous permet d'exécuter le chemin dans des orientations différentes (ex: déplacement en haut et en bas plutôt que de gauche à droite). Il y a également une variable pour contrôler le comportement de fin. Enfin, il existe de nombreuses fonctions pour renseigner les propriétés des chemins (ex: les coordonnées x et y à certaines positions) et l'on trouve des fonctions pour créer des chemins. Il y a même des fonctions qui créent des chemins de collision afin qu'une instance puisse atteindre un but précis. Se reporter aux sections suivantes sur le GML pour obtenir plus de détails à ce sujet.
Vous vous êtes certainement demandé ce qui se passe quand l'instance entre en collision avec une autre instance alors que celle-ci suivait un chemin. C'est le même processus qui survient lorsque l'instance se déplace à une certaine vitesse. Lorsqu'il y a une instance solide, l'instance est placée à son ancienne position. Lorsque les instances ne sont pas de type solide, elles seront placées à leur nouvelle position respective. Ensuite, le ou les événements de collision sont exécutés et une vérification a lieu pour vérifier que la collision a bien été résolue. Dans la négative et si l'autre instance était solide, l'instance s'arrêtera, comme on pouvait s'y attendre (cela suppose toutefois qu'un évenement de collision ait été défini). De plus, la variable path_position ne sera pas incrémentée. Lorsque l'instance suspendue disparaît, l'instance continuera à suivre le chemin. Pour gérer les collisions par vous-même, la variable path_positionprevious pourra être très utile. Elle contient la précédente position du chemin et vous pouvez lui affecter la valeur de la position du chemin afin d'éviter d'avancer le long du chemin.
L'événement de chemin (The path event)
Comme mentionné plus haut, vous pouvez indiquer ce qui doit se passer lorsque l'instance atteint la fin du chemin. A ce moment également, un événement End of Path survient. Vous pourrez le trouver dans les événements Other. Vous y placerez des actions. Par exemple, vous pourriez souhaiter détruire l'instance ou encore lui affecter un nouveau (et différent) début de chemin.<< Traduction française par Philippe Ragni - (2005) >>
Alternative versions
Also available in:
Download helpfile