ink est un langage permettant d’écrire facilement des histoires à embranchements avec beaucoup d’options et de parties qui se réunissent. En voici une brève introduction.
C’est quoi, ink ?
Comme écrit ci-dessus, ink permet d’écrire des histoires interactives, du style « livre dont vous êtes le héros », ou bien des dialogues interactifs. Le langage a été conçu pour être très lisible et pour que l’on puisse s’y retrouver aisément. Si vous n’aimez pas Twine (*tousse* comme moi *tousse*), alors ink est peut-être fait pour vous.
Cependant, bien qu’il est possible d’obtenir une page web contenant votre histoire jouable en ligne avec ce langage, ink a tout d’abord été conçu pour pouvoir s’intégrer dans d’autres moteurs de jeu (notamment Unity).
Ainsi, les créateurs de ink, inkle, l’ont utilisé pour leurs jeux, tels que 80 days ou Sorcery!, qui ont été acclamés par la critique. Plus récemment, Enterre-moi, mon amour, écrit avec ink, a beaucoup fait parler de lui. De nombreuses autres personnes utilisent ink, par exemple pour écrire les dialogues de leurs jeux.
Nous ne verrons pas comment utiliser ink dans un autre moteur de jeu ici. Nous l’utiliserons pour écrire des histoires purement textuelles, afin de découvrir ce langage.
Installation
Pour écrire avec ink, le plus facile est d’utiliser le logiciel Inky. Il nous permettra d’écrire notre histoire dans la moitié gauche d’une fenêtre et de la tester dans sa moitié droite (un peu comme dans Inform 7).
Téléchargeons donc Inky à cette adresse (faites défiler jusqu’à « Downloads »). Le logiciel fonctionne avec Windows, macOS et Linux, vous n’aurez donc vraisemblablement pas de problème.
Bien qu’Inky est très pratique pour tester un projet ink, il vous est possible d’utiliser votre éditeur de texte préféré pour la rédaction. Une coloration syntaxique est disponible pour Sublime Text ainsi que pour Atom.
Si vous n’avez pas tout compris de cette note, ce n’est pas grave ; utilisez simplement Inky ! 😉
Commençons notre histoire
Rien de plus simple pour afficher du texte : il suffit de l’écrire. Ouvrons Inky et tapons quelque chose dans la partie gauche de la fenêtre :
Un léger choc et l'engin se stabilise. Vous avez enfin atteint votre destination. Vous consultez l'ordinateur de bord.
Le texte apparaît instantanément dans la partie droite, où l’histoire est jouée. Bien évidemment, il n’y a pour l’instant rien à tester. Remédions à cela.
Des choix
Pour proposer des choix au joueur, il suffit d’écrire une ligne commençant par une astérisque pour chaque choix. Ajoutons ce qui suit après notre introduction :
* Vous vérifiez les résultats de l'analyse atmosphérique. * Vous consultez une carte topographique des alentours. * Vous ouvrez les portes et sortez.
Cliquons sur la double flèche en haut à droite de la fenêtre rembobiner l’histoire et voilà, nous pouvons voir trois options offertes au joueur. Cliquons sur l’une d’elles et… Inky nous avertit d’un problème : le jeu ne sais pas quoi faire après qu’une option est sélectionnée.
Tout d’abord, nous pouvons afficher une réponse quand le joueur clique sur un choix. Il suffit d’écrire du texte sous la ligne correspondant à ce choix.
* Vous vérifiez les résultats de l'analyse atmosphérique. L'air est respirable sur cette lune. * Vous consultez une carte topographique des alentours. Le relief est accidenté. Il sera difficile de se déplacer. * Vous ouvrez les portes et sortez. Il vous faudra bien trouver l'origine du signal.
Cependant, cela n’est pas suffisant. Il faut dire où doit aller l’histoire. Il nous faudra donc la structurer.
Des nœuds
Une histoire ink est organisée en ce qui est appelé des nœuds. Pour en créer un, il suffit d’écrire une ligne comme suit :
=== atterrissage ===
Elle doit commencer par deux ou plus signes « égal » et son nom ne doit contenir que des lettres (sans diacritiques), des chiffres, et des tirets bas. Il ne peut en particulier pas contenir d’espaces.
Les nœuds sont un peu comme des marque-pages : il est possible de sauter instantanément depuis n’importe quel endroit vers n’importe quel nœud en écrivant :
-> atterrissage
Cela s’appelle une divert arrow, littéralement une « flèche de déviation ».
Restructurons notre petite histoire ; il faut que tous les choix que nous avons créés auparavant mènent de nouveau vers la même liste de choix, sauf si on sort, auquel cas on est dirigé vers un autre nœud.
Une dernière chose : ink n’aime pas les bouts qui ne mène nulle part. Il faut rediriger l’histoire vers un nœud après chaque choix. Il est également possible d’utiliser la déviation spéciale -> END
pour indiquer que la fin de l’histoire est atteinte.
C’est fait ? Voici ce que ça peut donner :
// On affiche l'introduction. Un léger choc et l'engin se stabilise. Vous avez enfin atteint votre destination. Vous consultez l'ordinateur de bord. -> atterrissage // On va vers atterrissage, car ce n'est pas automatique. === atterrissage === * Vous vérifiez les résultats de l'analyse atmosphérique. L'air est respirable sur cette lune. -> atterrissage // On revient. * Vous consultez une carte topographique des alentours. Le relief est accidenté. Il sera difficile de se déplacer. -> atterrissage // On revient. * Vous ouvrez les portes et sortez. Il vous faudra bien trouver l'origine du signal. -> sortie // On va vers sortie. === sortie === Vous posez un pied à l'extérieur. <em>À suivre…</em> -> END // On termine l'histoire.
(Ce qui est après les double barres obliques est un commentaire : une petite note faites à vous même mais qui ne sera pas lue par ink. Les <em>
sont de l’HTML pour mettre le texte en italique.)
Si vous avez testé, vous aurez remarqué qu’un choix ne peut pas être sélectionné plusieurs fois. Si l’histoire rencontre une option qui a déjà été choisie par le joueur plus tôt, alors elle ne l’affiche pas. Cela est en général ce qui est voulu, mais il reste possible de forcer un choix à réapparaître en remplaçant l’astérisque par un signe « plus » (+
)
Rendre les options plus dynamiques
Vous avez sûrement vu que lorsqu’un choix est sélectionné, son texte réapparaît immédiatement. Il est possible de modifier cela. Considérons le code suivant :
« Bonjour, vous dit l'ordinateur de bord. * — Bonjour[. »], » répondez-vous. -> atterrissage
Notons la présence des crochets dans le texte de l’option. Ce qui est avant les crochets est affiché à la fois dans l’option et dans le texte qui en résulte. Ce qui est dans les crochets est affiché seulement dans le choix et ce qui est après, seulement dans le texte qui en résulte.
Le plus simple pour comprendre est de le tester.
Ceci permet d’écrire des choix dont le texte ne se réaffiche pas quand on le choisit :
* [Sortir]
Cette fonctionnalité d’ink est vraiment très utile pour les dialogues, afin d’afficher les incises quand il le faut.
Exporter son histoire
Voilà, les bases d’ink sont là, vous avez raconté ce qui arrivait à notre protagoniste, il ne reste plus qu’à partager notre histoire au reste du monde !
Le plus simple est de l’exporter en page web. Pour cela, allons dans le menu File > Export for web...
pour obtenir une page, qu’il vous sera possible de mettre sur votre site internet par exemple.
De plus, vous pouvez indiquer un titre et un auteur à votre histoire en écrivant au tout début de votre source :
# author: Nathanaël Marion # title: Le Signal perdu
Inky écrira ces informations au début de votre histoire quand vous l’exporterez en page web.
Si vous avez des connaissances en HTML, en CSS ou en JavaScript, vous pourrez modifier l’apparence de votre jeu. Sinon, l’apparence de base suffit amplement.
Et après ?
Avec ce que nous avons vu, il est possible d’écrire un livre dont vous êtes le héros basique. Cependant, ink est bien plus puissant que cela. Il est possible de compter le nombre de fois qu’un passage a été visité, de garder en mémoire des valeurs (l’argent du joueur, ses points de vie, s’il a rencontré telle personne, etc.), d’écrire des fonctions…
Une autre grande fonctionnalité d’ink est de pouvoir écrire une liste de choix qui n’affectent pas directement l’histoire et qui mènent tous vers le même passage. Il serait possible de rediriger vers un autre nœud après chaque choix (comme nous l’avons fait avec -> atterrissage
), mais ink fournit une option plus élégante, qui permettra de rendre la source très lisible.
Mais tout cela, ce sera pour une prochaine fois !
15 août 2021 at 14 h 31
Bonjour, merci beaucoup pour cet éclairage. J’ai commencé à rédiger un jeu et je cherche les outils logiciels qui seraient mes plus adaptés pour écrire la structure/storyboard et le réaliser (peut être Unity, mais je cherche encore). C’est difficile de faire le bon choix. De plus, je recherche plutôt un outils sans analyseur syntaxique, car l’envisage plutôt de proposer des choix multiples. Cette première présentation de Ink est éclairante, je suis impatient de lire la suite. Merci.
25 août 2021 at 22 h 37
Merci pour le retour !
(Au cas où, nos articles sur ink sont listés ici : http://www.fiction-interactive.fr/tag/ink/)
Je n’ai pas trop d’expérience avec Unity, mais je sais qu’il existe aussi Yarn Spinner (https://yarnspinner.dev/) qui s’y intègre et qui ressemble un peu à ink mais qui est davantage orienté dialogue.
Il y a aussi Fungus (https://fungusgames.com/), mais je ne connais pas plus que ça donc je ne peux pas te donner d’avis.
Si ink te convient, il existe des intégrations dans d’autres moteurs de jeux ou langages (par exemple Godot), mais là encore, je n’ai pas trop d’expérience.
N’hésite pas à passer sur notre forum ou sur Discord, où d’autres pourront sûrement t’éclairer davantage !
29 novembre 2021 at 11 h 48
Bonjour Nathanaël, pardon pour ma réponse tardive, la fin d’été a été mouvementée…
Merci beaucoup de ta réponse et ces nouveaux éléments très intéressants que tu indique dans ton message. je vais immédiatement regarder cela de près.
c’est vrai que j’avais pensé à ink! pour son intégration à Unity, notamment pour les possibilités cross-plateforme (IOS, iPadOS et Android). Mais ce n’est pas un choix arrêté et ces nouveaux éléments que tu indique dans ton message seront peut être préférables. je ne manquerais pas de t’en informer (plus rapidement cette fois!).
Merci beaucoup pour ton aide et ces précieuses informations.
8 décembre 2021 at 19 h 33
Aucun problème pour le retard ! Et tant mieux si j’ai pu t’aider, n’ayant jamais utilisé ink autrement qu’avec l’exportation Web. Si on choix se porte sur autre chose qu’ink, je ne serai effectivement pas contre un retour !