Making-of – Écrire un jeu d’énigmes

Publié le 10 septembre 2021 par Gee dans Superflu
Retrouvez ce making-of sur le blog du jeu

Pour ce nouveau making-of, je vais commencer par vous rappeler (ou par vous apprendre, peut-être) plusieurs caractéristiques de Superflu Riteurnz :

La soluce et le graphe

Ces trois aspects en tête, je me suis pas mal demandé comment écrire ce jeu : au départ, j’ai simplement commencé par faire des listes d’objets pour chaque pièce et par écrire, eh bien… la soluce, tout simplement 🙂

Je me suis vite rendu compte que ça allait vite devenir compliqué de m’y retrouver, de ne pas dupliquer des choses, etc. Je suis donc parti sur l’idée de représenter tout ça par un graphe orienté : après tout, même si on écrit toujours une soluce de façon linéaire, l’intérêt du monde ouvert est que vous n’avez pas à résoudre les énigmes dans un ordre précis, plusieurs « branches » peuvent être parcoures en parallèle.

Un graphe présente l’avantage de donner une représentation visuelle du déroulement du jeu, avec la possibilité de représenter les différentes pièces par des sous-graphes. Ça permet aussi de détecter certains problèmes : par exemple, une boucle dans le graphe sera le signe d’une énigme impossible (un objet A nécessaire pour débloquer la pièce P dans laquelle on trouve un objet B nécessaire pour avoir l’objet A).

Les nœuds du graphe

Pour ce que soit lisible, on va distinguer plusieurs types de nœuds :

Les arêtes n’ont pas d’étiquette, elles permettent juste de noter quel objet/information/etc. permet d’atteindre quel objet/information/etc.

Imaginons par exemple la série d’action suivantes :

  1. Je regarde un post-it sur laquelle se trouve un code

  2. Je tape le code sur le clavier d’un coffre, ce qui le déverrouille et laisse apparaître un portefeuille

  3. Je prends le portefeuille (et je récupère aussi l’argent qui est un objet d’inventaire séparé)

  4. Je donne l’argent à un personnage qui me donne un indice en retour

Ça donnerait le graphe suivant :

Le langage DOT

Pour réaliser ces graphes, j’avais commencé par utiliser le logiciel graphique Dia, mais il m’est vite apparu que placer les nœuds et arêtes à la main risquait de devenir très fastidieux lorsque le graphe allait grossir.

Je me suis donc penché sur le logiciel en ligne de commande Graphviz : il a l’avantage de séparer l’information (le graphe en lui-même, qu’on peut simplement représenter textuellement comme une liste de nœuds et une liste d’arêtes) et sa représentation. En l’occurrence, il se charge lui-même de générer une disposition la plus lisible possible selon le graphe représenté, et je n’ai plus qu’à écrire la description du graphe sans me soucier d’où placer tel ou tel nœud.

Le fichier texte ayant servi à produire l’exemple ci-dessus est le suivant :

J’ai fait le choix de définir toutes les arêtes à la fin, mais ça n’est pas obligatoire, ça peut être fait au milieu aussi : l’avantage, c’est que la lecture de ces arêtes se fait comme la lecture d’une soluce 🙂

Résultat

J’ai terminé l’écriture du jeu il y a quelques semaines. Enfin, il est possible que j’ajoute encore des énigmes ici ou là, mais le gros du déroulement est écrit. J’avais déjà posté cette image sur les rézozozios à ce moment-là, mais voici une vue éloignée (pour ne pas vous révéler la solution, justement) du graphe complet, chaque couleur représentant une partie différente (intro + 3 parties) du jeu :

Alors en réalité, il y a pas mal d’endroits où c’est assez peu lisible (notamment parce que pas mal d’arêtes traversent le graphe de bout en bout et finissent pas être mélangées). Mais le gros avantage du format texte, c’est que je peux facilement extraire des sous-ensemble du graphe pour mieux voir ce qui se passe. La séparation en pièces permet aussi d’identifier quelles sont les pièces les moins utilisées (où il y a peu d’objets/informations), car c’est là que je risque d’ajouter des choses en priorité, pour équilibrer tout ça.

ATTENTION SPOILER : pour finir, je vous montre le zoom sur les deux premières pièces qui constituent la démo du jeu que j’ai publiée le jour de Noël l’année dernière. Si vous n’avez pas encore joué à cette démo et que vous ne souhaitez pas vous faire divulgâcher la solution, ne regardez pas, bien entendu 🙂

Note : il est également fort possible que cette intro soit modifiée dans la version finale du jeu. J’ai eu un certain nombre de retours sur le fait que l’énigme du code hexadécimal était assez ardue et avait bloqué pas mal de monde. Je pense la garder mais la déplacer bien plus loin dans le jeu, et de la remplacer par quelque chose de plus simple (ça n’est que la première pièce du jeu, la difficulté devrait aller crescendo).


🛈 Si vous avez aimé ce making-of, vous pouvez le retrouvez avec d'autres sur le blog du jeu.

Catégorie « Superflu »

Tous les articles

Ce blog est publié sous licence libre, il est librement copiable, partageable, modifiable et réutilisable. Il est gratuit car financé par vos dons, vous pouvez me soutenir via la plateforme de votre choix :

En mai, 182 € ont été collectés sur un objectif mensuel de 1600 € (SMIC brut), soit 11 % :

Sources de revenu