Olá, pessoal! Nesse artigo vamos ver algumas dicas de performance para que você não tenha problemas de desempenho, principalmente em dispositivos móveis, com seus projetos desenvolvidos na Construct 2, que é uma das game engines preferidas pelos desenvolvedores.
E também, vamos desmentir alguns equívocos que muitos acreditam que sejam os causadores de mau desempenho.
Mobile
Computadores desktop são muito mais poderosos que dispositivos móveis. Geralmente, o principal problema com o desempenho é fazer seu jogo funcionar bem em celulares e tablets.
É mais difícil obter um bom desempenho nesses dispositivos porque na maioria das vezes eles têm um hardware mais fraco: CPUs mais lentas, chips gráficos (GPUs) mais lentos, e menos memória.
Como já mencionado no artigo de 9 Dicas Matadoras para Criar Jogos na Construct 2, se a sua ideia é criar um jogo para celulares, você deve testar no celular desde o início.
Como seu computador pode ser mais de dez vezes mais rápido do que o seu dispositivo móvel, você pode criar um jogo que não irá funcionar bem em um celular ou tablet. Para evitar surpresas teste regularmente no dispositivo pretendido para se certificar de que esteja rodando bem.
As dicas a seguir podem ajudá-lo a alcançar um melhor desempenho em dispositivos móveis:
- Certifique-se de que WebGL esteja habilitada, uma vez que em dispositivos que suportam, geralmente melhora significativamente o desempenho.
- Evite usar muitos objetos ou partículas, uma vez que os dispositivos móveis têm limites mais baixos do que computadores desktop.
- Coloque objetos usando os mesmos modos de mistura ou efeitos na mesma camada. Por exemplo, se você tem um monte de objetos que utilizam o aditivo modo de mesclagem (comumente utilizado para explosões, lasers e outros efeitos), certifique-se todos os objetos estejam na mesma camada. Também certifique-se que eles são criados nessa camada se os objetos são criados em tempo de execução.
- Evite objetos com grandes áreas de transparência. Pixels transparentes ocupam o tempo de renderização, mesmo que eles não apareçam visualmente. Recorte todas as imagens que você usa para remover o espaço transparente utilizando a ferramenta de “Crop” na tela de edição de imagem da Construct. Dividindo os objetos grandes com grandes áreas transparentes em uma série de objetos menores também pode aumentar o desempenho de renderização e diminuir o uso de memória.
- Evite grandes áreas de sobreposição entre os objetos. O renderizador funciona back-to-front, e se os objetos têm muita sobreposição, a área sobreposta terá os pixels renderizados diversas vezes. Isto pode sobrecarregara a capacidade de uma GPU móvel muito rapidamente.
- Se você tiver um background opaco, defina Clear Background para No nas propriedades do projeto. Isso evita a redundância de limpar a tela inteira a cada quadro, quando tudo seria apagado de qualquer maneira ao renderizar o seu background opaco.
As causas mais comuns de mal desempenho na Construct 2
Alguns dos motivos mais comuns que causam lentidão estão listados abaixo. Essa é uma listagem das causas mais prováveis, mas podem haver outras razões que estejam afetando a performance do seu jogo.
A falta de aceleração de hardware
Normalmente, até mesmo o mais lento renderizador Canvas 2D ainda é acelerado pela GPU (Graphics Processing Unit). No entanto, alguns dispositivos têm drivers gráficos instáveis e os fabricantes de browsers desativam o uso da GPU para evitar acidentes (como “GPU blacklisting”). Em dispositivos muito antigos a aceleração da GPU simplesmente pode não ser suportada.
Alterar texto objetos cada instante (Every tick)
Alterar o tamanho ou o texto de um objeto de texto a cada instante provavelmente produzirá uma perda de desempenho, especialmente em dispositivos móveis. O problema é ainda pior se o objeto de texto é grande. Tente usar pequenos objetos de texto que não mudam regularmente. Se você precisar alterar o texto regularmente, considere o uso de uma Sprite Font, que é rápido mesmo quando mudada a cada instante.
Uso inadequado do Tilemap
Não é apropriado usar o objeto Tilemap para exibir imagens grandes. O objeto TileMap desenha tile-by-tile, mas pode ser otimizado se houverem áreas com mesmo tile.
Muitos objetos usando comportamentos de Física (Physics Behavior)
O comportamento de física (physics behavior) exige muito da CPU. Utilizar muitos objetos com o comportamento física pode causar uma considerável lentidão (quedas de framerate). Você deve projetar seus jogos para usar alguns objetos grandes ao invés de muitos objetos pequenos que utilizem física.
Criando muitos objetos
Embora os computadores modernos sejam muito rápidos, eles ainda têm uma capacidade de processamento limitada. A criação de mais de 1000 objetos em um único layout provavelmente fará seu jogo mais lento. Tente projetar o seu jogo para usar menos objetos.
Usando muitos efeitos
Efeitos são visualmente bonitos, mas podem prejudicar o desempenho do jogo consideravelmente se utilizados sem moderação, especialmente nos celulares. Usar um efeito sobre objetos com muitas instancias não é recomendado, muitas vezes, é mais eficiente colocar todos os objetos com o efeito em uma única camada e aplicar o efeito sobre a camada.
Isso permite processar o efeito tudo de uma vez só, ao invés de reexecutar o efeito de diversas vezes para cada instancia do objeto. Alguns efeitos também têm mais impacto no desempenho do que outros: blurs e glows tendem ser o mais impactante, distorção tendo um impacto médio, e as misturas de cores (como multiply e screen) são os mais fáceis para a GPU para processar.
Utilização desnecessária de efeitos
Nunca use efeitos estáticos em um objeto. Por exemplo, não use o efeito “Grayscale” para fazer um objeto sempre aparecer em tons de cinza. Isso vai prejudicar o desempenho quando você pode simplesmente importar uma imagem em tons de cinza.
Usando muitas partículas
O objeto de partículas (Particles object) pode facilmente criar centenas de partículas. Cada partícula é como uma sprite. Evite o uso de mais do que 200 partículas.
Usando Sprites em vez de Tile Background
Criar muitos objetos pode causar lentidão, e um erro comum é usar grades Sprite em vez de Tile Background. Isso é semelhante ao uso inadequado de tilemaps. Por exemplo, uma grade de sprites de 20×20 tem 400 objetos de um pixel, que causa um impacto significativo na contagem de objeto.
Um único Tile Background pode substituir a grade de sprites e só conta como um único objeto. Tile Background são otimizados para repetir sua textura, portanto, neste caso, é, literalmente, 400 vezes mais eficiente do que uma grade de sprites. Sempre use Tile Background em vez de Sprites repetidas sempre que possível.
Não colocar todos os objetos usados no layout
Se os objetos não são colocados em um layout, mas são criados por eventos, a Construct 2 irá carregar as texturas para os objetos no momento que você criá-los. Isso pode causar uma pausa momentânea ou “Jank” e tornar o jogo menos responsivo. Isto pode ser evitado colocando os objetos usados no layout. Eles podem ser colocados fora da tela e destruídos logo ao iniciar para evitar interferência com a jogabilidade. Assim a Construct 2 irá pré-carregar todas as texturas quando o layout é iniciado, evitando o “Jank”.
Usando muitas Loops
Este é mais raro, mas usando muitos loops como For, For Each e Repeat podem causar lentidão. Para testar se esse é o problema, tente desativar temporariamente os eventos looping.
Equívocos mais comuns
Os seguintes itens listados abaixo são frequentemente acusados, pelos desenvolvedores inexperientes, de afetar o desempenho (como, o framerate ou tempo de execução), mas provavelmente tem pouco ou nenhuma culpa pelo mau desempenho do seu jogo:
Renderização de objetos fora da visão da câmera
A Construct 2 não emite chamadas para desenhar objetos que não aparecem na janela, e a GPU também é inteligente o suficiente não renderizar qualquer conteúdo que está fora da janela – mesmo quando uma única imagem é exibida parcialmente na tela.
Formatos de imagem
Alguns formatos (como por exemplo JPEG, PNG-8 e PNG-32) afetam o tamanho de download, mas não têm nenhum efeito sobre o desempenho do tempo de execução ou utilização de memória (todos eles são descompactados a 32-bit bitmap na inicialização).
Formatos de áudio
Os formatos de áudio também afetam apenas o tamanho do download, mas não têm nenhum efeito sobre o desempenho do tempo de execução.
Número de camadas
Esse número geralmente não tem efeito sobre a performance, a menos que a maioria das camadas tenham sua opacidade alterada, ou tenha efeitos aplicados. No entanto normalmente não há nenhum impacto no desempenho no uso de múltiplas camadas.
Número de layouts
Também é improvável que o número de layouts tenha qualquer efeito sobre a performance que não seja no tamanho do download. O tamanho da disposição da tela também não tem qualquer efeito direto; layouts maiores não usam mais memória ou exigem mais processamento, a menos que você use mais objetos.
Sabendo dessas dicas você já pode projetar seu jogo de forma a minimizar ao máximo problemas de performance!
Você quer saber como criar jogos com potencial de vender milhares de cópias e que podem ser desenvolvidos por uma pessoa sozinha ou uma pequena equipe?
Eu preparei um vídeo de 30 minutos explicando como eu faço isso no meu estúdio de games. Acesse essa página para conferir: https://pdj.blog.br/aula-criar-jogos.
Opa,
qual foi a maior sacada que você teve? Conte nos comentários.