lundi 6 mars 2017

NPC, Lore, Open World : quelques pistes de design

Vous entrez dans l’épicerie de Belethor, à Blancherive, dans Skyrim.

Celui-ci s’exclame : « Tout est à vendre ! Absolument tout ! ». Ceux qui y ont vendu régulièrement le fruit de leurs pillages se souviennent à la lecture de ces mots du ton frénétique de Belethor (s’il savait que c’est vous qui venez pour vendre !)


Cette phrase « Tout est à vendre… » a été écrite par un auteur humain puis jouée par un acteur humain. C’est évident, pourriez-vous dire.

Et bien non, ce n’est pas une information si évidente à une époque où l’on sous-traite des pans d’univers par de la génération procédurale et où l’on essaye même d’y intégrer des IA conversationnelles.

À quoi ressemblera notre Belethor des années à venir ? C’est une question que nous allons explorer dans cet article.


Des punchlines combinatoires

Toutes les phrases de Skyrim ne sont pas strictement écrites et ne répondent pas à des schémas linéaires. Un garde méfiant pourra vous dire :

« J’ai un œil sur vous, l’orc. »

Si vous étiez Breton, il vous aurait dit de même « J’ai un œil sur vous, Breton. »

La phrase codée est donc « J’ai un œil sur vous, [Dénomination Raciale]. »

Plus précisément, le début de la phrase est contextuel. Si votre personnage est compétent en alchimie, ce même garde pourrait vous dire « Vous pourriez me fabriquer une potion, l’orc ? »

Le vrai système à l’œuvre est quelque chose comme « [Exclamation contextuelle], [Dénomination Raciale Optionnelle]. »




Mais cela reste un élément de décor. Imaginons désormais que la trame narrative fonctionne sur un système combinatoire généré procéduralement.


Wow ! Des quêtes combinatoires !

Le héros entre dans un village. On génère à la volée un personnage critique qui sera labellé « Donneur de quête. ». L’identité de ce personnage est cohérente avec sa position et sa fonction. Un orc sera un mercenaire endurci attendant à la taverne, un Khajiit attendra en lisière de la ville.


On génère ensuite le McGuffin procédural :

  • Quel est le problème ? « Un associé m’a trahi et a volé X », « Mes ancêtres ne trouvent pas le repos parce que X », « On m’accuse injustement d’avoir fait X », ...

  • Résolution intermédiaire optionnelle : Pour avancer il faut d’abord « Trouver les mots sacrés qui se trouvent à Y », « Voler la carte de l’emplacement de Z », « Convaincre Y de vous accompagner »...

  • Résolution finale : Se rendre dans un donjon et récupérer X

  • Twist optionnel : Le donneur de quête est un méchant qui vous a manipulé, vous êtes maudit par l’objet récupéré et il va falloir aller à Z pour vous en libérer, le donneur de quête a été assassiné...etc

On voit qu’il est très simple de créer un système combinatoire de génération de background de quêtes et de quêtes.


Mais ça existe déjà les quêtes procédurales :-(

Dans le cas précis des Elder Scrolls, ce n’est pas une option envisageable, car le lore est sacré et immuable. À l’instar du personnage de Jiub, des quêtes anodines et linéaires ou bien complexes, mais toujours écrites, fondent le socle d’une mythologie qui fait de Tamriel un univers familier à tous.

Cependant, il y a des quêtes procédurales dans Skyrim (et Fallout 4) : les fameuses Radiant Quest. Elles fonctionnent sur le système ci-dessus mais dans leur plus simple expression : « Tel endroit a été envahi par des méchants, tue tout le monde et reviens ».


Avantages pour Bethesda : on ne joue pas les apprentis sorciers avec le lore, ce sera pas trop buggé, c’est finalement pas si différent du reste.

Désavantages pour le joueur : C’est pas très excitant.

Pourquoi ce n’est pas très excitant ? Non pas parce que c’est ultra basique, mais parce que dans le jeu, tout le monde s’en tape.

Vous finissez la quête et vous avez votre paiement, et on passe à la prochaine. Vous ne l’auriez pas faite, aucune différence. A vrai dire, vous savez très bien qu’une seconde avant qu’on vous la donne, les donjons en question étaient vides. Vous êtes pour le jeu un gamin hyperactif qu’on occupe sans imagination à faire une tâche répétitive en lui donnant l’aspect d’un jeu.



La question à 100 millions de dollars (soit le crowdfunding de Star Citizen)

Posons donc une question fondamentale : est-ce qu’une histoire, un background, une quête générés procéduralement sont intéressants ? Le sont-ils plus qu’un travail fait par un humain ?

Il y a plus derrière cette question que l’on ne pourrait croire, mais nous y reviendrons par la suite.

Je parle des Elders Scrolls depuis le début pour une bonne raison : Arena et Daggerfall étaient générés procéduralement, sauf pour quelques points et quêtes clefs (tout comme Frontier Elite et Elite Dangerous), puis, à partir de Morrowind, Bethesda a fait appel à des level designers pour concevoir l’ensemble des niveaux.

Il y a des montagnes par millions dans Daggerfall mais celles-ci sont le produit d’une équation mathématique, tandis que dans Morrowind, beaucoup plus modeste en taille, la moindre pièce d’or posée par terre a été le choix d’un concepteur.

C’est dans l’histoire industrielle un événement remarquable : une tâche qui était faite par un robot, qui, quand l’entreprise a suffisamment de fonds, est attribuée à un humain : d’habitude, c’est l’inverse qui se produit !

Le fait est que la génération procédurale est une direction artistique perceptible : les motifs se répètent à l’infini : les mondes sont grands, mais vides de la présence créative humaine. Visitez 5 villages d’une région de Daggerfall : vous les avez tous vus.


Ceux qui se posaient la question de la pertinence de la génération procédurale ont retenu leur souffle l’été dernier à la sortie de No Man’s Sky : ce jeu serait-il l’élu, celui qui allait démontrer que la génération procédurale pouvait être plus pertinente qu’un level designer ? Bon, ben, le jeu est sorti et on s’y fait bien chier, l’élu ce sera donc pour plus tard.


La génération procédurale et les systèmes combinatoires sont des outils utiles pour le développeur fauché (=qui ne peut se payer des artistes capables d’écrire et d’implémenter un lore et une architecture de quêtes), mais il est difficile aujourd’hui de les contempler comme des approches idéales.


Les IA ou « I am sorry Dave, I am afraid I can’t do that »

C’est là qu’intervient une toute nouvelle technologie qui pèse ses millions de dollars et pour laquelle le gouvernement français lui-même a lancé en début d’année une initiative industrielle : les IA.

Dans notre cas, une IA par réseau neuronal est un outil mathématique qui est capable de générer ex-nihilo du texte en français (ou dans n’importe quelle langue). Ce n’est pas du texte combiné ou préécrit. Le texte est produit « on ne sait comment », mais ça marche, c’est la fameuse boîte noire des IA.  

Théoriquement, vous lui dites « raconte moi l’histoire d’un pays » et elle va fournir du texte sans fin sur le sujet. Ça fonctionne…plus ou moins, nous en avons même créé une petite dans le cadre du podcast Trajectoires et elle répond aux questions des auditeurs.

La promesse de gameplay que cela représente est la suivante : quand vous arrivez dans le village de Bordeciel précédemment évoqué, les personnages vont vous interpeller avec des répliques générées par ces IA.

Ce n’est pas de la science-fiction, j’ai actuellement des discussions très stimulantes avec des professionnels du machine learning qui ont cette ambition. Il est donc tout à fait possible que cela soit une technologie existante dans les années à venir.

Les deux avantages sont stupéfiants et quasiment des killer features :

  1. Tout peut-être écrit et tout est imprévisible. Vous êtes certain de vivre une expérience radicalement nouvelle, surprenante, et même déstabilisante.

  1. Chaque expérience que vous vivrez à un certain instant sera propre à vous et à votre partie, les autres joueurs vivant au même moment et avec les mêmes personnages d’autres textes générés par les IA.

Intéressant non ?

Mais pour être honnête, il y a des obstacles fondamentaux à l’implémentation d’un tel dispositif (et je passe sur « l’éducation » de l’IA à générer un texte spécifique, à rattacher des points d’ancrage à ces textes spécifiques pour les plaquer sur des schémas de quête, etc…)

  1. Il faut nourrir l’IA avec un ensemble de textes de base (un corpus) très important (l’IA existe aujourd’hui parce que la Big Data existe). Notre petite IA maison fonctionne avec 4 ou 5 milliards de caractères et elle s’exprime pas tout à fait efficacement. Cela veut dire que pour avoir un tel dispositif qui fonctionne, il faut produire à la base un nombre très très important de textes spécifiques (à l’univers de Tamriel, par exemple) qui représentent un coût très important.

  1. Une IA qui s’exprime en français ne pourra pas s’exprimer en anglais. Donc un tel dispositif PAR langue.





L’expérience collective du JV du 3e millénaire

Mais admettons néanmoins que la technique fonctionne comme dans nos rêves les plus fous.

Vous arrivez au village de Bordeciel et un haut elfe vous invite à boire et vous parle de sa vie et de sa famille, et vous invite à aller chasser avec lui, avant de se retourner contre vous, car c’était un voyou. Dans la partie que jouera un de vos amis, ce même Altmer est un paria de la guilde des sorciers, prêt à vous vendre une carte au trésor.

Je soutiens que cette expérience de jeu reste décevante car elle occulte la nature sociale du jeu. Un jeu vidéo, même solo, est une activité de groupe : une partie du plaisir consiste à partager ses histoires avec ses amis, à avoir vécu la même expérience, et que cette expérience soit le produit intentionnel d’un humain.

Pour prendre une métaphore, on a du mal à se sentir chez soi et à inviter ses amis quand la maison change tout le temps de forme et d’adresse.

La question est quasi philosophique, mais une œuvre est un pont entre l’histoire personnelle de l’auteur et du spectateur. Si demain les IA produisent des œuvres d’art de premier plan, elles auront moins à nous transmettre que des œuvres produites par des humains dirigés par des intentions et traînant une vie à laquelle on peut se mesurer. Si le contraire se produisait, cela veut dire que le produit de matrices mathématiques que sont les réseaux neuronaux sont équivalents à nous, et donc que nous sommes, sans le savoir, des produits de matrices mathématiques.

Tout n’est pas à jeter dans l’intégration IA, tant que l’on garde à l’esprit cette dimension sociale devenue nécessaire à l’époque d’internet. On peut imaginer que dans le cadre d’un MMO, une aventure éphémère générée à la volée mais partagée par quelques amis est un moment pertinent.


La fin du marqueur de quête ?

Si on doit écarter l’IA comme générateur de backgrounds, quels systèmes d’avenir envisager ? Je pense en fait à l’effacement progressif du NPC pour laisser la part belle à l’action du joueur.

Dans un premier temps, je me demande si le temps du « marqueur de quête » est révolu. Les plus belles expériences étant de nature émergente, moins on demandera au joueur de faire des choses, plus il prendra des initiatives susceptibles de créer des situations émergentes.


Un Grise-Barbe pourra dire au Dovakhiin d’aller dans un mystérieux tumulus perdu dans la neige pour aller chercher un mot de pouvoir.  (1)
Dans la situation émergente, le joueur crapahute dans la neige et découvre un mystérieux tumulus. Épée au clair, il se lance dans son exploration sans savoir les dangers et les récompenses qu’il y rencontrera. (2)

La situation (1) s’apparente à un travail. On fast travel vers la destination, on a sans cesse un curseur qui nous dit comment optimiser notre chemin. On sait déjà quelle sera notre récompense, comme un salaire à la fin du mois.

Dans la situation (2) ne serait-ce que parce que sans marqueur de quête, le joueur doit se faire une carte mentale du lieu, cela lui permet de se l’approprier. Les donjons de Skyrim vont dans ce sens avec des marqueurs architecturaux qui donnent un dynamisme à l’exploration (en général, par exemple, s’il y a un ruisseau, il vaut mieux le suivre).


Une trame dramatique crowdsourcée

Dans un second temps, il serait intéressant de systèmiser la relation joueur avec la règle générale « une action du joueur entraîne une conséquence chez un autre joueur. »

Exemple de système totalement caché : Les variables habituellement aléatoires dans un jeu (météo, spawn, loot...) dans votre partie dépendent des actions d’un autre joueur. Cas concret : dans sa partie, un joueur a un comportement généreux. La conséquence de cet acte est que dans une autre partie, un autre joueur trouve un loot plus important que d’habitude. (a)

Exemple de système semi-caché : dans Elite, si tout le monde achète la ressource d’un système, cette ressource prend de la valeur et gagne en rareté.

Exemple de système non caché : lier le système de housing et de vol. Quand vous achetez un magnifique chandelier gothique pour mettre dans votre demeure Douce Brise, une quête « vol de chandelier » apparaît dans la guilde des voleurs d’un autre joueur. Si cette quête est réussie, le chandelier aura été volé et placé dans la guilde des voleurs. (b)


N’imaginez pas forcément des systèmes online très performants pour ces actions. Elles peuvent être réalisées de façon asynchrone sans que les joueurs ne se croisent jamais ni aient même connaissance de l’activité online.

Concernant le cas (a), quelle pertinence de passer d’un processus invisible à un autre ? L’idée est de mettre un lien spirituel entre les joueurs de parties différentes. On touche à un concept presque religieux : quand est frappé d’un coup de malchance, on se dit parfois « qu’ai-je fait pour mériter cela ? ». Etymologiquement, la religion est le fait de relier « magiquement » les choses.

Ainsi, quand vous jouez de malchance dans votre loot, quand les adversaires sont injustement forts, quand les pires tempêtes éclatent et déchirent un ciel paisible, c’est qu’au même moment, dans la partie qui est reliée, une personne est en train de commettre de mauvaises choses.


La notion de moralité a été souvent introduite comme facteur éducatif, comme les variables invisibles de karma dans les Ultima, comme système de réputation, dans les Fallout, voire dans un but pas très réussi de moralisation du joueur dans les Bioshock. Mais si vos comportements moraux influençaient les parties des autres joueurs ? Se créeraient-ils des chaînes de bienveillance ou de malfaisance de parties ainsi reliées ? Ne seriez vous finalement, jamais vraiment seul dans la peinture de votre propre aventure ?

Le cas (b) a des conséquences psychologiques tout à fait intéressantes. Votre chandelier gothique que vous avez placé là façon Valérie Damidot et que vous n’aimiez pas plus que ça vous a été volé, et cet acte a été commis - même dans un jeu asynchrone parallèle - par un autre joueur. C’est la guerre ! Il prend tout de suite une valeur importante. De la même façon, si vous avez un attachement particulier avec un personnage, il pourrait être la cible d’une guilde d’assassins. Votre revendeur préféré Belethor qui doit fermer car des gens détournent ses approvisionnements.

J’ai mis des exemples compétitifs, mais des cas coopératifs (pas encore narrativement développés) sont tout à fait envisageables et déjà largements entrepris, comme le fait d’affaiblir des boss par l’action combinée de nombreux joueurs dans Dragon’s Dogma.


Une quête du sens

Allons encore plus loin. Si à chaque fois qu’on décore sa maison avec un chandelier il est susceptible d’être volé, peut-être que le joueur prudent va mettre des pièges à loups tout autour du chandelier. Peut-être même qu’il va s’installer, si le jeu lui permet, tout au fond d’une tortueuse grotte blindée de pièges et attendre avec 2 gardes du corps. Vous voyez où je veux en venir ? On se retrouve avec un systeme de level design itératif crowdsourcé.

Pour conclure, j’aimerais aller plus loin et vous proposer d’imaginer une méthode de création du lore d’un open world qui serait crowdsourcé par le gameplay.

Prenez une surface de jeu générée procéduralement ou avec des level designers, avec des rochers, de la végétation, des animaux.

Des joueurs-pionniers parcourent ces espaces non civilisés en leur attribuant des noms (Ex : la plaine du vent, le fleuve bleu...), mais aussi en nommant les essences des arbres, leurs fruits, les animaux.. Il y a au final un simple travail de « nommage », mais aussi de détermination de la qualité avec une gamification de l’équilibre. Si une essence d’arbre est extraordinaire, il faudra que les prochains fruits désignés soient empoisonnés pour équilibrer, par exemple.

Une fois ce travail de jeu-encyclopédie fait, les level designers peuvent donner vie à la civilisation en implantant des villes et en les érigeant. Le lore se construit ensuite de lui-même sur le principe de la localisation : une auberge sera faite en bois local et servira de la nourriture locale, un médecin utilisera les herbes et fruits à sa portée. Si les essences des bois sont médiocres, les maisons seront en pierre, et vice-versa. Des niveaux de vie et dynamiques de besoin (et donc autant de quêtes) apparaîtront naturellement.

Savoir que cette vieille auberge est en orme bleu de la vallée du vent, et qu’ils y servent des pintades tachetées du lac horizon ne change pas grand chose à votre expérience de jeu, à votre build, à votre cursus hororum de points d’experience, pas vrai ? J’aime à croire que si, surtout si un jour vous vous reposez au pied d’un véritable orme bleu et que tout est cohérent, tout fait vrai.

Une telle démarche me semble créer non pas un design élégant comme le voudrait un level designer ni une fonctionnalité précise comme le voudrait un simulationniste, mais un peu des deux, dilué dans l’élément essentiel qui transforme une expérience de jeu en aventure mémorable : le sens.


jeudi 2 février 2017

Out There Chronicles, l'aventure spatiale

« Je suis Ulysse. J’ai fait ma guerre, je veux retrouver les miens. Je m’échoue d’île en île, bataillant avec les monstres et les Dieux. »


Nous étions au 10e mois de développement de Romantic Adventures avec Midnight Mood, un projet qui désormais s'appelle Antioch. La talentueuse équipe de Midnight Mood, que je présenterai bientôt dans le cadre d'Antioch, avait systématisé la saisie des cataractes de textes du projet dans un moteur indépendant appelé le Fiction Engine.

Michael m'appelle fin Mars 2016 et me dit « tu te souviens en 2013 quand tu m'as envoyé le doc de gameplay de Out There ? Tu m'avais dit que Out There était un jeu qu'on pourrait fabriquer en 3 mois. Et bien écris une fiction interactive dans le fiction engine sur l'univers d'Out There et sortons le jeu dans 3 mois. »

Production

J'ai accepté ce défi qui était à moitié une vengeance, ce qui m'a valu des crises d'asthme de stress, la production a été lancée et on a tenu les délais.

Midnight Mood a du modifier son moteur, parce que j'ai proposé une structure un peu différente de Antioch (j'en parle plus bas), et c'était aussi une première pour une publication commerciale et ils ont assuré. 

Michael a réuni un excellent cast d'artistes pour la musique, les illustrations et le trailer et on est tout à fait satisfait du résultat. Par ailleurs, il a suggéré l'idée d'une présentation à la visual novel, Antioch comme vous le verrez ressemble plus à un flux de conversation de réseau social, et cette adaptation est encore au crédit du travail sous pression de Midnight Mood. 

L'implémentation s'est faite en flux tendu : j'écrivais un pan de la structure interactive, et elle était implémentée à la volée.

Pour une première fois ce n'était pas idéal, mais aujourd'hui tout le monde est rôdé et nous avons l'ambition de sortir de nombreux livres d'interactive fiction, et dans ce cadre 3 mois reste un délai ordinaire.

Le jeu est sorti un 7 juillet. Cette date ne vous rappelle pas grand chose (sauf si vous aimez le foot, c'était France Allemagne à la télé), mais notre jeu est sorti le même jour que Pokemon Go.

Il a été très difficile dans ce cadre (et vous savez que c'est une litote) d'avoir un champ d'existence dans les mois qui ont suivi et nous regrettons cet élément commercialement perturbateur pour des raisons de prévision éditoriale.

Cependant, le seuil de rentabilité de Out There Chronicles 1 a été atteint en 2 semaines. Ce qui fait qu'après quelques calculs et observation des longues traînes de vente, en Septembre, Michael m'a demandé d'écrire la suite. Aujourd'hui, 9 mois après, nous avons quotidiennement des reviews positives sur ce jeu qui obéit à un modèle premium.

Donc c'est officiel : Out There Chronicles 2 arrive (en ce qui me concerne il est livré depuis longtemps) et nous sommes sur d'autres projets de fiction interactive, dans des territoires et avec des illustrateurs qui j'espère vous surprendront.

Par ailleurs le jeu sortira bientôt sur PC.


La conception d'une SF qui essaye d'être française

Concernant l'écriture d'Out There Chronicles, j'ai eu très très peu de temps pour construire un univers qui plus est soit en cohérence avec le jeu original.

Premiers pas dans le futur...

Je voulais proposer une expérience dans une ambiance très différente tout en gardant :

- les éléments de lore (Juges Architectes, Cubes)
- les signatures de Out There : manque d'oxygène, importance de l'omega, langage alien...

Artwork d'intention original de Chronicles.
Le projet est devenu plus space opéra depuis.

Je travaillais depuis longtemps sur un scénario appelé « Far Away » qui était d'abord un projet de BD, puis qui a été un projet de feuilleton radio, puis encore en BD, et qui finalement a été retravaillé pour être ce spin-off d'Out There.

A noter que depuis 2 ans maintenant je travaille à titre professionnel  sur des réinterpretations de licences poids lourd (j'espère avoir le droit de vous en parler bientôt), alors c'était un exercice assez naturel, surtout pour retailler mon propre enfant.

« Sans rentrer dans les détails, vous êtes un fou furieux.
Pire que cela : vous êtes un fou furieux compétent. »

Darius, le héros de l'histoire, est un personnage important la galaxie Mi-Clos car vous le croiserez certainement dans d'autres licences moins spatiales. C'est un homme cultivé, qui cite de la poésie et joue du piano, qui a été contraint du jour au lendemain à aller tuer des gens.

« Nous ne sommes pas des barbares, Darius. Je hais vos actes mais sans pardon, c’est la fin de l’humanité. Pensez-y, et faites la paix avec vôtre âme : nos dernières minutes sont comptées. »

Nyx est l'archetype de la super-héroine définie dans le « Ruban Bleu » : excellence sur tous les plans, mais absence d'émotion, et donc dotée d'une boussole morale qui réagit non pas aux stimulis émotionnels classiques, mais sur des idéologies : le sens de l'honneur, le désir d'excellence, la foi.

Nyx est probablement l'héroine majeure de ce pan de la chronologie de l'univers Out There, et il était justement très intéressant de jouer celui qui dans l'ombre l'accompagnera dans la transcendance.

Le nouveau Key Art de OTC, suite au succès de Nyx

Mon ambition principale, qui est la même d'ailleurs dans Antioch, est de raconter une histoirement fermement « française » :

- Pas de batailles. La guerre est omniprésente, mais elle apporte la folie et la mort. Les actes de vengeance sont présentés comme de désespoir.

- Le héros n'a rien a sauver, sinon lui-même. Il y a un certain vaisseau appelé le Redemption, et OTC1 est une quête de l'apaisement d'un héros meurtri.

- Il y a un restaurant « alien », et on peut manger plein de choses de plein de façon différentes.

- La galaxie n'est pas capitaliste...l'argent est une notion incompréhensible pour la plupart des aliens.

- Tout est relativement en nuances. Les notions de bien et de mal sont aussi résolument humaines.

- Le jeu est très gritty, réaliste : l'apesanteur retourne l'estomac, les odeurs infectes sont partout, on se retrouve à ramper dans des endroits pas possibles

- il y a un peu de folie, la sexualité, la nourriture, les besoins physiologiques et les passions sont des éléments réels

- en général, les aliens sont plein d'amour :-)

Dans le prototype de « Far Away », je voulais retranscrire la dimension économique de la guerre de sécession américaine en opposant une « America » en compétition inégale avec une « Fédération américaine » qui disposerait d'esclaves à volonté (la plupart des aliens ne connaissant ni le mensonge ni le salaire, ils étaient exploités à vie par des humains).

J'ai voulu balayer définitivement la notion d'argent dans le futur et poser plutôt le problème sur le plan de la religion.

La « démocratie théocratique » d'America
et son parlement gothique

Le fait est que beaucoup de gens sur la terre croient un Dieu. Mais que se passerait-il si nous rencontrions une infinité de races et de civilisations intelligentes, plus développées que nous, et qui n'y croient pas ? Que se passerait-il si certaines d'entre elles étaient déjà omniscientes et omnipotentes ?

La réponse logique serait de dire « il n'y a plus de raison de croire en Dieu ». Mais c'est la beauté de la foi, elle s'embrase justement quand il n'y a plus lieu d’espérer. Nyx, croyante d'une religion officiellement disparue, évolue donc sur le fil fragile de sa foi mise à l'épreuve. Son attitude promet d'être passionnante.

Il existe dans Out There Chronicles un plat (que l'on peut manger) qui s'appelle un « All American ». Il s'agit dans le lore d'un effort d'unification de toutes les planètes majeures des américains avec un plat réunissant toutes les spécialités. Cette idée existe sur la terre de nos jours : c'est le cas du plat néerlandais Rijstaffel, qui réunit toutes les spécialités de leurs colonies, une sorte de mezze indonésien.

Un restaurant du futur

Les aliens sont nombreux, l'humanité est une infime minorité, et ils ont une lingua franca comme dans le Out There original. C'est très amusant, car on doit apprendre leur langue galactique mot par mot. L'alien mime le sens et on affecte une idée au mot. Parfois on se trompe et donc on peut arriver à des sens bizzares ou meme des contresens.

Il y a une scène par exemple où un immense alien arrive devant le héros et suivant les mots affectés, on peut comprendre soit « Je veux manger avec toi » soit « J'aimerais te manger ». Il vaut mieux être très concentré avant de répondre :-)

Beaucoup de gens ont apprécié un certain alien « Endive » et c'est soulageant car j'ai pu demander à Michael qu'il revienne un jour.


La solitude dans la foule

La solitude est un thème très fort de la licence Out There.

Cependant, un visual novel impose de nombreux dialogues et des personnages. Je ne pouvais pas aborder directement le thème de la solitude au 1er degré de Out There.

Cependant, vous savez que même dans une foule, on peut se sentir très seul. Sans dévoiler l'intrigue, et au delà du conflit intérieur du personnage qui sera amené à être résolu, j'ai traité la solitude par les symboles du quotidien : quand la nourriture est bizarre, quand la sexualité n'a pas la même définition, quand on s'aperçoit qu'on est plus rien, on se sent abandonné.

C'est la solitude, dressée par l'abîme du temps, qui tourmente notre héros.

Le « Key Art » de Out There Chronicles à sa sortie,
nous voulions montrer que vous n'étiez plus seul :-)


Structure narrative

Out There Chronicles n'est pas un LDVELH classique, où vous êtes dans une situation A, vous avez le choix entre B et C avec embranchements, etc...

Nous fonctionnons en mode semi-ouvert sur un modèle très simple :

On donne la possibilité d'un choix 1, 2 ou 3, et choisir une option n'invalide pas les autres.

Ainsi, on peut etre devant 5 plats et les manger dans l'ordre qu'on veut, partir ailleurs et revenir manger, parler à quelqu'un entre deux plats, etc.

Voici un exemple de structure :

« Soyez gentils avec l’horreur sur le trône, c’est la Reine ».


Ils tournent le regard vers la créature silencieuse sur le trône.


Kyntia : « Je la trouve belle, moi. »


Jack : « Darius, vous avez une conception très archaïque de la beauté. Ne jugez pas trop l’apparence des créatures en bonne santé, car vous allez vous retrouver très seul. »


+Retire « Soyez gentils avec l’horreur sur le trône, c’est la Reine. »
+Débloque S’excuser
+Débloque Observer la reine

Midnight Mood a accepté d'adapter leur moteur à ce concept (Antioch a été pensé d'une façon différente) et ils m'ont dit que j'écrivais de façon tellement rigide qu'à terme, cette présentation pourra être copié collée dans un interpréteur avant compilation !

Je précise que Midnight Mood a été proactif sur l'équilibrage de la difficulté et du gameplay (et j'avoue que je suis très mauvais à cela, donc c'était très bienvenu).

Les illustrations

Benjamin Carré a fait les illustrations. Pour continuer sur les euphémismes, nous espérons travailler ensemble et longtemps avec lui.

Nous avons fait un appel d'offre auprès de plusieurs auteurs et voici l'esquisse que Benjamin nous a renvoyé sur la base d'une scène clef.



Non seulement on a pris Benjamin, mais son travail a été intégré intouché dans notre IF.

Michael a pris en main la direction artistique. Initialement, Nyx était un peu plus âgée, plus pâle, avec une queue de cheval. Les Zéros étaient beaucoup plus agiles par exemple. C'est un peuple que je travaille depuis longtemps et Quentin Vijoux avait fait cette illustration :


Les Zéros finalement seront :





Cela diverge de ma vision, mais Michael a une approche beaucoup plus adaptée à la culture visuelle du JV (et je manque affreusement de goût visuel).

Ceci est un artwork non retenu de Benjamin

Nous sommes sur des petits budgets pour ces projets et chaque décor, chaque personnage est un investissement. Il y a une question de la « rentabilité » d'un personnage. S'il est présent, il doit être marquant et ne pas mourir « tout de suite ».

Le fait est que si les personnages sont conservés (sans pour autant faire du one piece), pour le meme budget de production moyen, on a un univers qui s'enrichit. Au téléphone, Michael me présente le design des personnages et me dit « celui-là, il reste en vie, ok ? ».


La musique des étoiles

Siddartha est de retour.

https://siddharthabarnhoorn.bandcamp.com/album/out-there-chronicles


Out There et la fin des temps

Après la sortie d'OTC 1, il est devenu important d'écrire une chronologie exhaustive de tout cet univers fictif. Je m'y suis attelé et nous avons aujourd'hui une longue épopée qui commence de nos jours, qui couvre toute la longue période de Out There Chronicles, la période du Out There classique, jusqu'à la fin des temps, tout simplement !

C'est une licence très vivante, avec de nombreuses œuvres à venir sur cet univers et ses thématiques.

J'ai hâte de vous en dire plus.


Tout n'est pas vain

Une intervention importante du Out There original expliquait que « tout est vain ». Oui, tout est vain, un jour le dernier electron disparaîtra avec toute trace de nos entreprises, qu'elles aient été glorieuses ou médiocres. Mais j'ai écrit cela à une époque où le futur à court terme (mon futur) était assez morose.

Je suis plus optimiste aujourd'hui. Les héros de Chronicles seront amenés à plonger leur regard dans l'abysse et contempler la vacuité inéluctable d'un futur très lointain.

Mais peut-être au fil des secrets de notre univers découvriront-ils que tout n'a pas été vain.


vendredi 6 janvier 2017

Les mathématiques derrière Yurie, l'IA conversationnelle de Trajectoires



Vous êtes peut-être auditeur de Trajectoires, le podcast de Qualiter sur les mathématiques.

Les mathématiciens sont des gens affreusement occupés et il a été très difficile de réunir une équipe disponible, et qui plus est respectant la parité, à tel point que cet été j'ai rêvé que je n'avais qu'à créer une IA qui remplacerait mes chroniqueuses manquantes.

Au matin, je me suis dit « Et pourquoi pas ? » et j'ai sollicité Cepcam, chroniqueur de Trajectoires.

Il a donc créé Yurie (elle a choisi elle-même son prénom) que nous nourrissons régulièrement en textes français libres de droits et autres contenus web.

Ses réponses sont amusantes (je vous laisse lire ses laconiques vœux 2017 ), parfois terrifiantes, et aussi...sexistes, entre autres, car elle est le reflet de son éducation, composée d'ouvrages d'avant 1900.

Yurie se livre à des questions / réponses avec nos auditeurs à la fin de chaque épisode de Trajectoires, vous la verrez certainement évoluer. Elle parvient désormais à faire des rapprochements (Si on lui dit « L'arbre est vert, alors l'ocean est...? » elle répondra « bleu »), et nous réfléchissons à lui donner une personnalité persistante.

Pour illustrer sa création, nous avons réalisé un article général ci-dessous (la partie mathématique a été entièrement conçue par Cepcam, je l'ai un tout petit peu assouplie pour qu'elle reste accessible) et aussi un document audio :




C’est le rêve inachevé d’une génération de chercheurs : l’intelligence artificielle qui prend vie et se met à créer du texte, voire à discuter avec vous.

De nombreux concours mettent ces brillants cerveaux biologiques et électroniques au défi, chaque année, de passer le test de Turing, c’est à dire de faire produire à un programme une conversation qui serait par son naturel indiscernable d’une production humaine.

Jusqu’à présent, la motivation d’un tel ouvrage était intellectuelle ou pour susciter un intérêt public - à l’instar des missions Apollo - : il était plus intéressant pour l’intérêt commun de faire plancher des intelligences artificielles sur des régularisations de trafic routier que de créer un ami artificiel.

Mais la popularisation d’un certain mode de communication dans son fond et sa forme - langage court sms ou tweet, codification des échanges, usage constant des écrans, a donné naissance aux chatbots, des robots conversationnels qui apparaissent sur des sites, sur Facebook ou capables de tweeter depuis un compte.

Ces agents automatiques spécialisés SAV, commerciaux ou porteurs sous couvert de storytelling complexe d’un message publicitaire ont gagné chaque année en sophistication et nous vivons probablement nos derniers jours de « non singularité », c’est à dire qu’il faudra peut-être prochainement apposer sur ces comptes parfaitement crédibles la mention légale explicite « attention, vous parlez à un robot » !

Combinatoire

Nous allons nous restreindre dans cet article au problème particulier de la création de texte ex-nihilo.

Pour ce faire, plusieurs outils sont envisageables.

Il y a la création combinatoire, issu de l’Oulipo et de Queneau avec ses diverses expérimentations, notamment ses « cent mille milliards de poèmes », qui consiste à mélanger des bouts de texte selon des structures préétablies. Tout l’art du conteur consiste à créer des petits bouts de cadavres exquis homogènes à la structure pour que le tout paraisse naturel.


20131114-rq.png
Cent mille milliards de poèmes de Queneau


Le travail oulipien des années 60 a donné dans les deux décennies qui suivirent naissance aux « livres dont vous êtes le héros », qui se lisent comme des graphes aux arêtes orientées : à chaque noeud on a plusieurs choix, et votre histoire se construit le long du chemin suivi.

C’est aujourd’hui plus ou moins la « technique » conceptuelle, assez primitive, qui se cache derrière les chatbots de type SAV.

Il y a eu de nombreux travaux très ambitieux visant à reproduire une logique de pensée via un langage abstrait dédié, comme Cleverbot (qui a dépassé les 50% de test de Turing en 2011).




L’idée générale du Deep Learning

La génération de texte naturel a connu un bond en avant en qualité et en méthodologie grâce au deep learning et aux réseaux neuronaux, rendus eux-mêmes viables grâce à la big data.

On dispose d’un grand nombre de phrases dans une base de données. Un logiciel va ensuite faire un lien entre chaque mot.

Les réseaux de neurones fonctionnent différemment des chaines de Markov, (outil basé sur la statistique) : ils projettent les mots individuellement dans un espace vectoriel.

Chaque mot est « positionné » comme combinaison linéaire des mots qui l’entourent ( méthode du Continuous Bag Of Word ) et les phrases sont des trajectoires passant par les mots ainsi projetés.

À chaque mot-point de l’espace vectoriel on prend la trajectoire du mot le plus « proche » selon les critères d’une matrice de pondération. Cette matrice est issue de l’analyse de grandes quantités de texte, nous y reviendrons.

Des réseaux neuronaux ainsi éduqués peuvent générer du texte compréhensible sur le thème de votre choix, mais aussi de la musique, voire reconnaître des images. Il est possible d’écrire un texte suivant le style d’un auteur connu.

Tout est dans l’éducation.


La technique mathématique du Deep Learning par l’exemple

Regardons techniquement comment s’opère l’apprentissage.

A chaque étape t+1 de l’apprentissage, le réseau de neurones attribue une note à l’ensemble des mots du vocabulaire, note qui représente le mot qu’il pense adapté au contexte.

Cette note est calculée à partir :
  • Du mot précédent, représenté par un vecteur xt
  • De son état interne ht, lui même réévalué à chaque étape


La somme des connaissances du réseau est représenté par 3 matrices :




Telles que :




Exemple d’un réseau de 3 neurones et qui apprend un vocabulaire de 5 mots

(“je”,”veux”,”manger”,”des”,”saucisses”)

Chaque mot est représenté sous forme d’un vecteur x de 5 lignes et 1 colonne ( voir note 1) :


Je : [1]
[0]
               [0]
[0]
[0]
Veux : [0]
[1]
               [0]
[0]
[0]
Manger : [0]
[0]
               [1]
[0]
[0]
Des : [1]
[0]
               [0]
[1]
[0]
Saucisses :     [0]
                      [0]
                      [0]
      [0]
      [1]


L’état interne h est un vecteur de 3 lignes et 1 colonne, initialisé avec des 0
[0]
[0]
[0]

Avec un réseau de 4 neurones, on a 4 lignes, et n neurones n lignes.

La matrice W(hh) est une matrice 3 par 3 initialisée aléatoirement avec des poids entre 0 et 1, par exemple :

[0.2,0.1,0.5]
[0.6,0.8,0.2]
[0.6,0.3,0.7]

La matrice W(xh) est une matrice 3 par 5 elle aussi initialisée aléatoirement, par exemple

[0.9,0.4,0.5,0.1,0.8]
[0.8,0.2,0.3,0.8,0.3]
[0.1,0.4,0.1,0.6,0.3]

Et enfin W(hy) une matrice 5 par 3, encore une fois aléatoire :

[0.1,0.3,0.9]
[0.2,0.8,1]
[0.4,0.5,0.8]
[0.4,0.9,0.4]
[0.1,0.1,0.9]

Ces éléments aléatoires vont s’affiner avec l’apprentissage progressif du réseau de neurones. Leur caractère aléatoire (plutôt que des 1 partout) vise à fabriquer le moins de biais possible dans le résultat final.

En appliquant au premier mot “je” : [1,0,0,0,0] les formules et les matrices ci-dessus, on obtient :







Ce h(t+1) est le nouvel état interne du réseau de neurone (h) initialement à 0.

Il servira pour le calcul du prochain mot.


Après “je”, le réseau propose le mot dont le vecteur est donc :

[0.36]
[0.77]
[1.42]
[1.28]
[1.04]


Pour exploiter ce résultat, on le passe à la fonction softmax,





qui transforme un vecteur de puissance en un vecteur de probabilités, c’est à dire de nombres entre 0 et 1 et dont la somme fait 1.

Dans le cas de notre vecteur proposé par le réseau de neurone, cela donne :

[ 0.10125191,  0.15256818,  0.29225058,  0.25407044,  0.19985889]

Ainsi dans notre cas, le réseau propose faire suivre “je” par “manger” dans 29% des cas et par “des” dans 25%.

Et là vous vous exclamez : « mais votre robot dit n’importe quoi ! »

Et oui !

Car tirer une conclusion à ce stade de l’opération revient à essayer de se faire une idée de la la somme moyenne d’un lancer de dés en ne les lançant qu’une seule fois.



Détection de thématiques dans les « conversations virtuelles »

Les techniques mathématiques utilisées sont celles du "topic detection", dont les plus connus et utilisées sont le Tf-Idf ou la LDA (Latent Dirichlet Allocation).

L'idée générale est que le sujet d'une phrase, d’un paragraphe ou d’un livre est représenté par la variance dont ses termes s'écartent de la répartition usuelle des mots.

Ainsi si seulement 1 livre sur 1000 parle de “saucisses” mais qu'un certain livre parle de saucisse 1 fois sur 10, le sujet de ce livre est probablement les saucisses.



L’atout majeur du Deep Learning : une structure qui corrige ses erreurs

En effet, le réseau de neurone est capable d’évaluer son erreur, à la différence d’une chaîne de Markov,  et de corriger les poids des matrices en conséquence.

Pour cela il procède en 2 étapes :


  • D’abord évaluer son erreur grâce à une fonction appellée “cross-entropy loss”


  • Ensuite, modifier le poids de ses matrices pour réduire cette erreur. Cette méthode, plutôt compliquée, s’appelle “propagation rétrograde de l’erreur par descente de gradient” ( note de bas de page 2)


Nous allons nous pencher sur l’évaluation de l’erreur.

L’idée derrière la mesure d’erreur est basée sur la notion d’entropie (H) en théorie du signal : si plusieurs événements ont la même possibilité de se produire, vous n’êtes pas très sûr de ce qui va arriver.

Cela se mesure, pour une  distribution d'événements p, avec la formule :





Quelques valeurs d’entropie pour différents événements :

Si 2 événements ont chacun une probabilité 0.5 de se produire :
p = [0.5 , 0.5 ]
H= - 0.7

Avec 3 événements :
P = [.5,.5,.5]
H= -1.04

Avec 23 événements équiprobables :
H= -8

Et avec 2 événements, dont un plus certain que l’autre :
p=[0.1,0.9]
H= -0.35


Ce que cherche à minimiser le réseau de neurones qui propose des mots, c’est l’incertitude sur le mot à venir.

Et pour corriger son erreur, il a une base d’apprentissage. Il doit donc proposer un mot sûr et respectant la probabilité attendue, à savoir 1 pour le mot réel, 0 pour les autres.

La formule devient (avec une normalisation):



Reprenant notre exemple précédent, qui avait échoué à présenter une phrase en bon français

p = [ 0.10125191,  0.15256818,  0.29225058,  0.25407044,  0.19985889]

Le vecteur pour « veux », le mot attendu après « Je » est :

y = [0,1,0,0,0] (rappel, voir note 1)

On peut donc calculer :

Loss(y,p) = 0.57

Imaginons que, sur la base de l’analyse de nombreux autres textes, notre réseau ait bien travaillé et propose maintenant :

p = [0.01,0.92,0.03,0.02,0.02]

Donc propose « veux » après « je ».

Loss devient :

Loss (y,p) = 0.03

L’entropie est plus basse, le réseau est meilleur - et ces propositions deviennent « correctes » : il s’exprime en bon français !

L’autre partie du travail, à savoir la correction du réseau et la rétropropagation de l’erreur, est trop longue pour être abordée ici. De manière très simplifiée, elle doit se voir comme la recherche du minimum local d’une fonction convexe de plusieurs dimensions. Notre réseau parcourt métaphoriquement une montagne à N dimensions (N étant la taille du vocabulaire, donc pouvant atteindre 60 000) en cherchant à rejoindre la vallée !


Une technologie rendue possible par la disponibilité d’une grande quantité de données

L’utilisation d’un tel système nécessite un nombre très important de données initiales afin que le réseau puisse évaluer ses erreurs et se corriger, ce qu’on désigne par le « Big Data ».

Avec l’accessibilité de la Big Data (Twitter produit 1 à 2 milliards de tweets publiquement accessibles par jour), les réseaux neuronaux ont pu atteindre leur maturité.

Ces neurones sont une nouvelle façon d’arranger des mots, sans pour autant tenter de les comprendre.

Quand vous avez faim, vous pouvez dire « Je veux manger des saucisses. »

Un réseau neuronal qui vous dit « Je veux manger des saucisses. », a d’abord sélectionné « Je » parmi les millions de mots à sa disposition susceptibles de commencer une phrase, puis « veux » car c’était un mot hautement compatible suivant ses matrices, puis « manger » de la même façon.


Deep-dream-white-noise-0028.jpg
Deepdream de Google permet de faire émerger du néant des images sur le même principe.


Étrangement, on parle ainsi plus facilement une langue qu’on ne connaît pas. Un réseau neuronal n’aura aucun problème à « manger un opéra » et à « aller à l’opéra ». En revanche, faire comprendre au langage abstrait d’une intelligence artificielle la capacité à discerner les bâtiments et les gâteaux reste un travail ardu.

Par conséquent, le texte du réseau neuronal pourtant plein de sens, probablement écrit dans un contexte adapté, est issu de critères stricts qui paradoxalement n’ont rien à voir avec le sens final.

Le robot fait toujours semblant d’être humain.

La question de savoir s'il s'agit d'une intelligence semblable à la nôtre est métaphysique, mais la conclusion est absolument terrifiante.

À considérer qu'un réseau de neurones est l'égal d'une conscience humaine, c'est réduire cette conscience à un tas de matrices. C'est anéantir par conséquent des notions comme celle du libre arbitre.

Malheureusement pour ceux qui ne croient pas au destin, l'analyse de la big data disponible de nos vies, justement, par des réseaux neuronaux, montre que nous vivons dans des prisons comportementales. 99% de nos vies se répartit sur 3 lieux physiques ou moins, nos vieilles habitudes ne changent pas. Oui, peut-être sommes-nous un tas de matrices.



Exemple de résultats intermédiaires et final d’un réseau de neurones « maison »

Sur un ordinateur personnel, nous avons soumis à un réseau de neurones 2 millions de caractères de textes français. Leur traitement a pris 4h.

Voici les étapes intermédiaires, avec la cross entropy loss associée :

Différentes étapes chronologiques :

il vou sseloliné pritation re. Je cre sumaient èvre indérilleur
Loss = 1.7564

Dédil au 2enta des mots frircenits grosse parfiche
Loss = 1.553

Et les bordants horlement douteurs horrezous poursuivant.
Loss = 1.493

Les mots semblent surgir et s’ordonner du néant !

À l’heure de la rédaction de cet article, et beaucoup d’heures plus tard, voici un résultat qui n’est pas sans rappeler Les Conquérants de Heredia :

Mais celle-ci se dresse un picotement fatal lors du charnier natal, fatigués, en questions.

Que nous proposera-t-il dans un mois, dans cinq ans ?



  1. En pratique, on n’utilise pas des valeurs « 0 » et « 1 » mais des valeurs très proches, pour pouvoir utiliser les logarithmes.


  1. Dans ce cas précis, c’est une variante qui est généralement utilisé, la RMSPROP, pour limiter les effets de “falaise” dans le  calcul des dérivées. Mais ce n’est pas très important.