DOTS acelera o desenvolvimento e os jogos para dispositivos móveis

Como o novo Data-Oriented Technology Stack resulta em enormes benefícios para a Tic Toc Games

Tico Toc: um estudo de caso de desenvolvimento 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.

  • O projeto

    Implemente uma abordagem de design de software orientada a dados  

  • O objetivo

    Melhore o desempenho multithread e reduza os requerimentos de energia do dispositivo

  • Plataformas

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

  • Membros da equipe

    Cerca de 40 com 5 desenvolvedores usando Unity

  • Lugar

    Burbank, CA

A Tic Toc Games é uma desenvolvedora completa com uma equipe experiente de artistas, designers, programadores e gerentes de produção, todos já premiados por seu trabalho em produtos interativos. Eles querem que os jogadores amem a experiência enquanto jogam, pensem sobre ela quando não estiverem jogando, compartilhem seu entusiasmo com os amigos e voltem a jogar de novo e de novo. Eles usam Unity desde que começaram a criar jogos, em 2011.

Como qualquer empresa de jogos, a Tic Toc está sempre procurando formas de aprimorar o desempenho dos seus códigos, bem como agilizar o seu design. Garth Smith, programador principal da Tic Toc, expressou isso de forma mais elegante: "Precisamos fazer jogos melhores, mais rápido". Ele é um usuário de longa data de Unity, e considera alguns dos principais recursos novos do Unity 2018.x incrivelmente poderosos.

Com vários jogos de quebra-cabeça de qualidade com lançamento para 2019, incluindo um Match 3 e um Collapse, Smith e sua equipe tiraram muita vantagem do ECS em especial. “Trabalhar com ECS é sem dúvida um jeito diferente do comum de escrever códigos”, observou Smith, “a programação orientada a dados não é algo que se ensine na faculdade, então é uma grande mudança de paradigma. Mesmo para nós, havia um pouco de medo de começar algo novo”. No entanto, ao final do processo eles se converteram ao ECS.

Os resultados:

  • 60 fps em dispositivos móveis sem superaquecimento de CPU
  • Fluxo de testes mais eficiente
  • Menos versões e menos problemas/correções de bugs
  • Vida mais longa da bateria
Tic Toc liga os pontos

Para poder obter ganhos expressivos de desempenho e produtividade, a Tic Toc implementou os componentes principais do Data-Oriented Technology Stack (DOTS) do Unity, que incluem o Sistema de Entidade de Componentes (ECS), o sistema de trabalho C# e o Compilador Burst.

ECS muda o foco de objetos para dados

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.

Unindo-se ao sistema de trabalho C#

Combinar o código ECS orientado a dados da equipe com o sistema de trabalho C# do Unity permite à Tic Toc alavancar o processamento de múltiplos núcleos e multithreading. Programar códigos seguros para threads é difícil, pois as condições de execução (threads executando em ordens inesperadas, causando resultados inesperados) gera restrições, e alterações de contexto constantes é ineficiente.

Porém, o sistema de trabalho gerencia tudo que foi dito acima, permitindo que os desenvolvedores da Tic Toc concentrem-se em códigos específicos para o jogo. Smith disse: “um trabalho permite executarmos nossos sistemas em múltiplos threads e usar diferentes núcleos da CPU, processos que considerávamos bem difíceis de fazer antes. O ECS e o sistema de trabalho permitem usarmos quase 100% dos outros núcleos, o que é incrivelmente eficiente”.

O Compilador Burst fala diretamente com o hardware

O novo Compilador Burst é uma tecnologia baseada em LLVM e sensível à matemática, capaz de processar trabalhos em C# e produzir um código de máquina altamente otimizado para as capacidades específicas da plataforma alvo. Para a Tic Toc, isso significa que Smith e sua equipe não precisaram perder tempo reaprendendo ou martelando código complexo de baixo nível para corrigir problemas de desempenho.

“Com o Compilador Burst, pudemos fazer suposições sobre o que estávamos fazendo com o ECS, e isso acelerou bastante as coisas. Descobrimos que alguns loops aumentariam cerca de 30x, especialmente se os loops ocorressem múltiplas vezes em um frame”, Smith disse.

A equipe descobriu que quando sistemas grandes interagem, o Compilador Burst elimina uma quantidade significativa de bugs de integração que, tipicamente, teriam que ser detectados pelo controle de qualidade. “Com o Compilador Burst, você ganha as vantagens de um código de montagem manual, para múltiplas plataformas, sem precisar fazer o trabalho pesado”, Smith disse.

Dica sobre DOTS para outros estúdios

A transição da Tic Toc para a abordagem orientada a dados foi hesitante no começo, mas tornou-se um desafio divertido. “Quando peguei o jeito do ECS, tudo começou a se encaixar de forma bem fácil. Acho que a essa altura, todo mundo do estúdio já entende e adora, e provavelmente vamos criar todos os nossos futuros jogos com ECS”, disse Smith.

Ele tem dicas boas para outros estúdios também. “Você não precisa entrar de cabeça no ECS. É possível adotá-lo gradualmente e, mesmo usando em pequenas coisas, você obtém um grande aumento de desempenho, especialmente com a reutilização do código”.

Além disso, Smith recomenda fazer um protótipo de projeto antes de seguir com a produção completa. “Experimente algo simples como uma game jam, Tetris, jogo da velha, não importa qual, mas termine um jogo no ECS antes de colocar uma equipe inteira na produção, com arte e tudo mais. Você vai aprender bastante coisa ao ter o primeiro contato com ele”.

Por fim, Smith está animado ao falar sobre o que os jogadores da Tic Toc podem esperar. “Eles vão mesmo perceber a sensação e o desempenho diferentes com nossos jogos novos rodando a quase 60 fps, independente do que acontece na tela. Eu sei que eles definitivamente vão apreciar a jogabilidade e responsividade melhoradas!”

Garth Smith, Lead Programmer, Tic Toc Games

“Com o Sistema de Entidade de Componentes do Unity, o desempenho é incrível, mas mesmo que essa não seja sua preocupação principal, ainda há benefícios significativos quando se trata de reutilização de código e preservação da bateria do dispositivo móvel.”

Garth Smith, Lead Programmer, Tic Toc Games

The benefits of ECS for mobile game development

Ouça por que ECS significa desenvolvimento mais rápido de jogos para dispositivos móveis, menos problemas, maior durabilidade da bateria e muito mais.

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

Como a Tic Toc usa ECS em jogos de quebra-cabeça móveis

Na Unite Los Angeles, a Tic Toc conduziu uma sessão chamada "Nós amamos desempenho". Durante o bate-papo, Garth Smith explicou como o ECS ajudou eles a acelerarem iterações, bem como a experiência geral de trabalhar com o Sistema de Entidade de Componentes do Unity. 

Desempenho por padrão

Tire total proveito de processadores de múltiplos núcleos com nosso sistema multithread de alto desempenho.

Usamos cookies para garantir a melhor experiência no nosso site. Visite nossa página da política de cookies para obter mais informações.

Eu entendi