Texto do Blog do Desenvolvedor da Riot Games feito por NYKSUND. O Novo summoner’s Rift está chegando e trazendo várias perguntas, a atualização do local onde ocorre as batalhas da liga dos campeões foi o tema do Blog do Desenvolvedor: “Otimizando o Rift”

otimizando-o-rift

Quando sentamos pela primeira vez para planejar nossas prioridades ao atualizar Summoner’s Rift, sabíamos que o desempenho seria um de nossos desafios primários. Afinal das contas, de que vale uma atualização linda se o seu computador for pegar fogo durante o carregamento? Com isso em mente, definimos o objetivo de assegurar que a atualização de Summoner’s Rift tem um desempenho ao menos tão bom quanto o do SR atual na máquina de todos os jogadores. Continuamos a trabalhar em otimização desde o anúncio da atualização e queremos aproveitar a ocasião para discutir os detalhes mais recentes com vocês.

 

Engenharia = Arte

Normalmente, quando os jogadores pensam em como o jogo roda em suas máquinas, eles costumam olhar mais frequentemente para a tecnologia do jogo — quando, na verdade, o desempenho envolve uma colaboração muito próxima entre artistas e engenheiros, ambos empenhados em encontrar maneiras de implementar arte de maneira eficaz. No que diz respeito à atualização de Summoner’s Rift, nossos engenheiros trabalharam para proporcionar aos artistas as ferramentas e informações que precisavam para criar a paisagem que pode ser tanto aprazível quanto de alto-desempenho.

O objetivo da equipe de arte — aumentar a fidelidade visual ao mesmo tempo em que mantém a paridade de desempenho com o SR pré-atualização — significava que eles precisavam de um conjunto mínimo de detalhes muito otimizados que poderiam então permiti-los criar um mapa pintado a mão. Isso significa, em essência, que a equipe de engenharia precisava criar um novo renderizador feito do zero.

Em termos mais amplos, um renderizador é a parte responsável por posicionar a geometria do jogo na sua tela, e o novo renderizador do SR simplifica esse processo de maneira a ter desempenho melhor, especialmente em placas de vídeo mais antigas. Além disso, ele nos permite ajustar de maneira mais fina os aspectos específicos de como uma placa de vídeo em particular renderiza o ambiente. Lembrando que ajustes = velocidade = desempenho. Por fim, o renderizador nos dá mais controle sobre o formato das texturas, permitindo a nós reduzir o uso da memória de vídeo.

 

Menos é mais

Além da otimização de engenharia, nossos artistas também buscaram maneiras criativas de melhorar o desempenho. Uma das primeiras coisas que olhamos foi a “contagem de polígonos”, especialmente das criaturas da selva. Sabemos que a maioria de vocês já sabe o que é isso, mas vale o lembrete: um polígono é uma série de pontos no espaço que juntam-se para formar uma superfície.

Em particular, olhamos para triângulos — que são os polígonos mais simples. Múltiplos triângulos são usados para criar superfícies complexas em jogos, e o número delas na tela é um bom indicador de quanto trabalho está sendo colocado em sua placa de vídeo. Máquinas de hardware menos potente, em particular, sofrem mais com a alta contagem desses triângulos. Fizemos um esforço consciente para cortar os triângulos (e outros polígonos) ao mesmo tempo em que desenvolvíamos a atualização, o que proporcionou um bom ganho em desempenho.

Também olhamos para a “contagem de ossos”. Pensem “ossos” como as articulações em um esqueleto, de modo que eles influenciam as coisas como as coisas ao seu redor se movem ou giram. No caso dos gráficos de um computador, um osso permite a articulação (ou animação) da geometria ao seu redor, então um monstro da selva pode ter ossos colocados em diversos pontos para ajudar a animar seus movimentos ao atacar. Como você pode esperar, menos ossos = mais desempenho; então montamos a atualização de olho em minimizar os ossos nos elementos móveis do ambiente.

Esses dois aprimoramentos contribuíram com uma outra oportunidade de otimizar o desempenho. Percebemos que elementos do mapa, tais como torres e tropas, eram bem ineficazes em “deformar” (ex.: mover seus polígonos em resposta a movimentação de ossos), com muito mais conexões osso-polígono do que o necessário com o uso da arquitetura de nossa nova atualização. A redução em ossos e polígonos da qual falamos acima naturalmente levou a diminuir também o número de ossos conectados a polígonos individuais, permitindo o aprimoramento de desempenho no que tende a ser um processo muito intenso para a máquina.

 

Menor do que a soma de suas partes

Outro gigantesco passo que demos para abordar o desempenho envolveu a implementação de um processo chamado “atlassamento” (“atlassing”). Esse processo combina as texturas (pintura da pele de um modelo) com “mapeamento UV” (projetar a textura no modelo 3D) de maneira que otimize um pouco melhor para o desempenho.

O espaço UV de um modelo determina como ele lê a textura e quais partes da textura aparecerão em qual superfície. Normalmente há excesso de espaço entre as UVs, o que deixa um modelo e sua textura parecido com isso:

O atlassamento combina múltiplas texturas em uma textura maior que podemos comprimir ou expandir dependendo do nível de detalhes que queremos, o que é valiosíssimo no que diz respeito a conservar o precioso uso de memória para texturas. Por exemplo, em vez de carregar cinco texturas 1024×1024, podemos usar apenas uma textura 2048×2048 e economizar um pouco no desempenho.

 

E todas as coisas pequenas também

Esperamos ter conseguido proporcionar um pouco mais de visão a respeito das coisas que estarão por baixo do capô assim que o novo visual de Summoner’s Rift chegue ao serviço oficial. O que cobrimos acima definitivamente não é uma lista cansativa de nossos esforços relacionados a desempenho — desde alterações na finalização dos personagens, melhorias na névoa de guerra, simplificação na malha de navegação para correção de bugs — à qual estivemos atentos para qualquer oportunidade de otimização. No contexto geral, a compatibilidade com torradeiras foi um de nossos objetivos principais com a atualização e é algo a que continuaremos atentos e afinando conforme nos aproximamos do teste beta aberto e além dele.