D'Inform à Moiki à Inform, vers un retour aux sources !


J'ai profité du concours organisé par Moiki.fr pour utiliser leur moteur dédié aux fictions interactives textuelles à embranchements.

Moiki a de multiples avantages dont celui d'être facile d'utilisation, de permettre de créer une FI de A à Z directement dans un navigateur internet, de permettre l'ajout de sons/musiques et d'une image de couverture piochés dans des bases de données généralement en licence Creative Commons, de récupérer la FI dans un format WebApp (un fichier ZIP contenant le jeu au format HTML mais qui nécessite un serveur HTTP pour fonctionner) qui, comble du bonheur, peut être intégré directement à Itch.io !

Autres possibilités d'export très intéressantes de Moiki, vous pouvez récupérer votre jeu dans divers autres formats : JSON (format brut qui peut être réutilisable avec de nombreux langages de programmation), Inkle (le format utilisé par Ink), Twee (le format de Twine) mais aussi PDF (permettant de faire un Livre Dont Vous Êtes Le Héros, avec les liens cliquables qui vous amènent directement au bon chapitre). Clément JACQUET, Monsieur Moiki ^^, travaille également sur un export au format STUdio pour la "Fabrique à histoires" Lunii (et ça, ça ferait plaisir à mes enfants qui en ont une ^^) et il a même avoué sur Twitter réfléchir à un export au format Inform ! 


STUdio, pour la Lunii

Le STUdio, de marian-m12l, qui permet de créer des FI pour la Lunii !


Et voilà où j'interviens. J'ai été pris de passion pour le format Inform il y a quelques semaines suite à un échange sur Twitter avec l'excellent Astrofra, qui m'a introduit auprès du très sympathique Hugo Labrande (un des darons de la FI française, mais pas que). Alors que j'avais fait une petite FI en Python, en suivant le tutoriel d'un livre d'apprentissage que mon fils de 10 ans était en train de faire, Astrofra a absolument voulu tester ce jeu qu'il a lancé sur un Amiga avec Python 1.5 ! Puis il a mentionné Inform, m'a mis en contact avec Hugo et c'était parti. : je commençais à porter ma petite FI Python en Inform, avec analyseur syntaxique et tout le tuttim, et plongeais dans l'univers de la FI et d'Inform en particulier.

Pourquoi suis-je parti sur Inform ? Parce que ce dernier existe en version 6.30 sur Amiga ! Tout simplement ! Il ne me restait plus alors qu'à me créer un petit "environnement de développement" : coloration syntaxique dans l'éditeur de texte de MorphOS (en fait j'utilise tout simplement la coloration syntaxique de Python qui fonctionne pas mal du tout), ajout aux types de fichiers de MorphOS des fichiers .z5 (mais aussi .z3 à .z8) et des fichiers .inf (le "code source" d'un jeu Inform) pour me permettre de lancer un jeu Inform directement dans Frotz mais aussi d'éditer un code source ou de le compiler d'un simple clic. La compilation sur MorphOS se fait d'ailleurs avec la version Amiga 6.30 d'Inform. Si jamais quelqu'un se sent de compiler une version 6.34 d'Inform pour Amiga d'ailleurs, je suis preneur ! Et en plus, ça permettrait de compiler sur Amiga/MorphOS des jeux Inform utilisant la bibliothèque PunnyInform (mais ça, c'est une autre histoire). Et comble du combe, les jeux Inform peuvent être lancés sur une multitude de machines et notamment, ce qui m'intéresse plus particulièrement et plus personnellement, sur tous les Amiga (du 1000 au 4000, du Kickstart 1.3 au 3.9) et sur toutes les machines apparentées Amiga, dont les machines sous MorphOS ou AmigaOS 4 ou AROS.

Mais voilà, cette petite première FI a commencé à devenir "monstrueuse" par rapport à ce qu'elle était d'origine ! Du coup, pour me changer les idées, je me suis inscrit à la Nouvim 3000, une JAM dédiée aux FI en langue française devant faire entre 501 et 3000 mots. J'étais parti dans l'idée d'utiliser Inform pour faire un jeu à embranchement mais je n'arrivais pas à "tricher" et à faire faire à Inform ce que je voulais... À la limite du désespoir, Hugo est venu me sauver et m'a filé un bout de code contournant le parseur syntaxique d'Inform ! J'étais sauvé ^^ J'ai bouclé "Fenêtre sur ma cour" pile dans les temps grâce à lui. Mais voilà, Monsieur Moiki organisait un concours et j'ai voulu y participer pour tester son moteur. MAIS moi j'aime Inform de tout mon coeur et je voulais que la FI créée à cette occasion puisse aussi tourner sur mon Amiga 1000 ! Il ne me restait plus qu'à prendre le taureau par les cornes et à faire le portage Inform, en me basant sur le code qui avait déjà été fait pour "Fenêtre".

L'arbre de Spéléologie dans sa version Moiki

L'arbre Moiki de "Spéléologie en aveugle", peu lisible volontairement ^^

Pour cette version Inform, j'ai essayé de faire les choses au mieux, en reprenant les intitulés de Moiki et en collant au plus près de ce que Moiki faisait, afin de permettre à Monsieur Moiki de pouvoir s'en inspirer pour faire son éventuelle moulinette ^^ Voici une liste des techniques et autres petits contournements qui ont été utilisés pour faire ce "portage" :

  • Tout d'abord le parseur syntaxique doit être feinté (merci le code de Hugo pour le coup, vous pouvez jeter un œil au fichier .inf ^^). Grâce à une bidouille géniale, le parseur n'accepte que des chiffres qui sont ensuite transformés en une direction (par exemple 1 devient nord, 2 devient ouest, etc.). Ainsi, j'ai transformé chaque séquence de Moiki en salle pour Inform  et chaque choix se fait en donnant un chiffre qui au final dirige de manière invisible le joueur à travers les salles Inform, j'adore le concept et ça marche au poil !
  •  Mais voilà, souhaitant coller au plus près de Moiki, j'ai constaté qu'on ne pouvait pas mettre des  - dans les noms de "salles" sous Inform : fin-1 n'est par conséquent pas accepté, il faut donc mettre fin1.
  •  Moiki ne gérant que des conditions uniques et Inform pouvant en gérer des multitudes à base de "if" et autres "else", là ça a été assez facile !
  •  Moiki utilise des objets mais aussi des héros, ce qu'Inform fait aussi, sous forme d'objets avec diverses propriétés. Encore une fois, ce n'était pas compliqué de faire la transposition et j'ai fait le distinguo objet inanimé et objet animé pour coller au plus près de Moiki.
  •  Par contre, Moiki affiche des textes quand on récupère un objet ou un héros. J'ai ici hésité sur la méthode à utiliser, surtout que Moiki peut permettre de récupérer l'objet en début de séquence ou en fin. Là, j'ai calqué sur ce que j'ai fait pour Moiki, c'est à dire à la fin de la séquence (et donc à la sortie de la salle ^^) en intégrant le même message que celui affiché sur Moiki !
  • Enfin, il existe deux types de fin dans les jeux Moiki : fin tragique et fin heureuse (et chaque histoire doit avoir au moins une fin heureuse). Inform a un système à peu près similaire de victoire et de mort (mort qui peut être variée). J'ai donc utilisé ce système que j'ai transposé ! Par contre, je pensais avoir forcé l'affichage du texte de victoire/mort, mais non, cela affiche "Vous avez gagné" et "Vous avez perdu"... À peaufiner donc...

Voilà, rien de bien compliqué au final, surtout avec la base fournie par Hugo. Le "portage" s'est fait en quelques heures, surtout parce que j'ai voulu faire en sorte que le tout soit "codifié", "unifié" et compréhensible.

J'essayerai de faire un petit tuto pas à pas de "portage" de Moiki vers Inform la prochaine fois, sauf si un export vers Inform apparaît d'ici là ;-)

Files

Speleologie.inf 14 kB
Aug 22, 2020

Get Spéléologie en aveugle !

Comments

Log in with itch.io to leave a comment.

Ha ha ! Bravo pour ce portage !
Et merci pour ces infos :) Je suis en train de regarder le code inform : c'est pas hyper intuitif, mais c'est pas non plus hyper compliqué. Si je fais l'export inform, je pourrai compter sur toi pour tester le machin ^^
En tout cas, l'export STUdio est quasi fini et devrait être disponible très prochainement !

Merci ! Pas mécontent de moi pour le coup ^^

Et ce sera avec honneur, mais aussi joie et plaisir, que je testerai ton export Inform 6 ;) 

Pour STUdio, c'est une excellente nouvelle ! Ici, j'ai fait la mise à jour du firmware de notre Lunii (maintenant tous les packs tiennent dans notre modèle, même pas 1/3 de l'espace occupé, alors qu'on a une des premières versions avec une petite carte SD ! Fini de faire le tri dans les packs à installer ! Du bonheur !). Mais du coup, STUdio n'est plus fonctionnel... J'espère une mise à jour prochainement. 

--

/me est heureux de voir Monsieur Moiki ici ;)