La DOTS booste les jeux mobiles et le développement

Comment la nouvelle pile technologique orientée vers les données (DOTS) fournit des avantages conséquents à Tic Toc Games.

Tic Toc : une étude de cas Unity

Comment accélérer le développement et améliorer l'expérience utilisateur tout en ajoutant un nombre sans précédent de composants aux graphismes ? Tic Toc Games a tiré parti de la pile technologique orientée vers les données (DOTS) de Unity, notamment le système de composants d'entité (ECS), le système de tâches C# et le compilateur Burst, pour fournir des performances de 60 IPS sur les mobiles, sans vider la batterie ou provoquer de surchauffe.

Le projet

Appliquer une approche de conception orientée vers les données

L'objectif

Améliorer les performances multithread et réduire les besoins en énergie de l'appareil

Plateformes

iOS, Android, Xbox One, PS4, Steam, Nintendo Wii U eShop

Membres de l'équipe

~40, dont 5 développeurs qui utilisent Unity

Lieu

Burbank, Californie

Tic Toc Games est un studio de développement qui emploie des artistes, concepteurs, programmeurs et directeurs de la production expérimentés, qui ont tous travaillé sur des produits interactifs primés. Leur but : que les joueurs aiment leurs jeux, qu'ils y pensent quand ils n'y jouent pas, partagent leur enthousiasme avec leurs amis et reviennent jouer, encore et encore. L'équipe utilise Unity depuis qu'elle a commencé à créer des jeux, en 2011.

Comme tout studio, Tic Toc cherche constamment à obtenir un code plus performant, tout en accélérant la conception. Comme le dit plus élégamment Garth Smith, le programmeur en chef de l'entreprise, « Nous devons faire de meilleurs jeux plus rapidement. » Adepte de longue date de Unity, il apprécie particulièrement les principales nouvelles fonctionnalités des versions 2018 pour leur puissance.

Avec plusieurs jeux de réflexion majeurs prévus pour 2019, comme Match 3 ou Collapse, Garth Smith a demandé à son équipe d'exploiter les possibilités offertes par l'ECS. « La façon de coder est vraiment différente de ce à quoi on est habitués. La programmation orientée vers les données n'est pas vraiment enseignée dans les écoles, alors c'est un véritable changement de paradigme. Même pour nous, c'était un peu intimidant de nous lancer dans quelque chose de nouveau. » Pourtant, ce que l'ECS leur a permis d'accomplir les a convertis.

Les résultats :

  • 60 IPS sur les appareils mobiles sans surchauffe des processeurs
  • Des flux de tests plus efficaces
  • Moins d'itérations et de pannes/erreurs à résoudre
  • Une durée de vie de la batterie plus longue
Tic Toc tire parti de la DOTS

Pour obtenir d'importants gains de performances et de productivité, Tic Toc a utilisé les principaux composants de la pile technologique orientée vers les données (DOTS) de Unity, comme le système de composants d'entité (ECS), le système de tâches C# et le compilateur Burst.

Adieu les objets ; l'ECS met les données au cœur de la conception

L'ECS remplace la programmation orientée objets par une approche orientée vers les données, bien plus adaptée à de nombreux éléments des applications ludiques. Elle découple les données et leur traitement, évitant ainsi la dispersion d'énormes quantités de données, et ouvre la voie à un véritable multithreading, car les événements n'ont plus à être traités de façon séquentielle.

Prenons par exemple deux entités, disons une balle et un joueur, chacune possédant des références à différents attributs (position, apparition, points de vie, etc.). Les entités et leurs attributs sont de pures données, sans fonctionnalités liées. L'ECS applique une fonction à une entité, comme un système de déplacement à la balle, ou un système d'apparition au joueur. Cette séparation des données et de leur fonction permet à Unity de créer des tâches qui peuvent être traitées en parallèle sur plusieurs cœurs. Selon Mike Geig, responsable mondial du marketing contenu chez Unity, « Une fois qu'on a compris le système, c'est plutôt simple. »

Utiliser l'ECS présente des avantages conséquents. La façon dont les données sont organisées permet à elle seule d'écrire plus facilement du code optimisé, d'où le slogan « Des performances incroyables par défaut ». Garth Smith ajoute : « Certaines des possibilités apportées par l'ECS nous ont montré comment concevoir de meilleurs algorithmes. » De plus, le code de l'ECS est hautement réutilisable, les archétypes (entités uniques) sont solidement stockés dans la mémoire et, surtout, l'ECS peut tirer parti du nombre toujours croissant de cœurs des processeurs. De nos jours, les plus communs ont entre 4 et 6 cœurs physiques et 8 à 12 cœurs logiques, alors que les plus performants en ont respectivement 16 et 32. La plupart restent inutilisés, mais la DOTS tire profit de chacun.

Regarder la présentation en cinq parties du système de composants d'entité (ECS) et du système de tâches C# de Mike Geig.

S'associer au système de tâches C#

Combiner le code ECS orienté vers les données de l'équipe avec le système de tâches C# de Unity a permis à Tic Toc Games de mettre toujours davantage à profit le traitement et le multithreading multicœurs. Écrire du code thread-safe est difficile, car les situations de concurrence (des threads qui tournent dans un ordre inattendu et entraînent des résultats imprévus) ajoutent leur lot de contraintes, et que le changement de contexte est inefficace.

Mais le système de tâches parvient à gérer tous ces éléments, ce qui permet aux développeurs de Tic Toc de se concentrer sur le code spécifique au jeu. Selon le programmeur en chef, « Chaque tâche nous permet de faire tourner nos systèmes sur de multiples threads et d'utiliser plusieurs cœurs d'un processeur, ce qui nous était jusqu'alors compliqué. L'ECS et le système de tâches nous donnent la capacité d'utiliser presque 100 % des cœurs, ce qui exacerbe notre efficacité. »

Le compilateur Burst s'adresse directement aux appareils

Le nouveau compilateur Burst est une technologie de 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. Dans le cas du studio Tic Toc, cela signifiait que Garth Smith et son équipe n'avaient pas besoin de perdre du temps à réapprendre et resservir du code complexe bas de gamme pour résoudre les problèmes de performances.

« Avec le compilateur Burst, on a pu faire des hypothèses sur ce qu'on faisait avec l'ECS, ce qui a vraiment accéléré le travail. Nous avons découvert que certaines boucles seraient multipliées par 30 environ, notamment lorsqu'elles se produisent de nombreuses fois dans un frame », explique Garth Smith.

L'équipe a constaté que, lorsque de vastes systèmes interagissent, le compilateur Burst supprime un grand nombre de problèmes d'intégration qu'il faudrait d'ordinaire résoudre pendant la phase d'assurance qualité. « Avec le compilateur Burst, on bénéficie des avantages d'un code écrit à la main sur de nombreuses plateformes, sans avoir à fournir tout le travail nécessaire habituellement », confie-t-il.

Conseils aux autres studios pour utiliser la DOTS

Au début, la transition de Tic Toc vers une approche orientée vers les données était hésitante, mais l'équipe la voyait comme un défi amusant à relever. « Une fois que j'avais attrapé le coup avec l'ECS, tout s'est très bien passé. Je crois que tous les membres du studio en ont maintenant une bonne compréhension. Nous aimons ce système et nous l'utiliserons probablement pour tous nos futurs jeux », raconte Garth Smith.

Il a quelques précieux conseils pour les autres développeurs : « Inutile de passer d'un coup à l'ECS. Le changement doit être progressif. Même en ne faisant que de petites opérations, vous bénéficierez d'un gain de performances impressionnant, notamment grâce à la réutilisabilité du code. »

De même, le programmeur recommande de commencer par un prototype avant de passer complètement en production. « Essayez de créer quelque chose de simple, comme dans un game jam, par exemple un jeu de Tetris ou de morpion, peu importe. Ce qui compte, c'est de finaliser un jeu dans l'ECS avant que toute l'équipe passe en phase de production pour l'art et tout le reste. Vous en apprendrez beaucoup rien qu'en réalisant votre premier test. »

Enfin, notre interlocuteur se montre très enthousiaste. « Les joueurs vont vraiment remarquer la différence de sensations et de performances ; nos nouveaux jeux tournent à quasiment 60 IPS, quoi qu'il se passe à l'écran. Je sais qu'ils aimeront forcément les améliorations apportées au gameplay et à la réactivité. »

« Avec le système de composants d'entité de Unity, non seulement on obtient des performances époustouflantes, mais on profite aussi de fantastiques avantages en matière de réutilisabilité du code et de préservation de la batterie des appareils mobiles. »

Garth Smith, Lead Programmer, Tic Toc Games

Les avantages de l'ECS pour le développement de jeux mobiles

Découvrez en quoi l'ECS permet de développer des jeux mobiles avec moins d'erreurs, plus rapidement et en préservant la batterie

Listen to DOTS early-adopter Garth Smith share his experience with Unity’s new data-oriented approach.

Comment Tic Toc Games utilise l'ECS dans ses jeux de réflexion pour mobile

À Unite Los Angeles, Tic Toc a organisé une session intitulée « Nous aimons les performances ». Lors de cette présentation, Garth Smith explique comment l'ECS de Unity a aidé son studio à accélérer les itérations et leur expérience globale.

Des performances incroyables par défaut

Tirez pleinement profit des processeurs multicœurs avec notre nouveau système multithread à hautes performances.

We use cookies to ensure that we give you the best experience on our website. Click here for more information.