Création de jeux avec Game Maker
Précisions sur les Objets
Lorsque vous créez un objet dans le mode avancé, vous pouvez modifier certains réglages avancés.Profondeur (Depth)
Premièrement, vous pourrez régler la Profondeur (Depth) des instances de l'objet. Lorsque les instances sont affichées à l'écran, elles sont dessinées selon leur ordre de profondeur. Les instances avec la plus grande profondeur seront affichées en premier alors que celles avec la plus petite profondeur seront dessinées en dernier. Quand les instances présentent la même profondeur, elles seront affichées dans l'ordre où elles ont été créées. Si vous voulez être certain qu'un objet recouvre tous les autres, donnez-lui une profondeur négative. Pour s'assurer que cet objet est en dessous des autres instances, indiquez alors une profondeur positive très grande. Il vous est également possible de changer la profondeur d'une instance durant le jeu en utilisant la variable dénommée depth.Objets persistants
Deuxièmement, vous pouvez rendre un objet persistant. Un objet persistant continuera d'exister lorsque vous naviguerez d'une room à une autre. Il ne disparaîtra que quand vous le détruirez explicitement. Aussi, il vous suffira de placer une instance de l'objet dans la première room : cette instance demeurera également présente dans toutes les autres rooms. Ceci est une fonction très importante qui peut être utilisée par exemple lorsque vous avez un caractère principal qui se déplace de room en room. L'usage d'objets persistants est un mécanisme puissant mais qui peut aussi conduire à commettre certaines erreurs.Parents
Chaque objet peut avoir un objet parent. Quand un objet posséde un parent, il hérite du comportement de son parent. Autrement dit, l'objet est en quelque sorte une représentation particulière de l'objet parent. Par exemple, si vous avez 4 balles différentes, appelées ball1, ball2, ball3 et ball4, possédant toutes le même comportement mais ayant un sprite différent, vous pourrez faire en sorte que ball1 soit l'objet parent des trois autres. Ensuite, nous n'aurez besoin désormais que de définir les événements pour l'objet ball1. Tous les autres hériteront des événements et se comporteront de la même façon. Bien entendu, si vous appliquez des actions aux instances de l'objet parent, ces mêmes actions seront exécutées aux autres objects enfants. Ainsi, par exemple, si vous détruisez toutes les instances de l'objet ball1, les instances de ball2, de ball3 et de ball4 seront également détruites. Ceci vous économisera beaucoup de travail dans vos jeux.Souvent, les objets présentent un comportement presque identique et ont très peu de différences. Par exemple, un monstre doit pouvoir monter et descendre alors qu'un autre doit se déplacer de gauche à droite. Pour tout le reste, les monstres ont le même comportement. Dans ce cas, presque tous les événements devraient avoir les même actions sauf pour un ou deux événements qui présenteront des actions spécifiques. De nouveau, nous pourrons créer un objet parent d'un autre. Mais dans ce cas précis, nous définirons aussi certains événements pour l'objet enfant. Ces événements "écraseront" les événements de l'objet parent. Ainsi, lorsqu'un événement de l'objet enfant contient des actions, celles-ci seront exécutées à la place de celles de l'événement de l'objet parent. Si vous souhaitez cependant exécuter l'événement parent, vous pourrez le faire en appelant l'événement "inherited" (héritage) en utilisant l'action appropriée.
Une bonne habitude est dans ce cas de créer un objet de base. Cet objet contiendra tous les comporements par défaut mais il ne sera jamais utilisé dans le jeu. Tous les objets actuels auront cet objet de base comme parent. Les objets parents peuvent à leur tour avoir des parents et ainsi de suite (cependant, vous ne pourrez pas créer de cycles). De cette manière, vous pourrez créer une hiérarchie d'objets. Cela est extrémement utile pour structurer votre jeu et il vous est fortement recommandé d'apprendre à maîtriser ce mécanisme.
Il existe également une seconde utilité à employer les objets parents. Ils héritent du comportement de collision pour les autres objets. Utilisons un exemple afin de mieux comprendre. Supposons que vous avez quatre objets différents pour le sol. Quand une balle heurte le sol, elle doit changer de direction. Il vous faut donc mentionner cette action dans l'événement de collision de la balle avec le sol. Parce qu'il y a quatre sols différents, vous devrez placer le code dans les quatres événements différents de collision de la balle. Par contre, si vous créer un objet de base pour le sol et rendez cet objet parent des quatres autres objets pour le sol, il ne vous sera ensuite nécessaire que de préciser l'événement de collision avec ce sol de base. Les autres collisions exécuteront le même événement. Encore une fois, cela vous économisera beaucoup de travail.
Comme déjà mentionné, lorsque vous utilisez un objet parent, celui-ci s'aplique aussi aux descendants. Cela survient quand, dans une action, vous indiquez que cette action doit s'appliquer aux instances d'un certain objet. Cela arrive également quand vous employez l'instruction with() dans le code (voir plus loin). Cela est également vrai quand vous invoquez des fonctions comme instance_position, instance_number, etc. Enfin, cela est aussi valable lorsque vous faîtes référence à des variables d'autres objets. Dans l'exemple plus haut, lorsque vous fixez à 10 la variable ball1.speed, cela s'applique également à ball2, ball3 et ball4.
Masques (Masks)
Quand deux instances se chevauchent, un événement de collision apparaît. Afin de pouvoir décider à quel endroit les deux instances se sont touchées, on utilise les sprites. Cela est suffisant dans la plupart des cas mais parfois, vous souhaiterez que les collisions surviennent à un autre endroit. Par exemple, si vous créez un jeu isométrique, les objets auront en base une hauteur (afin de leur donner une vue 3D). Les seules collisions que vous désirez avoir, concerneront la partie basse du sprite. On peut réaliser ceci en créant un sprite séparé qui sera utilisé comme masque de collision pour l'objet.Information
Le bouton Show Information (Afficher des informations) vous donne un aperçu de toutes les informations concernant un objet, aperçu qui pourra ensuite être imprimé. Ceci est particuliérement appréciable quand vous vous perdez quelque peu dans toutes les actions et événements de l'objet.<< Traduction française par Philippe Ragni - (2005) >>
Alternative versions
Also available in:
Download helpfile