Bonjour, je m'appelle Tony Zurovec et je suis le directeur de l'Univers persistant de Star Citizen. Aujourd'hui, je vais faire le point sur l'évolution de l'architecture backend et des fonctionnalités systémiques, sur les progrès accomplis au cours de l'année, sur ce qui arrive et sur l'impact que tout cela aura sur votre expérience de jeu. Afin de vous donner une vision plus complète de la direction à long terme et de ce que tout cela signifiera en fin de compte, je vais couvrir des domaines qui sont à différents stades de développement et j'aurai parfois recours à des exemples illustratifs afin que le concept sous-jacent soit plus clair. Tout d'abord, un bref rappel. Quantum est une simulation de l'univers du jeu et son but est de permettre à des choses telles que le prix des marchandises dans un magasin, le nombre de pirates près d'une zone d'atterrissage ou les missions proposées, d'évoluer et de changer au fil du temps de manière logique et réaliste.
Pour ce faire, elle simule des centaines de milliers de PNJ légers appelés “quanta”, dont la logique de l'IA se concentre uniquement sur les éléments nécessaires pour produire les informations requises. Sur la base d'une liste d'attributs, chaque quantum prend ses propres décisions en utilisant les mêmes magasins de ressources et les mêmes boulots que les joueurs. La simulation devra calculer plusieurs millions de décisions par minute, et le comportement de l'IA des quanta est donc axé sur les détails ayant le plus d'impact économique, ce qui permet aux quanta de concentrer toute leur puissance de traitement sur les choses qui comptent vraiment. Chaque quantum possède son propre ensemble unique d'attributs qui influencent ses performances et sa façon de percevoir les opportunités.
L'implémentation initiale des attributs comprendra deux catégories principales : les compétences et les traits. Les compétences agissent comme un multiplicateur de la capacité d’un quantum à accomplir une tâche donnée. Des tâches différentes exigeront des compétences différentes et des compétences plus élevées équivaudront à une meilleure réalisation. Les traits décrivent le type de travail qu'un quantum préfère faire en modifiant sa valeur perçue du travail. Chaque emploi aura un alignement spécifique et lorsque les traits d'un quantum correspondent à l'alignement de l'emploi, il percevra sa rémunération comme étant plus élevée.
Pour illustrer le concept, prenons deux emplois situés aux deux extrémités de l'échelle d'agressivité et supposons pour l'instant qu'ils rapportent la même chose. Créons maintenant un quantum avec un taux d'agressivité moyen. Ce quantum n'est pas plus proche de l'alignement d'agressivité d'un ouvrier d'usine que de celui d'un agent de sécurité. Il n'est donc pas surprenant que pour ce quantum, le gain pour les deux emplois soit le même. Cependant, si nous diminuons son indice d'agressivité, nous pouvons constater que le montant d'argent perçu pour les deux emplois change. Encore une fois, le salaire réel n'a pas changé du tout, seulement la valeur perçue du point de vue de ce quantum.
Il est toujours possible pour lui de choisir la sécurité, mais dans ce cas, celle-ci devrait payer quatre fois plus. Si nous modifions le trait d'agressivité de ce quantum pour qu'il soit très élevé, le contraire se produit : maintenant, l'emploi agressif de sécurité semble payer beaucoup plus et les emplois paisibles d'ouvriers d'usine semblent payer beaucoup moins. Bien sûr, les emplois ont plus d'un trait pour se distinguer. Supposons que nous prenions un autre emploi agressif : pirate.
Avec une seule dimension, le travail de pirate semblerait tout aussi lucratif pour ce quantum qu'un travail de sécurité. Nous pouvons différencier ces deux emplois en ajoutant le trait de moralité et en plaçant ces deux emplois agressifs à la bonne place sur cette échelle Maintenant que tous les emplois ont une combinaison unique d'alignements de traits, nous pouvons voir la rémunération perçue pour ces trois emplois changer, même si dans ce cas, tous les emplois paient exactement le même montant. Nous expérimentons actuellement quatre traits différents, mais nous prévoyons d'en ajouter plus au fil du temps afin de nous assurer que les quanta ne se rassemblent pas autour de l'emploi le mieux rémunéré mais qu'au contraire, comme dans une population réelle d'individus, ils effectuent tous leur propre calcul mental pour déterminer ce qui leur semble le plus attrayant, ce qui nous donne la belle distribution de travailleurs que nous souhaitons. ce qui nous donne la belle distribution de travailleurs que nous souhaitons. - Optimisations - - Optimisations - La simulation de Quantum que nous avons réalisée lors de la dernière CitizenCon était implémentée en Typescript, un langage relativement lent qui nous limitait à moins de 10 000 quanta.
Toute cette logique a depuis été réécrite en C#, beaucoup de temps et d'efforts ont été investis dans l'optimisation du threading et du verrouillage de ressources, ce qui a permis d'augmenter les performances de plus de deux ordres de grandeur. Stanton est l'un des systèmes solaires les plus complexes et nécessitera environ 50 000 à 100 000 quanta pour atteindre la fidélité requise, ce qui signifie que nous disposons d'une grande marge de manœuvre sans réglage supplémentaire pour prendre en charge les systèmes solaires à venir comme Pyro. Tout comme une économie réelle, Quantum produit une énorme quantité de données et il existe d'innombrables façons d'ajuster la simulation.
Il est difficile de trouver une combinaison qui produise les résultats souhaités. Pour résoudre ce problème, nous avons créé Odin, un plugin pour l'environnement JupyterLab basé sur Python. Odin est un outil web puissant qui permet d'interpréter en temps réel les données de l'économie dynamique et complexe du jeu, en fonction des actions des joueurs dans le jeu live et des quanta.
Ici, j'utilise Odin pour afficher simultanément tous les graphiques liés à l'économie de l'aluminium : où il est extrait, raffiné, fabriqué et vendu dans le système Stanton. C'est un peu surchargé donc je vais affiner la recherche en ajoutant le mot "achat" à l'explorateur de graphiques. Avant de les voir, nous pouvons prévisualiser ceux que nos recherches ont identifiés, ce qui est très utile dans le cadre de recherches plus complexes. Dans ce cas-ci, nous avons déjà réduit les choses à une taille gérable, alors je vais passer aux graphiques.
Tout semble assez sain. Vous pouvez voir la nature cyclique des prix des matières premières, un signe que nous sommes sur la bonne voie et que nous obtenons la modulation économique que nous voulons. Tous ces graphiques sont mis à jour en temps réel à partir de la simulation et nous pouvons zoomer sur des périodes particulières, ce qui est inestimable lorsque l'on essaie de comprendre pourquoi la disponibilité d'une ressource essentielle s'est tarie ou pourquoi le prix de telle ou telle chose a explosé. Avec un système aussi complexe, il est souvent difficile de prévoir le type d'informations que nous pourrions vouloir inspecter et Odin a donc été conçu pour être extrêmement flexible et adaptable.
Un outil d'analyse de données particulièrement puissant que nous avons développé nous permet de visualiser le flux de biens et de services dans une perspective très détaillée. Nous l'appelons le “lasergraph", et il peut cibler dynamiquement les flux économiques et animer les transitions afin de nous permettre de voir comment les choses évoluent dans le temps. Ici, j'ai sélectionné un certain nombre de nœuds de produits différents et vous pouvez voir toutes les relations économiques de ces articles sur le graphique. Le graphique nous permet de basculer entre plusieurs flux clés tels que le volume de marchandises, le flux d’UEC et même la densité de valeur de routes spécifiques dans l'univers. Les nœuds sont classés en fonction de l'activité économique, de la plus forte à la plus faible, et les changements intervenus au fil du temps les réorganisent. Nous pouvons donc détecter des changements importants dans l'économie simplement en observant comment les nœuds ajustent leur position.
Cet outil peut inspecter à la fois les données en temps réel et les données historiques, ce qui permet de remonter dans le temps et de voir la progression des facteurs à l'origine d'un problème et ce qui pourrait être fait pour y remédier. Lors de l'inspection d'un segment de temps, vous pouvez voir des éléments qui apparaissent et disparaissent progressivement selon qu'ils étaient pertinents ou non pendant cette période. Souvent, nous voulons examiner un matériau particulier pour étudier comment celui-ci circule dans l'économie. Avec le “lasergraph”, nous pouvons choisir un matériau comme l'aluminium, puis tous les articles que ce métal sert à construire, ce qui nous donne immédiatement une vue intuitive des relations entre les recettes de fabrication et la logistique à l'échelle du système, avec une vue d'ensemble. Ici, il semble que la plupart de l'aluminium brut soit transformé vers des articles vendus dans des magasins sur Crusader et ArcCorp. Mais au bout d'un certain temps, les magasins de Crusader sont à court de stock et cessent de vendre de tels articles, et toutes les ventes sont déplacées vers Hurston et ArcCorp.
Au fur et à mesure que de nouveaux matériaux, recettes et objets seront ajoutés à un univers de plus en plus complexe et que les comportements des joueurs évolueront nous rencontrerons fréquemment ce genre de problèmes et des outils analytiques comme le “lasergraph” nous seront d'une aide précieuse pour identifier rapidement ces problèmes et déterminer ce qu'il faut faire pour rétablir l'équilibre. nous seront d'une aide précieuse pour identifier rapidement ces problèmes et déterminer ce qu'il faut faire pour rétablir l'équilibre. - Analyses de Quantum - Les actions des joueurs sont renvoyées à Quantum pour qu'il puisse intégrer ces données dans la simulation et Odin peut évaluer ces informations tout aussi facilement que celles provenant de quanta.
Il est par exemple entièrement lié au système juridique et peut ainsi générer une "heat map" montrant où les joueurs commettent des crimes spécifiques. S'il y a trop de PvP dans une zone censée être sécurisée, nous pouvons renforcer la sécurité, placer des tourelles supplémentaires ou augmenter les sanctions imposées par le système juridique. Pour être plus clair, les capacités analytiques et statistiques d'Odin seront également très utiles à la simulation Quantum, car elles lui permettront de mieux comprendre comment ajuster les différents réglages et leviers pour créer un univers dynamique où les choses vont et viennent logiquement et où tout fonctionne comme une partie d'une machine plus grande et plus complexe. Les quanta qui se concentrent sur le transport de marchandises, par exemple, exigeront un prix plus élevé en fonction du risque auquel ils s'exposent sur le trajet et Odin peut trier tous les chemins possibles qu'ils pourraient emprunter en fonction du risque, de la consommation de carburant ou de toute autre mesure qu'ils souhaitent prendre en compte, afin qu'ils puissent décider s'ils sont intéressés par le boulot, et si oui, quel type de paiement ils exigeraient. Voici un diagramme à barres qui montre où tous ces criminels passent leur temps...
...et un autre qui montre comment ils dépensent leur argent. Odin peut identifier les sites miniers les plus populaires ainsi que les matériaux qui sont extraits de ces endroits. Il sait quel type de vaisseaux les joueurs pilotent, combien de joueurs sont à bord et quel type de vaisseaux ils affrontent. Odin a une connaissance complète du système de missions, ce qui lui permet de relier les positions des joueurs et les missions qu'ils ont acceptées. En un coup d'œil, nous pouvons savoir quelles missions les joueurs trouvent les plus intéressantes, afin de nous concentrer sur la création de ce type de contenu, et où ces missions les mènent, afin de comprendre les parties du système solaire qui sont sous-utilisées. L'un des graphiques les plus intéressants que nous ayons créés est celui qui mesure la qualité de la conception des missions. Chaque cercle représente une mission et les plus grands cercles indiquent que davantage de joueurs ont effectué cette mission en particulier.
Les abscisses détaillent le pourcentage de joueurs qui ont réussi la mission sur l'ensemble des joueurs qui l'ont accomplie et les ordonnées indiquent le pourcentage de joueurs qui terminent la mission même s'ils l'ont échouée. Cela nous donne toutes sortes d'indications intéressantes : les positions basses sur le graphique indiquent par exemple que la plupart des joueurs obtiennent un résultat autre que le succès ou l'échec, ils abandonnent la mission ou se déconnectent, ce qui n'est pas bon. Les points les plus à gauche indiquent les missions ratées par les joueurs. Le quart inférieur gauche indique les missions qui sont fréquemment abandonnées ou qui échouent quand elles ne le sont pas, ce qui indique probablement un problème.
Les missions situées dans le quart inférieur droit ont un taux de réussite élevé mais sont fréquemment abandonnées, ce qui peut indiquer qu'elles sont trop faciles ou ennuyeuses. Les missions les plus intéressantes se trouvent en haut au milieu, elles sont souvent jouées jusqu'à la fin mais ne sont pas toujours réussies. Ce sont les missions qui sont à la fois intéressantes et difficiles. Nous utilisons ce type d'informations pour affiner la simulation, mais aussi pour nous donner un retour d'information de base sur le type de missions que les joueurs trouvent le plus attrayant et sur les problèmes à résoudre. Le gameplay de raffinage qui a été publié à la fin de l'année dernière a fait appel à quelques nouveaux services backend.
Le service des boulots est plus général et sera également un élément clé dans la mise en œuvre d'un certain nombre d'autres fonctionnalités à venir, y compris tout ce qui concerne le chargement et le déchargement des cargaisons ainsi que les services de réparation, de ravitaillement et de réapprovisionnement. Le service de raffinage permet aux serveurs de jeu de récupérer la capacité de traitement disponible d'une raffinerie et une offre de prix pour une quantité donnée de matériaux avec les options de vitesse et de qualité voulue. Ces nouveaux services illustrent bien la manière dont le développement se déroule aujourd'hui, qui consiste à s'assurer que tous les liens vers et depuis la source de données sont correctement établis dès le départ, de sorte qu'une fois que Quantum peut fournir les données nécessaires, nous pouvons appuyer sur un bouton pour les activer. de sorte qu'une fois que Quantum peut fournir les données nécessaires, nous pouvons appuyer sur un bouton pour les activer. - Réalisme spatial - - Réalisme spatial - Auparavant, lorsque les quanta se rendaient sur une planète ou une lune pour exploiter une ressource, ils choisissaient un emplacement aléatoire à la surface. Cela signifiait que Quantum n'était pas encore capable de générer la fidélité spatiale dont nous avions besoin afin de déterminer exactement où les PNJ devaient ou ne devaient pas se trouver.
Le service de ressources que nous avons achevé l'année dernière fournit toutefois à Quantum une API qui non seulement lui donne accès à ces informations, mais permet également de modifier ces quantités de manière à ce que, au fur et à mesure que les joueurs et les quanta exploitent une zone, celle-ci s'épuise. Pour la démonstration, je fais apparaître une planète. Je vais maintenant mettre en évidence l'emplacement de tous les minerais d'or. Les joueurs et les quanta n'ont bien sûr pas cette information et pour représenter ce fait, je vais placer une ombre sur toute la planète. Vous pouvez voir un vaisseau d'exploration quantum s'approcher de la planète par la droite.
En traversant la surface, il dévoilera la quantité et l'emplacement de ce minerai, visuellement représenté par la suppression de l'ombre, puis diffusera cette information aux autres quanta de son organisation. Il a découvert un énorme filon de minerai précieux et les mineurs quanta ont maintenant commencé à arriver en masse pour l'extraire. Ils se concentrent principalement sur les zones où la concentration est connue pour être la plus élevée, bien qu'ils considèrent également des choses comme le niveau de risque dans une zone donnée, peut-être causé par une organisation de joueurs ou PNJ qui se bat pour contrôler cette région. J'exécute cette opération à un rythme accéléré et vous pouvez voir que la quantité de minerai sur ce premier grand site diminue rapidement. L'explorateur a maintenant découvert un deuxième gisement de minerai d'or près de l'équateur, et comme le gisement original a désormais été exploité de façon très intensive, ce qui reste est plus long et difficile à extraire et est donc relativement moins intéressant. Les quanta l'ont compris et la plupart d'entre eux ont commencé à concentrer leur attention sur le nouveau site.
Ensemble, ces nouvelles fonctionnalités permettent à Quantum de générer des informations beaucoup plus détaillées, ce qui se traduira par une expérience de jeu meilleure et plus réaliste. Quantum saura où se trouvent exactement les PNJ à la surface d'une planète et ce qu'ils doivent faire. Vous comprendrez la valeur du savoir et vous tiendrez compte de son acquisition, de son partage et de sa vente dans vos calculs, y compris de la valeur des informations que vous tenterez éventuellement de vendre.
Quantum a maintenant été intégré de manière assez complète dans notre architecture backend et le service sera construit et livré avec toutes les futures versions du jeu, ce qui a demandé une grande quantité de temps et d'efforts étant donné la différence entre certains de ses outils et technologies et ce que nous avions déjà. Il reste encore beaucoup de travail à faire du côté de la simulation, mais nous nous approchons du moment où certaines parties de ses données simulées constitueront une amélioration par rapport à la logique algorithmique intégrée dans les différents services. Nous allons effectuer un peu plus de tests avant de lui permettre de commencer à injecter ces données dans le jeu LIVE et, même dans ce cas, nous allons commencer très modestement et nous limiter à quelques domaines choisis afin de pouvoir résoudre les problèmes éventuels Les premiers produits pour lesquels Quantum aura la possibilité de dicter le prix seront le carburant et les matériaux pour réparer. Nous allons également lui permettre de contrôler la quantité de piraterie et éventuellement de transporteurs cargo ainsi que la sécurité dans quelques lieux de test, mais gardez à l'esprit que tant que les données en arrière-plan ne seront pas exposées, les modulations pourront parfois sembler un peu arbitraires. Nous allons être plus agressifs avec les balises de service et nous allons bientôt transférer vers Quantum la plupart de ces responsabilités : le type de balise proposé, l'emplacement, la récompense et la difficulté. Pour l'instant, notre objectif principal est moins de faire circuler un grand nombre de données dans les deux sens que de faire fonctionner correctement toute la '"plomberie" technologique.
Pour calculer correctement le prix du carburant par exemple, Quantum doit avoir une idée du carburant, des types de vaisseaux utilisés par les quanta et de l'efficacité du carburant, ce qu'il n'avait pas auparavant. Afin d'évaluer la demande pour les services de réparation, les vaisseaux dans la simulation ont besoin d'un concept de dégâts qui n'existait pas auparavant. Il y a souvent beaucoup de travail nécessaire sur les services afin de permettre à de nouveaux types de données de circuler entre Quantum et le jeu. Maintenant qu'iCache est en grande partie terminé, nous avons pu réaffecter certaines ressources et, au cours du mois dernier, nous avons doublé le nombre d'ingénieurs travaillant sur la fonctionnalité systémique. En conséquence, nous en sommes aux premiers stades de la mise en place d'un certain nombre de nouveaux services essentiels, allant du service de contrôle du trafic aérien, nécessaire au Server Meshing, au planificateur des PNJ, qui permettra de créer des populations dynamiques en passant par le service d'IA virtuelle, nécessaire à la prochaine fonctionnalité majeure dont je vais vous parler. Partie 2 : IA virtuelle L'architecture de l’IA de Star Citizen est divisée en trois niveaux distincts.
Les personnages haute-fidélité que vous voyez dans le jeu exécutent la logique de Subsumption sur un serveur, et c'est de loin le plus coûteux en calcul sur les trois types d'IA. Elle a un cycle de sens/pensée/action similaire à celui des autres IA, mais comme vous pouvez voir les PNJ lorsqu'ils exécutent leurs tâches, il n'y a guère de possibilités de tricherie ou de simplification. Quelque chose d'aussi simple que s'asseoir sur une chaise nécessite beaucoup de recherche d'objets, d'animation, de raycasting, de détection de collision et plus encore.
C'est un problème car dans Star Citizen, nous essayons de simuler des systèmes solaires entiers et nous ne pouvons pas nous permettre d'exécuter ce genre de logique coûteuse pour des dizaines de milliers de personnages que les joueurs ne peuvent même pas voir. Nous faisons donc ce que beaucoup de jeux font et suspendons temporairement toute IA qui n'est pas à proximité d'un joueur. Mais cela crée un autre obstacle, car on ne peut pas simuler efficacement une économie lorsque des parties de celle-ci sont constamment arrêtées et redémarrées, et c'est la raison fondamentale de l'existence de Quantum. La fusion de ces deux extrêmes, Subsumption et Quantum, résout notre problème de base. Les PNJ se présentent et agissent exactement comme on s'y attend quand on les voit et les rouages économiques restent toujours en mouvement. Cette solution présente toutefois un défaut majeur.
Les PNJ lourds de Subsumption que vous pouvez voir et avec lesquels vous pouvez interagir n'exécutent pas de logique d'IA lorsque vous n'êtes pas là et sont donc sévèrement limités dans ce qu'ils peuvent faire et quand ils peuvent le faire. La résolution de ce problème incombe à une logique systémique de niveau intermédiaire que j'appelle "IA virtuelle". L'IA virtuelle permet aux PNJ virtuels de faire des allers-retours entre le monde physique de Subsumption et un état éthéré intangible dans le backend beaucoup plus efficace où ils conservent la capacité d'interagir avec les éléments de l'architecture systémique, tout comme un joueur. Cette technologie va déclencher un grand nombre de nouveaux gameplays passionnants, mais il faudra plus que quelques phrases pour expliquer correctement ce dont je parle.
Alors, allons-y plus en détail. - Théorie de l'IA virtuelle - Voici le système solaire Stanton, vous pouvez voir les quatre planètes : ArcCorp, Hurston, microTech et Crusader. Je vais zoomer sur la zone planétaire de Crusader et vous pouvez voir ses trois lunes : Yela, Daymar, Cellin et la station spatiale Port Olisar. Vous pouvez imaginer, en regardant cette station, des centaines de PNJ vaquant à leurs occupations. C'est comme ça que vous voyez l'univers, toujours en mouvement, toujours changeant, toujours réel, que vous le regardiez ou non. Comme je l'ai dit cependant, c'est une illusion, nous ne pouvons pas nous le permettre.
Lorsque vous ne regardez pas, le serveur désactive et se décharge d'un grand nombre de données inutiles, mais un large assortiment de services backend conserve la connaissance de tout ce qui compte vraiment et fournit une interface active à ces systèmes. Les PNJ en dehors des zones d'atterrissage sont traités différemment : Quantum accumule des informations statistiques sur les endroits où les PNJ devraient se trouver et ce qu'ils devraient faire à partir de ses quanta, ce qui nous permet de déterminer la fréquence à laquelle vous devriez voir un pirate ou ce qu'un cargo que vous rencontrez devrait avoir dans sa soute. Ces zones sont appelées volumes de probabilité et la chose importante à noter est que les PNJ qu'elles créent sont éphémères. Ils n'existent qu'un bref instant pour que la zone que vous regardez ressemble à ce que Quantum prévoit, et une fois qu'ils sont suffisamment éloignés des joueurs, ils sont complètement et définitivement détruits. Je vais ajouter un joueur ici, que vous pouvez voir sur la gauche. En passant près de Daymar, il se trouve à portée d'un volume de probabilité qui décide finalement qu'il doit rencontrer un pirate.
Un pirate est donc créé et engage le joueur et après un moment, le joueur décide qu'il est dépassé et décide de s'enfuir. Une fois qu'il est suffisamment éloigné de ce PNJ, celui-ci est détruit. Il ne persiste pas de quelque manière que ce soit et vous ne le reverrez plus jamais. Le joueur continue son voyage vers Port Olisar et le fil de fer vert translucide indique que la zone n'est pas chargée sur le serveur et donc que l’IA Subsumption n'est pas active. Je vais ajouter un PNJ virtuel dans un instant, mais rappelons d'abord rapidement ce qui les rend si différents. Les PNJ virtuels exécutent toujours une certaine forme de logique d'IA, qu'ils soient ou non à proximité d'un joueur.
L'IA virtuelle est extrêmement légère et efficace sur le plan du calcul. Elle élimine toutes les dépenses liées aux visuels et aux détails inutiles, tout en conservant la capacité d'interagir avec le jeu de manière significative. L'IA virtuelle s'exécute au sein d'un service backend et peut donc facilement être mise à l'échelle et n'impose aucune charge aux serveurs. Les PNJ virtuels peuvent passer de façon transparente d'entités IA légères pilotées par un service backend à des PNJ à part entière gérés par Subsumption.
Il est donc impossible de les distinguer d'un PNJ qui exécute en permanence une logique Subsumption coûteuse. Enfin, les PNJ virtuels construisent progressivement leur propre histoire unique au fur et à mesure qu'ils vivent leur vie, ils évoluent. Bon, revenons à l'exemple. Une fois que le joueur est assez proche de Port Olisar, cette zone apparaît, chargée sur un serveur et les PNJ sont initialisés afin de reprendre ce qu'ils devraient faire à ce moment de la journée. Maintenant, je vais introduire un PNJ virtuel pirate près du joueur et celui-ci va immédiatement attaquer.
Après quelques instants, le PNJ virtuel sort vainqueur de cette bataille et le joueur est tué. Comme le crime a été commis à portée d'un CommArray actif, il est enregistré dans l'historique du personnage avec l'heure et le lieu du méfait. Une prochaine application de suivi vous permettra d'accéder à ce type d'informations si vous vous êtes enregistré auprès des autorités locales, afin que les empreintes numériques laissées par les joueurs et les PNJ virtuels puissent être suivies. Le nom de ce PNJ virtuel est Draygan et puisqu'il est maintenant recherché dans cette juridiction, le CommArray a un marqueur fixe en temps réel de sa position.
Le seul joueur présent dans cette zone étant mort, le serveur décharge maintenant Port Olisar et le CommArray, mais comme je l'ai indiqué précédemment, les PNJ virtuel ne sont pas détruits comme un PNJ ordinaire créé à partir d'un volume de probabilité et leur logique n'est pas suspendue comme un PNJ dans une zone d'atterrissage. Au lieu de cela, les PNJ virtuels passent simplement de leur état physique, où l'autorité sur leurs actions est contrôlée par la logique Subsumption qui fonctionne sur un serveur, à leur état éthéré natif où l'IA virtuelle s'exécute sur le backend. Draygan commence maintenant à sortir de la zone et le CommArray continue à suivre sa position jusqu'à ce qu'il soit hors de portée, à ce moment-là les informations en temps réel sont converties en un rapport sur la dernière position connue. Il a décidé qu'il avait besoin d'argent et qu'il était peu enclin à prendre des risques.
Il a donc choisi de se rendre jusqu'à Yela où se trouvent de nombreux cargos transportant du minerai de valeur et où la sécurité est faible. Bien, Draygan est arrivé au champ d'astéroïdes de Yela et est maintenant revenu à portée d'un autre CommArray actif. Sa position en temps réel est donc à nouveau signalée, comme l'indiquent l'historique du personnage et le marqueur de suivi.
Il n'y a aucun joueur dans cette zone et donc rien de tout cela n'est transmis à un serveur, tout ce que vous voyez est le résultat d'une variété de services différents communiquant entre eux. Les PNJ virtuels déclenchent des volumes de probabilité tout comme les joueurs et celui de Yela montre qu'il y a un trafic de marchandises assez important dans cette zone. Donc, Draygan n'aura pas à attendre très longtemps avant de générer une rencontre.
En voilà un, Draygan vient de provoquer la création d'un cargo qui devient un PNJ virtuel afin qu'il puisse réagir à ce qui se passe via sa propre IA virtuelle. Draygan engage maintenant le cargo et commence à lui tirer dessus. Il est toujours à portée d'un CommArray actif et ce dernier crime est donc ajouté à l'historique de son personnage, il est maintenant recherché pour meurtre ainsi que piraterie et la prime sur lui vient de passer de 6 à 10 000 UEC. Augmenter la taille de son casier judiciaire et la prime sur sa tête est l'une des formes les plus simples d'évolution d'un PNJ virtuel, et au fil du temps, nous chercherons à ajouter d'autres moyens pour les PNJ virtuels d'évoluer et d'augmenter leur influence : recruter des adeptes pour tenter de devenir un aimant à vaisseaux ou un chef de gang, voire proposer leurs propres missions. Le capitaine de ce cargo ne va pas se rendre si facilement, il a diffusé une balise d'assistance au combat que les joueurs peuvent choisir d'accepter et il a offert une récompense de 3 000 UEC pour sa protection. Malheureusement pour lui, il est largement battu et rapidement détruit, ce qui fait que la balise expire avant que quiconque puisse lui venir en aide.
Les informations de ce type sont transmises à Quantum et, si elles sont en quantité suffisante, font évoluer toutes sortes de choses : le montant des missions de patrouille de sécurité dans cette zone la prime de risque exigée par les transports qui doivent traverser cette zone et le montant qu'un vaisseau en détresse offrira pour que quelqu'un vienne à son secours. La destruction du cargo a laissé quelques débris et peut-être quelques objets de valeur donc si un joueur était déjà en route, il pourrait arriver pour trouver les restes. Un autre meurtre a été attribué à Draygan et la prime sur lui a de nouveau augmenté, cette fois de 10 à 14 000 UEC.
Il a subi quelques dommages lors de cette rencontre et aura besoin de quelques réparations. Un pirate plus déterminé pourrait chercher à piller quelques cargos supplémentaires avant de rentrer, mais les attributs de la personnalité de Draygan indiquent qu'une fois qu'il a assez d'argent pour couvrir les besoins de base, il est plus intéressé par la boisson et le jeu que par la piraterie. Il quitte donc la zone et, une fois de plus, la localisation en temps réel cesse dès qu'il est hors de portée du CommArray.
Il retourne à Port Olisar, qui est l'endroit le plus proche offrant tout ce qu'il désire : un receleur pour vendre ses biens volés, des magasins pour réparer et réapprovisionner son vaisseau et un bar où il peut dépenser le reste de son argent. Le CommArray près de Port Olisar a été désactivé, ce qui signifie que la position de Draygan n'est pas mise à jour à son approche. La zone reste vide de tout joueur et n'est donc toujours pas mise en mémoire. Draygan peut donc rester dans son état éthéré et éviter une grande dépense de calcul liée à la manœuvre de son vaisseau, mais il doit toujours contacter le service de contrôle du trafic aérien pour demander un pad d'atterrissage et faire la transition entre son vaisseau et la station. Les services de ce type sont toujours pleinement opérationnels et accessibles aux PNJ virtuels. Cette demande d'atterrissage est enregistrée dans son historique, donc même si le CommArray désactivé complique un peu la tâche d'un chasseur de primes, il existe de nombreux autres moyens d'obtenir des informations sur la localisation d'un personnage.
Draygan avait besoin de faire le plein et de réparer son vaisseau et vous pouvez voir ces actions reflétées dans son historique lorsqu'il contacte le service de la boutique qui contrôle ces opérations. Lorsqu'un PNJ virtuel passe à une zone d'atterrissage qui est chargé, le service d'IA virtuelle qui pilote sa logique transmet temporairement le contrôle du personnage au planificateur de PNJ qui spécifie qui réside à quel endroit. Il s'agit de la même base sur laquelle la fonctionnalité de population dynamique sera construite, sauf que ce sera Quantum au lieu du service d'IA virtuelle qui dictera les changements dans la population. Le résultat final est que si un PNJ est assigné à une zone d'atterrissage et que vous vous trouvez à cet endroit, vous pourrez le rencontrer comme n'importe quel autre PNJ. Draygan traîne maintenant dans le bar local qui a été ajouté à Port Olisar pour les besoins de cette démo.
Si vous deviez entrer dans le bar à ce moment-là, il serait physicalisé avec le reste de l'environnement et vous le verriez réellement là. Draygan finit par avoir sa dose de divertissement ou peut-être est-il à court d'argent. Quoi qu'il en soit, il retourne au travail et s'envole vers Yela pour essayer de s'attaquer à d'autres vaisseaux cargo non protégés. Il contacte donc le contrôle du trafic aérien pour obtenir l'autorisation de quitter la zone et s'en va. Le même joueur que Draygan a rencontré et tué la première fois cherche à se venger et à réclamer la grosse prime sur la tête de Draygan. Il suppose qu'il pourrait y avoir un schéma dans les mouvements de Draygan et pense qu'il pourrait retourner vers Yela.
Il se positionne donc entre Port Olisar d'où il sait que Draygan vient de partir, et Yela, et activent un champ d'interdiction quantique. Draygan, toujours sous sa forme éthérée légère, effectue un saut quantique de Port Olisar à Yela et, comme un joueur, fait passer ce mouvement par le service de volume de probabilité responsable des interdictions. Dès qu'il se trouve à portée de la bulle d'interdiction du joueur, son saut est interrompu et il passe de l'exécution d'une IA virtuelle en backend à une véritable IA basée sur Subsumotion et exécutant une logique sur le serveur, de sorte que les deux peuvent s'affronter. Si le joueur est encore une fois le plus malmené, il peut décider de changer un peu de tactique et attendre de voir si Draygan revient bientôt à Port Olisar où il pourrait essayer de l'approcher à pied. Partie 3 : Événements dynamiques L'objectif ultime de Star Citizen a toujours été un univers dynamique et évolutif. Historiquement cependant, le contenu de nos missions a toujours été statique, nous n'avions pas la possibilité de le modifier après avoir sorti une version.
Les missions ont également été confinées à un seul serveur, chacun d'entre eux étant ainsi sa propre petite île, isolée et inconsciente de tout ce qui se passait ailleurs. Les données environnementales qui s'appliquent à tous les serveurs : les articles que la boutique propose, le nombre de cargos ou de pirates dans une région donnée ou les missions disponibles dans une zone d'atterrissage, ne pouvaient pas être modifiées par la logique de mission d'instance qui s'exécute sur les serveurs distincts, puisque nous n'avions pas encore de moyen de coordonner ces efforts. Le résultat final est un univers qui semble souvent statique et qui n'offre pas suffisamment de variété.
Les événements dynamiques sont un type spécial de mission destiné à remédier à ce problème. Il s'agit de blocs modulaires de contenu configurable qui peuvent impliquer n'importe quoi, de la simple perturbation des rouages de l'économie systémique à l'invasion complète d'un système solaire, en passant par une évasion de prison qui met à l'épreuve le système judiciaire. Les événements dynamiques sont de nature globale, ils affectent l'ensemble des serveurs. Ils y parviennent grâce à des extensions du langage de mission qui leur permettent de déclarer quelle logique s'exécute en parallèle sur chaque serveur et quelle logique s'exécute sur le backend tout en obtenant la possibilité de consulter et de modifier un grand nombre de données globales.
Cela nous permet de garder les éléments critiques de ces scénarios synchronisés sur tous les serveurs tout en conservant la flexibilité nécessaire pour que chaque serveur ait son propre état unique. Conceptuellement, les serveurs contrôlent la bataille et le backend gère la guerre. La mission XenoThreat que nous avons lancée au premier trimestre était un événement dynamique. Elle a été déclenchée manuellement, bien que Quantum puisse, à terme, activer automatiquement ces scénarios lorsque les conditions le justifient. Si, par exemple, le nombre de pirates dans une zone devient incontrôlable, Quantum pourra rechercher dans la bibliothèque des missions un événement dynamique compatible avec un nombre élevé de pirates, puis personnaliser et instancier ce scénario de manière à ce qu'une grande partie du contenu créé à la main : dialogues de personnages uniques, défis, récompenses, puisse être intégrée à la simulation de l'univers. Nous visons le meilleur des deux mondes : un univers systémique qui fournit un arrière-plan logiquement cohérent et qui permet de superposer du contenu et des scénarios que les auteurs, les concepteurs et bien d'autres ont passé beaucoup de temps à créer.
Voici Quasar, un nouvel outil qui nous permet de gérer des événements dynamiques dans le jeu. Il est connecté à la même StarMap que Quantum et a pratiquement accès aux mêmes informations. Je parcours le panel d’événements disponibles, et lorsque je sélectionne chacun d’eux, vous pouvez voir les paramètres d’entrée qui peuvent être utilisés pour personnaliser un scénario spécifique. Nous en avons quelques-uns à différents stades de développement dont Fleet Week, NineTails et Infiltrator qui arriveront prochainement dans la pipeline.
Je vais vous guider à travers un événement dynamique simple appelé “démo Quasar” qui vous présentera quelques unes des accroches systémiques que nous avons connectées dans le système de mission. Mais d’abord je dois préciser les paramètres d’entrée. La première chose qu’il nous faut c’est le lieu, je vais donc sélectionner Port Olisar en cliquant simplement sur la StarMap Les deux prochains champs nécessitent un type de vaisseau. Je vais choisir des Idris pour les défenseurs et des Cutlass Black pour les attaquants. Si Quantum devait déclencher de façon programmée un événement tel que celui-ci, il remplirait des champs similaires de façon à coller au contexte.
Donc, par exemple, on regarderait quels types de vaisseaux sont dans la zone où l’événement serait activité pour déterminer ce qu’il faut prendre en compte. Le prochain champ concerne la difficulté, qui dans ce cas particulier correspond à la vitesse à laquelle les ennemis apparaîtront. Le dernier paramètre, “ennemis restants” indique le nombre global d’ennemis à détruire sur l’ensemble des serveurs afin que la phase de guerre soit terminée et que la phase de victoire s’active. Je vais le régler sur 10. Tout étant configuré, je peux désormais activer l’événement. Quasar communique cette requête au service de mission dynamique qui va ensuite initialiser le cheminement logique, allouer les ressources globales, régler les conditions de la phase, informer tous les serveurs pour qu’ils démarrent toute logique d’instance que l’événement pourrait contenir et plus encore.
Je vais maintenant retourner à l’onglet actif de Quasar afin que nous puissions vérifier les données en temps réel de l’événement. Vous pouvez voir qu’il n’y a pour l’instant qu’un seul événement d’actif mais nous pourrions tout aussi facilement en activer plusieurs et leur attribuer différents paramètres. Les événements dynamiques transforment les données backend en blocs de cheminements logiques coordonnés appelés phases, et les phases créées pour cet événement peuvent être vues en haut à droite.
Elles sont toutes inactives pour le moment, d’où la couleur rouge, et passeront au vert si leurs valeurs deviennent "vraies", auquel cas leur logique intégrée s’exécutera Les variables globales de l’événement sont présentées en-dessous et c’est dans cette zone que vous pouvez voir la variable du nombre d’ennemis restants que nous avons précédemment réglé sur la valeur de 10. Plus bas se trouvent les fonctions de l’événements qui ont été marquées comme “externes” et qui nous permettent de manuellement ou automatiquement lancer des fonctions pour modifier certains aspects de l’événement après qu’il a déjà été lancé. La liste des articles que les boutiques vous permettent d’acheter ou de vendre a toujours été fixe. Les phases peuvent toutefois comprendre des modificateurs de boutique qui ouvrent la porte à des changements dynamiques de toutes sortes affectant des paramètres liés aux boutiques. Pour tester ceci, je vais lancer un client afin que nous puissions voir ce que le bureau d’administration de Port Olisar achète actuellement. J’ai minimisé l’inventaire pour ce test donc je m’attends à ne voir que quelques articles.
Voici la liste exhaustive, il n’y a que de l’hydrogène et de la nourriture industrielle. La phase de “modification de boutique” a été réglée pour s’activer lorsque la variable backend appelée “phase actuelle” vaut 1 donc je vais la paramétrer comme telle. La phase vient de passer au vert, ce qui veut dire qu’elle est active et tout changement de données backend est désormais appliqué.
Un modificateur de boutique a été appliqué pour augmenter la demande de nourriture à Port Olisar donc voyons ce qui se passe avec le prix. Il était stable pendant longtemps avec seulement quelques fluctuations. Cependant il a désormais bondi, conséquence directe de cette plus forte demande.
Donc les joueurs et quanta seraient encouragés par ces prix plus élevés à contribuer à ce rééquilibrage économique. Cette phase a également fait ajouter au modificateur de boutique un nouvel article à acheter, et vous pouvez voir que Quantum le sait déjà. Je vais quand même repasser au client afin que nous vérifiions que cela a bien affecté l’inventaire proposé en jeu Comme prévu, la boutique cherche désormais à acheter un nouvel article : des fournitures médicales.
Un tel contrôle manuel de l’économie n’a pas pour but de remplacer les ajustements systémiques de Quantum, il permet simplement de pousser le système dans une direction particulière pour apporter de l’intérêt ou une histoire compatible avec l’environnement ou une tendance existante. Quantum va ensuite prendre ces facteurs, les intégrer dans la simulation et présenter les changements adéquats pour arrondir tous les angles. Pendant que nous regardons les prix, je veux vous montrer une autre nouvelle fonctionnalité qui sera disponible dans les prochains mois.
À mesure que les concepteurs gagnent en capacité d’écriture en terme de logique de mission pouvant affecter les changements systémiques, les déséquilibres économiques temporaires deviendront plus fréquents et nous voulions que le système puisse activement vous contacter et vous informer plutôt que compter sur votre intervention pour constamment vérifier s’il y a des opportunités dans une zone. Si nous attendons un petit peu plus, le bureau d’administration en arrivera au point où il sera tellement à court de nourriture qu’il va lancer un appel, cherchant à obtenir plus de ressources. Il fera ça en envoyant un message qui sera enregistré dans une zone de votre journal spécialement dédiée aux alertes de prix, qui est un balbutiement de solutions pour créer et poster des missions. Vous pouvez voir le message indiquant ici que le bureau d’administration de Port Olisar a besoin de nourriture et ce qu’il est prêt à payer pour en avoir.
Cette fonctionnalité donne aux concepteurs la capacité de dicter à un niveau systémique la façon dont les boutiques répondront aux excédents ou aux pénuries, et cette fonctionnalité sera bientôt étendue à autre chose que des marchandises. Par exemple une région souffrant d’une piraterie trop prononcée pourrait offrir de payer des mercenaires pour leur venir en aide. C’est fondamentalement différent des tactiques de force brute sur lesquelles nous nous reposons actuellement pour créer des missions et décider de leur disponibilité, en plus d’offrir plus de souplesse et de puissance. Ce que vous observez réellement ici constitue les premiers signes de vie d’un système de mission dynamique et une fois qu’il atteindra son rythme de croisière, il transformera l’expérience de jeu. Maintenant, jetons un œil à la façon dont les événements dynamiques permettent d’ajuster les probabilités de rencontre et les fréquences d’interdiction. - Modificateurs des volumes de probabilité - Voici le volume de probabilité autour de Port Olisar.
Vous pouvez voir que la piraterie, la courbe rouge, et la sécurité, la bleue, sont inversement corrélées. Toutes proportions gardées, si vous augmentez les forces de sécurité, vous obtiendrez moins de piraterie et vice versa. La sécurité tend à se rassembler à proximité des complexes d’atterrissage et se dissipe avec l’éloignement alors que la piraterie tend à augmenter progressivement avec la distance.
La probabilité de rencontre est représentée par la hauteur de la courbe selon la distance. Notez que les chances de rencontrer un transporteur, la courbe verte, sont assez constantes car une fois que le vaisseau a décidé de faire le voyage vers ou depuis Port Olisar, il est probable qu’il a déjà décidé si la récompense vaut ou non le risque d’effectuer le trajet en entier. Je vais maintenant activer la phase de blocus de cet événement, ce qui va augmenter l’intensité de la piraterie dans la zone sélectionnée et submerger la sécurité.
La courbe rouge, piraterie, a désormais une hauteur moyenne plus importante car la probabilité de rencontre est plus grande, et parce que les pirates surpassent désormais fortement les forces de sécurité, la courbe rouge monte beaucoup plus à proximité de la zone d’atterrissage. Les criminels s’enhardissent car il n’y a plus suffisamment de forces de sécurité pour les déloger. La courbe bleue, sécurité, semble identique, bien qu’avec le temps Quantum ajustera les leviers économiques pour augmenter progressivement la quantité de forces de sécurité pour combattre la menace en proposant de plus grosses récompenses.
Une piraterie plus importante a cependant eu un impact immédiat sur l’afflux de transport qui a chuté précipitamment. Cela signifie que l’économie locale va commencer à se figer, on ne pourra pas importer de nourriture, de médicaments, de carburant ou toute autre chose nécessaire et les locaux ne pourront pas exporter les biens ni les services qu’ils produisent. Tous ces effets induits n’existent que parce que les concepteurs seront désormais capables de donner un coup de pouce aux rouages économiques de façon systémique. Testons l’un de ces effets induits.
Maintenant que nous avons ajusté les probabilités de rencontre, voyons les conséquences sur le voyage quantique dans la zone. Je vais à nouveau lancer un client du jeu, cette fois pour que l’on puisse observer un Avenger Titan sauter vers Port Olisar. Il s’agit d’un petit saut et le risque d’interdiction serait normalement très faible. Cependant comme nous avons injecté une présence plus accrue de pirates dans la zone, ce n’est plus le cas. On a été éjecté de notre saut dès qu’on est arrivés à portée de ces probabilités pirates plus élevées, ce qui signifie qu’arriver à Port Olisar est devenu bien plus difficile et chronophage et le restera jusqu’à ce que la menace soit écartée.
Nous en sommes au stade où nous pouvons programmer la modification de ces structures de données et Quantum les ajustera aussitôt, afin que l’univers soit empli de flux et reflux de toutes sortes. Ce que tout cela signifie vraiment c’est que même si vous savez que vous pouvez acheter des fournitures médicales à prix cassé à un endroit pour les vendre et faire un sacré profit ailleurs, nous pouvons enfin ajuster certaines des éléments systémiques qui justifient la disparité. En bref, si vous vouliez tirer profits maintenant des prix élevés de Port Olisar il vous faudrait parcourir les derniers kilomètres à vitesse réduite et faire face à de la résistance.
Cela va augmenter le temps qui vous sera nécessaire pour effectuer la course vous consommerez bien plus de munitions et aurez besoin de plus de réparation qu’à l'accoutumée donc vous réfléchirez probablement à recruter quelques escortes armées pour vous aider à traverser les zones dangereuses. Une fois le risque dissipé, une fois que joueurs et quanta ont neutralisé suffisamment de pirates pour que le voyage au sein de la zone revienne à la normale, vous pourrez bien plus facilement livrer des fournitures médicales à Port Olisar, mais bien sûr cette hausse des importations réduira rapidement l’écart de prix. Regardons maintenant comment chaque serveur héberge une partie d’un gros événement pendant que les choses importantes restent synchronisées. Je vais activer la phase de guerre en ayant recours à la fonction “démarrer guerre” Cela va créer des batailles scriptées impliquant des types de vaisseaux sélectionnés plus tôt autour de Port Olisar, la zone précédemment choisie. J’ai lancé deux clients de jeu, chacun représentant un serveur différent. À chaque fois qu’un Cutlass est détruit sur un serveur, la variable commune des ennemis restants est décrémentée.
Une fois que cette variable atteindra zéro, la phase de guerre se terminera automatiquement et la phase de victoire s’activera. Voilà, le décompte vient d’atteindre zéro et vous pouvez voir le changement de phase active dans Quasar. La dernière phase, victoire, a lancé des feux d’artifice autour de Port Olisar, et comme n’importe quel autre changement de phase cela sera automatiquement synchronisé sur tous les serveurs. Afin de simplement m’assurer que tout est revenu à la normale, je vais aller vérifier le bureau d’administration de Port Olisar et voir ce qui se passe avec l’inventaire et les prix. Ils ne semblent plus chercher à acheter des fournitures médicales et, maintenant que la menace pirate est éliminée, les joueurs et quanta peuvent à nouveau atteindre rapidement et sereinement Port Olisar.
Par conséquent, le coût de la nourriture a commencé à chuter et retournera rapidement à un prix proche de celui d’avant la crise. J’ai abordé beaucoup de sujets aujourd’hui. Quantum a considérablement évolué depuis la dernière fois que vous l’avez vu. Les soucis de performance ont été réglés, il est maintenant compatible avec notre infrastructure backend et communique désormais avec de nombreux services de jeu Beaucoup de nouveaux outils analytiques et de fonctionnalités ont été ajoutés, et un réalisme plus poussé dans certains domaines comme les attributs de quanta et la spatialisation des ressources nous a permis d’améliorer la précision de ses résultats. Nous sommes aujourd’hui dans les premières phases de test pour permettre à Quantum de commencer à générer ses premières données simulées en conditions réelles pour influencer le jeu. Et nous espérons le mettre en ligne grâce à ce travail plus tard dans l’année.
Les premières fondations de l’IA virtuelle ont été posées il y a longtemps mais cela ne fait que quelques mois, alors que les ressources d’ingénierie ont déployé d’autres initiatives majeures que les efforts d’implémentation ont vraiment commencé à décoller. Cette technologie offrira aux PNJ virtuels la liberté d’opérer et d’évoluer indépendamment des actions du joueur et d’ouvrir toutes sortes de possibilités de gameplay. La V2 de la chasse à la prime sera la première fonctionnalité à exploiter l’IA virtuelle mais il ne s’agit que de la partie immergée de l’iceberg en ce qui concerne ce que nous prévoyons d’en faire. Certaines bases de la techno d’IA virtuelle engendreront d’autres fonctionnalités importantes comme la capacité à ajuster dynamiquement la taille et la composition des populations aux zones d’atterrissage.
Les événements dynamiques sont le point culminant de plusieurs composantes technologiques majeures en approche, qu’il s’agisse du service de mission dynamique à Quasar, et sont d’ores et déjà une réalité. Nous avons livré le premier, XenoThreat, au premier trimestre et nous en avons d’autres à différents stades de développement pour les sortir plus tard cette année ou l’an prochain. Nombre de ces versions initiales serviront de banc d'essai pour de nouvelles fonctionnalités des modificateurs de volumes de boutique et de probabilité aux placards à spawn en passant par la génération dynamique de maillages pour la fabrication. Les événements dynamiques nous donnent la possibilité de modifier l’univers de façon spectaculaire ou subtile à volonté, et d’intégrer discrètement ces changements à la simulation de Quantum afin que tout paraisse naturel. Tout cela contribuera à un univers à explorer et vivre plus intéressant, plus réaliste et plus amusant pour vous.
J'espère que cette présentation vous a donné une bonne idée de ce que nous avons fait au cours de l'année écoulée et de ce que ces efforts signifieront pour le jeu dans l'année à venir. À la prochaine !
2021-08-23