Sites


Blender pour le jeu video

Remplacer les primitives par des ressources

Dans le chapitre précédent, nous avons obtenu un jeu fonctionnel, mais il faut reconnaître qu'il n'est pas très joli. La prochaine étape sera donc de remplacer nos objets temporaires, par des objets que nous aurons modélisés et texturés, ou téléchargés sur un site de ressources libres, comme BlendSwap.com ou OpenGameArt.org. Attention de bien choisir des objets adaptés au temps réel (voir la section précédente, chapitre Spécificités du Game Engine).

Il est conseillé de créer chaque objet dans un fichier .blend distinct, ainsi il sera facile de se constituer progressivement une bibliothèque d'objets (on les appelle souvent assets), réutilisable dans de futurs projets.

Pour ce chapitre, nous pourrons utiliser les ressources qui sont associées à ce manuel.

Selon le type d'objet et ses conditions d'utilisation, différentes techniques s'offrent à nous, chacune ayant ses avantages et inconvénients.

Remplacement manuel du mesh(maillage)

C'est sans doute la méthode la plus simple et la plus rapide. Elle conviendra parfaitement pour des objets simples, comme des éléments de décor. Ici, nous allons remplacer la sphère qui figure un bonus, par un asset représentant un bambou.

Commençons par importer le mesh de l'asset dans notre fichier blend : File > Append > bambou.blend > Mesh > Bambou.

Sélectionnons l'objet Bonus et rendons-nous dans le panneau Mesh

Remplacement de mesh dans Blender Game Engine

Il suffit de remplacer le nom de notre mesh temporaire (Cylinder), par le nom du mesh de notre asset (bamboo). Nommer correctement ses meshs et ses objets est évidemment indispensable !

Notre Mesh importé va hériter de la taille et de la rotation de notre objet précédent, ce qui a de fortes chances de le déformer.

Remplacement de mesh dans Blender Game Engine

Nous changerons donc pour chaque élément les propriétés de tailles et de rotations des objets pour les adapter à notre scène via le panneau des propriétés de la vue 3D (touche N).

Nous pourrions aussi appliquer les transformations réalisées sur le maillage de base avant de le remplacer. Pour cela, nous utiliserions Ctrl + A puis choisirions l'option à appliquer.

Remplacement de mesh dans Blender Game Engine

Dans le jeu, nos bonus ont à présent l'apparence de bambous.

Remplacement de mesh dans Blender Game Engine

Faites des économies d'échelle!

En temps réel, la gestion des ressources est cruciale : elle fait la différence entre un jeu fluide et un jeu saccadé (ou même entre un jeu qui fonctionne, et un jeu qui plante au démarrage).

Il est important de comprendre que si deux objets partagent le même mesh (maillage), ce dernier ne sera chargé qu'une seule fois en mémoire. Il est donc très avantageux de réutiliser autant que possible les mêmes mesh. Ce principe fondamental s'applique également pour les textures, les sons, etc.

Parenter une ressource

Lorsque l'asset est plus complexe (typiquement, un groupe composé de plusieurs objets, comprenant des animations, etc.), la première méthode ne sera pas suffisante. Par contre, on peut attacher (parenter) notre asset à notre objet basique et masquer ce dernier. Ici, nous allons "remplacer" le cube représentant le joueur, par un asset plus sympathique.

Importons le Group contenant notre asset:File > Append >(...)voiture.blend > Group > Bambou.

Positionnons-le de manière à ce qu'il s'inscrive dans notre cube, puis parentons-le (sélectionner le groupe, puis le cube, CTRL + P > Set parent to Object).

Nous avons toujours besoin de notre cube (il contient les briques logiques et gère les collisions), mais nous ne souhaitons pas le voir s'afficher : dans l'onglet Physics, cochons Invisible.
À l'inverse, nous souhaitons voir l'asset, mais nous ne souhaitons pas qu'il gère les collisions : on vérifiera donc que No Collision est bien coché dans le panneau Physics de chaque objet du groupe.

Gestion des ressources

Pour des projets plus complexes, on préférera lier les assets plutôt que les importer (utiliser Link plutôt que Append). Ainsi, une modification de l'asset sera automatiquement répercutée à l'ensemble du projet. Cela facilite également le travail en équipe. Dans ce cas, il convient de placer les assets dans un sous-dossier de votre projet, et d'utiliser des chemins relatifs, comme pour un projet Blender classique.

Remplacement dynamique avec la brique logique Replace Mesh

Parfois, il est utile de remplacer dynamiquement un asset au cours du jeu ; par exemple, une caisse en bois sera remplacée par des débris si le joueur la percute.

    1. Importons les deux objets représentant la caisse et les débris : File> Append > (...)caisse.blend > Object > Caisse Debris;
    2.  La caisse a besoin de pouvoir détecter les collisions, nous allons donc lui donner une physique simple : dans l'ongletPhysics > Physic Type, sélectionnonsDynamics ;
    3. La partie logique sera très simple également, avec trois briques logiques :
      1. un sensor Collision, qui détecte la property Player (vérifier que notre objet joueur possède bien cette property)
      2. lié à un controller And
      3. lié à un actuator Edit Object
    4. L'actuatorEdit Object permet différentes actions, ici c'est Replace Mesh qui nous intéresse. Dans le champ Mesh, entrons le nom du mesh qui représente les débris :Debris;
    5. L'objet qui contient le mesh Debrisdoit exister dans notre scène pour que le Replace Mesh fonctionne. Néanmoins, on ne souhaite pas qu'il soit réellement présent au début du jeu. Il suffit de le déplacer dans un calque inactif ;
    6. Lançons le jeu et dirigeons le joueur vers la caisse : elle se brise en morceaux.

L'effet mériterait bien entendu d'être amélioré, par exemple en projetant quelques débris (section Comportement des objets et personnages au chapitre Génération d'objets) qui rebondiront dans le décor et en agissant sur le joueur (section Comportement des objets et personnages chapitre Comportement des objets dans notre monde).

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.