APK çalıştırırken android'de düşük performans, tarayıcıda iyi çalışıyor


12

Phaser motorunu kullanarak HTML5'te küçük bir oyun projesi oluşturdum (1.1.5 ve 1.1.6'yı denedim) Daha sonra mobil platforma taşımak için Windows Phone 8, Android ve iOS için Phonegap / Cordova'yı kullandı.

Oyunumda, animasyonlu hale gelen yaklaşık 10 öğe var (a noktasından b noktasına hareket ve aynı anda biraz dönme). İOS ve Windows Phone 8'de herhangi bir sorunla karşılaşmadım.

Ancak Android ile performans kabul edilemez. Öte yandan, oyunumu cihaz tarayıcısıyla çalıştırırsam, gecikmeden pürüzsüz çalışır. Ancak derlenmiş APK çok sarsıntılı çalışır ve öğeler çok yavaş ve titrek bir şekilde hareket eder.

Android donanım hızlandırma bayrağının manifest dosyasında "true" olarak ayarlandığını kontrol ettim. Bunu da yanlış değiştirmeyi denedim, ancak bu performanstaki herhangi bir değişikliği yansıtmadı.

Samsung S2 cihazındaki Android 4.2'de de kontrol ettim ve bu performans daha iyi. Ancak Asus Nexus Tab 7'de (Android 4.4 çalıştıran) çok sarsıntılı, işletim sistemi ve cihaz en sonuncusu. Ayrıca Android 4.3 (Samsung Galaxy Grand Duos) çalıştıran başka bir cihazda kontrol edildi ve bu performans da hiç iyi değil.

Oyunumda hem WebGL / Canvas rendering'i denedim (Phaser motoru, WebGL desteklenmiyorsa 2d tuvaline geri dönen Pixi.js kullanıyor), ancak değişiklik yok. Benzer şekilde easeljs ile.

Başka biri benzer bir sorunla karşı karşıya kaldıysa ve yerel gibi bir performans elde etmenin herhangi bir yolunu önerebilirse. Cocoonjs örneklerini kontrol ettim ve pürüzsüz ve kabul edilebilir görünseler de, o rotaya gidemem.


3
Bu soru çok iyi yazılmış. Suçlu olabilecekleri daraltmak için bir ölçüt veya profil oluşturup kullanmadığınızı ve bunu yeniden oluşturmak için bir dizi kolay adımla telefon aramasıyla iletişim kurduğunuzu bilmek ister misiniz?
AturSams

Henüz telefon boşluğuna yazmadım. Profiler denendi ve çerçeve veya kod tabanı ile olağandışı bir şey bulamadı. Belki de her şeyin masaüstünde de mobil tarayıcıda düzgün çalışmasının nedeni budur. Bir bulgu, Android'in WebView tabanlı uygulamalar ve tarayıcının kendisi için farklı bir çalışma süresine sahip olmasıdır. Ancak bu kadar küçük ara doldurmanın neden APK (WebView) modunda bu kadar gecikmeye neden olduğunu gösteren hiçbir şey bulamadı. Aslında, bu sorun KitKat çalıştıran ve en hızlı web görüntülemesine (Chrome tabanlı) sahip olduğu söylenen Nexus sekmesinde görülüyor.
devilzk83

Bu benim için çok yüzeysel bir gözlem; görünüşe göre bir hata olabilir. İleri teknoloji cihazlar arasında performansta neden güçlü bir tutarsızlık olduğunu anlamıyorum.
AturSams

1
Neden CocoonJS yoluna gitmek istemediğini merak ediyorum. Phaser ve Pixi'nin CocoonJS içinde iyi çalıştığına inanıyorum. Bu seçeneği denemenizi engelleyen nedir?
Geoff

2
Topal CSS3 ve Tuval oluşturmaya neden olan hata, yeni Chromium tabanlı web görünümüdür ve Android'de Cordova / Phonegap geliştiricileri için tam bir fiyasko ... Ghaaadzoooks, Google'da KitKat'ı başlatmadan önce webview canvas / CSS3 performansını test etmedi ? Umarım hızlı ve umarım özellikle 3. taraf kilitli Android yapıları olan cep telefonlarındaki kişilere sabittir ... Mutlak fiyasko .. Bir Cordova / Phonegap geliştiricisi veya Webview kullanıyorsanız, lütfen bu hatayı Google Android hata raporlarıyla yıldızlandırın .. daha fazla bilgi: groups.google.com/forum/#!topic/phonegap/1ZxXe6chHZc code.googl

Yanıtlar:


2

Bu soruna neden olan Chromium tabanlı WebView sonunda KitKat sürüm 4.4.3 / 4.4.4'te 2014'ün ortalarında güncellendi, ancak bazı satıcıların telefonlarının hangilerinin güncellemeye sahip olduğu ve hangilerinin güncelleştirme aldıkları hakkında görünüşte keyfi kararlar aldıkları düşünüldüğünde bu soğuk rahatlıktır. değil. Örneğin Samsung Galaxy S4 hala 4.4.2'de sıkışmış durumda.

Diğer cevaplar tarafından verilen tavsiyelere uyun: tuval tabanlı bir oyununuz varsa, KitKat'ın 4.4.3'ün altında çalışan telefonları hariç tuttuğunuzu belirleyemediğiniz sürece PhoneGap'ten kaçının kabul edilebilir.


1

Oyununuzu libgdx ile yeniden oluşturmaya çalışın. Libgdx yeterince hızlıdır ve bunun gibi sorunları yoktur ve tüm platformlarda çalışır. Ne yazık ki bu sadece şu anda düşünebileceğim şey ve js'yi android java ya da coverter ne yaparsa dönüştürme fikrini sevmiyorum. Biraz zaman alsa da, LibGDX'e bir test verin.


1

Bu, çoğu oyun geliştiricisinde bir sorun gibi görünüyor. Benzer sayı

"Tuval oyunu yapmak isterken telefon aralığının en iyi seçenek olmadığını sık sık duydum. Web uygulamasına yerel olarak daha uyarlanmış."

Android telefonlar için sorun yetenekleri oluşturma gibi görünüyor. Daha fazla sprite oluşturma işlemini gerçekleştiremeyen bazı motorlar var. 10 nesnenin işlenmesinin kolay olduğunu biliyorum ama kesinlikle oluşturma yetenekleriyle ilgili sorun görünüyor.

Benim önerim cocoonjs ile gitmeniz .


1

Phaser ile aynı sorunla karşılaştım ( bu basit oyunla ). Ne yazık ki, HTML5 ve web / tuval oluşturma ile telefonunuzun merhametindesiniz - kırık veya düşük performanslı tarayıcılara sahip kullanıcılar olacak (benimki gibi).

@ Captainbuzz123'ün önerdiği gibi, tek gerçek çözüm HTML5 olmayan bir platforma geçmektir. Şimdilik tercih ettiğim araç OpenFL .

(Çok basit) Phaser uygulamam OpenFL ile telefonumda 8-12FPS civarında çalışırken (C ++ 'a aktarıldığı ve Android NDK üzerinden çalıştığı için), telefonumda çok düzgün, akıcı bir performans elde ediyorum.

Kesinlikle denemeye değer.


1

2020'lerin ilk haftası için bir güncelleme:

Cocoonjs muhtemelen geçmişte bu sorun için sağlam bir çözümdü ama kapatılıyorlar .. resmi web sitesinden her şeyi söyleyen bir teklif

Sevgili hizmetimiz Cocoon'u vermeyi bırakacağımızı duyurmaktan büyük pişmanlık duyuyoruz.

Uygulama ve oyun geliştirmenin geleceğinin HTML5'te olacağına inandığımız için Ludei / Cocoon'u başlattık. Ne yazık ki, olmadı ve yerel gelişme her zamankinden daha güçlü.

Bu aslında 2019'da mobil cihazlar için HTML5 geliştirmeyi yansıtıyor .. bu mümkün değil, ama beklendiği gibi etkili değil ...

IOS ve Android için Phaser ve Cordova ile inşa edilen bazı üretim oyunlarından sonra yerel gelişime geçiyorum. Orta uç cihazlarda en basit mekanikte bile performans tavanına çarparak bıkmış

Bunu şimdiki veya yakın gelecekte gören herkes için seçeceğim bir sonraki teknik / yığın çözüm seçeneklerimi paylaşmak için:

  • Android için IOS ve LibGDX için SpriteKit: Bu, her platform için ayrı ayrı geliştirilmesini gerektirse de, muhtemelen en performanslı çözüm olacaktır .. aynı zamanda en "düşük seviye" olacaktır

  • Cocos2D-X gerçekten ne kadar iyi desteklendiğinden emin değil ve hala geçerli bir seçim mi ama çok olgun ve performanslı olmalı + C ++ 'da yazabilir ve herhangi bir platform için inşa edebilirsiniz

  • Corona ilginç (ve ücretsiz) bir çapraz platform ve performans çerçevesi gibi görünüyor, Lua kullanmanın burada belirtilen diğer çözümlere göre test etmesi gerekecek

  • Unity veya Godot gibi modern motorlardan birini kullanın . Bunun belirtilen çerçevelerin performansıyla nasıl karşılaştırıldığından emin değilim

Umarım bu herkese yardımcı olur ..


0

Geçen gün gördüm, bu sorunu çözmek için bir göz atmaya değer olabilir. Bana çok güzel bir fikir gibi geliyor: http://tmtg.net/glesjs/

Tarayıcıda iyi çalışıyor, ancak Phonegap / Cordova'da değil, gerçekten çok garip. Android'deki tüm tuval / webGL durumu (iOS için konuşamıyor) her zaman benim için oldukça korkunç görünüyordu. Kesinlikle GOogle daha fazla enerji koymak için gereken bir şey, belki Lollipop bir gelişme olacak!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.