Personnalités, souvenirs, rumeurs, et décisions autonomes : comment donner vie aux habitants d'un lifesim ?
Salut l’équipe !
Après les premiers pas de VirtualCity et la présentation d’Helena Richards, place à notre roadmap du côté simulation de vie : personnalités, souvenirs, relations et décisions autonomes.
Aujurd'hui, on va détailler quelques points sur lesquels nous avons travaillé ces derniers temps pour préciser un peu plus notre vision côté simulation. Pendant nos doctorats, on a travaillé sur pas mal de domaines qui nous ont inspirés sur tout un tas d'aspects du lifesim, et on a a un projet assez différement des Les Sims, Inzoi, Paralives, Vivaland, Life by U sur bon nombre de sujets.
Pour illustrer un peu tout ça, et ne pas (trop vous perdre), on va prendre pour cette semaine le cas d'une soirée entre amis, avec le nouveau groupe d'amis d'Helena, à qui nous avions donné vie dans l'épisode #2 de la série sur la création de VirtualCity !
Des lieux, des habitants et des histoires
La "tagline" de VirtualSociety, c'est "créez des mondes vivants". Dans la video "Est-ce que VirtualSociety est un lifesim ?" je vous parlais de ma passion pour Westworld comme illustration de ce qu'on veut faire avec VirtualSociety, alors on va essayer de clarifier un peu plus tout ça. Pour moi, la simulation de vie doit permettre de jouer à différents niveaux de controle : parfois décider de toute l'histoire précisément, des personnages, familles, quartiers, etc., parfois les laisser évoluer tout seuls, laisser le monde nous surprendre (ce que j'adorais dans les Sims 3, les situations imprévues que le jeu faisait apparaître), les personnages se séparer, se retrouver, grandir, évoluer, ... et pouvoir reprendre le controle, où même par moment incarner un seul de ces personnages en 3ème personne pour vivre dnas le monde qu'on a créé. C'est ça le coeur du projet "VirtualSociety", et je vais détailler quelques points de notre réflexion sur tout ça aujourd'hui !
Une personnalité qui change les décisions
Avec Jimmy, nous avions imaginé Helena abaissant ses lunettes quand elle s'adresse à quelqu'un, comme pour dire "ce que je vais dire sera important". Un petit geste signature qui la rend reconnaissable. Assigner des "gestes signature" aux personnage est une idée qui nous plait beaucoup, et sur laquelle on travaille activement pour la rendre à la fois simple (dans l'éditeur de personnages), et cohérente en jeu (éviter des animations jouées au mauvais moment, etc.).
On a discuté avec Vanessa Street, qui nous suggèrais également d'ajouter des animations contextuelles par culture. Par exemple : différentes animations de salutation ; poignée de main, geste de la main, poing sérré/check, révérence, ... On adore l'idée, et ce sera également un moyen fort à la fois pour rendre les personanage plus distincts et representatifs, et pour mieux representer les différentes habitudes culturelles (on reviendra sur tout ça dès qu'on aura un peu plus à montrer !).
Mais sa personnalité doit aussi influencer ses choix, pas seulement ses animations.

HEXACO : six dimensions, de nombreuses nuances
Vous l'avez vu dans le trailler, notre outil d'édition de personalité se base, entre autres choses, sur HEXACO, le modèle de personnalité de Kibeom Lee et Michael Ashton, pour organiser une partie de ces différences. Il distingue six dimensions, chacune composée de plusieurs facettes. [1]

Edition de la personalité de Léo (ne faites pas trop attention à sa position sur cette photo .. :D)
| Dimension | Quelques facettes |
|---|---|
| Honnêteté-humilité | Sincérité, équité, modestie, rapport aux avantages matériels. |
| Émotivité | Appréhension, anxiété, besoin de soutien, attachement émotionnel. |
| EXtraversion | Assurance sociale, audace, sociabilité, vitalité. |
| Agréabilité | Indulgence, patience, douceur, compromis. |
| Conscienciosité | Organisation, diligence, perfectionnisme, prudence. |
| Ouverture à l’expérience | Curiosité, créativité, appréciation esthétique, intérêt pour l’inhabituel. |
Le modèle comprend aussi une échelle transversale d’altruisme. Ces six paramètres sont découpés en facettes pour permettre, comme partout ailleurs dans le jeu, une édition rapide et facile, ou plus complexe et nuancée. Une fois la personalité définie, ces paramètres (et le reste des infos des personnages, qu'on détaille en partie plus bas), vont influencer chaque partie de nos personnages.

Le même portefeuille, trois décisions
Définir l'impact de chaque paramètre sur toutes les strates du jeu va prendre énormément de temps évidemment, et de très très nombreux tests et ajustements. Prenoms un exemple autour de l'altruisme ; un portefeuille tombe près de la table. Un personnage pourrait rattraper son propriétaire, un autre le confier au comptoir, un troisième le garder. Le paramètre altruisme va entrer en jeu évidemment, mais aussi le contexte : connaissent-ils le propriétaire ? Sont-ils pressés ? Quelqu’un les regarde-t-il ?
Leur personnalité doit produire des tendances, mais pas une réaction identique à chaque fois. On sépare le caractère, les préférences, les compétences et les valeurs : aimer la guitare n’est pas savoir en jouer, et tenir à ses amis n’est pas forcément être à l’aise devant un groupe, etc.
Besoins et émotions : chacun sa zone de confort
Une heure après le début du repas, Léo veut prolonger la soirée, mais Helena aimerait rentrer. Tom préfère continuer à discuter, mais dans un endroit plus calme.

Nous représentons ces différences avec des états dynamiques : faim, fatigue, stress, stimulation, besoin social, appartenance, reconnaissance… Chaque état peut avoir une zone de confort, une zone d’urgence et une évolution dépendant du personnage et du contexte. Une même soirée pourrait ainsi être stimulante pour l’un et épuisante pour l’autre, sans que le second apprécie moins ses amis. Sa fatigue, ses préférences et les expériences de sa journée comptent aussi.

Une personne introvertie peut voir son besoin social se remplir beaucoup plus vite, mais aussi avoir une zone de confort totalement décalée, ce qui fait qu'avec une jauge remplie à l'identique, le résultat sur son état sera très différent. Sur ce genre de choses, les traits neuro-atypiques des personnages auront également un impact assez marqué (basé par exemple sur la théorie des cuillères).

Anticiper plutôt que subir
Un personnage pourrait manger avant d’avoir très faim parce qu’un rendez-vous l’attend. À l’inverse, terminer son assiette devrait calmer son envie de manger, plutôt que le pousser à cuisiner immédiatement autre chose. On travailles donc sur l’anticipation, la saturation et les conséquences des besoins ignorés. Les émotions et les souvenirs jouent également des rôles différents : une colère peut retomber sans effacer l’événement qui l’a provoquée. Encore faut-il savoir ce que chacun pense avoir vécu.. (la, on entre dans une partie assez complexe techniquement, mais heureusement, on a travaillé dessus pendant longtemps dans nos recherches !)
Des connaissances partielles, des interprétations différentes
Le jeu sait parfaitement où les objets sont placés et ce qui se passe dans le monde. Un habitant, lui, ne doit connaître que ce qu’il a perçu, appris ou déduit. Une conversation à l’autre bout de la ville ne devient pas instantanément connue de tous.
Un domaine entier de l'informatique est consacré aux connaissances, et on appelle ça : les bases de connaissances (en opposition aux "bases de données", qui stockent des données, et non des connaissances). Notre base de connaissances doit distinguer les faits du monde, les croyances du personnage et ce qu’il ignore. Ne pas savoir si quelqu’un aime la guitare, ce n’est pas savoir qu’il ne l’aime pas.

Petit extrait de mes cours d'informatique en 2017 sur la représentation des connaissances, pour illustrer le domaine
Je ne vais pas vous faire un long cours d'informatique, mais dans l'idée : la base de connaissance ajoute du sens par rapport a la base de données, elle "étiquette" les relations et les types d'informations pour permettre d'inférer (de déduire) des informations à partir des connaissances existantes. Par exemple "animal --> est mortel" et "un chat --> est un --> animal" permet de déduire "un chat --> est mortel". C'est un domaine complexe, car mal fait, les inférences peuvent mener à des conclusions totalement absurdes.
Dans nos cursus en informatique et en recherche, cela fait partie des choses qu'on étudie, ainsi que la représentations de données plus "floues". Pour donner quelques exemples : à quel moment quelqu'un est jeune ou vieux ? A partir de quelle taille une tartelette devient elle une tarte ? C'est pas si simple et on ne peut pas vraiment définir une valeur limite, on va donc representer certains concepts par des fonctions sur des nombres à virgule pour définir le "un peu", la zone floue entre un jeune et un "un peu moins jeune" par exemple.

Encore un exemple sorti de mes vieux cours (et réillustré rapidement) pour expliquer un peu le concept de connaissances floues.
Une carte de ce que chacun sait
Apres cette parenthèse "rappel de cours", revenons en au sujet. Chaque habitant doit donc avoir sa base de connaissances, dans laquelle on va, entre autres, représenter ses informations par des liens entre personnes, objets et lieux : [4]

Chaque information pourrait conserver sa source et le niveau de confiance que le personnage lui accorde. « Je l’ai vu » n’a pas la même origine que « Léo me l’a raconté ».
Cette distinction ouvre la porte aux erreurs : Helena pose des questions sur la guitare, Léo y voit un intérêt amoureux. Sa croyance peut influencer son comportement sans correspondre à ce que Helena ressent.
Comment une conversation devient une rumeur
Léo raconte à un ami : « On a parlé toute la soirée. Je crois que je lui plais. » L’ami retient : « Léo et Helena se rapprochent. » Puis quelqu’un demande à Helena comment s’est passé son rendez-vous.
Son quoi ???

On va ainsi pouvoir explorer la circulation des informations, leur déformation et leur confrontation avec de nouvelles observations. Qui raconte quoi, à qui, et avec quelle confiance ? Une personne absente devra apprendre l’événement avant de pouvoir y réagir. Le même système pourrait servir à recommander un restaurant, transmettre une préférence ou prévenir d’un changement. Savoir ce qu’un ami aime peut aussi permettre de lui faire plaisir.
Sur tout ça, on va se rapprocher doucement de tout un tas d'autres domaines de recherches auxquels ont s'est pas mal intéressés Jimmy et moi dans notre autre vie de chercheurs, notamment les Systèmes complexes adaptatifs et les Systèmes multi-agents, mais l'article sera vraiment infiniment trop long si j'ouvre ce côté la, alors on gardera ça pour une prochaine fois :P
Relations et souvenirs : aimer n’est pas faire confiance
Nous distinguons plusieurs dimensions dans les relations : amitié, amour, attirance, admiration, jalousie et confiance. Chacune est vécue du point de vue du personnage : Léo peut se sentir très proche d'Helena sans que ce soit réciproque (mais la dessus, rien de bien nouveau vis a vis des life-sim :) ). Ces différences doivent influencer leurs décisions. Après avoir découvert la rumeur, Helena pourrait continuer à plaisanter avec Léo, mais hésiter à lui confier quelque chose de personnel. Elle l’apprécie toujours ; sa confiance a changé.
Trois blagues ne doivent pas tout réparer
Les souvenirs donnent une continuité aux relations. Quelques interactions positives ne devraient pas effacer mécaniquement une déception importante. Reconstruire la confiance pourrait demander une explication, du temps ou de nouvelles expériences. Cette mémoire doit aussi garder les bons moments : un service rendu, un accueil chaleureux, un soutien. Quelqu’un pourrait choisir de vous aider parce qu’il se souvient de ce que vous avez fait pour lui.
Nous voulons des conséquences qui se voient dans les invitations, les confidences et les attentions, pas seulement dans une barre d’amitié. Pour autant, vous imaginez bien qu'équilibrer tout ça prendra bien du temps, même une fois tout le système développé. Un exemple concrêt : comment équilibrer "l'effacement" (la perte d'incidence sur les états et décision) des souvenirs au fil du temps ? De façon à régler la façon dont l'intensité d'un événement vécu va impacter le comportement du personnage, à la fois en général et vis à vis des personnes/lieux/objets liés au souvenir.
Des habitudes et des lieux familiers
Une place préférée, un trajet habituel, les clés sur le meuble de l’entrée : ces repères font aussi partie des connaissances. Si quelqu’un déplace les clés, le personnage pourrait d’abord les chercher à leur place habituelle, puis actualiser son information en les retrouvant ou en demandant de l’aide.Nous distinguons également ce qui est possédé, partagé, attribué ou simplement préféré. Une place préférée n’est pas une place réservée ; savoir où se trouve un objet n’autorise pas à l’utiliser. La aussi, la personalité des personnages aura un impact fort sur leur tolérance aux changements (des problèmes type : "quelqu'un a pris ma place préférée à la salle de sport ou au bar").
Les objets, vêtements et lieux portent aussi des informations sur leurs usages. Une tenue peut convenir au travail sans être adaptée à toutes les activités. Notre comptable de RealCorp, par exemple, conserve son tailleur après le bureau, mais échange ses talons contre des baskets pour rejoindre le skatepark. Et ces habitudes peuvent dépasser l’individu.
Helena et le bar : une expérience qui change tout un groupe
Imaginons qu’Helena et ses amis poursuivent leur soirée dans un bar. À l’arrivée, ils découvrent des marches et aucun accès utilisable avec son fauteuil. Helena propose un autre endroit ; le groupe la suit. La sortie suivante, ils pourraient choisir directement le second bar. Une expérience individuelle devient une connaissance partagée, puis une habitude collective.

Familles, foyers, amis, clubs, entreprises : les groupes ont leurs membres, leurs rôles, leurs ressources, leurs objectifs et leurs règles. Une décision collective demande de composer avec plusieurs préférences et engagements. Ici, les amis souhaitent rester ensemble ; ailleurs, il pourra y avoir des désaccords ou des compromis.
Et si vous rendiez le premier bar accessible ?
Vous modifiez l’entrée, élargissez les passages et réorganisez l’espace. Lorsque le groupe découvre ces changements, il pourrait reconsidérer son choix. Pas avant : les travaux ne mettent pas magiquement à jour les connaissances de toute la ville.
Construire ne change plus seulement l’apparence d’un lieu : cela peut changer qui le fréquente et comment on y vit. C’est le lien que nous voulons créer entre nos outils et la simulation de vie. Vous comprendrez peut être un peu mieux l'idée de "on prends le controle, on le relarche et on observe, on le reprends" que j'ai essayé d'illustrer dans la vidéo sur le lifesim et dont je reparlais en début d'article. On veut un monde qui évolue par réaction à nos actions, comme ici un escalier ou une rampe qui vont changer les habitudes de tout un groupe de personnes.
Comment choisir sa prochaine action ?
Un personnage a faim, veut rester avec ses amis, manque d’argent et travaille tôt demain. Comment arbitrer ? Jimmy et moi venons de la recherche en informatique, et ces questions nous amènent notamment vers les architectures BDI et les choix d’actions par utilité. Pour une fois, c'est pas un sujet que j'avais beaucoup étudié il y a 5-10 ans, et c'est quelque chose sur lequel on s'intéresse du coup énormément à l'heure actuelle.
Croyances, désirs et intentions
BDI signifie Beliefs, Desires, Intentions : ce qu’un agent croit, ce qu’il souhaite et ce qu’il s’engage à poursuivre. [2]
Dans notre soirée : il sait que le bar est inaccessible à Helena, veut rester avec tout le groupe, puis décide de proposer un autre lieu. Nous distinguons ainsi les besoins, les buts, les intentions retenues et les actions nécessaires pour les réaliser.
La barista avait déjà une journée avant votre arrivée
Vous arrivez avec la commande du manager de RealCorp. La barista prépare déjà une boisson et aimerait prendre une pause. Elle pourrait terminer sa commande, l’interrompre ou vous servir après sa pause, selon sa fatigue, ses engagements et le contexte. Donner une vie à un personnage, c’est aussi lui permettre d’avoir quelque chose en cours lorsque vous le rencontrez (et aujourd'hui, on a tout un tas d'outils tech pour simuler ce type de monde avec tout un tas d'informations qui vont évoluer en même temps, y compris les personnages qu'on ne voit pas).
Comparer les options
L’Utility AI attribue des scores aux actions selon différents critères. [3] Notre formule de travail résume les facteurs à combiner :
Intérêt d’une action = faisabilité × bénéfices attendus − coûts et inconvénients.
Les bénéfices peuvent être la satisfaction d’un besoin, la progression vers un but, le respect d’un planning, une préférence, une valeur, un effet social, la nouveauté ou une priorité de scénario. Les coûts comprennent le temps, la distance, l’argent, le risque, les conséquences sociales, la répétition et l’abandon de l’intention actuelle. Les actions impossibles sont écartées, et une hiérarchie configurable permett alors de distinguer urgences / commandes du joueur / directives de scénario / engagements / intentions et routines.
Terminer ce qu’on a commencé
Une légère variation de score ne doit pas provoquer un changement d’avis permanent. Nous voulons donner une certaine inertie aux intentions : terminer une boisson presque prête peut avoir plus de sens que l’abandonner pour une nouvelle demande. Une urgence peut, en revanche, justifier l’interruption. [3]
Il faut aussi rendre ce choix compréhensible. « Je termine ça et je suis à vous » en dit davantage qu’un personnage qui ignore silencieusement votre demande (si vous êtes joueur de lifesim, vous avez déjà forcément vu ce que ça donne quand ce genre de système donne un résultat moyen, avec des actions interrompues sans aucun sens..).
Diriger, guider ou observer
Le God Mode doit vous laisser choisir ce que vous décidez à la place des personnages :
| Votre contrôle | La consigne | La liberté du personnage |
|---|---|---|
| Diriger | « Assieds-toi sur cette chaise. » | Exécuter l’action précise, si elle est réalisable. |
| Guider | « Trouve une place pour manger. » | Choisir une place, par exemple près d’un ami. |
| Observer | Aucune consigne. | Choisir son activité en autonomie. |
Un ordre précis ne doit pas devenir une suggestion à votre insu. En revanche, un objectif général laisse de la place à la personnalité et aux relations. Nous distinguons aussi la suggestion d’une action, son interdiction, le changement de rôle ou de contexte et le retour à l’autonomie. Vous pourriez prendre la main sur un personnage, changer le cours de sa soirée, puis le laisser reprendre sa vie. Avec les conséquences de votre passage.
Je pense que côté lifesim, c'est vraiment le coeur de la différence de VirtualSociety : on veut un niveau de controle flexible, de l'observation à la direction/scripting, en passant par la suggestion (va dans cette direction, et non "fais ça"). On a hâte de pouvoir vous montrer des exemples beaucoup plus concrets en jeu !
Scripting et modding : créer vos propres façons de vivre
Nos outils de dialogues, d’interactions et notre système de mods doivent aussi permettre de personnaliser la simulation : ajouter un comportement à un objet, définir une règle de lieu ou créer un besoin. Un robot pourrait avoir besoin de se recharger ; un monde fantastique, utiliser une autre ressource. Ce besoin devrait alors influencer les décisions du personnage et les interactions qu’il recherche.
Vous n’aurez pas à tout fabriquer pour jouer. VirtualCity aura ses habitants, ses lieux et ses histoires. Les outils permettront de les modifier, de les prolonger ou d’inventer vos propres mondes (notre lore a été écrit de façon à rendre cohérente l'existance de monde différents (médiévaux, futuristes, etc.), et on fera une base de différents styles, mais on laissera ensuite les moddeurs et joueurs prolonger nos idées la où ils auraient aimé plus, pendant qu'on continuera d'étoffer les mondes de base).
C’est aussi ce qui nous intéressait dans Westworld : pouvoir entrer dans les histoires d’un monde, pas seulement les regarder. Et les portails de notre lore ouvrent d’autres perspectives... mais commençons par faire fonctionner cette soirée avant d’y faire débarquer une autre dimension ;)
La roadmap : relier les systèmes, étape par étape
Nous voulons avancer à partir de petites situations testables, en retrouvant les mêmes habitants d’un épisode à l’autre :
- D’abord, les décisions individuelles : relier états, personnalité et intentions ; choisir une activité, la poursuivre et s’adapter aux changements.
- Puis, les interactions sociales : faire intervenir les relations, les souvenirs et les informations échangées, avec des conséquences visibles sur les décisions suivantes.
- Ensuite, les habitudes dans la ville : élargir aux groupes, aux routines et aux lieux, puis observer comment les constructions du joueur influencent ce quotidien.
Le contrôle, les animations et les outils de création accompagneront ces étapes. Les prochains articles et vidéos montreront nos tests, les variantes comparées et les comportements que nous devons revoir (et on en refera également d'autres comme celui-la si ça vous plait, car on a aujourd'hui survolé une petite partie des très très nombreux systèmes qui permettent à un lifesim de fonctionner, du moins à un lifesim tel qu'on rêve de le faire depuis 20 ans :D).
Et maintenant, laissons-les nous surprendre
Après Helena, d’autres habitants attendent dans nos carnets. Nous allons continuer à construire leurs lieux, leurs relations et leurs journées, avant de découvrir ce qui se cache derrière les façades un peu trop rassurantes de RealCorp.
Pour suivre leurs premiers pas, abonnez-vous à notre chaîne et rejoignez notre Patreon, y compris gratuitement. Vos soutiens nous permettent de consacrer davantage de temps au développement du côté life-sim et de partager les coulisses. Vous pouvez aussi ajouter VirtualSociety à votre liste de souhaits Steam.
Quel petit comportement vous donnerait le plus l’impression qu’un personnage a vraiment sa propre vie ?
Merci de nous accompagner, et à très vite !
Pour aller plus loin
- Kibeom Lee et Michael C. Ashton — The HEXACO Personality Inventory–Revised : dimensions et facettes .
- Anand S. Rao et Michael P. Georgeff — BDI Agents: From Theory to Practice, 1995 (PDF) .
- David « Rez » Graham — An Introduction to Utility Theory, Game AI Pro (PDF) .
- W3C — RDF 1.1 Primer : représenter des informations en graphes .

JuDePom et Okiles aiment ce post
Aucun commentaire