Start
Je me suis inscrit au challenge de développement d’un Roguelike en 7 jours qui commence dans moins de 1 mois et je ne sais vraiment pas par quoi je vais demarrer.
Heureusement, la page internet du challenge donne des pistes en citant le subreddit /r/roguelikedev/ et dans la colonne de droite de celui-ci, on y trouve un lien How to Make a Roguelike (Comment créer un Roguelike) envoyant sur un post de blog de l’un des modérateurs du subreddit qui se trouve être le créateur de Cogmind un des meilleurs Roguelike en développement à l’heure actuelle.
J’ajoute qu’en plus de la version texte, il existe une version vidéo disponible sur Youtube correspondant à la conférence qu’il a donné à la Roguelike Celebration sur ce sujet.
Bien, suivons le guide.
Sommaire
La présentation est découpée en 9 points qui en anglais sont :
- Language
- Scope
- Core Mechanics
- 7DRL
- Non-7DRL Examples
- Resources
- Good starting points
- Tips for the Long Run
- The Beginning
1- Langage
Ici, il est question de langage de programmation. Les débutants se posent légitimement la question du langage à utiliser pour créer un jeu. La réponse est simple : Tout.
Il importe peu le langage choisi pour développer un Roguelike. Similaire à la création d’un jeu vidéo en indépendant, le meilleur language reste celui que l’on maîtrise le mieux.
Python est recommandé pour le programmeur débutant car celui-ci est simple et accessible, n’empêchant nullement la création de mondes complets comme Ultima ratio Regun ou Temple of Torment.
De mon côté, j’hésite entre justement utiliser Python, Haxe que j’adore, ou le C# avec Unity.
2- Scope
C’est la partie de son post la plus intéressante et la plus longue. En plus de rappeler qu’il faut limiter son scope pour produire un jeu en ayant qu’une semaine, il décrit les éléments qui font un roguelike complet et fait un plan de création.
Ce plan basique permet à lui seul de bien démarrer la création. Il évoque les npc, le field of view, le pathfinding, etc.
Je consacre le prochain post du blog à ce plan pour avancer dans la préparation.
3- Core Mechanics
Il pose la question de qu’est-ce qu’a vraiment besoin un petit Roguelike ? La réponse définit les “mécaniques de base“. Ces mécaniques définissent l’expérience et doivent pouvoir être étayé en une seule phrase. C’est ce que l’on doit prototyper en premier, aller à l’essentiel.
Si les “core mechanics” sont funs, tout ce que l’on créera au-dessus suivront.
C’est par ce point que je vais commencer le game design du jeu dans quelques billets.
4- 7DRL
Son billet de blog est intitulé “comment faire un roguelike” et donc il conseille de commencer par se donner le challenge du 7DRL. La boucle se boucle.
Il donne des exemples de jeux qui ont bien réussi le challenge :
- Broken bottle en 2011
- Cogmind en 2012 ; Le jeu de l’auteur du post qui, en continuant de le dev pendant 7 ans, en fera un jeu commercial
- Drakefire Chasm en 2012
- Knight en 2014
- Golden Krone Hotel en 2014
- Seven day band en 2015
- A Roguelike Where You Dodge Projectiles en 2016
- Polybot-7 ; A nouveau un jeu de l’auteur du blog
5- Non-7DRL Examples
Comme j’en ai pris l’habitude, il fait du name-droping en citant tout ce qu’il trouve utile comme références.
Il nomme des jeux développés pendant plusieurs années et dont les mécaniques sont originales :
- Mage Guild possédant un bon système d’alchimie pour mélanger plusieurs items et en obtenir de surprenant.
- Demon avec un système de recrutement et d’entrainement des monstres que l’on croise.
- The ground gives way basant sa progression sur le système d’items.
- Xenomarine construit autour d’un système d’attaque à distance et de positionnement du personnage. Rare dans ce genre de jeu.
- Nethack, jeu de référence, dont les programmeurs ont pour devise : “s’il semble possible de faire quelque chose, c’est que c’est probablement le cas”.
6- Resources
En introduction de ce post, il redonne le lien vers le subreddit /r/roguelikedev/ puis il enchaîne sur plusieurs liens tres utile :
- La librairie python nommée Libtcod avec plusieurs tutoriels précisant que ceux-ci ont été utilisé dans quelques jeux cités au dessus.
- L’événement annuel du subreddit se passant en été où les participants s’entraident à créer un roguelike.
- La FAQ du subreddit répondant à de nombreuses questions.
- RogueBasin, LE wikipedia du roguelike. C’est sur ce site que je me dirige à chaque fois que je cherche un renseignement sur le genre.
- Roguelike Radio, le podcast consacré aux Roguelikes. De nombreuses années qu’il existe, ils ont exploré beaucoup de sujets et ont plusieurs interviews de grands createurs.
- REXPaint, outil de création d’art ASCII, développé par l’auteur du blog.
- Tilesets, donnant une liste d’assets graphique et ajoutant un screenshot de plusieurs projets pour l’inspiration.
7- Good starting points
La désignation de bons core mechanics donnant une approche originale du jeu permet d’accrocher le potentiel joueur, mais dans cette partie il veut explorer un autre moyen de saisir un joueur : le thème.
Il rappelle qu’il y a de très (trop ?) nombreux Roguelike se situant dans un univers fantastique. C’est un fait si bien que rien qu’en s’en détachant, on accroche plus facilement les joueurs. Il donne une liste de thèmes dont je donne l’image en lien, on y trouve les Aliens, les superhéros, les vampires, etc.
Il utilise en exemple des jeux récents et j’avoue qu’entendre “mélange de mythologie japonaise et figure historique” ou “combat aérien pendant la Première Guerre Mondiale” me donne envie de les essayer.
Une autre approche est de faire ce qui est appelé un “XRL“, le “X” étant le nom d’une ip connue. Le jeu qui a eu le plus de succès est “DoomRL” dont je recommande d’y jouer, mais il en existe une ribambelle comme “ZeldaRL“, “MetroidRL“, “CatlevaniaRL“, et ainsi de suite. Reprendre une ip permet de visualiser facilement les core mechanics et de bien commencer à développer. Par exemple, si je pense à “FF7RL“, j’y vois un système de materia, un univers unique, un système de combat a 3 équipiers, etc.
8- Tips for the Long Run
Développant Cogmind depuis près de 7 ans, je l’écoute attentivement quand il donne des conseils sur la création sur le long terme :
- Release Early and Often -> Sortir une version tôt et souvent. Prototyper rapidement et de suite le proposer à la communauté pour ainsi avoir des retours direct. Efficace.
- Sharing Saturday -> Partager tous les samedis l’état du développement.
- Keep a Blog -> Tenir un blog de développement a plusieurs avantages comme :
- Organiser ses pensées.
- Regarder son travail sous différents angles.
- Documenter le processus.
- Créer une référence utile sur le long terme.
- Recevoir des retours de joueurs.
- Construire une communauté.
- Accessibility is Important -> Rendre le jeu accessible au plus grand nombre, dans le sens ou si les joueurs préfèrent jouer à la souris qu’au traditionnel clavier, il faut configurer la souris.
9- The Beginning
Son article se termine ici, à nous de continuer.
Au final, il n’a pas répondu à la question du “comment” en donnant des directives précises de développement. Un peu comme le proverbe de donner un poisson à un homme pour qu’il mange un jour et lui apprendre à pécher pour qu’il mange toujours, il a donné un ensemble de tutoriels, d’outils et de références qui nous serviront beaucoup.
Il fait un super travail, je suis très fan. Je le disais en introduction, il reste un peu moins de 1 mois, le temps passe vite. Le prochain post est dedié à quelques schémas sur les mécaniques du Rogelike, puis je dois réfléchir sur la technique ne sachant toujours pas avec quoi je vais coder le jeu. Ensuite, on s’attaquera au game design et je devrai finir en même temps que le début du challenge 7DRL.