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

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

Tico Toc: um estudo de caso de desenvolvimento Unity

Como você acelera o desenvolvimento e melhora a experiência do usuário ao adicionar números inéditos de componentes aos gráficos do jogo? A Tic Toc Games se aproveitou das capacidades do Data-Oriented Technology Stack (DOTS) do Unity, que inclui o Sistema de Entidade de Componentes (ECS), o sistema de trabalho C# e o Compilador Burst, para conseguir 60 fps de desempenho em dispositivos móveis sem esgotar a bateria nem superaquecer o telefone.

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 substitui a programação orientada a objeto pela abordagem orientada a dados, muito mais apropriada para muitas partes de aplicações em jogos. Ele dissocia os dados do processamento, eliminando uma enorme quantidade de dados dispersos e permitindo multithreading real, já que eventos não precisam mais ser processados sequencialmente.

Por exemplo: duas entidades podem ser uma bala e um jogador, cada uma com referências a diferentes atributos como posição, ponto de surgimento e informação sobre vida. As entidades e os atributos são informações puras, sem funcionalidades associadas. O Sistema aplica uma função a uma entidade, como o sistema de movimento a uma bala ou o sistema de surgimento ao jogador. Esta separação entre informação e função permite que Unity crie trabalhos que podem ser processados em paralelo em múltiplos núcleos. De acordo com Mike Geig, chefe global do conteúdo de evangelização do Unity, "quando tudo se encaixa, fica bem fácil de entender o conceito todo."

Os benefícios de usar ECS são significativos. Simplesmente devido à forma que as informações são organizadas, é mais fácil programar um código otimizado, por isso o slogan “desempenho por padrão”. Smith ainda diz: “algumas das portas que o ECS abriu mostraram como fazer algoritmos melhores”. Além disso, o código do ECS é altamente reutilizável, arquétipos (entidades únicas) são embalados de forma compacta na memória e, talvez o mais importante, o ECS pode tirar vantagem da quantidade crescente de núcleos de CPU. Atualmente, as CPUs comuns têm de 4 a 6 núcleos físicos e de 8 a 12 núcleos lógicos, enquanto CPUs de “entusiastas” têm até 16 núcleos físicos e 32 núcleos lógicos. A maioria nunca é utilizada, mas DOTS tira proveito total de todos eles.

Assista à Introdução ao Sistema de Entidade de Componentes (ECS) e Sistema de Trabalho C# de Mike Geig em 5 partes.

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!”

“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

Os benefícios do ECS para o desenvolvimento de jogos para dispositivos móveis

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.

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