Concepts

Quelques concepts et notions sont utilisés logiquement par GDevelop.

Il ne sont pas compliqués, mais les (re)expliquer peut être utile pour être en mesure de débuter de façon optimale avec GDevelop.

Positions des objets sur la scène ( Système de coordonnées )

Les objets sur la scène ont 2 coordonnées : X et Y qui désignent leur emplacement.
X désigne leur emplacement horizontalement ( abscisse ).
Y désigne leur emplacement verticalement ( ordonnée ).

Quand vous éditez une scène, dans un éditeur de scènes, la position où la souris se trouve est indiqué en bas :

Comme vous pouvez le remarquer, plus on va vers la gauche, puis les X baissent. Inversement, plus on va vers la droite, plus les X augmentent.

De même, plus on va vers le haut, plus les Y baissent. Et plus on va vers le bas, plus les Y augmentent :

Il peut vous arriver d'avoir à renseigner un angle ( pour déplacer un objet, pour le tourner dans une direction… ).

Le repère est différent que celui pris habituellement en mathématique ( car l'axe Y est inversé par rapport au repère mathématique habituel ), le voici donc :

Enfin, si vous utilisez des fonctions trigonométriques comme le sinus ou le cosinus, notez que vous devez entrer en paramètre des nombres en radians ( 1 radian = 180/PI degrés et 1 degré = PI/180 radians, PI étant le nombre approximativement égal à 3.14159 )


La sélection des objets par les évènements

La plupart des conditions et actions utilisent des objets, que ce soit pour tester les objets ou pour les modifier.
Ainsi, si vous faites référence à un objet pour la première fois dans un évènement, GDevelop va aller tester ou modifier tous les objets ayant ce nom dans la scène.
Ensuite, si vous refaite référence à ce même objet dans le même évènement, GDevelop va aller tester ou modifier seulement les objets qui ont été gardés précédemment.

Ce procédé n'est que pure application de la logique. Ainsi, cet évènement va supprimer tous les objets Rond présents :

Alors que cet évènement ne va supprimer que les objets Rond dont la coordonnée X est inférieure à 100 pixels :


Déroulement des évènements : l'ordre est important

L'ordre des évènements dans l'éditeur d'évènements a son importance. Il sont exécutés du haut du tableau vers le bas. Ainsi, ces évènements :

et

sont différents.
Le premier créé un objet “Rond” à la position 200;100, puis le supprime. On ne voit donc aucun Rond à l'écran.
Le second supprime les objets “Rond” de la scène, puis en créé un en 200;100. On voit donc un Rond à l'écran.


Déplacement à l'aide des forces

Les déplacements des objets sont crées avec des forces.
Il s'agit de flèches imaginaires, qui “poussent” l'objet dans une direction.

Vous pouvez ajoutez des forces de plusieurs façons :

  • Par coordonnées ( dites cartésiennes ) : Vous indiquerez comment l'objet doit se déplacer grâce à des mesures horizontales ( X ) et verticales ( Y )
  • Par angle ( coordonnées dites polaires ) : Vous indiquerez l'angle vers laquelle la force doit aller, puis sa longueur.

Enfin, vous pourrez indiquer l'amortissement. A chaque seconde, cette force sera multipliée par ce chiffre :
Si vous souhaitez que la force s'applique indéfiniment, mettez 1. Si vous souhaitez qu'elle disparaisse immédiatemment après avoir un peu poussé l'objet, mettez 0. Ce dernier cas est essentiellement utilisé quand l'objet doit être bougé continuellement, par exemple quand le joueur appuye sur une touche.

Exemple

Voici par exemple comme exprimer une force permettant de faire bouger cet objet vers le bas.

Autres possibilités pour déplacer les objets

Certaines extensions, notamment l'extension Moteur Physique ou Recherche de chemin, peuvent bouger les objets en utilisant leur propre système de déplacement. Dans ce cas, n'utilisez pas les forces de GDevelop, mais utilisez à la place les actions fournies par l'extension.


Variables

Les variables permettent de garder en mémoire une information, quelle soit un nombre ( position, nombre de vie, munitions… ) ou un texte ( nom du personnage, état de santé… ). On peut les comparer à des tiroirs ou des petits casiers où l'on rangerait donc un nombre ou un texte.

Les variables peuvent servir à retenir le nom d'un personnage, son état de santé, un numéro tiré au hasard, le numéro de l'arme selectionné, le score du joueur… C'est au développeur de choisir l'utilisation qu'il en fait.

Pour utiliser les variables dans GDevelop, il suffit d'utiliser les conditions et actions rangées dans les catégories “Variables”.

La plupart du temps, on mettra un nombre dans la variable. On choisira donc de modifier la valeur de la variable. Si on veut entrer un texte dans la variable, on choisira de modifier le texte de la variable.

Vous n'avez pas à déclarer la variable que vous voulez utiliser, il suffit juste d'entrer le nom souhaité. Vous pouvez néanmoins déclarer les variables utilisées si vous le souhaitez, et leur affecter une valeur initiale, en éditant les variables globales ( Dans le gestionnaire de projet ), les variables de la scène ( Dans le gestionnaire de projet aussi ) ou les variables d'un objet ( Clic droit sur un objet ).


Portée d'une variable

Dans GDevelop, trois types de variables sont à votre disposition :

  • Les variables globales : Ces variables sont accessibles depuis toutes les scènes du jeu. Elles peuvent servir à ranger une information sur un score par exemple.
  • Les variables de la scène : Ces variables sont elle bornée à la scène. Elles peuvent donc servir pour des utilisations plus proche de la scène, tel que pour garder en mémoire le temps avant la fin de l'alarme.
  • Les variables des objets : Chaque objet peut lui aussi posséder des variables. Ainsi, un ennemi peut avoir une variable “Munition” ou “Vie”.

Les actions et conditions relatives aux variables d'objets sont dans la catégorie Objet > Variables.


Temps écoulé depuis la dernière image ( TimeDelta )

Durant l'execution d'un jeu, l'image et les évènements sont respectivement rafraichis et executés plusieurs fois par secondes. Ce nombre peut varier suivant les ordinateurs : Ainsi, un ordinateur rapide pourra par exemple rafraichir un jeu à hauteur de 150 images par secondes, alors qu'un ordinateur plus modeste le rafraichira à 35 images par secondes.

Les évènements pouvant donc être executés plus ou moins de fois par seconde suivant les ordinateurs, il est important que les évènements du jeu ne dépende pas de la vitesse de l'ordinateur.

Comment rendre son jeu indépendant de la vitesse de l'ordinateur ?

GDevelop prend déjà en compte cette vitesse lors de l'utilisation d'actions ou de conditions comme celles relatives aux forces pour déplacer un objet, ou lors de l'utilisation d'un comportement, ou encore d'un chronomètre.

Cependant, si vous effectuez une action telle qu'une modification continue dans le temps d'une grandeur ( Comme obscurcir lentement la transparence d'une image, ou ajouter régulièrement un certain nombre à une variable ), vous devez prendre garde à que cette action soit executée de la même vitesse quelque soit l'ordinateur.

L'expression TimeDelta(), qui renvoit le temps en seconde depuis la dernière image, permet de s'assurer que la modification apportée est de même durée quelque soit l'ordinateur.

Ainsi, n'utilisez pas un évènement comme celui ci :

mais assurez vous que la modification soit faite de façon continue :

Ici, la variable augmentera de 100 unités par seconde, et ceci quelque soit l'ordinateur. Alors que pour le premier évènement, il n'y a aucun moyen de savoir à quelle vitesse augmentera la variable ( Sur un ordinateur rapide, elle augmentera de plusieurs centaines d'unités par secondes ! ).

Un bon moyen de tester si quelque chose dans votre jeu est sensible à la vitesse l'ordinateur est de désactiver la limite d'images par seconde, dans les propriétés du jeu.


C'est à peu près tout

Vous pouvez continuer à consulter le guide de mise en route pour découvrir l'interface de GDevelop.