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.
sumber
Jawaban:
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.
sumber
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.
sumber
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 .
sumber
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.
sumber
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
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 ..
sumber
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!
sumber