Sites


Blender pour le jeu video

Spécificités du Game Engine

Blender est une suite graphique 3D complète. Ses usages vont de l'impression 3D aux films à effets spéciaux ou d'animation. Une utilisation pour le Game Engine implique donc des spécificités.

Adapter son interface

L'interface par défaut est adaptée au moteur de rendu Blender Internal destiné à du film d'animation.

Il faut changer Blender Renderdans le menu de la barreInfo et opter pour le choix Blender Gameafin de travailler avec l'interface du moteur de jeu.

Un changement immédiatement visible est la modification de l'onglet Render.

Les panneauxRender et Dimensions (qui permettent de lancer le rendu d'une image à une certaine dimension) ont été remplacés par des panneaux Embedded Player et Standalone Player (destinés à définir l'emplacement, la taille de la fenêtre dans laquelle va s’exécuter le jeu).

Les différentes options de ces nouveaux panneaux seront précisées dans le chapitre Bien préparer son projet, à la fin de cette section.

Adapter son agencement de fenêtre

Nous utilisons prioritairement certaines fenêtres (ou éditeurs) en fonction du type de travail à réaliser. Bien souvent, un utilisateur confirmé aura défini son propre agencement de fenêtre, et Blender permet facilement de faire apparaitre une fenêtre ou une autre en fonction des besoins. Néanmoins, Blender propose par défaut un agencement appelé Game Logic. C'est celui-ci que nous préfèrerons parce qu'il positionne de manière claire les fenêtres les plus importantes lorsque l'on pratique de la création de jeu vidéo.

 

Ces fenêtres sont (en allant de gauche à droite et de haut en bas):

  • Outliner qui nous sert à avoir une vue en liste de nos éléments de jeux ;
  • 3D View qui servira entre autre à prévisualiser le jeu ;
  • Text Editor où nous écrirons du code Python ;
  • Logic Editor où nous assemblerons et éditerons nos briques logiques ;
  • Properties bien connue des utilisateurs de Blender.

Spécificités graphiques

Les capacités de l'affichage 3D des ordinateurs ont évolué au cours du temps, ce qui se traduit actuellement par deux méthodes de rendu.
Dans le panneau Shading, le choix Multitextureest actif par défaut. Il correspond simplement à la possibilité d'afficher des matériaux utilisant plusieurs textures.

Le choix GLSL est une option plus intéressante graphiquement car elle permet de nombreux effets avec les éclairages, les matériaux, les effets de texture, et d'autres améliorations graphiques.
La plupart des ordinateurs récents supportent les capacités GLSL. Néanmoins, si vous destinez votre jeu à une large diffusion et que la qualité graphique du jeu est mineure (ou par nécessité d'optimisation), vous pourrez opter pour le choix Multitexture.

Les matériaux

L'interface de l'onglet des matériaux dans le Blender Game est dérivée de celle du Blender Render, avec quelques subtilités. Puisque le moteur de rendu Cycles est désormais souvent le premier moteur de rendu appris par un graphiste utilisant Blender, un petit récapitulatif s'impose sur l'ongletMatériauxet ses différents panneaux étant donné que les matériaux et les textures doivent être gérés différemment.

  • Comme dans le Blender Render, pour un matériau donné, les panneauxDiffuse, Specular, Shading permettent de définir les paramètres de base du matériau (couleur, intensité, dureté, auto-illumination, sensibilité à la lumière ambiante, etc.).
  • Les panneauxMirroretSubsurface Scatteringn'existent plus. Ce sont des fonctionnalités non présentes dans le Game Engine. Il sera possible de simuler un miroir avec des techniques avancées, mais ce n'est plus une option de matériau.
  • Le panneau Options permet d'activer des fonctions de colorisation supplémentaires. Malheureusement, quelques-unes de ces options n'ont aucun effet dans le Game Engine (par exemple: Traceable, Full Oversampling, Sky ou encore Invert Z Depth). Par contre d'autres peuvent s'avérer très utiles pour l'optimisation de jeux :
    • L'option Object Color correspond à une couleur propre à un objet. Deux objets peuvent utiliser le même matériau mais avoir une couleur différente définie par cette option.
    • Les optionsVertex Color Paintet Vertex Color Light correspondent à une collection de couleurs variant selon les vertices d'un maillage. Pour le jeu vidéo, cela sert souvent à colorer, illuminer ou assombrir des parties d'objet, pour améliorer la qualité graphique d'un objet sans alourdir son matériau.
    • L'option Face Textures permet à la texture brute de se substituer au résultat de tous les réglages du matériau. Cette option était fort utilisée avant l'arrivée du GLSL afin de s'assurer de l'affichage des textures dans le Game Engine.
  • Le panneau Shadow permet de gérer les ombres à partir des matériaux. Ces options doivent être pensées en relation avec les lumières. Certaines options n'ont aucun effet dans le Game Engine comme Receive Transparentou Shadows Only.

Sur cette image, les cases cochées correspondent aux options supportées par le Game Engine.

Les particules

Les particules des moteurs de rendu Blender Render ou Cycles ne sont pas accessibles dans l'interface Blender Game car leur physique complexe n'est pas supportée. Par des effets de textures animées, il est possible de générer en temps réel le même genre d'effets créés avec des particules (feu, fumée) ou pourquoi pas en utilisant un générateur automatique d'objets sur lequel nous aurons un chapitre spécifique.

Un add-on appelé Easy Emit permet de gérer la génération de plans texturés, avec une interface semblable à celle du système standard des particules. Voir http://blenderartists.org/forum/showthread.php?241656-easyEmit-*Update*-13-06-2013

Spécificités et limitations liées à certaines techniques de modélisation et d'animation

Pour animer des éléments dans Blender, certains ont peut-être l'habitude d'utiliser des fonctionnalités avancées comme les contraintes d'objet (Object Constraints) pour conserver ou changer les propriétés ou le maillage de leur modèle, pour s'aider dans l'animation de l'une ou l'autre partie de leur personnage ou tout simplement pour lui faire suivre un objet particulier de la scène. Malheureusement, certaines de ces aides et méthodes ne sont pas disponibles dans le Game Engine. Il faudra utiliser des alternatives pour arriver à un résultat identique ou approchant.

Les techniques utilisant les contraintes d'os (Bone constraints) sont heureusement bien supportées, mais ne sont pas toutes disponibles.

Et pour finir, la règle générale pour l'utilisation des modificateurs(modifiers), c'est que seuls les modificateurs s'appliquant sur des maillages (mesh) et qui ne dépendent pas d'un facteur temps sont supportés. Quoi qu'il en soit, on préfèrera appliquer les effets de tous les modificateurs avant la publication du jeu de manière à alléger les calculs autant que possible.

Contraintes d'objet

Il est important de savoir que la plupart des contraintes d'objet ne sont pas supportées par le Game Engine. L'unique contrainte d'objet supportée est le Rigid Body Joint, à l'exception du joint de type Ball. La contrainte de type Rigid Body Joint ne fonctionne que pour les objets de type mesh, pour autant que l'objet ait un modèle physique (voir le chapitre Le comportement des objets de notre monde dans la section Comportement des objets et personnages).

Les joints sont créés automatiquement au démarrage du jeu, mais ne peuvent être détruits ou créés au cours du jeu que par une des commandes Python spécialisées.

L'absence de presque toutes les contraintes dans le BGE peut sembler rédhibitoire mais il est souvent possible de compenser cette perte par diverses techniques :
  • Utiliser une relation de parent entre objets à la place de la contrainte Copy Location ;
  • Utiliser la brique logique Edit Objectet son optionTrack To à la place de la contrainte Track To.

En dernier recours, on peut toujours tenter de reproduire l'effet d'une contrainte par du code Python.

Contrainte d'os

Pour les armatures, un certain nombre de contraintes d'os (Bone Constraint) sont supportées. En voici la liste exhaustive:

  • Track To
  • Damped Track
  • Inverse Kinematics
  • Copy Rotation
  • Copy Location
  • Floor
  • Copy Scale
  • Locked Track
  • Stretch To
  • Clamp To
  • Transformation
  • Limit Distance
  • Copy Transform

Modificateurs

Davantage de modificateurs (modifiers) sont supportés dans le BGE. En premier lieu, le modifier Armature qui permet l'animation par armature d'un objet. Pour le reste, les modifiers qui n'agissent que sur le mesh de l'objet et qui ne dépendent pas du temps sont supportés. Voici une liste de modifiers qui dépendent du temps et donc ne sont pas supportés :

  • Build
  • Displace
  • Wave
  • Cloth
  • Fuild Simulation
  • Explode
  • Smoke
  • Mesh Cache

En cas d'hésitation, le plus simple est de tester directement dans le BGE si un modifier est supporté avec le Standalone Player. En général, l'effet du modifier est supporté mais pas son animation.

Toutes ces remarques sur les modifiersne valent que pour ceux non appliqués avant le lancement du jeu. L'application d'un modificateur (en appuyant sur le boutton Apply) transforme de manière permanente le maillage de l'objet (lemodifierdisparait d'ailleurs de l'interface). Et donc la question du support de ce modifier dans le BGE ne se pose plus, puisque le maillage a subi des transformations irréversibles et maintenant visibles dans le Game Engine.

Si vous avez l'habitude d'animer directement un modifier (en ajoutant des clés d'animation sur ses paramètres) ou indirectement (par le biais de l'animation d'un objet référence ou de celles de weight groups), la parade à adopter sera d'appliquer le modifier en tant que ShapeKey (avec le bouton Apply as Shape Key). Le BGE supporte les animations de ShapeKeys.

L'utilisation de modifiers dans le jeu ne se justifie que pendant la phase de développement. Une fois en production, il est généralement préférable d'appliquer le modifier pour améliorer les performances à l'exception de l'armature.

Pas de gaspillage de ressources

Sans rentrer dans des détails qui seront approfondis plus tard, il faut retenir que l'optimisation est au cœur de la conception d'application en temps réel. Voici quelques points de repères et de bonnes pratiques.

  • Un jeu vidéo est considéré comme parfaitement fluide s'il est capable d'afficher enviiron 60 images par seconde. En dessous de 50, le jeu commence à sembler saccadé mais reste utilisable. En dessous de 25 images par seconde, l'illusion de mouvement ne fonctionne plus, et l'expérience ludique est fortement dégradée.
  • Il est important de limiter le nombre de faces de chaque objet. De nombreux facteurs entrent en compte, mais disons qu'il est déraisonnable de dépasser quelques milliers de triangles pour un objet important, et quelques centaines pour un objet secondaire.
  • Attention, Blender indique le nombre de faces, pas le nombre de triangles. Dans la majorité des cas, il faut donc multiplier par deux le nombre indiqué.
  • Pour des raisons techniques liées à la rapidité d'affichage en jeu, les textures devraient toutes respecter une règle simple : être des images carrées dont le côté est une puissance de 2. C'est à dire 128x128 pixels, ou 256x256 pixels, 512x512 pixels et ainsi de suite. Les formats préconisés sont le PNG et le TGA.
  • Gardez à l'esprit que vos futurs joueurs ne disposent pas forcément d'un ordinateur très puissant ou d'un système très performant. De manière générale, optimisez, même si ça fonctionne bien sur votre machine. De plus, testez votre jeu sur la machine la moins puissante que vous pourrez trouver, ou celle que vous aurez définie comme "configuration minimum".

Conclusion

Le fait de produire une création qui sera vue en temps réel, et donc constamment calculée pour le rendu, a un impact sur différents aspects de la création 3D tant du point de vue de la modélisation, de la texture ou de l'animation que du rendu global des éléments du jeu. Cela peut être déroutant pour une personne ayant l'habitude des mode Blender Render ou Cycles. Mais comme dans tout acte créatif, ses limitations sont non seulement imposées par le médium (le temps réel, les capacités du Game Engine et les capacités de l'ordinateur qui le fait tourner), mais elles peuvent aussi être vues comme autant de défis créatifs à relever ou à contourner.

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.