Cela fait un long moment que je n’ai pas posté ici. Il est temps de m’y remettre ! Et pour commencer, publier un article qui dormait au chaud sur un cloud. Le 24-26 Mars 2021 dernier j’ai participé ma première vrai Game-Jam organisée par mon ancienne école (et surtout le Bureau des Jeux).
Qu’est-ce qu’une GameJam ? C’est un concours où il faut réaliser un jeu vidéo dans un délai imparti, avec un thème imposé. C’est l’occasion de s’améliorer, d’expérimenter et de s’amuser. Covid oblige, cet évènement s’est déroulé en ligne, chaque équipe travaillant dans son coin. Nous avions décidé avec ma compagne de participer ensemble. J’aurais la charge du développement et elle de la réalisation des assets (graphismes, animations, son…).
Avant que le projet ne commence, j’ai fait le choix de me limiter sur une technologie : HTML5 (et Javascript of course) et de travailler le jeu en WebGL à l’aide de la librairie Babylon.Js. C’était un pari osé vu que je n’avais créé jusqu’à maintenant que des scènes statiques et un petit jeu (Quaternion) dans le cadre de mes études.
Premier jour
Le jour J, l’équipe organisatrice nous donnait le thème un peu avant midi : « vous êtes un animal ». Nous nous posons sur le balcon pour profiter du soleil qui est présent ce jour-là pour manger et discuter de la marche à suivre. Très rapidement, nous tombons d’accord : ce sera un jeu à la troisième personne. Ma compagne propose que le joueur incarne une tortue, qui nage pour atteindre son lieu de ponte. Sur sa route, elle peut manger des méduses pour se nourrir. Mais attention à ne pas confondre avec les sacs plastiques ! Nous voulions ainsi sensibiliser le joueur a cette problématique écologique et environnementale.
Ce samedi, les choses avancement vite, ma compagne réalise rapidement le tileset de l’animation de la tortue. Nous avions aussi créé un board commun sur Trello pour suivre les tâches à réaliser, les bugs à résoudre et idées. De mon coté je mets en place l’environnement pour développer, l’architecture basique et la boucle principale.
Deuxième jour
Dimanche je m’égare et cela va coûter cher au développement. Ayant joué à l’excellent Abzû, j’avais dans l’idée d’une tortue évoluant gracieusement en 3 dimensions. Selon le mouvement de la souris, elle se serait tournée dans une direction ou une autre. Ma compagne quant à elle voyait la tortue contrôlée au clavier et évoluant droit devant elle au milieu de récifs et rocher, esquivant les sacs plastiques et gobant les méduses. Comme quoi, même en sachant que la communication est la clef, il est toujours possible de se planter. D’autant que sa solution était bien plus simple à mettre en place et plus accessible. Je perds donc une bonne partie de dimanche dans les méandres du contrôle souris. Finalement, après re-discussion je redirige mes efforts sur une autre approche en suivant l’idée d’un « infinite runner » mais sous l’eau.
Les niveaux seront conçus sur Blender en utilisant au maximum les instances et les animations, oscillantes au gré des vagues seront importées dans l’environnement sous forme de Sprite. Cela nous permet de prévoir sur papier le niveau avant de le réaliser sur Blender et le charger à la volée dans Babylon. Dans Blender, la scène est composée d’instance de mesh ainsi que d’objet vide, servant de marqueur à la position des sprites. Des « tags » dans Blender permettent de devenir des tags dans Babylon afin de marquer les mesh.
Le fichier de scène Blender est exporté au format Babylon (un fichier Json). Au moment de charger un niveau, le jeu charge la scène et l’analyse pour peupler la scène Babylon avec les sprites, mesh et composants correspondants. Les tags permettent ainsi de peupler et habiller les mesh dans Babylon.
Troisième jour et une semaine
Hélas le chrono tourne. Si la nuit de samedi à dimanche avait été reposante, je continue de coder toute la nuit de dimanche à lundi pour rendre quelque chose de potable. Ma compagne continue en parallèle les décors et dessins pour peupler notre petit monde sous-marin. Puis c’est l’heure du rendu, grand moment pour vérifier que le zip rendu au jury contient bien toutes les ressources, images, corrections de fautes d’orthographe… Hélas, le temps perdu a fait que le jeu est particulièrement injouable… Nous n’avons eu que peu de retour a l’issu du rendu à mon grand regret et malheureusement nous n’atteignons pas le podium. La semaine qui suit est l’occasion pour moi de travailler tous les soirs à améliorer le jeu pour le rendre jouable.
Malgré les difficultés, cet exercice fut très formateur et nous a permis d’apprendre beaucoup sur la manière de créer un jeu et un projet à deux. Par exemple, la nécessité de créer rapidement une version jouable à l’aide de techniques maîtrisées puis de tenter de nouvelles choses.
Vous pouvez désormais retrouver notre jeu à cette adresse : http://projects.les-planetes2kentin.fr/JustKeepSwimming/index.html
Et n’hésitez pas à retrouver le site de ma compagne : Des gammes et des sciences