Blender Game Logic

Les bases

Préparation

Préparez votre projet en sélectionnant l'arrangement “Game Logic” (Layout) qui prépare la fenêtre pour créer un jeu avec des briques logiques, et en choisissant le moteur de jeu Blender. Pour de meilleurs résultats, choisissez le rendu GLSL dans l'éditeur de propriétés, premier onglet “Render” et ensuite choisissez “Texture” dans le View Port Shading.

  • Pour démarrer le jeu, placez la souris sur la vue 3D, appuyez sur la touche “P”.
  • Pour arrêter appuyez sur la touche “Echap”

Briques logiques

Pour assembler les briques logiques, il faut relier les boîtes entre elles en suivant l'ordre : capteur - contrôleur - actionneur. Premier essai avec un capteur “Always” et un contrôleur “And”. Cliquez dans le rond et maintenez appuyer le bouton de la souris pour le relâcher dans le rond du contrôleur.

Pour déconnecter les briques, appuyer sur “Alt”, maintenez le bouton de la souris enfoncé (le curseur se transforme en couteau) et glisser pour couper le fil.

Vous pouvez copier toutes les briques logiques d'un objet sur d'autres et même ses propriétés de jeu (Game Properties). Pour cela, sélectionnez les objets sur lesquels nous voulons ajouter les briques puis en dernier l'objet qui possède ces briques (avec la touche “MAJ” ou “SHIFT” par exemple). Dans le menu “Object” de la 3D View, Game > Copy Logic Bricks. Et voilà !

Exemple

Rotation du cube, en connectant un actionneur “Motion”. Toutes les 10 images, le cube tourne de 5 degrés en Y. Trois choses à régler pour “Always” : cliquer sur les “…” de gauche, ça veut dire qu'il génère un rythme (pulse). Choisir la fréquence, en images par seconde, et appuyer “Tap” pour envoyer un pulse True.

Premier jeu : Trésor de l'espace

Un petit vaisseau sous forme de cône très simple est dirigé par les touches du clavier pour toucher une sorte de bonus qui augmente le score. Au bout de quatre collisions avec ce bonus, le jeu quitte. L'autre objet se transforme en bonus quand le vaisseau le touche.

1 - Faire bouger le vaisseau

  • Créer un cône : add > Mesh > Cone.
  • Le faire tourner sur l'axe Y et Z
  • Appliquer son orientation (Ctl+A) > Apply Rotation & Scale. C'est important sinon les mouvements ne feront pas ce à quoi on s'attend.
  • Ajouter un capteur “Keyboard” que vous pouvez nommer ToucheHaut. Appuyer sur la touche vide “Key” avec la flèche du haut du clavier.
  • Relier le à un contrôleur “And” et à un actionneur “Motion”, que vous modifierez pour le faire avancer en Y (Loc. pour Location).
  • Tester cette partie (touche P et Echap pour fermer)

  • Continuez avec les touches du bas, de côté gauche et droit (en rotation cette fois-ci)

2 - Toucher des objets

  • Pour que le vaisseau puisse toucher un objet, il faut lui ajouter une propriété (panneau “Add Game Property”, appuyer sur le “+” à gauche). Si vous ne voyez pas ce panneau, appuyer sur la touche “N”.
  • Nommer cette propriété comme vous voulez, par exemple “joueur”

  • Créer un objet nommé “Bonus” qui va détecter la collision avec le vaisseau. Par exemple un cylindre (Add > Mesh > Cylinder), que l'on peut modifier pour que ça ressemble à une pièce d'or mon seignor.
  • Modifier ses propriétés physiques dans l'éditeur de Propriétés. Choisir “Sensor” dans Physics Type.
  • Ajouter un capteur “Collision” et dans Property, écrire “joueur”. Il détectera la collision avec les objets qui ont une propriété “joueur”, donc notre vaisseau.
  • Relier le capteur à un “And” et à une action visible pour comprendre le mécanisme, par exemple détruire l'objet avec l'actionneur “Edit Object” > “End Object”
  • Tester le jeu

3 - Une petite animation

Il y a plusieurs méthodes pour créer des animations. Une très simple peut être faite avec les briques logiques actionneurs “State” et “Delay”. Les états permettent d'avoir différentes organisation de boites. L'idée ici est de dire : si notre objet “Bonus” est touché par un objet qui a une propriété “joueur”, alors je change d'état. Dans ce nouvel état, il y a un “Always” qui déclenche une rotation toutes les 20 images pour créer l'animation. Et après un “Delay” de 120 images, on revient à l'état de départ, l'état 1.

État 1 : réception de la collision

État 2 : animation et retour à l'état 1

4 - Afficher le score

  • Créer un objet Text
  • Ajouter une propriété “Text Game Property” (le nom est “Text, on ne peut pas le changer apparemment), choisir le type “Integer” car ce sera un nombre, le nombre de collisions avec le bonus.
  • Sélection le Text et le Bonus avec la touche Shift pour pouvoir faire communiquer les briques logiques de ces deux objets.
  • Relier le And du Bonus à un actionneur du Text : “Property” > Add > Text (nom de la propriété)
  • Jouer, normalement, le score devrait s'inscrémenter

Attention c'est difficile à lire, il s'agit bien des briques logiques de deux objets différents : “AffichageScore” l'objet Texte et l'objet “Bonus” qui est le capteur qui détecte les collisions.

5 - Quitter le jeu

  • Ajouter un capteur “Property” à l'objet Text que j'ai appelé “AffichageScore”
  • Avec la condition “Equal”, on dit que si la valeur de la propriété du Texte est égale à 4 alors on déclenche une action
  • Connecter cette brique à un brique actionneur “Game” > “End Game”. Et voilà, au bout de 4 collisions, le jeu s'arrête.

Deuxième jeu : Chasse au Donut !

1 - Suivre le Donut

Créer les objets Donut et Suzanne et leurs logiques

L'objet Donut est un Torus, on lui applique un mouvement en Y pour qu'il traverse l'écran. L'objet Suzanne est l'objet de base de Blender, une tête de singe. On lui ajoute une brique actionneur “Edit Object” > “Track To” pour suivre le Donut. Reste à appliquer les changements de rotation (Ctl-A > Rotation) et à bien définir les axes du “Track To”.

2 - Tirer dessus !

Créer l'objet Laser

Le Laser peut être n'importe quel objet, ici une icosphere. Nous lui appliquons un mouvement sur l'axe X (perpendiculaire au mouvement du Donut).

Envoyer le laser

Pour envoyer l'objet Laser, il faut ajouter une brique actionneur “Edit Object” > “Add Object”, déclenchée par une brique Always cadencée à 20 images. Le paramètre “Time” est la durée de vie de l'objet toujours en nombre d'images. Si c'est 0, l'objet n'est jamais détruit.

Limiter le mouvement du Donut

Une petite astuce pour limiter le mouvement du Donut, lui ajouter une brique actionneur “Constraint” > “Location Constraint” > “Loc Y”. Le min et max sont les limites de la position et damping est la capacité à s'arrêter avec douceur, pas brusquement.