Mars Attracts : Création d'un jeu de type magnat avec un attrait rétro maximal

Mars Attracts, développé par Outlier Games et disponible dès maintenant en accès anticipé sur Steam, propose une touche détournée du genre magnat, chargeant les joueurs de peupler et de gérer un zoo extraterrestre. Nous avons interviewé Paul Froggatt, directeur technique chez Outlier Games, pour découvrir comment leur dernière version s'est réunie, qu'il s'agisse de travailler avec une propriété intellectuelle emblématique ou de prendre les bonnes décisions techniques pour alimenter une simulation complexe de parc à thème.
Pouvez-vous nous parler un peu des origines de Mars Attracts ? Comment avez-vous fini par travailler avec cette propriété intellectuelle ?
Mars Attracts a commencé avec un concept d'expérience de jeu : un jeu de magnat détourné sur l'enlèvement d'humains pour servir d'objets à exposer dans un zoo extraterrestre. En gardant le concept à l'esprit et un prototype très basique, nous avons ensuite cherché des IP qui pourraient ajouter de la personnalité au monde du jeu.
L'une des premières franchises qui m'est venue à l'esprit est Mars Attacks! L'équipe était d'énormes fans du film Tim Burton de 1996, et après avoir enquêté sur les droits, nous sommes tombés amoureux des voitures de science-fiction rétro originales sur lesquelles le film était basé. Nous avons contacté Topps (qui possède les Mars Attacks ! IP), et ont été ravis quand ils se sont intéressés à notre concept décalé pour le jeu.
Une fois que nous avons eu le concept de l'expérience de jeu et la propriété intellectuelle, l'équipe s'est agrandie et nous avons commencé à élaborer le jeu ! La tâche techniquement la plus ardue était la complexité de créer un jeu de magnat à grande échelle dans la veine d'Evil Genius, Dungeon Keeper, Theme Hospital et RollerCoaster Tycoon avec une petite équipe (5 à 6 personnes).
Plus précisément sur ces défis : quels ont été les obstacles techniques et créatifs rencontrés pour faire entrer le monde de Mars Attacks! dans un simulateur de parc à thème ? Comment avez-vous traduit son humour sombre distinctif dans l'expérience de jeu ?
L'un des éléments les plus stimulants sur le plan créatif avec la réalisation d'une simulation de parc Mars Attacks n'était en fait pas lié à la propriété intellectuelle. Le genre a tellement d'entrées géniales qu'il y a un niveau de fonctionnalité de base, des fonctionnalités de qualité de vie et de la complexité que les gens attendent de ce type de jeu. Il a fallu des ANNÉES pour que cette fonctionnalité de base atteigne un niveau tel que le jeu puisse coexister avec d'autres entrées de genre. Une fois que nous l'avons mis en place, différencier le jeu avec les mécaniques de Mars Attacks! a été beaucoup plus simple (et très amusant)! Avoir une réunion sur les moyens les plus horribles de torturer les humains ne vieillit jamais.
Mars Attracts propose une « IA de personnage complexe et basée sur les besoins » qui détermine le comportement de chaque client et employé du parc à thème. Pouvez-vous nous donner une idée générale de la façon dont cela fonctionne ? Comment avez-vous relevé le défi de gérer les décisions et les mouvements pour autant de personnages à la fois ?
Nous avons réalisé une vidéo ! La structure de l'IA des personnages a un peu changé au fil du développement.
Chaque personnage a un ensemble de besoins (faim, soif, excitation, etc.) et les ordonne en fonction de leur satisfaction actuelle. Ils passent ensuite sur la liste et essaient de trouver une solution à proximité du besoin (par exemple, un stand de nourriture pour la faim, un manège pour l'excitation, etc.). S'ils trouvent quelque chose à faire, une tâche leur est assignée. Sinon, ils passent au besoin suivant dans la liste.
L'un des principaux enseignements de la mise en place du système a été de scinder la tâche en deux parties : la destination et l'intention. À l'origine, nous ne distinguions pas l'intention. Par exemple, un personnage affamé « marchait vers l'étal de nourriture », mais nous avons constaté que cela devenait une limite pour les comportements plus complexes : un invité pouvait se rendre à l'étal de nourriture pour acheter de la nourriture, mais un concierge pouvait se rendre à l'étal de nourriture pour la réparer. Une fois que nous avions un système de tâches multi-éléments, nous pouvions créer beaucoup plus de variations pour les personnages.
Sur le plan technique, le pathfinding utilise le plugin A* Pathfinding pour Unity et les grid graphs. Il est intéressant de noter que nous avons différents graphes pour différentes tâches. Par conséquent, si un humain veut s'échapper, il utilise un graphe capable de tracer à travers les murs et les obstructions (en utilisant des pénalités de mouvement pour les obstructions afin qu'il puisse les contourner s'il le peut). Cela signifie que si l'humain le veut, il peut ouvrir un chemin de destruction à travers votre parc parfaitement entretenu.
Qu'est-ce qui a motivé la décision d'utiliser un système d'animation basé sur des maillages plutôt que des animations de squelettes plus traditionnelles ? Avez-vous dû faire des compromis et comment ces choix ont-ils eu une incidence sur votre flux de production artistique et d'animation ?
Le jeu a le potentiel d'accueillir des centaines (voire des milliers) d'invités à la fois. Nous voulions des foules nombreuses sans sacrifier les performances, et nous avons constaté que les composants Animator absorbaient une grande partie de la bande passante des performances.
Pour lutter contre ce phénomène, les clients du parc se sont tournés vers des animations basées sur des maillages, qui précalculent les animations et offrent des animations beaucoup plus performantes pour un grand nombre de personnages.
L'inconvénient est qu'il est plus difficile d'ajouter des variations aux invités (car chaque variation doit être personnalisée), et nous avons trouvé qu'elle fonctionnait mieux avec des animations relativement courtes.
Ce jeu plonge vraiment dans un sentiment de nostalgie, de la propriété intellectuelle à l'aspect et à l'ambiance généraux. Quelles techniques ou quels éléments visuels spécifiques avez-vous utilisés pour capturer cette esthétique particulière et obtenir le « look » souhaité ?
Trouver le bon équilibre entre nostalgie et nouveauté était une priorité pour nous. Sur le plan visuel, la palette de couleurs et la conception architecturale s'inspirent du futurisme rétro. Il n'y a rien dans le jeu qui semble trop lisse, tout est destiné à ressembler à ce à quoi les gens des années 1960 pensaient qu'une civilisation sur Mars pourrait ressembler.

En ce qui concerne les bases techniques, qu'est-ce qui a amené votre équipe à choisir le pipeline de rendu universel ? En quoi ce choix a-t-il été bénéfique pour un projet avec ce style visuel particulier et cette densité de personnages ?
Les visuels de Mars Attracts se voulaient rappeler les classiques du genre et la science-fiction rétro, tout en répondant aux attentes des joueurs pour un jeu moderne. Les considérations principales étaient de pouvoir a) tout réaliser avec un seul artiste 3D, et b) faire en sorte que le jeu soit performant, même sur des machines bas de gamme. L'accessibilité et la stabilité de l'URP étaient idéales pour créer les environnements que nous voulions créer.
Comment avez-vous abordé la question pour vous assurer que le jeu se déroule correctement ? Quelles ont été vos stratégies les plus efficaces pour optimiser les performances dans une simulation de cette envergure ?
Unity Profiler a été d'une aide précieuse pour identifier les goulots d'étranglement. En raison du nombre d'invités, la plupart des améliorations de performances ont été liées à l'inefficacité de l'IA invitée.
Par exemple, imaginez un grand parc où le joueur dispose de 1 000 bâtiments différents que les invités pourraient visiter. Si un client a faim, il doit faire une boucle dans 1 000 bâtiments pour voir s'il sert à manger. S'ils le font, ils vérifient l'état du bâtiment pour s'assurer qu'ils ont de la nourriture en stock, ne sont pas endommagés, sont équipés, etc. Si aucun des bâtiments n'est utilisable, répétez pour le prochain besoin du client (par exemple, la soif) et répétez pour 10 à 15 besoins. Puis multipliez-le par 500 invités. Soit 1 000 bâtiments x 10 besoins x 500 invités = 5 000 000 de chèques.
Pour résoudre ce problème, nous avons mis en place Search Regions dans le parc, afin que les clients ne puissent « voir » que les bâtiments de leur région actuelle ou des régions voisines. Cela peut réduire le nombre de bâtiments à vérifier à seulement 100, donc 100 bâtiments x 10 besoins x 500 invités = 500 000 vérifications. Une énorme économie sans réelle différence pour le joueur.

En y repensant, quelle est la décision architecturale que vous avez prise très tôt et qui a vraiment porté ses fruits alors que le projet devenait plus complexe ?
UnityEvents. Nous les utilisons tout le temps. L'un des principaux enseignements de notre projet précédent This Means Warp est l'importance cruciale du code modulaire autonome. Utiliser Unity Events pour communiquer entre les classes réduit massivement les liens codés en dur et facilite grandement la création de nouvelles fonctionnalités.
Vous avez commencé à utiliser des shaders de superposition granulaires pour montrer aux joueurs des informations visuelles importantes. Pouvez-vous m'en dire plus ?
Oui, nous avons un shader personnalisé qui met à jour un matériau en fonction des valeurs stockées dans une grille. Cela permet à l'utilisateur de visualiser à quel point une tuile est belle ou propre, ou à quel point elle est proche des bâtiments d'un certain habitat. Je n’ai pas fait le shader donc en ce qui concerne son fonctionnement je vais juste dire... Magic.

Y a-t-il des outils de l'Asset Store Unity qui se sont avérés particulièrement utiles et, dans l'affirmative, pourquoi?
BGDatabase : toutes les statistiques des bâtiments et les chaînes de localisation sont extraites des feuilles Google. Cela facilite grandement la mise à jour des données à grande échelle, l'apport des partenaires de localisation, etc. BGDatabase permet d'intégrer cela dans Unity facilement, nous l'utilisons dans chaque projet.
Quels conseils donneriez-vous à un développeur qui souhaite créer un jeu de type magnat, notamment un jeu impliquant de nombreux agents d'IA dans une simulation ?
Je recommande vivement de se tourner vers l'animation basée sur le maillage pour améliorer les performances avec autant de personnages. De même, le fait de travailler avec le profiler est absolument essentiel.
Une chose à laquelle j'aimerais penser plus tôt est Save/Load. Nous utilisons le plugin EasySave3, mais nous n'avons pas intégré la sauvegarde et le chargement dans le jeu avant la sortie d'Easy Access. Le fait d'enregistrer et de charger l'assistance ajoute un peu de surcharge pour qu'elle fonctionne pour chaque fonctionnalité. Nous avons donc gagné du temps à tout faire à la fois, mais nous n'avions pas pris en compte l'impact que cela aurait pu avoir sur l'accélération des tests pendant le développement. Pouvoir créer un environnement avec des centaines d'invités, reflétant une expérience de jeu réaliste, est super utile pour déboguer et optimiser les parcs à grande échelle.
Un conseil connexe que quelqu'un m'a donné juste avant le lancement : associez la sauvegarde du joueur à n'importe quel rapport de retour dans le jeu. Super utile pour recréer leur problème !

Mars Attracts est désormais disponible sur PC Découvrez d'autres jeux Made with Unity sur notre page Steam Curator officielle. Lisez d'autres témoignages de développeurs sur le blog Unity et le pôle de ressources.
