Performa buruk di android saat menjalankan APK, berjalan dengan baik di browser

12

Saya telah membuat proyek game kecil dalam HTML5 menggunakan mesin Phaser (mencoba 1.1.5 dan 1.1.6). Kemudian untuk port ke platform mobile, gunakan Phonegap / Cordova untuk Windows Phone 8, Android dan iOS.

Dalam gim saya, ada sekitar 10 elemen, yang dapat dianimasikan (bergerak dari titik a ke titik b dan beberapa rotasi pada waktu yang bersamaan). Di iOS dan Windows Phone 8, saya tidak menghadapi masalah apa pun.

Tetapi dengan Android, kinerja tidak dapat diterima. Di sisi lain, jika saya menjalankan game saya melalui peramban perangkat, itu berjalan mulus tanpa lag. Tetapi kompilasi APK berjalan sangat tersentak-sentak dan elemen bergerak sangat lambat & dengan cara berkelap-kelip.

Saya telah memeriksa bendera akselerasi perangkat keras android yang disetel ke "true" dalam file manifes. Mencoba mengubahnya salah juga, tapi itu tidak mencerminkan perubahan kinerja.

Saya telah memeriksa yang sama pada Android 4.2 pada perangkat Samsung S2 dan pada kinerjanya lebih baik. Namun pada Asus Nexus Tab 7 (menjalankan Android 4.4) sangat menyentak, sedangkan OS dan Perangkat keduanya terbaru. Juga memeriksa pada perangkat lain yang menjalankan Android 4.3 (Samsung Galaxy Grand Duos) dan itu juga kinerja tidak baik sama sekali.

Dalam permainan saya mencoba kedua rendering WebGL / Canvas (mesin Phaser menggunakan Pixi.js, yang mundur ke kanvas 2d jika WebGL tidak didukung), tetapi tidak ada perubahan. Demikian pula dengan easeljs.

Jika ada orang lain yang menghadapi masalah serupa dan dapat menyarankan cara apa pun untuk mendapatkan kinerja seperti asli. Saya memeriksa contoh cocoonjs dan meskipun kelihatannya halus dan dapat diterima, saya tidak bisa menggunakan rute itu.

devilzk83
sumber
3
Pertanyaan ini ditulis dengan sangat baik. Saya ingin tahu apakah Anda menjalankan benchmark atau profiler untuk mempersempit apa yang menjadi penyebabnya dan jika Anda menghubungi phonegap dengan serangkaian langkah mudah untuk mereproduksi ini?
AturSams
Saya belum menulis ke phonegap. Mencoba profiler dan tidak dapat menemukan sesuatu yang tidak biasa dengan kerangka kerja atau basis kode. Mungkin itulah alasan mengapa semuanya berjalan lancar di desktop dan juga browser seluler. Satu temuan adalah bahwa Android memiliki runtime yang berbeda untuk aplikasi berbasis WebView dan browser itu sendiri. Tetapi tidak dapat menemukan apa pun yang menunjukkan bahwa mengapa tweening kecil menyebabkan begitu banyak lag dalam mode APK (WebView). Bahkan, masalah ini muncul pada tab Nexus yang menjalankan KitKat yang dikatakan memiliki tampilan web tercepat (berbasis Chrome).
devilzk83
Ini adalah pengamatan yang sangat dangkal di pihak saya; tampaknya Anda mungkin menggunakan bug. Saya tidak melihat mengapa ada perbedaan yang kuat dalam kinerja antara perangkat yang sangat canggih.
AturSams
1
Saya ingin tahu mengapa Anda tidak ingin menggunakan rute CocoonJS. Saya percaya Phaser dan Pixi berjalan dengan baik di CocoonJS. Apa yang mencegah Anda dari mencoba opsi itu?
Geoff
2
Bug yang menyebabkan rendering CSS3 & Canvas lumpuh adalah tampilan web berbasis Chromium baru dan ini merupakan kegagalan total bagi pengembang Cordova / Phonegap di Android ... Ghaaadzoooks tidak ada seorang pun di Google yang menguji kinerja tampilan kanvas / CSS3 di web sebelum mem-boot KitKat keluar pintu ? Saya harap ini diperbaiki dengan cepat dan mudah-mudahan secara transparan terutama bagi orang-orang yang menggunakan ponsel dengan penguncian Android pihak ke-3 ... Kegagalan total .. Jika Anda seorang pengguna Cordova / Phonegap atau menggunakan Webview, silakan beri bintang bug ini dengan laporan bug Google Android .. . info lebih lanjut: groups.google.com/forum/#!topic/phonegap/1ZxXe6chHZc code.googl

Jawaban:

2

WebView berbasis Chromium yang menyebabkan masalah ini akhirnya diperbarui dalam KitKat versi 4.4.3 / 4.4.4 pada pertengahan 2014, tetapi itu adalah kenyamanan yang dingin mengingat beberapa vendor telah membuat beberapa keputusan yang tampaknya sewenang-wenang tentang ponsel mana yang mendapat pembaruan dan mana yang tidak. Samsung Galaxy S4, misalnya, masih terjebak pada 4.4.2.

Ikuti saran yang diberikan oleh jawaban lain: jika Anda memiliki permainan berbasis kanvas maka hindari PhoneGap kecuali Anda dapat menentukan bahwa terjebak dengan mengecualikan ponsel yang menjalankan versi KitKat di bawah 4.4.3 dapat diterima.

Pernikahan Weston
sumber
1

Cobalah membuat ulang gim Anda di libgdx. Libgdx cukup cepat dan tidak memiliki masalah seperti itu dan berfungsi pada semua platform. Sayangnya ini hanya apa yang bisa saya pikirkan saat ini dan saya tidak suka ide mengkonversi js ke android java atau apa pun yang dilakukan oleh pembuat cover. Meskipun akan memakan waktu, berikan LibGDX tes.

captainbuzz123
sumber
1

Sepertinya ini adalah masalah dengan sebagian besar pengembang game. Masalah serupa

"Saya sering mendengar bahwa phonegap bukan pilihan terbaik ketika ingin membuat game kanvas. Ini lebih disesuaikan dengan aplikasi web dengan native."

Tampaknya memberikan kemampuan masalah untuk ponsel android. Ada beberapa mesin yang tidak dapat menangani rendering sprite lebih banyak. Saya tahu 10 objek mudah untuk di-render tetapi jelas terlihat masalah dengan kemampuan rendering.

Saran saya adalah Anda pergi dengan cocoonjs .

Sushobhit333
sumber
1

Saya mengalami masalah yang sama dengan Phaser (dengan game sederhana ini ). Sayangnya, dengan HTML5 dan rendering web / kanvas, Anda berada di tangan ponsel Anda - akan ada pengguna dengan browser yang rusak atau berkinerja buruk (seperti milik saya).

Seperti yang disarankan @ captainbuzz123, satu-satunya solusi nyata adalah pindah ke platform non-HTML5. Alat pilihan saya untuk saat ini adalah OpenFL .

Sementara aplikasi Phaser (sangat sederhana) saya berjalan di sekitar 8-12FPS di ponsel saya, dengan OpenFL (karena dialihkan ke C ++ dan dijalankan melalui Android NDK), saya akhirnya mendapatkan kinerja cairan yang sangat lancar di ponsel saya.

Ini pasti patut dicoba.

ashes999
sumber
1

Pembaruan untuk minggu pertama tahun 2020:

Cocoonjs mungkin merupakan solusi yang solid untuk masalah ini di masa lalu tetapi mereka mematikan .. kutipan dari situs web resmi mereka yang mengatakan itu semua

Dengan sangat menyesal kami mengumumkan bahwa kami akan berhenti menyediakan layanan tercinta kami, Cocoon.

Kami memulai Ludei / Cocoon karena kami yakin masa depan pengembangan aplikasi dan game akan berbasis di HTML5. Sayangnya, itu tidak terjadi dan pengembangan asli lebih kuat dari sebelumnya.

Ini sebenarnya mencerminkan pengembangan HTML5 untuk ponsel pada tahun 2019 .. bukan itu tidak mungkin, tetapi tidak efektif seperti yang diharapkan ...

Saya beralih ke pengembangan asli setelah beberapa game produksi dibangun dengan Phaser dan Cordova untuk iOS dan Android. Muak dengan memukul langit-langit kinerja bahkan pada mekanik paling sederhana pada perangkat ujung menengah

Hanya untuk berbagi opsi solusi teknologi / tumpukan berikutnya untuk dipilih bagi siapa saja yang melihat ini di masa sekarang atau yang akan datang:

  • SpriteKit untuk iOS dan LibGDX untuk Android: Ini mungkin akan menjadi solusi yang paling berkinerja walaupun akan membutuhkan pengembangan untuk setiap platform secara terpisah .. tetapi juga akan menjadi yang paling "level rendah"

  • Cocos2D-X tidak benar-benar yakin seberapa baik didukung dan apakah itu masih pilihan yang valid tetapi harus sangat dewasa dan pemain + Anda dapat menulis di C ++ dan membangun untuk platform apa pun yang ada

  • Corona tampak seperti platform lintas dan kerangka kerja yang menarik (dan gratis), menggunakan Lua perlu mengujinya vs solusi lain yang disebutkan di sini

  • Gunakan salah satu mesin modern seperti Unity atau Godot . Tidak yakin bagaimana ini membandingkan dengan kerangka kerja kinerja yang bijaksana

Semoga ini bisa membantu siapa pun ..

Bot Biru
sumber
0

Melihat ini beberapa hari yang lalu, mungkin patut dilihat untuk menyelesaikan masalah ini. Kedengarannya seperti ide yang cukup bagus untuk saya: http://tmtg.net/glesjs/

Fakta bahwa itu berfungsi dengan baik ketika di browser, tetapi tidak ketika di Phonegap / Cordova memang sangat aneh. Seluruh situasi kanvas / webGL di Android (tidak dapat berbicara untuk iOS) selalu tampak sangat mengerikan bagi saya. Jelas sesuatu yang GOogle perlu gunakan lebih banyak energi, mungkin Lollipop akan menjadi peningkatan!

Milo Mordaunt
sumber