Eu criei um pequeno projeto de jogo em HTML5 usando o mecanismo Phaser (tentei 1.1.5 e 1.1.6). Em seguida, para portá-lo para a plataforma móvel, usei o Phonegap / Cordova para Windows Phone 8, Android e iOS.
No meu jogo, existem cerca de 10 elementos que são animados (movendo-se do ponto a ao ponto be rotação ao mesmo tempo). No iOS e no Windows Phone 8, não enfrentei nenhum problema.
Mas com o Android, o desempenho é inaceitável. Por outro lado, se eu rodar meu jogo pelo navegador do dispositivo, ele será executado sem problemas. Mas o APK compilado é muito instável e os elementos se movem muito lentamente e de maneira instável.
Eu verifiquei que o sinalizador de aceleração de hardware do Android está definido como "true" no arquivo de manifesto. Tentei alterá-lo também, mas isso não refletiu nenhuma alteração no desempenho.
Eu verifiquei o mesmo no Android 4.2 no dispositivo Samsung S2 e esse desempenho é melhor. Mas no Asus Nexus Tab 7 (executando o Android 4.4) é muito instável, enquanto o sistema operacional e o dispositivo são os mais recentes. Também verificado em outro dispositivo com Android 4.3 (Samsung Galaxy Grand Duos) e nesse desempenho também não é bom.
No meu jogo, tentei a renderização do WebGL / Canvas (o mecanismo da Phaser usa o Pixi.js, que fica em 2d canvas se o WebGL não for suportado), mas nenhuma alteração. Da mesma forma com easeljs.
Se alguém enfrentou um problema semelhante e pode sugerir alguma maneira de obter desempenho nativo, como. Eu verifiquei exemplos cocoonjs e, embora pareçam suaves e aceitáveis, não posso seguir esse caminho.
fonte
Respostas:
O WebView baseado em Chromium que causou esse problema acabou sendo atualizado no KitKat versão 4.4.3 / 4.4.4 em meados de 2014, mas esse é um conforto frio, considerando que alguns fornecedores tomaram decisões aparentemente arbitrárias sobre quais de seus telefones receberam a atualização e quais foram. não. O Samsung Galaxy S4, por exemplo, ainda está preso na 4.4.2.
Siga o conselho de outras respostas: se você tiver um jogo baseado em tela, evite o PhoneGap, a menos que você possa determinar que é aceitável excluir telefones que estejam executando as versões do KitKat abaixo da versão 4.4.3.
fonte
Tente refazer seu jogo na libgdx. O Libgdx é rápido o suficiente e não possui problemas como esse e funciona em todas as plataformas. Infelizmente, isso é apenas o que consigo pensar no momento e não gosto da idéia de converter js para android java ou o que quer que esse coverter faça. Embora isso leve algum tempo, teste o LibGDX.
fonte
Parece que esse é um problema com a maioria dos desenvolvedores de jogos. Problema semelhante
"Ouvi muitas vezes que o grampo telefônico não era a melhor escolha para se fazer um jogo de tela. É mais adaptado ao aplicativo da web para o nativo".
Parece estar processando recursos de problemas para telefones Android. Existem alguns mecanismos que não conseguem lidar com mais renderizações de sprites. Eu sei que 10 objetos são fáceis de renderizar, mas definitivamente parece um problema com os recursos de renderização.
Minha sugestão é que você vá com cocoonjs .
fonte
Corri para o mesmo problema com a Phaser (com este jogo simples ). Infelizmente, com o HTML5 e a renderização da web / canvas, você fica à mercê do seu telefone - haverá usuários com navegadores quebrados ou com baixo desempenho (como o meu).
Como o @ captainbuzz123 sugeriu, a única solução real é mudar para uma plataforma não HTML5. Minha ferramenta preferida por enquanto é o OpenFL .
Enquanto meu aplicativo Phaser (muito simples) é executado em torno de 8-12FPS no meu telefone, com o OpenFL (porque é transpilado para C ++ e executado através do Android NDK), acabo obtendo um desempenho muito suave e fluido no meu telefone.
Definitivamente vale a pena tentar.
fonte
Uma atualização para a primeira semana de 2020:
Cocoonjs provavelmente foi uma solução sólida para esse problema no passado, mas eles estão sendo encerrados .. uma citação de seu site oficial que diz tudo
Na verdade, isso reflete o desenvolvimento do HTML5 para dispositivos móveis em 2019. não que isso não seja possível, mas não seja eficaz como esperado ...
Estou mudando para o desenvolvimento nativo após alguns jogos de produção criados com Phaser e Cordova para IOS e Android. Farto de atingir o teto de desempenho, mesmo na mecânica mais simples em dispositivos de médio porte
Apenas para compartilhar minhas próximas opções de soluções de tecnologia / pilha para escolher para quem vê isso no presente ou no futuro próximo:
SpriteKit para IOS e LibGDX para Android: Essa provavelmente será a solução com melhor desempenho, embora exija desenvolvimento para cada plataforma separadamente. Mas também será o "nível mais baixo"
O Cocos2D-X não tem muita certeza de quão bem ele é suportado e ainda é uma opção válida, mas deve ser muito maduro e com bom desempenho + você pode escrever em C ++ e criar para qualquer plataforma
Corona parece ser uma plataforma interessante (e gratuita) de plataforma cruzada e de desempenho, usando Lua será necessário testá-lo versus as outras soluções mencionadas aqui
Use um dos motores modernos, como Unity ou Godot . Não tenho certeza de como isso está se comparando às estruturas mencionadas em termos de desempenho
Espero que isso ajude alguém ..
fonte
Vi isso no outro dia, pode valer a pena dar uma olhada para resolver esse problema. Parece uma boa idéia para mim: http://tmtg.net/glesjs/
O fato de funcionar bem no navegador, mas não no Phonegap / Cordova, é realmente muito estranho. Toda a situação do canvas / webGL no Android (não posso falar pelo iOS) sempre me pareceu bastante terrível. Definitivamente algo que o GOogle precisa colocar mais energia, talvez o Lollipop seja uma melhoria!
fonte