Evoland sur GameBoy !

Comme vous le savez peut-être si vous avez vu ma série d'article sur le développement GameBoy ou si vous me suivez sur Twitter, je me passionne (de manière un peu obsessionnelle ces derniers temps, je le reconnais) pour la GameBoy. La nostalgie y est probablement pour beaucoup : ma toute première console de jeu était en effet une GameBoy Color (celle qui illustre cet article), accompagnée du jeu Pokemon version rouge. Mais au-delà de la nostalgie, je trouve cette console très intéressante techniquement et bien conçue : les ingénieurs de Nintendo ont fait un travail remarquable à l'époque pour nous fournir une console avec une bonne autonomie et un prix abordable. Et malgré son manque de puissance et ses limitations techniques, les développeurs de jeux ont fait preuve d'ingéniosité et d'astuce pour en tirer le maximum afin de développer des titres qui sont restés dans la playhistoire.

Cette année, on fête les 30 ans de la GameBoy : la portable de Nintendo est en effet sortie le 21 avril 1989 au Japon (et environ 1 an et demi plus tard chez nous...). Je ne pouvais évidemment pas laisser passer l'occasion de sortir un petit quelque chose pour marquer le coup : je pensais à la base faire un petit puzzle game, mais je me suis finalement retrouvé un peu par hasard à développer un portage d'Evoland sur GameBoy (enfin seulement du tout début du jeu hein, ne vous emballez pas !)...

Cet article va donc vous présenter le jeu Evoland, et vous raconter comment je me suis retrouvé à en développer un portage GameBoy.

Qu'est-ce que Evoland ?

Pour commencer, laissez-moi vous présenter Evoland, car tout le monde ne le connait pas forcément (vous avez tort, allez y jouer tout de suite !). À l'origine, Evoland est un concept sorti de la 24ème édition de la Ludum Dare, l'une des Game Jam (concours de développement de jeu vidéo en l'espace d'un weekend) les plus connus, dont il est sorti gagnant, avant de devenir le premier jeu du studio Shiro Games. Il s'agit d'un petit action RPG, qui puise son inspiration dans la série des Zelda et des Final Fantasy. Son histoire a peu d'importance, ce qui le rend intéressant c'est son concept : il s'agit d'un voyage à travers l'histoire du jeu vidéo.

Au tout début, on commence avec des graphismes 2D en niveaux de gris (type GameBoy), il n'y a pas de musique, pas de son, on est même très limités dans les déplacements. Puis petit à petit, on débloque des éléments de gameplay (scrolling, épée, ennemis...), des effets sonores, de la musique, et des évolutions technologique : on passe d'abord en graphismes couleur (style NES / GameBoy Color), ensuite on débloque des graphismes plus fins avec plus de couleurs (Super NES / GameBoy Advance), puis vient la 3D, non texturée au début, puis avec des textures basses résolution (Nintendo 64 / PS1) pour finir par des graphismes 3D plus actuels.

Capture d'écrans des différentes évolutions graphiques d'Evoland

Quelques années plus tard, un second épisode verra le jour, sobrement appelé Evoland 2. Là où le premier épisode n'utilisait pas tout le potentiel de son concept, ce second volet en tire quant à lui pleinement parti tout en disposant d'une d'histoire plus travaillée.

Je ne vous en dis pas plus, si vous voulez voir de quoi il en retourne, jouez-y, ou jetez un coup d'œil à cette vidéo :

Comment ce projet a commencé ?

Maintenant que tout le monde voit un peu mieux ce qu'est Evoland, je vais vous raconter comment je me suis retrouvé à essayer de le porter sur GameBoy.

Tout a commencé dans l'émission Retro Gaming Bros (RGB), qui parle, comme son nom le laisse deviner, de rétro gaming (et de tout ce qui y touche de près ou de loin). L'émission est diffusée environ une fois par mois en live sur la chaîne Twitch de Studio Renegade, puis postée en replay sur Youtube.

Pour ce qui concerne notre histoire, il faut se replonger dans l'émission de février : dans laquelle on a le droit cette fois-ci à une double émission. La première partie suit la formule habituelle et présente des news sur le rétro gaming (dont une news au sujet de ce blog !), et la seconde partie est dédiée quant à elle à la sortie d'Evoland Legendary Edition (la réédition d'Evoland 1 et 2 sur à peu près toutes les plateformes actuelles) à travers l'interview d'Étienne Makowski, qui a travaillé sur les graphismes 3D du jeu chez Shiro Games.

Durant l'émission (qui est en direct je le rappelle), quelqu'un dans la chatroom a sorti la petite phrase suivante : « Bientôt Evoland sur GameBoy ! ». Je n'y ai pas prêté attention sur le coup, mais cette phrase a fait son petit chemin dans ma tête sans trop que je ne m'en rende compte. Le lendemain j'écrivais sur le Slack des abonnés de Studio Renegade que ça serait quand même vachement cool que Shiro Games annonce une version GameBoy d'Evoland pour le premier avril surtout que c'est l'année des 30 ans de la console...

Et dans les minutes qui ont suivi, j'ai reçu un message de Christophe (l'un des présentateurs de l'émission), me proposant de me mettre en contact avec Shiro Games pour voir si ça serait pas faisable de vraiment faire un portage d'Evoland sur GameBoy.

Capture d'écran du message de Christophe

Je ne l'avais pas du tout vu venir celle-là... J'ai un peu hésité au début, parce que ça représente pas mal de boulot (je n'imaginais même pas encore à quel point à ce moment-là), mais j'ai finalement accepté, car le défi m'intéressait. :)

Christophe a donc contacté Shiro Games pour voir si c'était envisageable ou pas, et ils ont eux aussi aimé l'idée et accepté, du moment que ça restait à but non commercial. Christophe m'a donc mis en contact avec Étienne et le projet a pu commencer.

Où en est-on ?

J'ai commencé à développer Evoland.gb vers mi-février et il s'est passé pas mal de choses depuis lors. J'ai notamment dû faire face à quelques difficultés imprévues, causés par de vilains tours joués par mon compilateur (le programme qui transforme le programme que j'écris en code compréhensible par la machine) qui s'est avéré peu fiable : il générait dans certains cas du code machine erroné qui causait divers bugs dans le jeu. Ça m'a pris un certain temps à comprendre qu'il en était à l'origine, puisque mon premier réflexe était de penser que j'avais moi-même commis une erreur dans mon programme. J'ai donc dû changer de compilateur en cours de projet et cela a demandé quelques ajustements dans le projet, mais rien de bien méchant, au final ça m'a même appris plein de choses.

Je ne vous raconte pas plus en détail le développement du projet, je réserve ça pour un prochain article, parlons donc du jeu en lui-même : où en est-on, qu'est-ce qui marche, qu'est-ce qu'il manque,...

Déjà, du côté des choses qui sont faites, le jeu dispose d'une carte du monde assez complète dans laquelle il est possible de se promener :

Carte du monde d'Evoland.gb

Le scrolling par écran fixe, présent au début du jeu fonctionne même s'il reste quelques optimisations à y apporter, notamment lors des déplacements horizontaux :

Scrolling par écran fixe

Le scrolling continue, que l'on débloque un peu plus tard est lui aussi implémenté, là encore il faut que j'essaye d'optimiser un peu, mais c'est quasiment fluide :

Scrolling continu

La mécanique d'ouverture des coffres est opérationnel, même s'il manque un peu de « sucre visuel » : il faut que j'affiche le coffre ouvert et que j'ajoute un effet « bump » comme dans le jeu original.

Tout le code nécessaire à l'affichage des textes est terminé, et une partie des « dialogues » sont présents, en français et en anglais (mais une seule langue est présente à la fois dans une cartouche, car il n'y a pas assez de place pour y mettre les deux langues en même temps, il faut donc générer deux ROM distinctes, une pour chaque langue) :

Ouverture de coffre et dialogues (français) Ouverture de coffre et dialogues (anglais)

L'épée du héros est également de la partie et permet de couper les buissons afin de progresser à travers le niveau. Elle permettra également de tuer les ennemis... lorsqu'ils seront implémentés.

Démonstration de l'épée se de pauvres buissons innocents

À part ça, un écran de titre tout ce qu'il y a de plus simple est également présent (ça fait pas sérieux un jeu sans écran de titre !) :

Écran de titre d'Evoland.gb

Voilà à peu près ce qui est fait. Du côté des choses qu'il reste à faire, il y a les ennemis (parce qu'on va quand même bien s'ennuyer si on a personne à découper avec notre épée), il faut également implémenter des effets sonores et si possible la musique. Et à part ça il reste moult petites finitions et petits effets pour rendre le jeu plus « eye candy ».

Voilà c'est tout pour cette fois, si vous voulez tester le jeu, j'ai fait un petit site permettant de le télécharger ou de l'essayer directement en ligne, ça se passe par ici :

evogb.flozz.org

et quant à moi, je vous retrouve bientôt dans la suite de cet article qui contera les péripéties du développement du jeu !