PlanetSide 2
OMFG ! Operation : Make Faster Game – Video Episode 1
Mais que se passe-t-il dans le «behind closed doors » avec l’équipe de développement de PlanetSide 2 ? Faites un voyage dans le studio SOE de San Diego et voyez les efforts réalisés par les développeurs afin d’optimiser PlanetSide 2. Dans le premier épisode de cette série documentaire, les joueurs PlanetSide 2 vont pouvoir découvrir les personnes derrière toute la technique, les défis technologiques auxquels elles ont été confrontées et les différentes solutions qui ont été trouvées afin de rendre le jeu plus rapide. Tout ceci est dans OMFG ! Operation : Make Faster Game.
Mon dernier message d'optimisation remonte à déjà il y a un petit moment, et je tiens tout d'abord à vous annoncer que nous allons publier des messages de ce type bien plus souvent à présent.
MAIS QU'EST-CE QU’ON ATTENDAIT ?
On a passé la majeure partie des deux dernières années à mesurer et à examiner les éléments qui ralentissaient PlanetSide 2. Dès qu'on découvrait quelque chose qu'on pouvait rapidement corriger, on s'en chargeait. Lorsqu'on trouvait des possibilités d’optimisations générales qui n'étaient pas trop risquées, on les mettait en place. Mais étant donné qu’il s’agit d’un jeu live depuis le lancement du PS2 Tech Test, on a fait en sorte de jouer la carte de la sécurité en ce qui concerne nos optimisations. Toutefois, ce processus implique souvent de modifier le code qui a déjà subi des tests rigoureux, ce qui veut dire qu'en le modifiant, on risque de «casser » quelque chose, malgré tous nos efforts pour que ça n'arrive pas ! De ce fait, on a identifié de nombreuses optimisations qui nécessitaient un temps d'immersion bien trop long pour être réalisables à ce stade du projet.
ET POURQUOI MAINTENANT, ALORS ?
PlanetSide 2 a atteint un point dans son développement où nous pensons enfin tenir le noyau dur du jeu. Les concepteurs disposent de nombreuses options pour créer du contenu, les graphistes ont les outils nécessaires pour créer des graphismes, l'IU est compréhensible et fonctionne bien, nous avons un véritable didacticiel (adieu le «Bienvenue sur le jeu ! » et… *)PAF* !"), et les joueurs du monde entier ont accès à PlanetSide 2 dans leur langue maternelle.
Le moment était opportun. En s'en rendant compte, Smed est arrivé et a déclaré «Réparez ça, maintenant ! ». On attendait tous d’avoir enfin le temps d'effectuer certains de ces changements plus importants, et surtout de pouvoir faire ça bien. Smed reconnaît bien que peu importe le travail abattu par les développeurs ou les graphistes pour perfectionner le jeu, avec de faibles FPS, le jeu est bien moins sympa.
C’est dans cet état d’esprit que toutes nos équipes ont eu le feu vert pour réparer les choses qui prennent du temps à corriger. Au final, les FPS augmenteront de manière conséquente, et d'autres améliorations découleront naturellement de ces avancées architecturales. Tous les membres de l'équipe (littéralement tous les membres !) recherchent activement des solutions pour rendre le jeu plus rapide afin de vous apporter une expérience de jeu toujours plus agréable !
TRÊVE DE BAVARDAGES, DU CONCRET !
Attention, je vais utiliser des termes plutôt techniques. Si vous êtes Vanu, vous pouvez ignorer cet avertissement (et puis de toute façon, vous devez déjà tout savoir). Si vous êtes de la RT et que vous ne comprenez pas quelque chose, posez la question à votre commandant. Etsi vous ne comprenez toujours pas, c'est que vous devez être un peu lourd d’assaut... Enfin, c’est pas grave... Et si vous êtes un membre du NC, vous devez vous dire qu’il s’agit d’un complot pour vous réduire au rang d'esclaves… Mais lisez quand même.
PHYSIQUE DU JEU
Ce jeu offre des scènes physiques d'une complexité inégalée. Si, dans un jeu traditionnel, on peut trouver plus d'une centaine de formes qui rebondissent à droite à gauche et nécessitent un calcul de collisions, dans PlanetSide 2, vous trouverez parfois des scènes avec plus de mille formes ! Les énormes combats de tanks repoussent vraiment les limites du moteur physique.
Au cours de notre OMFG, nous avons passé beaucoup de temps à restructurer la complexité de la physique du jeu au cours d'un processus baptisé «Niveau de détail adaptatif ». Nous allons ainsi réduire la charge de travail du simulateur, basé sur le frame rate (nombre d'images par seconde) et la distance de l'objet. En gros, on permet au simulateur physique de souffler un peu en réduisant le niveau de simulation des objets qui sont plus éloignés.
«Mais attends un peu, Ryan ! », vous devez vous dire, puisque je ne vous entends pas, «baisser la qualité de la simulation, ça risque de donner une simulation pourrie, non ? J'adore la qualité des graphismes de PlanetSide 2, et je ne veux pas qu'on leur fasse de mal ! La physique de PlanetSide 2 est la meilleure du monde ! » Ouh là, ne vous emballez pas non plus... Mais bon… je prends ça pour un compliment. Et pour répondre à votre question : on n'en sait encore rien !
Certaines de nos modifications sont expérimentales. Nos équipes se composent de la crème de la crème, et on a des idées absolument géniales pour résoudre nos problèmes de performance, mais le codage c'est 60 % de science, 60 % d'art. Certaines des tâches dont je vous parle aujourd'hui en sont encore à l'état de balbutiement, et n'intégreront peut-être pas la version finale du jeu ou alors pas sous cette forme.
Avec le niveau de détail adaptatif, nous espérons émuler les images que nous ne simulons pas, en «lissant » les erreurs de simulation éventuelles, mais cela va nécessiter des heures de travail et des hectolitres de café, et encore plus pour déterminer si le résultat est satisfaisant. En ce qui concerne les conséquences sur le frame rate, cela ne devrait pas avoir un énorme impact à moins que vous n'ayez un processeur quadri-coeurs ou moins, mais cela aura un ÉNORME impact sur les «pépins » physiques, et les joueurs ayant un processeur duo ou quadri-coeur verront leurs FPS monter en flèche lors des gros combats.
Gestionnaire au-dessus de la tête.
À l'heure actuelle, au cours d'un gros combat, on passe beaucoup de temps à dessiner des petits triangles (on les appelle Doritos, et on n'a même pas de contrat publicitaire… Vous y croyez ?) au-dessus de la tête des personnages. On ne dirait pas comme ça, mais cela nécessite un système sous-jacent complexe pour faire en sorte que vous les voyiez même lorsque leur propriétaire n'est pas visible, pour que vous ne les voyiez pas dans certaines conditions, et tout un tas d'autres règles du genre. Nous avons observés des résultats indiscutables en retravaillant l'intégralité du système pour ne changer que le strict nécessaire, et seulement lorsque c’est nécessaire. Nous retravaillons également l'intégralité de son code de rendu afin de le rendre plus rapide aussi.
Actualisation des joueurs
Plus il y a de joueurs autour de vous, plus le client du jeu passe de temps à actualiser les informations les concernant. Cela comprend les bruits qu'ils émettent, les balles qu'ils tirent, les statistiques qui sont modifiées, etc. Pour chaque entité dynamique, votre client passe du temps à s'assurer que les éléments dynamiques sont «dynamisés ». Pour rendre tout cela plus efficace, nous n'allons en actualiser qu’un certain nombre à chaque image, et nous allons optimiser le système pour n'actualiser que ce qui est strictement nécessaire. Au cours de nos premiers essais, nous nous sommes rendu compte que moins de 10 % de toutes les entités dynamiques avaient en fait besoin d'être actualisées, alors qu'à l'heure actuelle, elles le sont toutes. Vous l'aurez compris : cela fera une grosse différence pendant les gros combats.
Actualisation des animations
PlanetSide 2 dispose d'un système d'animation solide, doté de tous les composants techniques dont vous avez jamais entendu parler (sauf la physique ragdoll… Ouais… Pourquoi ça n'est pas encore fait ? Hein ?!) Nous animons beaucoup plus de choses que la majorité des jeux disponibles, et cela grâce à des réseaux complexes. Afin d'optimiser nos animations, nous cherchons des moyens de traiter moins d'animations par image et de simplifier le processus de traitement de celles qui sont traitées tout en garantissant le même haut niveau de qualité. C'est un processus complexe qui nécessite une étroite collaboration entre les développeurs et les graphistes, mais nous sommes convaincus que nous obtiendrons d'excellents résultats.
Interface utilisateur
Notre interface utilisateur est incroyablement complexe. Elle peut sembler simple au premier abord (volontairement... même si c’est en fait beaucoup plus de travail de lui donner l’apparence d’être simple !), mais derrière tout cela, il y a des dizaines de milliers de lignes de codes qui permettent d'actualiser les données en temps réel. On a eu plus d’un an pour organiser ses fonctionnalités, et on a identifié des domaines où il était possible d'optimiser les processus afin d'obtenir les mêmes résultats en minimisant les efforts. Nous avons ainsi optimisé la mini-carte et l'affichage tête haute pour diviser par 10 leur temps d'affichage.
D'autre part, nous sommes en train de mettre à jour notre middleware d'IU, ce qui permettra entre autres de diminuer le temps d'affichage de l'IU.
Nous découplons également la partie de l'IU qui traite les données et le film à l'écran, et restitue le film en trois sections distinctes, chacune d'entre elles pouvant être exécutée dans un fil d'exécution différent. Ce processus nous permet également d'exécuter chaque élément à un taux différent, et donc de ne pas avoir à actualiser toutes les images.
Occlusion/Visibilité
PlanetSide 2 dispose d'un monde immense : 64 km² comprenant plus de 100 000 objets et des milliers de joueurs par continent ! Chaque combinaison de meshes (les polygones qui composent un objet) et de texture (ce qu'on peint sur un mesh) doit être décrite en détail à votre carte graphique pour être ensuite rendue à l'écran. Bref, comment générer des centaines de milliers d'éléments par image ? En ne le faisant PAS ! Facile, hein ? Au lieu de cela, on commence par scinder le continent de multiples manières et on utilise un code de dingue représentant des années de travail pour déterminer ce que vous pouvez voir parmi tout ça. C'est ce qu'on appelle la visibilité. On veut également éviter de générer ce qui est caché derrière quelque chose d'autre, que ça soit un élément «dynamique » (quelque chose qui change, comme une personne ou une balle), ou un élément «statique » (quelque chose qui ne change pas, comme un bâtiment ou l'opinion d'Higby). C'est ce qu'on appelle l'occlusion.
On utilise alors un code source baptisé Umbra, créé par une société tierce, afin de traiter la majeure partie de notre visibilité/occlusion. Dans le cadre de notre OMFG, nous mettons à jour Umbra à la dernière version disponible, ce qui nécessite également de réadapter la manière dont fonctionne notre système de visibilité, changeant différents facteurs de notre client de base et des outils. Cela devrait réduire considérablement le temps rendu de la visibilité à chaque image, ce qui veut dire que plus la scène est complexe (une base avec des milliers d'objets, par exemple), plus les bénéfices seront visibles. Nous déplaçons également la visibilité dans un autre fil d'exécution, pour que les joueurs disposant d'un processeur multi-coeur (la plupart d'entre vous) en profitent d'autant plus, et les utilisateurs d'AMD verront des améliorations notables grâce à la parallélisation des opérations de visibilité.
Rendu multi-thread
De nombreux éléments de PlanetSide 2 sont déjà dans des fils d'exécution (ou threads) différents, mais chacun d'entre eux doit fonctionner parallèlement au fil principal et au logiciel de modélisation. On prend donc la partie du logiciel de modélisation qui parle à DirectX, et on la place dans son propre fil d'exécution, exactement comme avec le logiciel de modélisation de l'IU. Cela allégera la charge de travail du fil principal à chaque image, augmentant encore davantage les FPS des joueurs ayant des processeurs quadri-coeurs ou supérieurs.
Plus d'instruments de mesure
Nous développons de nouveaux instruments de mesure qui nous permettront de voir ce qui se passe au cours des grandes batailles, afin de mieux concentrer nos prochaines modifications.
Je suis également impatient de voir nos efforts visant à créer un niveau de référence se concrétiser. C’est un système à l'ancienne, genre «vous parcourez une scène, on calcule vos FPS ». SOE croit plus que quiconque en l'autonomisation de ses utilisateurs, et ceci en est la preuve parfaite. Vous allez pouvoir calculer vos FPS dans un environnement statique, de telle sorte qu'à chaque nouveau patch vous puissiez comparer vos performances à l'aide d'un simple bouton. Vous parcourez une scène pendant que nous prenons toutes sortes de mesures sur vos taux de remplissage, le temps d'actualisation des objets, les délais de l'IU, et des centaines d'autres éléments... Et au final, vous obtenez un résultat que vous pouvez analyser. De notre côté, nous le recevons également en plus de votre configuration matérielle. C'est vraiment ÉNORME de pouvoir avoir une scène statique personnalisée pour identifier les problèmes de performance. Dites adieu aux sempiternels «J'ai eu X FPS dans un bar d'Indar mardi alors qu'il pleuvait ». À présent, vous pourrez dire «La semaine dernière, j'ai eu un score de 8 300, mais cette semaine, j'ai eu plus de 9 000 !!! »
CONCLUSION
Nous allons continuer de vous présenter ce que nous faisons, et pourquoi nous le faisons. Ces optimisations sont bénéfiques pour TOUS les joueurs, et pas seulement ceux utilisant de vieilles bécanes. Elles amélioreront considérablement les performances du jeu, vous assurant des parties toujours plus fluides et toujours plus agréables.Vous êtes les acteurs de ce changement. Si vous avez des questions, n'hésitez pas !
Ryan Elam - Directeur technique de PS2
Vidéo de PlanetSide 2
Informations complémentaires
Titre : PlanetSide 2
Editeur : Deep Silver
Studio : ProSiebenSat.1 Games
Plateformes : PC online
Date de sortie : à définir