Android Lollipop está causando problemas em jogos antigos (e nos novos também)

Android-lollipop-fail

Segundo estudo realizado pela TestBird, uma startup focada na análise e desempenho de jogos móveis, o Android Lollipop causa 60% mais falhas e problemas de compatibilidade se comparado a versão anterior, o KitKat. Um dos problemas é o novo ambiente de tempo de execução (Runtime), o ART, mas esgana-se quem pensa que essas falhas ocorrem apenas em jogos antigos. O problema afeta também games novos!

– Lollipop vs Dalvik

Na atualização para o Android Lollipop, a Google moveu o seu sistema mobile completamente para um novo ambiente de tempo de execução, o ART. Desde o Android Froyo 2.2, todas as versões do sistema rodavam sobre o Runtime Dalvik. Mas com o ART, a Google conseguiu uma performance e velocidade na execução de apps muito maior no Android 5.0, além de uma melhor performance da bateria.

Segundo a teoria, o Android Lollipop deveria exigir menos recursos, mas na realidade, não é isso que está acontecendo, quando o tema em questão são games. Muitos jogos estão enfrentando problemas de performance.

Publicidade

– Papo Tech

Um adento para quem está boiando. A mudança de Dalvik para ART, significa uma mudança em como os apps e jogos são compilados e interpretados pelo sistema. Anteriormente, com Dalvik, o Android usava o compilador Just in Time (JIT ou “na hora certa”).

No Runtime Dalvik, o código de um app é compilado para ser interpretado por ele, mas também facilmente convertido para outras “máquinas virtuais”. Apenas ao ser executado, é que um app e jogo é transformado em “linguagem de máquina” pelo JIT Compiler. Quem manja de emuladores sabe como o JIT deixa as coisas mais rápidas. Mas ele não está lá apenas para isso, ele é responsável também por manter as coisas “compatíveis”.

Para evitar essas “recompilações” constantes, ou seja, toda vez que um app é aberto, a Google introduziu, ainda em testes no KitKat, o Android Runtime (ART). Ele estava disponível para desenvolvedores fazerem testes, mas podia ser acessado facilmente pelas configurações do sistema.

O ART possui um compilador diferente, o ahead-to-time (afrente do tempo). Nesse Runtime, a compilação final acontece já na instalação do aplicativo ou game. Para manter a compatibilidade (em teoria), o ART usa o mesmo código de bits do Dalvik.

Há uma infinidade de melhorias que o ART trouxe como melhor performance, menos MBs para download, e etc. Mas não vamos nos ater a essas melhorias, até por que, o tema aqui é o que está causando problemas ao games.

– O que não te contaram!

Como você pode perceber, a compilação final no ART acontece apenas uma vez e é justamente aí onde o Dalvik se sobressaia ao Lollipop, em termos de compatibilidade. Com o Dalvik e JIT Compiler, o Android precisava de mais memória, isso é fato, mas o sistema dizia ao JIT a quantidade disponível para um game naquele momento. Assim, o jogo rodava e tinha sua performance calibrada pelo JIT.

Desenvolvedores e engines já estavam acostumadas com Dalvik.
Desenvolvedores e engines já estavam acostumadas com Dalvik.

No ART isso não acontece, ou melhor, acontece apenas quando o jogo é instalado. Por conta disso, é comum alguns, ou vários jogos apresentarem “travadinhas” ou fechamentos (Force Close), pois seus códigos estavam implementados de forma a esperar a calibração do JIT.

Em termos de performance, o ART é muito mais rápido que o Dalvik e quem atualiza o seu sistema para o Lollipop percebe isso ao utilizar apps mais simples. Entretanto, em jogos a coisa fica diferente e a compatibilidade ideal só é alcançada apenas em dispositivos com 2GB de RAM ou mais.

– Erros entre o Android Lollipop e o Play Games Services

Desde a implementação do Android Lollipop, pela Google, em 2014, muitos desenvolvedores vêm enfrentando problemas com seus games que utilizam serviços do Google Services, como Google Play Games e outros.

No fórum de uma das principais engines para dispositivos móveis, a Unity, vários desenvolvedores reclamam de erros que acontecem apenas quando o jogo é baixado pela Google Play.

Lollipop-erros-android-jogos

O que acontece? Eles fazem vários testes internos onde não há problemas. Testam o game em vários dispositivos, com um APK interno. Mas quando o jogo é enviado para a loja de aplicativos do Google, e o Google Play Games Services é implementado, ele começa a apresentar vários problemas de compatibilidade.

– Problema afeta também games novos

Como você viu acima, não se trata apenas de jogos antigos. Lançamentos recentes como FIFA 16, Dead Effect 2 e Fallout Shelter, para não citar muitos outros, enfrentaram vários problemas de compatibilidade no Android Lollipop.

dead-effect-2-comentarios-lollipop-vs-kitkat
A ironia. Quem tem dispositivo atualizado com Lollipop enfrenta mais problemas em jogos novos do que quem tem KitKat.

A Google simplesmente dá as ferramentas para os desenvolvedores trabalharem e produzirem seus conteúdos. Mas em sua guerra contra Apple e Microsoft, por performance e bateria, parece que os desenvolvedores de jogos mobile ficaram com um pepino nas mãos.

A solução virá apenas com o tempo. Conforme os desenvolvedores forem se acostumando com o novo ambiente de execução e suas peculiaridades. Para quem gosta de jogos, o ideal é manter o dispositivo no KitKat, algo que parece impossível, pois muitos celulares e tablets já são vendidos com o Android Lollipop.

Google News

11 comentários em “Android Lollipop está causando problemas em jogos antigos (e nos novos também)”

  1. Muito boa matéria, eu não fazia nem ideia que o ART traria problemas para os jogos, inclusive eu defendia na época do KK que quando o ART fosse adotado de vez, os jogos teriam uma melhor performance, estava redondamente enganado. Valeu pelas explicações.

    Responder
    • O problema ocorre por que muitas das engines, plugins e códigos de games estão implementados de modo a esperar, ou contar, com o JIT. Para fazer uma calibração melhor da memória usada pelo game no ART, é preciso escovar mais os bits.

      Com o tempo, o mercado vai se acostumar com o ART, mas não sem uma boa dose de esforço. Vamos ver se os desenvolvedores vão fazer isso ou esperar pelo Android Marshmallow e API Vulkan.

      Responder
  2. Na minha opinião, o Android Kitkat foi a melhor versão do Android que ja usei nos smartphones e Tablets, muito leve, tinha um melhor gerenciamento de ram e bateria, ate em aparelhos antigos e de baixo custo, ele roda consideravelmente bem! Em relação ao Lollipop não gostei de nada, principalmente na parte de gerenciamento de ram e bateria, o Lollipop só tem visual e perfumaria!

    Responder

Deixe um comentário