C#

Haunted Chase

Haunted

Début : Mars 2014
Durée : 1 semaine
Langage : C#
Bibliothèques/Outils : Unity

Lien vers le jeu (WebPlayer)
Lien vers une vidéo test du jeu (par FancyPanda)

Haunted Chase est un projet de jeu créé lors de la Procedural Death Jam, qui a eu lieu sur la semaine du 8 Mars 2014. Le but était alors de créer un jeu appartenant au style « Rogue-like-like » (définition dérivée de la nouvelle vague inspirée du « Rogue-like », tels que The Binding Of Isaac, Spelunky, etc.). Ainsi, il fallait créer un environnement labyrinthique, généré aléatoirement, où la mort permanente obligerait le joueur à recommencer la partie.

Stan Wilhelm et moi-même avons donc décidé de participer ensemble à la PDJ, cette dernière étant notre toute première expérience de Game Jam. Nous n’avions que peu d’idées originales au départ, mais nous savions que nous souhaitions jouer sur une masse importante d’ennemis à l’écran. Le joueur devait à la fois se sentir oppressé par le labyrinthe et par les entités ennemies affluant vers lui.

Stan commença donc par s’occuper de la génération aléatoire des niveaux, tandis que je m’occupais pour ma part de régler le problème de l’algorithme de Pathfinding. Il était clair que pour gérer une quantité importante d’ennemis, la seule utilisation de l’algorithme A* ne serait pas suffisante. Un court test me révéla qu’en effet, le nombre d’ennemis ne pouvait dépasser la cinquantaine sans optimisation. C’est en retrouvant cet article très intéressant que j’eus l’idée de contourner le problème en appliquant le Pathfinding aux Tiles du niveau, plutôt qu’à chaque ennemi. Ainsi, l’algorithme est propagé depuis le joueur (rendant le calcul plus long), mais n’est fait qu’une seule fois (plutôt qu’une fois par ennemi). La population de chaque Tile est d’ailleurs aussi prise en compte dans l’algorithme, afin que les ennemis s’évitent dynamiquement.

Nous voulions ensuite que la visibilité du joueur soit quelque peu réduite par les éléments l’entourant, rendant le niveau d’autant plus labyrinthique. Encore une fois grâce à un article très instructif, je décidais plutôt de prendre une approche nettement moins coûteuse que de calculer directement le champs de vision du joueur. Les murs sont donc extrudés en direction de la caméra, provoquant un effet ressemblant à d’immenses colonnes bloquant la vision alentours. Bien que je m’attendais à une approximation plus proche du champs de vision, l’effet reste très intéressant et donne une certaine ambiance au donjon.

Une fois ces éléments mis en place, nous pensions alors réaliser un jeu où le joueur devrait s’approcher du maximum d’ennemis possible (les motivant ainsi à le suivre), tout en évitant leur contact. Le jeu aurait donc été principalement basé sur l’esquive, mais après quelques tests il s’est avéré que l’expérience restait relativement pauvre et nous avons donc décidé d’implémenter attaques et bonus. Ainsi, un shotgun (clic gauche) permet de tenir les ennemis éloignés et d’en éliminer, tandis qu’un bouclier (clic droit) permet de se sortir de certaines situations délicates. Pour survivre, le joueur est aussi motivé à explorer le niveau pour trouver divers bonus augmentant ses capacités (ou en les réduisant si la chance n’est pas avec lui).

Nous avons réussi à terminer la plupart de ce que nous voulions entreprendre dans les délais. Avec le recul, le jeu souffre tout de même d’une difficulté trop élevée, et ce principalement parce que nous n’avons pas pu beaucoup y jouer (les dernières fonctionnalités étant implémentées tard dans le développement). Avec plus de temps, j’aurais aussi aimé fluidifier le mouvement des ennemis qui se contentent de bouger du centre d’un Tile à l’autre, trahissant légèrement le fonctionnement du  Pathfinding. Je suis tout de même ravi du retour qu’ont donné les autres développeurs sur le jeu, votant pour nous et classant Haunted Chase en 5ème position de la catégorie « Best Game », parmi plus d’une centaine de participations !

Au final, cette première Game Jam aura été une incroyable expérience. Bien qu’on m’en parlait beaucoup, je crois que je sous-estimais l’intensité de ce type d’événements et la difficulté de développer avec une contrainte de temps. De plus, le fait de concilier les cours à l’Université en plus du développement le soir aura rendu cette semaine très éprouvante. Cependant, cela m’aura aussi montré à quel point ce type d’événement est formateur et vous pousse à réagir à la contrainte du temps. J’ai vraiment hâte de pouvoir retenter l’expérience dès que l’occasion d’une prochaine Game Jam se présentera.

Moon

MoonBanner

Début : Décembre 2012
Durée : 2 mois
Langage : C#
Bibliothèques/Outils : Unity

Lien vers le jeu (WebPlayer)

« Moon » est un petit projet de jeu que j’ai créé dans le but de découvrir Unity. J’avais alors beaucoup de retours sur ce moteur de jeu et tous m’encourageaient à l’essayer. Un premier plaisir aura été de constater le grand nombre d’informations disponible en ligne, en plus d’une documentation très soignée qui m’aura facilité le travail.

Dans le jeu, on contrôle un petit personnage muni d’un jetpack qui vient d’atterrir sur la surface de la Lune. On sait alors peu de choses, sinon qu’un autre personnage nous demande d’aller récupérer un trésor. S’ensuit alors un parcours où le but est de trouver des clés pour progresser dans le niveau tortueux. Il faudra cependant éviter des pics et des astéroïdes qui blesseront notre personnage, le renvoyant au début du niveau s’il n’est pas assez habile.

Le joueur dispose d’une barre de vie ainsi qu’une barre de mana (voire essence) qui représente le temps d’utilisation du jetpack. La barre de mana se régénère automatiquement lorsqu’on touche le sol, permettant de ne limiter l’utilisation du jetpack que sur la durée d’un saut.

Ce projet tire quelques inspirations des jeux Zelda,aussi bien dans le graphisme que dans certains effets sonores issus de Zelda 3. J’ai modestement créé les différents dessins et animations tandis que Stan Wilhelm a composé les 2 musiques du projet. Je le remercie encore pour son aide !

Ce qui est certain, c’est que ce moteur de jeu m’aura clairement convaincu de sa puissance. Les différentes possibilités sont vraiment impressionnantes et tout est très accessible et bien documenté. Depuis, je l’utilise assez fréquemment, que ce soit pour envisager des projets plus longs ou pour rapidement créer des prototypes. Sans parler du fait qu’il est possible de publier ses créations sur une dizaine de plateformes différentes…

Finalement, je ne regrette pas du tout de m’être essayé à Unity. Concernant le projet, j’aurais aimé essayer de développer des outils permettant une création de niveaux plus facile. Je crois aussi avoir rendu le jeu relativement difficile, avec une inertie surement trop importante, même sur la Lune ! Le fait d’avoir trop longtemps joué au projet pendant son développement aura rendu le paramétrage difficile. En tous les cas, cela m’aura permis de découvrir de toutes nouvelles choses et d’aborder une approche différente du développement d’un jeu avec l’utilisation d’un moteur.