DOTS fait tourner la futuriste Megacity sur mobile

Une étude de cas de développeur : Comment Nordeus a adopté DOTS pour changer de façon significative leur code, et créer la version mobile de Megacity

Qu'est-ce qui inspire les démos impressionnantes comme Megacity présentées lors des évènements de la communauté Unity ? C'est juste pour en mettre plein les yeux, ou y a-t-il des avantages réels pour les développeurs Unity ? Le studio Nordeus, basé à Belgrade, a été invité à de nombreuses reprises aux conférences développeurs Unity, pour présenter leur travail tiré de leurs jeux à succès. mais leur clips à la pointe de la technologie ne sont pas là pour les faire mousser. le but est de démontrer les nouvelles capacités d'Unity et l'impact qu'elles auront à la fois sur votre créativité et sur votre programmation.

Le projet

Démontrer régulièrement les dernières évolutions de notre initiative "performances par défaut" / DOTS

L'objectif

améliorer les performances du code multithreadé pour tous les développeurs Unity

Plateformes

Android, iOS, PC

Membres de l'équipe

3 pour Megacity, 20 pour Battle Demo

Lieu

Belgrade, Serbie

Les processeurs ayant tendance à avoir de plus en plus de cœurs, le multithread haute performance est une caractéristique essentielle de tout moteur de calcul moderne. La solution de Unity pour les cœur et threads multiples est la pile technologique orientée données, ou DOTS (pour Data-Oriented Technology Stack), un terme qui recouvre le Système de composants d'entité (ECS), le Système de tâches en C#, et le Compilateur Burst.

Impressionnant systématiquement le public Unity de Los Angeles à Berlin, Nordeus apporté la preuve des avantages de ces fonctionnalités, ainsi que d'autres comme le pipeline de rendu programmable léger (LWRP) et les préfabriqués imbriqués.

Résultats :

  • un code multithreadé efficace et facile à écrire
  • Un rendu optimisé pour les plateformes moins puissantes, comme les mobiles
  • Un processus de QA plus rapide, avec nettement moins de bugs d'intégration
Relier les DOTS lors d'un hackathon

Une équipe internationale et extrêmement créative

Nordeus, fondée en 2010 par les anciens ingénieurs de Microsoft Branko Milutinovic, Milan Jovovic, et Ivan Stojisavljevic, a tout d'abord publié Top Eleven – Be a Soccer Manager ("Football" en dehors des États-Unis), un jeu freemium de gestion d'équipe. Celui-ci connut un succès retentissant sur Facebook, devenant profitable en trois semaines, et fut ensuite porté sur Android et iOS en 2011. Depuis, la société a publié Golden Boot sur iOS et Android, a Heroic: Magic Duel en prélancement, et de nombreux autres jeux encore au stade du développement.

Nordeus a attiré des employés talentueux issus de 22 pays différents dans son siège de Belgrade, une ville extrêmement riche en culture et en histoire. L'entreprise est régulièrement classée parmi les meilleurs employeurs en Europe, et est connue pour ses généreuses contributions auprès d'un certain nombre d'organismes philanthropiques.

Deux de leurs meilleurs ingénieurs sont des locaux : Jozef Oros et Srdja Stetic-Kozic, qui travaillent au sein de l'équipe technique centrale de Nordeus, avec huit autres personnes. Ils sont chargés de développer les outils et les techniques utilisés dans tous les jeux de Nordeus, et comme nous l'a fait remarquer Srdja, "Tous nos jeux sont créés dans Unity."

Relier les DOTS lors d'un hackathon

"Dès que nous avons entendu parler de DOTS, nous avons contacté Unity pour l'essayer et voir si nous pouvions collaborer," nous a dit Jozef. "Nous cherchons toujours à donner à nos joueurs la meilleure expérience utilisateur possible, et la fluidité du gameplay en fait partie. Naturellement, nous sommes particulièrement intéressés par tout ce qui peut permettre à nos jeux de tourner plus rapidement."

La collaboration a commencé par une réunion à Belgrade entre les directeurs techniques de Nordeus et Unity. Nordeus appréciait d'avoir de l'aide pour se familiariser avec les nouvelles technologies et Unity voulait une application dans le monde réel qui pousserait DOTS dans ses retranchements. Srdja a ajouté, "Nous voulions également créer quelque chose de cool et d'épique qui pourrait être présenté par Joachim Ante (co-fondateur de Unity). Donc pour Unite Austin (2017), nous nous sommes dit "et si on prenait une bataille dans Heroic: Magic Duel, qu'on l'étendait à 100 000 unités, et qu'on les faisait toutes exploser !" C'était super excitant pour nous."

Jozef et Srdja étaient les premiers utilisateurs de DOTS chez Nordeus. Ils estiment qu'ils ont passé 90 % de leur temps à créer des systèmes de jeu, en particulier pour le rendu, le mouvement des unités et la logique. Jozef nous a indiqué que "le système DOTS de Unity nous permet de créer des sorts super cool qui explosent à grande échelle, des effets dont nous savions qu'ils en mettraient plein la vue aux spectateurs."

L'équipe a terminé la Démo de bataille de Nordeus pour Unite Austin en deux mois, dont les quatre premières semaines ont été consacrées à la programmation et au prototypage. Ils ont passé une de ces semaines à Copenhague avec une équipe de Unity, travaillant dans une seule pièce comme lors d'un hackathon. "Travailler avec Joe et son équipe fut une expérience formidable. Nous avons appris, à la source, énormément de choses sur l'ECS, le système de tâches en C#, le compilateur Burst, et la programmation orientée donnée en général," a-t-il ajouté.

Dire au revoir à la programmation orientée objet

Passer à la programmation orientée données est un changement important et peut être intimidant à première vue. Cependant, d'après Srdja, "DOTS est en réalité une façon différente de penser, mais au bout d'une semaine ou deux le déclic s'est fait et notre code s'est nettement amélioré. Et lorsqu'il a fallu intégrer du code plus ancien, ECS nous a permis de le faire assez facilement."

Le système de tâches en C# fait partie intégrante de DOTS. Celui-ci permet d'écrire du code compatible avec les systèmes multi threads, gère les conditions de concurrence (threads tournant dans un ordre inattendu, entraînant des résultats inattendus), et optimise les changements de contexte pour tirer presque 100 % de performances des multiples cœurs. Le compilateur Burst est un compilateur en LLVM mathématique, qui part des tâches C# pour produire du code machine hautement optimisé pour les capacités de la plateforme cible.

Selon Joachim Ante, "notre compilateur Burst a une profonde compréhension des maths et de la géométrie et peut opérer des optimisations mathématiques dont les autres compilateurs ne sont simplement pas capables. Il vectorise automatiquement le code en C# et génère ces instructions vectorisées pour une plateforme-cible donnée. Le code peut par conséquent tourner beaucoup, beaucoup plus vite." Le compilateur Burst élimine également une quantité significative de bugs d'intégration qui devraient normalement être trouvés à l'étape de la QA.

Gagner la bataille pour Megacity

La démo de bataille présentée à Unite Austin utilisait des éléments de Heroic: Magic Duel. L'équipe de Nordeus a appliqué son expertise du système DOTS principalement sur les éléments dynamiques du jeu, avec d'énormes quantités d'unités animées sur un terrain à la surface limitée.

Cela a ouvert la voie à son nouveau défi, étant donné que Nordeus s'est lancée dans Megacity, qui est un gigantesque monde ouvert avec 4,5 millions d'objets qui doivent être rendus, déterminés et chargés, 5000 voitures volantes et 100 000 sources audio devant être jouées simultanément. Et tout cela doit fonctionner aussi bien sur mobile que sur PC. Jozef nous a dit que "Pour Megacity, nous avons utilisé le système DOTS de Unity pour tout, des nouvelles techniques de rendu et d'animation aux nouveaux systèmes d'interface, en passant par l'audio. Nous pouvons utiliser cela aussi bien dans nos jeux existants que dans nos jeux en développement."

Le LWRP permet de mettre une métropole sur mobile

La keynote de Joachim Ante lors de Unite LA 2018, a inclus une présentation live extrêmement complexe de Megacity. La démo contient 4,5 millions de moteurs de rendu de maillage, 5 000 véhicules dynamiques et 200 000 objets de construction uniques. Les véhicules volent sur des voies de circulation en spline, n'entrent jamais en collision, et il y a 100 000 sources de son uniques, dont des panneaux au néon, des climatisations, et des voitures qui produisent des sons uniques pour créer un paysage sonore riche et réaliste. Et tout ça fonctionne sans accroc sur smartphone.

"Pour la démo de Megacity, nous voulions montrer nos graphismes complexes sur une version mobile avec un taux de rafraichissement très élevé. Nous avons utilisé le LWRP plus quelques shaders personnalisés pour que celui-ci ressemble le plus possible à la version PC" nous a dit Jozef. Srdja a ajouté : "Quand on travaille sur un jeu qui doit repousser les limites des PC et qu'on décide de le porter ensuite sur mobile, on doit généralement en retravailler de larges sections, en raison des limitations de performances des plateformes mobiles. Ça n'a pas été le cas avec Megacity. La DOTS nous a permis d'utiliser le même code utilisé pour la logique de gameplay et le rendu sur PC en l'adaptant simplement à l'échelle des mobiles."

Le pipeline de rendu programmable léger optimise les performances en temps réel sur les appareils mobiles en faisant un compromis sur l'éclairage et le shading. Il effectue un rendu avant avec une détermination des ombres et de l'éclairage par objet (avec tous les éclairages shadés) en un seul passage, ce qui minimise les requêtes.

Prefabs imbriqués et plongée dans DOTS

"La démo Megacity a également été notre premier contact avec le nouveau système de prefab imbriqués de Unity, et nos artistes ont vraiment adoré," d'après Jozef. Par exemple, avec les prefab imbriqués, vous pouvez désormais intégrer plusieurs petites pièces dans un grand bâtiment prefab, chacune composée de différents meubles prefab, etc. Les développeurs peuvent diviser les prefabs en de multiples entités pour plus d'efficacité, réutiliser le contenu quelle que soit sa taille, et travailler simultanément sur différentes parties du contenu.

La feuille de route produit de Nordeus est ambitieuse, et s'engage à 100 % avec Unity et l'approche DOTS en ce qui concerne le code. Comme l'a dit Srdja, "si vous songez à adopter Unity DOTS, foncez. Et n'ayez pas peur de désapprendre une grande partie de ce que vous avez appris sur la programmation orientée objet !"

DOTS est en réalité une façon différente de penser, mais au bout d'une semaine ou deux le déclic s'est fait et notre code s'est nettement amélioré. Et lorsqu'il a fallu intégrer du code plus ancien, ECS nous a permis de le faire assez facilement."

Srdja Stetic-Kozic, Senior Software Engineer

"Dès que nous avons entendu parler de DOTS, nous avons contacté Unity pour l'essayer et voir si nous pouvions collaborer. Nous cherchons toujours à donner à nos joueurs la meilleure expérience utilisateur possible, et la fluidité du gameplay en fait partie. Naturellement, nous sommes particulièrement intéressés par tout ce qui peut permettre à nos jeux de tourner plus rapidement."

Jozef Oros, Software Engineer

We use cookies to ensure that we give you the best experience on our website. Visit our cookie policy page for more information.

Compris