Il y a quelques mois, certains d’entre vous on sans doute vu passer un Safari dont vous êtes le Héros, généré procéduralement ! Il s’agit d’une création de Bilgé Kimyonok, alias White_Fangs. Il a gentiment accepté de répondre à nos questions !

Bonjour Bilgé ! Peux-tu nous dire en quelques lignes qui tu es, et ton œuvre sur les Internets ?

Bonjour Hugo ! Je suis ingénieur en informatique, j’ai 26 ans, et dans mon temps libre je développe des programmes amusants, utiles ou absurdes que je présente sur mon site Louphole. J’ai créé pas mal d’applications qui explorent des liens entre le texte et le numérique, entre autres des bots sur Twitter, et l’œuvre pour laquelle je suis le plus célèbre (malgré moi) c’est le @BotDuCul.

Tu as publié en décembre dernier ce Safari dont vous êtes le héros, dont on peut retrouver le code sur ton GitHub. Première question bête : ces photos magnifiques qui mettent une super atmosphère, ce sont les tiennes ?

J’aurais aimé pouvoir utiliser mes photos mais j’ai réalisé ce projet dans le cadre d’un concours qui se terminait fin novembre, j’étais à peine rentré de mes vacances en Afrique quand j’ai eu l’idée et je n’avais pas le temps de trier mes photos. Du coup, j’ai récupéré ces photos sur Wikipédia et Wikimedia Commons. Les photos d’animaux ont été extraites automatiquement avec un programme que j’ai écrit pour parcourir les pages Wikipédia d’animaux et pour les fonds d’écrans de paysage, je les ai sélectionnées à la main sur Commons.

Est-ce que ça se rapproche de certains autres de tes projets ? As-tu de l’expérience en jeu vidéo, connais-tu bien la fiction interactive, ou est-ce que ça a été l’occasion de s’y mettre ?

C’est la première fois que je me mets à la fiction interactive ! J’aimais beaucoup jouer à des livres-jeux imagés quand j’étais enfant (j’ai dévoré la collection « Vivez l’aventure » de Gründ), mais je n’ai jamais vraiment lu de livre dont vous êtes le héros textuel. Côté jeu vidéo, j’ai eu l’occasion d’en créer pour mes projets informatiques en école d’ingénieur et j’essaie d’ajouter une dimension ludique à mes projets personnels quand c’est possible, mais je n’ai pas plus d’expérience que ça. Du coup, en rapport à mes autres projets, ce safari dont vous êtes le héros se rapproche plutôt de mes générateurs de texte comme le Jeuxvideo.com de l’amour et du hasard ou Argotify.

Quelle était ta démarche avec ce safari ? Quel était ton but, d’où vient cette idée ? (Ça m’a fait penser à ce que fait Kevan, c’est une influence connue dans ton champ créatif ?)

Je ne connaissais pas Kevan mais effectivement mon travail se rapproche pas mal de ce qu’il a pu faire ! Initialement je cherchais une idée pour le challenge du NaNoGenMo de cette année, c’est un défi annuel au mois de novembre qui consiste à écrire un programme qui génère un texte de 50000 mots, si possible intéressant ou lisible par un humain. J’y participe depuis 4 ans et c’est toujours l’occasion pour moi d’aller plus loin dans la création textuelle ou littéraire à l’aide de l’informatique. J’avais déjà exploré les années précédentes l’altération de texte ou la recontextualisation, et je voulais m’orienter vers quelque chose de plus interactif et de nouveau. J’avais imaginé au départ générer un guide touristique de lieux imaginaires à partir de vraies descriptions et de commentaires récupérés sur internet et modifiés mais ça manquait de narration et de choix. À ce moment-là, j’étais en plein safari en Ouganda et je me suis rendu compte que c’était une aventure très excitante car on ne sait jamais ce qu’on va voir, mais assez linéaire puisqu’on voit un animal, on avance, et on répète. Ça rend la chose assez facile à modéliser, ce qui est nécessaire pour la génération automatique, et à adapter en livre à choix simples, et donc en fiction interactive !

Comment est-ce que le safari est structuré ? Quels principes as-tu suivi, que ce soit pour les étapes ou pour la génération de texte ?

Comme j’étais limité par le temps et par mes connaissances en écriture de fiction interactive, j’ai décidé d’un modèle assez simple pour la structure du safari. Je voulais que chaque page propose un animal au hasard parmi ceux dont j’avais récupéré les données et que les choix de l’aventure correspondent à des environnements de safari dans lesquels on se déplace.

Pour entrer un peu plus dans les détails, le graphe de l’aventure est un arbre hiérarchique où chaque nœud renvoie vers deux nœuds au degré suivant, et une fois que le graphe possède 8 nœuds au même degré, le degré suivant en a 4, et on alterne ainsi entre 8 et 4 nœuds jusqu’à une fin qui se réduit à un seul nœud. C’est probablement plus clair avec le schéma Twine du graphe. L’une des exigences du défi auquel je participais portait sur le nombre de mots, j’avais donc besoin de pouvoir paramétrer le générateur et ce modèle permettait justement de définir dans le programme le nombre de degrés, et donc de pages totales, à générer.

En ce qui concerne la génération de texte, j’ai commencé par parcourir pas mal de pages Wikipédia d’animaux pour essayer d’y trouver des motifs récurrents que je pouvais exploiter dans mon programme. J’ai remarqué que beaucoup de ces pages ont 3 sections en plus de l’introduction habituelle : une description physique de l’animal, son comportement et son habitat. Du coup, je me suis constitué un corpus de données avec pour chaque animal, son nom, ses photos, son introduction, et ces 3 sections. Je n’avais plus qu’à décider des informations à afficher par le programme selon l’animal choisi aléatoirement pour chaque page.

Enfin, j’ai ajouté quelques détails de forme au niveau de l’histoire pour rendre le tout plus agréable à lire. Par exemple, j’ai fait passer le guide de safari pour une personne très érudite à qui j’ai pu faire dire en dialogue tout ce qui était extrait de Wikipédia ! J’ai réduit les informations affichées au minimum et j’ai utilisé uniquement les animaux dont j’avais les photos et des fonds d’écran d’ambiance pour rendre l’histoire plus attrayante.

Sur un aspect plus technique, quels sont les outils que tu as utilisé ? Est-ce que ça a été facile de les combiner ?

Sur le plan technique, j’ai eu recours à deux programmes, le premier pour constituer mon corpus de données d’animaux et le deuxième pour la génération à proprement parler. J’ai écrit les deux en PHP car c’est le langage du serveur web de mon site et que je voulais que l’aventure soit disponible en ligne.

Pour récupérer les données sur Wikipédia, j’ai écrit un crawler, c’est-à-dire un programme auquel je donne une liste d’URL à parcourir et qui en extrait des informations. J’ai inspecté la structure du HTML des pages Wikipédia pour déterminer où récupérer les données dont j’avais besoin à l’aide du XPath (un moyen d’identifier un élément HTML dans l’arborescence de la page).

Côté génération, je me suis rapidement orienté vers Twine car j’avais remarqué qu’une version en ligne existait et que l’outil produit des histoires sous format HTML, donc j’avais l’intuition que ça allait être idéal pour ce que je souhaitais faire. J’ai dû me lancer dans de la rétro-ingénierie à partir des fichiers finaux pour réussir à produire une histoire Twine avec mon programme sans jamais passer par l’outil en lui-même. Ça n’a pas été facile mais avec un peu d’astuce j’ai compris comment ça fonctionnait, il fallait une certaine structure d’éléments HTML et embarquer le tout avec des scripts pour que ça se transforme comme par magie en histoire interactive. Le plus gros du travail consistait alors à écrire les morceaux de génération du texte, j’ai fait un marathon où j’ai imaginé des dizaines de manière différentes de dire une chose, par exemple un choix vers la savane ou bien une incise de dialogue, pour qu’ensuite le programme pioche là-dedans au hasard quand il en a besoin.

En fin de compte, la combinaison des outils n’était pas évidente mais quand même facilitée par le fait que tout fonctionne autour de technologies avec lesquelles j’étais déjà à l’aise : des contenus HTML, des scripts Javascript, et le PHP pour programmer tout ça de mon côté. Tout est visible sur mon GitHub !

Comptes-tu continuer à explorer l’interaction entre le procédural et la FI, voire le jeu vidéo ? Y vois-tu un avenir ? C’est une question souvent évoquée, autant demander à un spécialiste…

Après cette première expérience, j’ai déjà une autre idée qui allie procédural et fiction interactive ! J’espère pouvoir la produire dans les mois qui viennent, ça aura aussi des airs de jeu vidéo je pense. Pour le moment je peaufine le concept mais j’en parlerai plus quand ça deviendra sérieux.

En tout cas, je suis d’avis que la génération procédurale et la fiction interactive ont beaucoup à gagner à interagir. D’un côté, le procédural peut ajouter une nouvelle dimension aléatoire à la FI, plus de richesse dans les possibilités et aussi une autre imagination dans l’écriture. De l’autre, la FI propose justement ce qui généralement manque au procédural pur, à savoir une narration, des choix et une écriture qui donne vie à des éléments sélectionnés au hasard qui autrement n’auraient que peu d’intérêt pour le lecteur/joueur.

En revanche, avec mon expérience, je suis convaincu que le procédural n’est jamais une fin en soi. Il doit plutôt être perçu comme un outil qui peut se mettre au service de la FI ou du jeu vidéo, dont il faut savoir maîtriser le degré d’aléatoire et s’en servir dans un but précis au profit de l’œuvre. Et comme toutes ces disciplines ne cessent d’évoluer et qu’il y a encore beaucoup à imaginer, je pense que ça a de l’avenir !

Merci à toi !