GameDev

Aprendendo a programar jogos em Unity: aspectos que impactam o desempenho de jogos 3D

Vamos aprender sobre fatores que podem tornar mais lenta a execução de games com modelos e cenários tridimensionais.

Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity de hoje! Dando andamento aos tópicos de introdução ao desenvolvimento de jogos em 3D, vamos conhecer aspectos importantes que, se não observados, podem acarretar em problemas de performance e desempenho para títulos ambientados em cenários tridimensionais.


Caso esteja acessando pela primeira vez nossa série, sinta-se à vontade para juntar-se a nós e, assim, aprendermos juntos a criar games utilizando a ferramenta Unity. A partir do primeiro tópico, você terá acesso a conteúdos que abordam desde a instalação e configuração da ferramenta até o desenvolvimento de fato de um projeto.

De forma prática, iremos criar cenas, fases, posicionar elementos visuais e codificar os scripts controladores de regras e de comportamentos dos elementos. Dessa forma, aprenderemos mais sobre os processos e, logo, estaremos aptos a tirar do papel aquele jogo que sempre sonhamos em criar, da mesma forma que fizemos na prática ao desenvolvermos os games Forest Ping Pong e Motorista da Pesada.

No tópico anterior da série, aprendemos sobre as características dos diferentes estilos de câmera e de controle que podem ser adotados na criação de um jogo tridimensional. Venha conosco e vamos juntos nesta caminhada rumo a novos conhecimentos!

Muito conteúdo, pouca performance

Embora seja tentadora a ideia de se introduzir nos games uma quantidade grande de elementos que possibilite a imersão do gamer no universo de nossas aventuras, nem sempre as capacidades técnicas dos dispositivos em que os jogos serão executados permitem que possamos aliar esse desejo a uma boa performance, tanto em relação aos aspectos gráficos do game quanto pela fluidez da jogatina.

No passado, as limitações técnicas eram mais evidentes pelos mais diversos motivos. Se na quarta geração de consoles o baixo “poder de fogo” dos processadores de videogames como o Mega Drive e o Super Nintendo não permitiam reproduzir jogos tridimensionais (sem a ajuda de chips especiais inseridos dentro dos cartuchos), na geração seguinte já era possível curtir aventuras em ambientes tridimensionais, embora sob certas restrições.

O aspecto visual dos jogos da quinta geração de consoles, como os do PlayStation e os do Sega Saturn, apresentam características bem singulares, como o uso de modelos 3D “quadradões” e de texturas com serrilhado aparente.

Isso ocorria devido a alguns fatores técnicos dos consoles como, por exemplo, baixa capacidade de processamento e pouca memória RAM e de vídeo disponíveis. Por esses e outros motivos técnicos, a quantidade de conteúdo que poderia ser apresentada na tela ao mesmo tempo não poderia exceder certos limites.

Contagem de polígonos

Um exemplo de fácil compreensão sobre essas limitações envolve o primeiro PlayStation. Teoricamente, o console consegue renderizar até 360 mil polígonos por segundo com o uso de sombreamento simples (flat shading) e cores sólidas ou até 180 mil polígonos por segundo com o uso de texturas.
Para que um jogo rode a 30 quadros por segundo, por exemplo, ele deveria utilizar modelos tridimensionais que, somados, não ultrapassem 12 mil polígonos exibidos em tela ao mesmo tempo sem texturas ou 6 mil polígonos texturizados. Considerando que o videogame também é responsável por realizar os cálculos relativos ao movimento dos personagens, execução das regras do jogo, dentre outros, esses números certamente seriam bem menores. 

Em princípio, um número relativamente alto como 6 mil pode parecer o suficiente para atender ao que precisamos, certo? Agora observe a seguinte ilustração de um modelo 3D texturizado:

Esse modelo é composto por 5 mil polígonos (triângulos). Caso todos fossem renderizados na tela ao mesmo tempo, praticamente não sobraria mais capacidade de processamento de polígonos para compor o restante da cena de jogo.

Na prática, o resultado seria uma queda na taxa de quadros do jogo ou lentidão nas ações do game. Para evitar isso, os títulos da quinta geração tiveram de usar e abusar de simplificações e técnicas engenhosas para trazer, na medida do possível, mais realidade para a tela dos gamers.

Desafios atuais e modelos low poly

Embora seja um problema bem menos crítico do que era no passado, ainda hoje é um desafio manter uma quantidade grande de elementos apresentados em tela sem prejudicar a performance do jogo, sobretudo em relação a ambientes em que há a aplicação de efeitos de sombra e iluminação em tempo real sobre seus objetos e, também, a utilização de modelos 3D com uma quantidade grande de polígonos, na ordem das dezenas ou centenas de milhares de polígonos cada.

Diferentemente do passado, em que majoritariamente jogavam-se games tridimensionais por meio de consoles ou computadores, hoje podemos aproveitar um título 3D em qualquer lugar por meio dos smartphones, e nem sempre esses aparelhos apresentam o mesmo “poder de fogo” de um dispositivo dedicado para rodar bem jogos mais elaborados. Por isso a otimização é essencial em relação a esses aspectos.

Uma das técnicas adotadas para melhorar a performance em relação aos desafios gráficos de um game é a de se utilizar modelos tridimensionais com baixa contagem de polígonos, também conhecidos pelo termo em inglês low poly.

Como os modelos low poly apresentam uma quantidade menor de polígonos, a quantidade de cálculos realizados para exibi-los adequadamente na tela também é menor do que na utilização de modelos “tradicionais, de certa forma contribuindo para uma melhor performance geral do título que os utilizar.

Porém, essa menor contagem de polígonos pode acarretar também numa menor representação dos detalhes dos objetos. Para balancear essas necessidades (performance versus nível de detalhamento), uma abordagem é a utilização de modelos low poly a partir de determinada distância da câmera do jogo, já que, normalmente, não há a necessidade de se representar detalhes pequenos em objetos distantes da percepção visual do jogador.

Demais fatores

Além das questões gráficas, que geralmente são as mais impactantes na performance de um game, outros fatores que podem influenciar negativamente são os relacionados aos demais processos que estão sendo executados ao mesmo tempo em que o jogo está mostrando conteúdos na tela. Alguns deles são listados a seguir:
  • Games que precisam carregar dinamicamente conteúdos do armazenamento local podem apresentar lentidão nesse processo;
  • Algoritmos e scripts mal calibrados, que realizam diversas vezes por segundo determinada ação que não precisa ser executada tantas vezes, também podem impactar no desempenho;
  • Jogos que baixam conteúdos da Internet de uma só vez podem apresentar demoradas telas de carregamento; dentre outros.

Encontrando modelos para jogos 3D

Na Internet existem diversas fontes de material que podem ser utilizadas para começar a compor projetos utilizando modelos low poly.

Um exemplo é o website OpenGameArt.org, que disponibiliza milhares de modelos tridimensionais de diversos autores, dentre eles muitos em formato low poly, por meio de licenças de uso gratuitas, como a GNU-GPL e a Creative Commons. Outros materiais, como sons, imagens e materiais multimídia, também são disponibilizados e podem ser utilizados em projetos de desenvolvimento de jogos.

Outro website que oferece modelos tridimensionais low poly e tradicionais, além de diversos outros elementos para composição de jogos 3D, é o Unity Asset Store. Por lá, você poderá encontrar materiais pagos e gratuitos para composição de seus projetos.

Não se esqueça de, se utilizar algum modelo de terceiros, verificar qual licença de uso é referenciada para saber como citar a autoria do modelo utilizado em seu game.

Próximos passos

Concluímos nosso processo de aprendizagem sobre os fatores que diferenciam a criação de jogos 3D em relação aos games bidimensionais que vimos até então. Também aprendemos mais sobre alguns fatores que podem impactar no desempenho e conhecemos alguns locais em que podemos obter materiais para dar vida às aventuras 3D que iremos desenvolver em breve.

Em nossos próximos encontros, iremos iniciar a criação de nosso primeiro título ambientado em um cenário tridimensional, tomando como base alguns dos conceitos que aprendemos no desenvolvimento dos projetos anteriores e nos preparando para conhecer novos aspectos voltados especificamente aos jogos em 3D.

Portanto, nos encontraremos novamente em breve. Até mais! Fique ligado sempre nas novidades do GameBlast!

Revisão: Ives Boitano
Referências (especificações PlayStation): Stuff TV, Revista GamePro (62)

Entendo videogames como sendo uma expressão de arte e lazer e, também, como uma impactante ferramenta de educação. No momento, doutorando em Sistemas da Informação pela EACH-USP, desenvolvendo jogos e sistemas desde 2020. Se quiser bater um papo comigo, nas redes sociais procure por @RodrigoGPontes.
Este texto não representa a opinião do GameBlast. Somos uma comunidade de gamers aberta às visões e experiências de cada autor. Escrevemos sob a licença Creative Commons BY-SA 3.0 - você pode usar e compartilhar este conteúdo desde que credite o autor e veículo original.


Disqus
Facebook
Google