7DRL – Technique


Je suis à plus d’un mois de réflexions sans avoir tranché sur les outils que je vais utiliser pour le 7DRL. Dans ce genre de challenge, créer un jeu complet en une semaine, mieux vaut se servir de ce que l’on connaît le mieux pour ne pas perdre de temps à chercher dans les documentations. Si bien que, même si ce n’est pas adapté aux produits finaux, un rpg avec des graphismes en ASCII, je penche à la minute où j’ecris pour Unity.

Quand je parle d’outils, je parle essentiellement de moteurs de jeux, de frameworks et de bibliothèques. Je ne suis pas vraiment exact dans mes propos mais en gros, les bibliothèques sont des bouts de code conçus pour faciliter des tâches, là où un framework est un assemblement de plusieurs bibliothèques, là où un moteur de jeux est un ensemble de frameworks (Unity a un moteur de physique, un de rendu, un des sons, etc). Haha, j’avais dit que je ne serai pas vraiment exact, je vais me faire taper sur les doigts par les experts. Prenez donc avec des pincettes ce que j’ai décris.
En cherchant un peu, j’ai trouvé plusieurs méthodes à ma portée pour réaliser un roguelike. Je les note à la suite pour m’aider à faire un choix.

Python 3 | libtcod

Le subreddit des développeurs de roguelikes propose des tutoriaux dont le conseil donné à tout débutant est de coder en python avec la bibliothèque libtcod. Le python est un langage souvent utilisé à l’école pour apprendre les concepts de base de la programmation. Libtcod est une bibliothèque fournissant de nombreuses fonctions très utile à la création d’un roguelike :

  • Support du clavier/souris
  • Un rendu ASCII en couleurs
  • Création de donjons/villes/maps générés aléatoirement
  • Gestion du champs de vision
  • Gestion du pathfinding
  • etc

C’est souvent l’outil le plus utilisé pour débuter la création d’un roguelike et de nombreux projets ont été créé grâce à lui. Le tutoriel se boucle en quelques heures et je me dis que c’est une bonne occasion de partir de ce résultat afin d’obtenir le roguelike voulu.

C++ | libtcod

La bibliothèque populaire discutée dans le paragraphe précédent est adaptée dans plusieurs langages dont le python 2, le Rust et le C++. Ce dernier langage est intéressant ayant une longue histoire avec la création de jeux vidéo. De nos jours encore, bien savoir utiliser le C++ est une condition sine qua non pour entrer en tant que développeur dans les studios de jeux vidéo AAA.
Personnellement, j’ai essentiellement travaillé en C# et je n’ai jamais créé de moteur de jeux à partir de zéro. En vrai, je pense que ce n’est pas franchement utile, mais je pense aussi que c’est un bon exercice et que je devrai le pratiquer. Utiliser le C++ pour ce challenge serait une bonne occasion de m’y initier.

C# | Monogame + RogueSharp

RogueSharp est aussi une bibliothèque spécifique à la création de roguelikes. On y retrouve les mêmes fonctions que libtcod tel que la génération de donjons, la gestion du pathfinding ou celle du champ de vision. La bibliothèque est couplé au framework Monogame dérivé de XNA que j’utilisais lors de mes études. L’affichage est quant à lui géré par Sadconsole dont je trouve le rendu en ASCII superbe. À savoir que Monogame est le moteur de plusieurs jeux indies que j’ai adoré les précédentes années (Stardew Valley, Neurovoider, Celeste) et je fait face à un bel ensemble d’outils.

Haxe | Haxeflixel

En introduction je mentionne le fait que pour ce genre de challenge en temps limité, mieux vaut utiliser des outils que l’on maîtrise et forcément, Haxe vient en-tête. J’ai déjà écrit plusieurs articles, j’adore utiliser Haxe en association avec Haxeflixel. Seulement je n’ai pas trouvé de bibliothèques spécifiques aux roguelikes, ce qui veut dire qu’à travailler avec, il va falloir coder les classiques fonctions cité précédemment. Cela va ajouter beaucoup de temps de dev. A voir.

Javascript | Phaser

Phaser est un framework qui permet de faire des jeux en HTML5 et donc d’y jouer directement depuis le navigateur internet. En vrai, Haxe et Unity permettent eux aussi de compiler pour le web, mais Phaser, différemment des autres n’est dedié qu’à cela. Ici non plus je n’ai pas trouvé d’ajout spécifique pour les roguelikes, mais j’ai lu un tout petit tutoriel facile à suivre pour commencer. Le grand avantage de l’utilisation du HTML5 est que l’utilisateur n’a rien à installer. J’envoie l’adresse internet du jeu et tout le monde peut y jouer. C’est intéressant.

C# | Unity

Et donc le fameux Unity dont je n’ai pas grand-chose à dire dessus. Comme les deux précédents, je n’ai rien trouvé de spécifique aux roguelikes, mais je sais que l’asset store regorge de produits qui peuvent aider à la tâche. C’est pour l’instant ma préférence mais je n’ai pas encore decidé.

Décision

Et bien non, aucune pour le moment.
Les solutions sont très nombreuses et il en reste même quelques-unes où je connais les bases et dont je n’ai pas fait de recherches sur la facilité de les utiliser dans le cadre d’un roguelike. Je pense à LÖVE, Construct 3, GameMaker, Godot, etc.
Je vais me décider dans les jours à venir après avoir bien défini les besoins en game design que je vais avoir.