Category: Tools


Les ficelles du métier #2 – Blender

June 2nd, 2014 — 4:06pm

Blender, c’est quoi?

Blender. Faut-il encore présenter cet outil ? Oui ? Ok.

Blender est un logiciel gratuit et Open source de modélisation 3D (pour les novices, ça veut dire qu’il nous permet de créer les objets et personnages que vous retrouvez dans nos jeux).

Qui plus est, il est multiplateforme ! Cerise sur le gâteau, il est codé en Python.

Ceux qui nous connaissent ne seront donc pas surpris que nous utilisons ce logiciel.

16481-shot0
Monstre de GWS, version LD

Seul bémol, l’interface.

En effet jusqu’à Blender 2.5, l’interface graphique demeurait austère et requérait une solide connaissance des raccourcis clavier pour la moindre modélisation.

Ce problème a heureusement été résolu dans les versions plus récentes. Je rassure tout de suite les maniaques du clavier : les raccourcis sont toujours là, ils sont juste moins essentiels.

Pour les connaisseurs, le moteur 3D lui-même a été fort critiqué dans le passé mais Blender s’est rattrapé depuis, notamment avec son moteur Cycle, qui calcule l’image à partir d’une technique de calcul appelée ray tracing et qui nous a permis de faire de très jolies choses…

Bastien, travail de fin de formation en 3D, première année, thème “Jeu d’échecs” – Premiers tests avec Cycle

Évidemment, pour les jeux, ça demande un peu trop de performance. Nous nous en tenons donc généralement au moteur de rendu par défaut.

Les mains dans la pâte !

Ceux qui suivent le blog le savent, il y a trois ans, Christel, Bastien et Thomas ont été suivre une formation de 3D dans l’Institut de formation supérieure tout proche.

Petite anecdote amusante : le cours devait être donné sur 3D Studio Max, un autre logiciel de programmation. Cependant, en faisant pression sur le professeur, nous avons réussi à obtenir que le cours nous soit donné en parallèle sur Blender. Cela a tellement bien marché qu’actuellement le cours n’est plus donné qu’en Blender ! Nous n’avons donc aucun remord.

Nous avons suivi cette formation deux ans de suite, nous traînant en classe le samedi matin dès potron-minet pour apprendre la modélisation 3D et l’utilisation de Blender.

Bastien a même rempilé pour une 3e année (et a traîné Joan avec lui, sisi, souvenez-vous, elle avait participé avec nous au Ludum Dare 24).

Christel, travail de fin de formation en 3D, deuxième année, thème “reproduire une image” – Vous reconnaissez?

Une formation, pour quoi faire?

Ce qui est particulier avec la modélisation 3D c’est que c’est un monde à part. Toute personne ayant déjà ouvert un logiciel de 3D “pour voir comment c’était” s’en rendra compte : s’en sortir sans formation ni tutorial, c’est la galère.

Penser en vertex, en side, en face et en node, ou appréhender ce qu’est une normal demande un peu de temps. Mais une fois passé cette étape, Blender devient accessible, grâce à sa nouvelle interface et aux possibilité qu’il offre.

Un exemple ? Les transformers, qui permettent de calculer automatiquement une série d’objets alignés, à l’aide du array, ou de travailler en symétrie en utilisant le mirror.

2014-06-02_18h01_42
Des chaises de salle d’attente de « Get Well Soon! » – elles utilisaient l’Array avant d’être compilées

Interactivité !

De plus, et c’est pour nous un atout majeur, Blender s’interface parfaitement avec Unity 3D (voir un post précédent). Il faut comprendre par là que Unity 3D interprète sans difficulté le format natif de Blender (les fichiers .blend) et qu’il nous suffit juste d’ajouter les fichiers contenant nos models dans notre projet pour qu’ils y soient accessibles.

Sérieusement, on doit juste drag & dropper les objets et ils apparaissent ! C’est magique.

Projets GSM utilisant Blender

Eh bien, tous ceux faits en 3D !

OUT OF HERE

Premier essai plus ou moins abouti de jeu en 3D pour GSM Productions (lors d’un Ludum Dare, bien entendu ! Le Ludum Dare 20), les graphismes du jeu ont surtout consisté en cubes et cylindres très basiques.

Les différents objets du jeu ont néanmoins été modélisés et texturés dans Blender – une vieille version d’ailleurs, datant de l’époque de l’interface infernale. Un plugin Python écrit par un membre de la communauté les exportait vers l’un des formats utilisés par Panda3D (que nous utilisions avant de passer à Unity3D).

Player 2, Start! (LD24)

Non seulement le niveau 3 avait entièrement été modélisé grâce à Blender mais nous avions établi les colliders et placé les monstres et les éléments du jeu dans Blender avant export vers Panda3D.

Considérant qu’il s’agissait d’un plateformer dont trois niveaux sur cinq étaient en 2D, ce n’était pas notre choix le plus pertinent (mais on se soigne depuis).

Christel : “Heureusement, je me suis améliorée depuis…”

Les personnages, quant à eux, avaient été modélisés sur Maya par un ami graphiste qui s’était joint à nous pour l’aventure : Jonas.

Get Well Soon! (LD27)

Évidemment, on n’allait pas ne pas parler de notre bébé du moment. L’entièreté de la version du Ludum dare avait été modélisée par Christel sous Blender (elle vous disait qu’elle s’était améliorée…) et l’animation, également sous Blender, avait été confiée aux bons soins de Bastien.

Dans les versions subséquentes (que vous pouvez toujours trouver sur FrenchCows), la grosse majorité des objets reste modélisée sous Blender. En effet Dimitri, qui nous donne un énorme coup de main notamment avec la modélisation des personnages, utilise ses propres outils.

(Promis, le prochain jeu 3D de GSM Productions ne comptera pas de point d’exclamation dans son titre…)

gws1

Bref !

En résumé, Blender est un logiciel puissant, abordable sur le plan technique, gratuit, Open source et multiplateforme. Que demander de plus ?

Comment » | 3D, Tools

Les ficelles du métier #1 – Unity3D

January 28th, 2014 — 7:36pm

Chez GSM Productions, nous aimons bien expérimenter. Du coup, depuis nos premières expériences vidéoludiques jusqu’à Get Well Soon!, nous n’avons jamais cessé d’essayer de nouveaux outils et de nouvelles méthodes. Cela dit, il semblerait que dernièrement, cette recherche tous azimuts laisse tout doucement place à une consolidation de notre “boite à outils”. C’est pourquoi nous avons décidé d’écrire une petite série d’articles vous présentant nos différents outils. Que vous soyez vous-même dévelopeur de jeux vidéos ou que vous soyez simplement curieux d’apprendre ce que lesdits dévelopeurs utilisent, suivez le guide !

Le choix le plus fondamental est sans conteste celui du “moteur de jeu”. De nos jours, il devient de plus en plus rare d’entreprendre de coder l’entiereté du jeu de A à Z. Bien qu’il s’agisse d’une solution permettant un contrôle total, la complexité du matériel présent dans les ordinateurs d’aujourd’hui, ainsi que celle des jeux actuels, rend cette tâche bien plus périlleuse qu’elle ne l’était auparavant. Parmi la myriade de moteurs et de librairies simplifiant le dévelopement, nous avons jeté notre dévolu sur Unity3D, un choix très populaire, surtout parmis les dévelopeurs indépendants.

Unity Editor Screenshot

L’éditeur de Unity3D pendant une session de travail sur Get Well Soon! 

L’un des avantages de Unity3D est qu’il offre une version gratuite aux limitations bien pensées qui laissent au dévelopeur un très vaste panel de possibilités. De plus, Unity3D est un moteur proposant de nombreuses options d’export du produit fini : PC (Windows, MacOS, Linux), navigateur Web, Android, iOS…  Et avec les licenses appropriées, il est même possible d’adapter son jeu pour les consoles de salon ! Le seul bémol est que l’éditeur de Unity3D n’est disponible que sous Windows et MacOS. Linux en plus aurait été le paradis, mais on ne peut pas tout avoir…

Unity3D export options

Quelques-unes des plateformes supportées par Unity3D

Outre l’aspect coût et multi-plateformes, Unity3D fonctionne avec un paradigme qui nous facilite vraiment la vie: chaque objet du jeu est un type générique (GameObject) auquel sont attachés différents “composants”. Ces composants peuvent aussi bien être un modèle 3D représentant l’objet qu’un script décrivant la logique le gouvernant.

Cette approche extrêmement modulaire encourage la création de composants réutilisables et effectuant une fonction bien particulière et découplée au maximum du reste. C’est une bonne pratique en général, mais c’est encore mieux si le logiciel de dévelopement est construit autour de cette idée.

A look at some components in an object

Quelques composants provenant d’un objet de Get Well Soon!

Depuis que nous avons adoptés Unity3D, le processus de dévelopement a pris une nouvelle ampleur au sein de notre équipe. Le passage d’une série d’outils nécessitant un important travail “manuel” avant de pouvoir être utilisés à un moteur intégrant toutes les étapes pour nous, y compris l’import natif des modèles 3D, images et autres textures, a changé pas mal de choses.

Nous restons toujours à l’affut des nouveaux outils de dévelopement, mais à l’heure actuelle, Unity3D est sans conteste le meilleur environnement pour le type de jeux que nous sommes occupés à concevoir. Nous aurons mis un certain temps à trouver chaussure à notre pied, mais maintenant que c’est fait, qu’est-ce que c’est comfortable !

Pour en apprendre plus sur Unity3D : http://unity3D.com

1 comment » | 3D, Tools

Get Well Soon : une 2ième version pour janvier

November 17th, 2013 — 10:38pm

Après notre succès au Ludum Dare 27 avec Get Well Soon!, nous avons décidé d’un commun accord de surfer sur la vague. Objectif : proposer une deuxième version du jeu avant la fin de l’année.

Et puis, nous sommes tombés sur FrenchCows qui cherchait des développeurs de jeux souhaitant à la fois proposer leurs jeux, s’impliquer dans une communauté, et développer des contenus supplémentaires endéans les trois prochains mois. Leur but collait au nôtre, nous avons donc sauté sur l’occasion !

Nous voici donc, trois mois après le LD27, avec notre premier jeu disponible en ligne !

FrenchCows, c’est quoi ?

450413862_640

Cette initiative française propose à la vente des jeux indépendants. Oui, mais pas seulement : le but est de mettre en rapport joueurs et développeurs et de faire évoluer les jeux pendant toute la durée des “packs”, c’est-à-dire trois mois.

Le jeu proposé en début de pack et en fin de pack ne sera donc pas le même, et ce notamment grâce au retour des joueurs. Il s’agit donc d’un gros investissement de notre part, mais aussi d’une source de motivation !

Si vous voulez en savoir plus, c’est par ici. Et si vous voulez acheter notre pack (on ne va pas arrêter d’en faire la pub :p), c’est par là.

Une deuxième version, ok, mais encore?

Plan des niveaux

Quitte à affiner notre jeu, pourquoi se limiter aux acquis ? Nous avons élargi les niveaux et comptons bien mettre cet espace supplémentaire à profit!

Preview de la nouvelle carte

Preview de la nouvelle carte

Graphisme

Nous nous concentrons d’abord sur la modélisation avant de passer aux textures. Certains objets créés pendant le LD27 doivent être revus, d’autres se sont ajoutés à la liste suite aux nouvelles pièces.

Et oui. Un essentiel.

Et oui. Un essentiel.

En parallèle, nous avançons sur la remodélisation des niveaux, basés sur la carte, avec, en prime des fonctionnalités supplémentaires, comme les portes coulissantes… qui s’ouvrent quand on s’en approche !

gws_20131116

Ensuite, bien sûr, il nous faudra revoir le monstre…

Développement

Comme pour le reste, nous avons ici deux objectifs : ajouter des fonctionnalités et améliorer les acquis.

Étant donné que Frenchcows est une plateforme francophone, nous avons commencé par implémenter une gestion des traductions, afin de rendre le jeu multilingue. Chaque message a donc été lié à un code. Lorsque le message doit être affiché, le jeu envoie le code au module de traduction qui le traduit en message dans la langue choisie par le joueur.

Pour l’instant, nous avons effectué des traductions vers le français uniquement, mais si nécessaire, ce module de traduction nous permettra d’en ajouter davantage !

Par ailleurs, comme mentionné précédemment, le système de fonctionnement des portes a été revu, notamment avec l’ajout d’un type de portes supplémentaires : les portes coulissantes.

A présent, une porte peut donc s’ouvrir grâce à une action du joueur (par exemple, appuyer sur “espace” pour ouvrir la porte) ou à son approche (puisque les portes coulissantes sont bien sûr automatiques !). De plus, le système d’ouverture diverge entre les portes classiques (rotation) et automatiques (glissement).

options

Enfin, le menu a été retravaillé et quelques bugs corrigés. L’option plein écran fonctionne, ainsi que le retour en arrière qui était buggé dans la version du LD27. Un écran de sélection de langue a été intégré pour complémenter l’existence du module de gestion des langues afin de demander un choix de langue lors du premier lancement du jeu. Le jeu enregistre également les options de contrôles stockées par le joueur, pour ceux qui aiment customiser celles-ci. La sensibilité de la souris sera elle aussi réglable (ce paramètre n’est pas encore intégré dans le gameplay, mais l’option est déjà disponible dans le menu).

Et le tout sans oublier que le graphisme du menu principal en tant que tel a été revu et amélioré !

main-menu

Nos outils

Depuis que GSM Productions existe, nous avons pu (et dû) nous familiariser avec tout un panel d’outils. Nous avions donc pensé prendre un peu de temps pour présenter ceux que nous employons actuellement. Qui sait, cela intéresse peut-être certains d’entre vous ! À l’avenir, nous consacrerons un article plus détaillé sur chacun de ces outils, mais en attendant, voici un rapide tour d’horizon de l’ensemble.

Git

Tous les programmeurs vous le diront : il est essentiel d’utiliser un système de gestion de sources. La vocation de ces outils est de conserver un historique des changements apportés au code afin de permettre de revenir en arrière en cas de problème, de gérer les développements simultanés et les conflits qu’ils peuvent entraîner.

Parmis les nombreux systèmes de ce type disponibles, nous avons jeté notre dévolu sur Git. La rapidité et la flexibilité de Git sont deux atouts majeurs en sa faveur, et nous avons appris à profiter de ses points forts à l’aide de Git-flow, un workflow proposé par Vincent Driessen. Sans entrer dans les détails, Git et Git-flow nous mettent à l’abri de nombreux soucis, et nous permettent d’avancer l’esprit libre.

Blender

Un élément récurrent de notre historique est l’utilisation de Blender. Ce logiciel de 3D open source est non seulement puissant, mais c’est également celui avec lequel la majorité des membres de GSM Productions est la plus familière, surtout après 2 ans de cours consécutifs. Dès le départ, l’ouverture, la facilité d’interfaçage avec la plupart des moteurs 3D et les fonctionnalités de Blender en ont fait le choix évident pour l’équipe.

Unity3D

Après pas mal de temps (et de discussions, n’oublions pas que nos deux programmeurs sont des linuxiens patentés), Unity3D a été adopté comme moteur de jeu par GSM Productions. Pour une équipe telle que la nôtre, c’est finalement un choix assez naturel, la version gratuite du logiciel nous permettant déjà de réaliser pleinement nos idées. Il faut aussi bien dire qu’il s’agit du plus robuste moteur que nous ayons eu l’occasion d’employer jusqu’ici.

Comment » | Get Well Soon!, Tools

Partenaires particule(ier)s…

November 28th, 2011 — 12:58pm

En plus du très médiocre jeu de mots du titre, voici un rapide aperçu de ce qui a occupé l’équipe ces derniers temps.
Continue reading »

Comment » | Alun Hevel, Navigation, Tools

In-House Tool

November 10th, 2011 — 10:31am

Dans un jeu vidéo tel que Alun Hevel, on a besoin de stocker des informations dans des fichiers.
Il y a deux sortes de fichiers:

  • les fichiers “dynamiques”, dans lesquels on stockera des données modifiées directement ou indirectement par les joueurs (comme la sauvegarde des options).
  • les fichiers “statiques”, contenant des données nécessaires au jeu, comme les images, les traductions ou encore la structure des cartes.

Il faut donc utiliser des programmes allant du simple éditeur de texte (Gedit, Notepad, Geany, etc.) à l’éditeur d’image (Paint, Gimp,etc.) afin de générer ces fichiers.
Parfois, il n’y a pas de programme qui permet de générer confortablement le fichier désiré, et c’est le cas des fichiers gérant les cartes.
Continue reading »

Comment » | Alun Hevel, Navigation, Tools

Back to top

404