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

How do you speed up development and improve the user experience while adding unprecedented numbers of components to game graphics? Tic Toc Games leveraged Unity’s high-performance Data-Oriented Technology Stack (DOTS) – which includes the Entity Component System (ECS), the C# Job System, and the Burst Compiler – to enable 60 frames per second (fps) performance on mobile devices without draining batteries or overheating phones.

  • 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

ECS replaces object-oriented coding with a data-oriented approach much more appropriate for many parts of gaming applications. It decouples data from processing, eliminating an enormous amount of data scattering and enables true multithreading as events no longer have to be processed sequentially.

For example, two entities might be a bullet and a player, each with references to different attributes like position, spawning, and health data. The entities and the attributes are pure data with no attached functionality. The system applies a function to an entity, such as a motion system to a bullet or a spawning system to a player. This separation of data and function lets Unity create jobs that can be processed in parallel on multiple cores. According to Mike Geig, Unity’s Global Head of Evangelism Content, “Once it clicks, it’s pretty easy to wrap your head around it.”

The benefits of using ECS are significant. Simply because of the way data is organized, it’s easier to write optimized code – thus the tagline, “Performance by default.” Smith added, “Some of the doors that ECS opened showed us how to make better algorithms.” In addition, ECS code is highly reusable, archetypes (unique entities) are tightly packed in memory, and perhaps most importantly, ECS can take advantage of increasing numbers of CPU cores. Today, mainstream CPUs have up to 4-6 physical and 8-12 logical cores, while “enthusiast” CPUs have up to 16 physical and 32 logical cores. Most go unused, but DOTS takes full advantage of them all.

Watch Mike Geig’s 5-part Intro to the Entity Component System (ECS) and C# Job System.

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é. »

Garth Smith, Lead Programmer, Tic Toc Games

« 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

The benefits of ECS for mobile game development

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.

Ce site utilise des cookies dans le but de vous offrir la meilleure expérience possible. Consultez notre politique de cookies pour en savoir plus.

Compris