DOTS executa o jogo futurístico, Megacity, no celular

Nordeus – Um estudo de caso do desenvolvedor Unity

What inspires wow-factor demos like Megacity at Unity community events? Are they just eye-candy or are there real benefits for Unity developers? Belgrade-based Nordeus has been a featured studio at many Unite developer conferences, demoing work drawn from their hit games. But their cutting-edge clips aren’t about showing off – they’re about demonstrating new Unity capabilities that will dramatically change what you can achieve both creatively and programmatically.

O projeto

Demonstrar frequentemente a evolução mais recente de nossa iniciativa de “Desempenho por padrão” / DOTS

O objetivo

Melhorar o desempenho de código multithread para todos os desenvolvedores Unity

Plataformas

Android, iOS, PC

Membros da equipe

3 para Megacity, 20 para Battle Demo

Lugar

Belgrado, Sérvia

Codificação DOTS orientada a dados coloca o Megacity em dispositivos móveis rapidamente

Com a tendência do uso de CPUs com cada vez mais núcleos, multithreading de alto desempenho é uma funcionalidade essencial de qualquer engine de computação moderna. A solução Unity para múltiplos núcleos e threads é o Data-Oriented Technology Stack (DOTS), um termo que engloba o Sistema de Entidade de Componentes (ECS), o sistema de trabalhoC# e o compilador Burst.

Maravilhando constantemente o público das apresentações Unite, de Los Angeles a Berlin, a Nordeus tem demonstrado os benefícios destas e de outras funcionalidades Unity, tais como o Pipeline de Renderização Lightweight (LWRP) e Prefabs aninhados.

Os resultados:

  • Código multithread eficaz e fácil de escrever
  • Renderização otimizada para plataformas de baixo desempenho, como as móveis
  • Rápido controle de qualidade com muito menos bugs de integração
Conectando DOTS em um hackathon

Uma equipe internacional e altamente criativa

Founded in 2010 by ex-Microsoft engineers Branko Milutinovic, Milan Jovovic, and Ivan Stojisavljevic, Nordeus first published Top Eleven – Be a Soccer Manager (“Football” outside the US), a freemium team-management game. It was enormously successful on Facebook, becoming profitable in three weeks, and was ported to Android and iOS in 2011. Since then, the company has published Golden Boot on iOS and Android, has Heroic: Magic Duel in soft launch, and numerous other games in development stages.

Nordeus has drawn talent from 22 countries to its headquarters in Belgrade, a locale extraordinarily rich in culture and history. They’re routinely cited as a top workplace in Europe and are known as generous contributors to a number of philanthropic organizations.

Two of their top software engineers are Belgrade locals: Jozef Oros and Srdja Stetic-Kozic, who work in the Nordeus Central Tech team with eight others. They are responsible for fostering the tools and techniques used in all Nordeus games, and as Srdja notes, “All of our games are made in Unity.”

Conectando DOTS em um hackathon

“Assim que ficamos sabendo do DOTS, entramos em contato com Unity para testá-lo e ver se formávamos uma parceria.” disse Jozef. “Sempre queremos dar aos nossos jogadores a melhor experiência do usuário possível, e uma jogabilidade descomplicada faz parte desta experiência. É claro que estamos particularmente interessados em qualquer coisa que possa ajudar nossos jogos a rodar mais rápido.”

A colaboração começou com uma reunião em Belgrado entre o Unity e os CTOs da Nordeus. A Nordeus recebeu ajuda para se familiarizar com as novas tecnologias e o Unity queria uma aplicação real que pudesse testar os limites do DOTS. Srdja complementa, “também queríamos fazer algo legal e épico para ser apresentado pelo Joachim Ante (um cofundador do Unity). Então, para a Unite Austin (2017), pensamos: "Vamos pegar uma batalha de Heroic: Magic Duel, aumentá-la para 100 mil unidades e então explodir tudo!" Foi uma experiência incrível para todos nós.”

Jozef e Srdja foram os primeiros usuários de DOTS na Nordeus. Eles estimam que gastaram 90% de seu tempo escrevendo sistemas de jogos, principalmente em renderização, omovimento de unidades e lógica. Jozef disse, “com o DOTS de Unity conseguimos fazer efeitos muito legais com explosões grandiosas, e sabíamos que isso faria nosso público enlouquecer.”

A equipe terminou a Nordeus Battle Demo para a Unite Austin em dois meses, sendo que as primeiras quatro semanas foram dedicadas à programação e prototipagem. Eles passaram uma dessas semanas em Copenhagen com uma equipe Unity, trabalhando em conjunto como se fosse um hackathon em uma sala só. “Trabalhar com Joe e sua equipe foi uma experiência incrível. Aprendemos, direto da fonte, uma quantia imensa de informações sobre ECS, o sistema de trabalho em C#, o compilador Burst e programação orientada a dados em geral.” Jozef complementa.

Dizendo adeus à programação orientada a objetos

Mudar para uma programação orientada a dados é algo muito significativo e chega a ser intimidador em um primeiro momento. Entretanto, de acordo com Srdja, “DOTS realmente exige uma maneira diferente de pensar, mas depois de uma semana ou duas, finalmente entendemos tudo e conseguimos escrever um código muito melhor. E quando temos que integrar códigos antigos, ECS nos ajuda a fazer isso facilmente.”

Uma parte integral do DOTS é o sistema de trabalho em C#, que escreve códigos seguros para threads, gerencia condições de execução (threads executando em ordens inesperadas, causando resultados inesperados) e otimiza alterações de contexto com um ganho de quase 100% do uso de núcleos múltiplos. Outro componente é o 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.

De acordo com Joachim Ante, “nosso compilador Burst compreende a matemática e geometria a fundo e pode realizar otimizações matemáticas que outros compiladores simplesmente não conseguem. Ele vetoriza automaticamente códigos em C# e gera estas instruções vetorizadas para uma plataforma-alvo específica. Como resultado, o código pode ser executado com muito mais rapidez.” O compilador Burst elimina uma quantidade significativa de bugs de integração que, geralmente, são detectados pelo controle de qualidade.

Ganhando a batalha do Megacity

The Battle Demo shown at Unite Austin used components from Heroic: Magic Duel. The Nordeus team applied its DOTS expertise primarily on dynamic gameplay elements, with huge numbers of animated units on a limited-size terrain.

This paved the way for its next challenge, as Nordeus took on Megacity, which is a big, open world with 4.5 million objects that need to be rendered, culled, and loaded, 5,000 flying cars needing to be simulated, and 100,000 audio sources that had to be played simultaneously. And all of this needs to work on mobile as well as PC. Jozef said, “For Megacity, Unity’s DOTS was used for everything, like new rendering and animation techniques, UI systems, and even audio. We can use all of this in our existing games, as well as those in development.”

LWRP ajuda a colocar uma metrópole no celular

O discurso inaugural de Joachim Ante na Unite LA 2018 apresentou uma demo ao vivo, complexa e surpreendente de Megacity. A demo contém 4,5 milhões de malhas renderizadas, 5.000 veículos dinâmicos e 200.000 objetos de construção diferentes. Os veículos voam em pistas baseadas em splines sem nunca colidirem, e existem 100.000 fontes de áudio únicas, incluindo placas de neon, ventiladores de ar acondicionado e carros que produzem sons únicos para criar um entorno sonoro realista e detalhado. E tudo isso funciona perfeitamente nos smartphones.

“Para a demo de Megacity, queríamos mostrar nossos gráficos complexos em uma versão móvel com uma taxa de quadros muito rápida. Usamos o LWRP com alguns ajustes personalizados de shaders para fazer com que se assemelhasse o máximo possível à versão para PCs.” disse Jozef. Srdja completou, “quando se trabalha em um jogo que supostamente vai ultrapassar os limites dos PCs e se decide fazer posteriormente uma versão móvel, geralmente é necessário refazer grandes partes do jogo devido às limitações de desempenho das plataformas móveis.”

O Pipeline de Renderização Lightweight do Unity otimiza em tempo real o desempenho em dispositivos móveis ao equilibrar iluminação com sombreamento. Realiza uma renderização forward de passagem única com uma luz de sombra em tempo real e light culling por objeto (com todas as luzes sombreadas) em uma única passagem, minimizando as draw calls.

Prefabs aninhados e imersão no DOTS

“A demo do Megacity também foi a primeira vez que entramos em contato com o novo sistema de Prefabs aninhados do Unity, e nossos artistas se encantaram com ele”, de acordo com Jozef. Por exemplo, com os Prefabs aninhados, um edifício grande pode ser composto por vários Prefabs de ambientes pequenos, os quais, por sua vez, podem ser constituídos por vários Prefabs de peças de mobiliário e assim por diante. Os desenvolvedores podem dividir Prefabs em várias entidades para uma melhor eficiência, reutilizar qualquer conteúdo, seja ele pequeno ou grande, e trabalhar em diferentes partes do conteúdo simultaneamente.

O roteiro de produtos da Nordeus é ambicioso, com um comprometimento de 100% com Unity e com a abordagem DOTS para escrever código. Como Srdja diz, “se você está pensando em adotar Unity DOTS, mergulhe nessa. E não tenha medo de desaprender muito do que sabe sobre programação orientada a objetos!”

Srdja Stetic-Kozic, Senior Software Engineer

“DOTS realmente exige uma maneira diferente de pensar, mas depois de uma semana ou duas, finalmente entendemos tudo e conseguimos escrever um código muito melhor. E quando temos que integrar códigos antigos, ECS nos ajuda a fazer isso facilmente.”

Srdja Stetic-Kozic, Senior Software Engineer
Jozef Oros, Software Engineer

“Assim que ficamos sabendo do DOTS, entramos em contato com Unity para testá-lo e ver se formávamos uma parceria. Queremos dar aos nossos jogadores a melhor experiência do usuário possível e uma jogabilidade descomplicada faz parte desta experiência. É claro que estamos particularmente interessados em qualquer coisa que ajude nossos jogos a rodar mais rápido.”

Jozef Oros, Software Engineer

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