ประสิทธิภาพที่แย่ใน Android เมื่อใช้ APK ทำงานได้ดีในเบราว์เซอร์


12

ฉันได้สร้างโครงการเกมขนาดเล็กใน HTML5 โดยใช้เครื่องมือPhaser (ลองทั้ง 1.1.5 และ 1.1.6) จากนั้นพอร์ตไปยังแพลตฟอร์มมือถือใช้ Phonegap / Cordova สำหรับ Windows Phone 8, Android และ iOS

ในเกมของฉันมีองค์ประกอบประมาณ 10 องค์ประกอบซึ่งทำให้เคลื่อนไหวได้ (ย้ายจากจุดหนึ่งไปยังอีกจุดหนึ่งและหมุนในเวลาเดียวกัน) สำหรับ iOS และ Windows Phone 8 ฉันไม่ประสบปัญหาใด ๆ

แต่สำหรับ Android ประสิทธิภาพที่ยอมรับไม่ได้คือ ในทางกลับกันถ้าฉันรันเกมผ่านเบราว์เซอร์ของอุปกรณ์มันจะทำงานราบรื่นโดยไม่ล่าช้า แต่ APK ที่คอมไพล์ทำงานอย่างกระตุกมากและองค์ประกอบเคลื่อนไหวช้ามาก & ในลักษณะริบหรี่

ฉันได้ตรวจสอบการตั้งค่าสถานะการเร่งความเร็วฮาร์ดแวร์ android ตั้งค่าเป็น "จริง" ในไฟล์รายการ พยายามเปลี่ยนเป็นเท็จด้วย แต่นั่นก็ไม่ได้สะท้อนการเปลี่ยนแปลงใด ๆ ในประสิทธิภาพ

ฉันได้ตรวจสอบเรื่องเดียวกันกับ Android 4.2 บนอุปกรณ์ Samsung S2 และประสิทธิภาพนั้นดีกว่า แต่สำหรับ Asus Nexus Tab 7 (ที่ใช้ Android 4.4) มันค่อนข้างกระตุกในขณะที่ทั้ง OS และ Device นั้นเป็นรุ่นล่าสุด ตรวจสอบบนอุปกรณ์อื่นที่ใช้ Android 4.3 (Samsung Galaxy Grand Duos) และประสิทธิภาพที่ไม่ดีเลย

ในเกมของฉันลองใช้ทั้งการสร้างการแสดงผล WebGL / Canvas (เครื่องมือของ Phaser ใช้ Pixi.js ซึ่งสามารถย้อนกลับไปเป็นผืนผ้าใบ 2d หากไม่รองรับ WebGL) แต่ไม่มีการเปลี่ยนแปลง ในทำนองเดียวกันกับขาตั้ง

หากใครอื่นประสบปัญหาที่คล้ายกันและสามารถแนะนำวิธีการรับพื้นเมืองเช่นประสิทธิภาพ ฉันตรวจสอบตัวอย่าง cocoonjs และในขณะที่พวกเขาดูราบรื่นและยอมรับได้ฉันไม่สามารถไปหาเส้นทางนั้นได้


3
คำถามนี้เขียนได้ดีมาก ฉันต้องการทราบว่าคุณใช้เกณฑ์มาตรฐานหรือผู้สร้างโปรไฟล์เพื่อจำกัดความผิดที่อาจเป็นผู้ร้ายหรือไม่และหากคุณติดต่อ phonegap ด้วยขั้นตอนง่าย ๆ ในการทำซ้ำสิ่งนี้
AturSams

ฉันยังไม่ได้เขียนไปที่ phonegap พยายามสร้างโปรไฟล์และไม่พบสิ่งผิดปกติกับเฟรมเวิร์กหรือโค้ดเบส บางทีนั่นอาจเป็นเหตุผลว่าทำไมทุกอย่างทำงานบนเดสก์ท็อปเช่นเดียวกับเบราว์เซอร์มือถือเกินไป สิ่งหนึ่งที่พบคือ Android นั้นมีรันไทม์ที่แตกต่างกันสำหรับแอพที่ใช้ WebView และเบราว์เซอร์ แต่ไม่พบสิ่งใดที่บ่งบอกว่าทำไมการทวีตเล็ก ๆ เช่นนี้ทำให้เกิดความล่าช้าในโหมด APK (WebView) ในความเป็นจริงปัญหานี้จะปรากฏบนแท็บ Nexus ที่ใช้ KitKat ซึ่งกล่าวกันว่ามีมุมมองเว็บที่เร็วที่สุด (ใช้ Chrome)
devilzk83

นี่เป็นการสังเกตที่ตื้นมากในส่วนของฉัน ดูเหมือนว่าคุณอาจเป็นจุดบกพร่อง ฉันไม่เห็นว่าทำไมจะมีความแตกต่างอย่างมากในประสิทธิภาพระหว่างอุปกรณ์ระดับสูง
AturSams

1
ฉันอยากรู้ว่าทำไมคุณไม่ต้องการไปเส้นทาง CocoonJS ฉันเชื่อว่าทั้ง Phaser และ Pixi ทำงานได้ดีภายใน CocoonJS อะไรที่ทำให้คุณไม่ลองตัวเลือกนั้น
Geoff

2
ข้อผิดพลาดที่ทำให้การแสดงผล CSS3 และ Canvas อ่อนแอเป็น webview ที่ใช้ Chromium ใหม่และเป็นความล้มเหลวโดยรวมสำหรับ Cordova / Phonegap devs บน Android ... Ghaaadzoooks ไม่ได้มีใครเลยในการทดสอบประสิทธิภาพ Webview Canvas / CSS3 ของ Google ก่อนบูต KitKat ออกประตู ? ฉันหวังว่ามันจะได้รับการแก้ไขอย่างรวดเร็วและหวังว่าจะโปร่งใสโดยเฉพาะอย่างยิ่งกับผู้ใช้โทรศัพท์มือถือที่มีบุคคลที่ถูกล็อค Android สร้าง ... ที่สุดความล้มเหลว .. ถ้าคุณเป็น Cordova / Phonegap dev หรือใช้ Webview โปรดรายงานข้อผิดพลาดนี้กับ Google Android .. . ข้อมูลเพิ่มเติม: groups.google.com/forum/#!topic/phonegap/1ZxXe6chHZc code.googl

คำตอบ:


2

WebView ที่ใช้ Chromium ทำให้เกิดปัญหานี้ได้รับการอัปเดตใน KitKat เวอร์ชัน 4.4.3 / 4.4.4 ในช่วงกลางปี ​​2014 แต่นั่นเป็นความสะดวกสบายเมื่อพิจารณาจากผู้ขายบางรายได้ทำการตัดสินใจโดยพลการเกี่ยวกับโทรศัพท์รุ่นใดที่ได้รับการอัปเดต ไม่. ตัวอย่างเช่น Samsung Galaxy S4 ยังคงติดอยู่ที่ 4.4.2

ทำตามคำแนะนำที่ให้โดยคำตอบอื่น ๆ : ถ้าคุณมีเกมที่ใช้ผ้าใบหลีกเลี่ยง PhoneGap เว้นแต่ว่าคุณสามารถระบุได้ว่าติดอยู่กับโทรศัพท์ที่ไม่รวมโทรศัพท์ที่ใช้ KitKat รุ่นต่ำกว่า 4.4.3 เป็นที่ยอมรับ


1

ลองสร้างเกมของคุณใหม่ใน libgdx Libgdx นั้นเร็วพอและไม่มีปัญหาแบบนั้นและมันใช้ได้กับทุกแพลตฟอร์ม น่าเสียดายที่นี่เป็นเพียงสิ่งที่ฉันสามารถคิดได้ในตอนนี้และฉันไม่ชอบความคิดในการแปลง js เป็น android java หรืออะไรก็ตามที่ coverter ทำ แม้ว่าจะใช้เวลาสักครู่ให้ทดสอบ LibGDX


1

ดูเหมือนว่านี่เป็นปัญหากับผู้พัฒนาเกมส่วนใหญ่ ปัญหาที่คล้ายกัน

"ฉันมักได้ยินว่าโทรศัพท์นั้นไม่ใช่ตัวเลือกที่ดีที่สุดเมื่อต้องการสร้างเกมผ้าใบมันเหมาะสำหรับเว็บแอปที่เป็นเจ้าของภาษามากกว่า"

ดูเหมือนว่าจะแสดงความสามารถของปัญหาสำหรับโทรศัพท์ Android มีบางเครื่องยนต์ที่ไม่สามารถรองรับการเรนเดอร์เพิ่มเติมได้ ฉันรู้ว่าวัตถุ 10 ชิ้นนั้นง่ายต่อการแสดง แต่แน่นอนว่ามันมีปัญหากับความสามารถในการแสดงผล

คำแนะนำของฉันคือการที่คุณไปกับcocoonjs


1

ฉันพบปัญหาเดียวกันกับ Phaser (กับเกมง่ายๆนี้ ) น่าเสียดายที่ด้วย HTML5 และการแสดงผลบนเว็บ / แคนวาสคุณจะอยู่ในความเมตตาของโทรศัพท์ของคุณ - จะมีผู้ใช้ที่มีเบราว์เซอร์ที่ใช้งานไม่ได้หรือมีประสิทธิภาพต่ำ (เช่นเดียวกับฉัน)

เช่นเดียวกับที่แนะนำให้รู้จักกับ @ captainbuzz123 ทางออกที่แท้จริงเพียงอย่างเดียวคือย้ายไปยังแพลตฟอร์มที่ไม่ใช่ HTML5 เครื่องมือของฉันเลือกสำหรับตอนนี้เป็นOpenFL

ในขณะที่แอพ Phaser ของฉัน (ง่ายมาก) ทำงานที่ประมาณ 8-12FPS บนโทรศัพท์ของฉันด้วย OpenFL (เพราะมันถูกแปลงเป็น C ++ และทำงานผ่าน Android NDK) ฉันจบการทำงานที่ราบรื่นและลื่นไหลบนโทรศัพท์ของฉัน

มันคุ้มค่าที่จะลอง


1

อัปเดตสำหรับสัปดาห์แรกของปี 2020:

Cocoonjsอาจเป็นทางออกที่มั่นคงสำหรับปัญหานี้ในอดีต แต่พวกเขากำลังปิดตัวลง .. ข้อความจากเว็บไซต์ทางการของพวกเขาที่กล่าวถึงมันทั้งหมด

ด้วยความเสียใจอย่างยิ่งที่เราประกาศว่าเราจะหยุดให้บริการอันเป็นที่รักของเรา Cocoon

เราเริ่ม Ludei / Cocoon เพราะเราเชื่อว่าอนาคตของแอพและการพัฒนาเกมจะเป็น HTML5 น่าเสียดายที่มันไม่ได้เกิดขึ้นและการพัฒนาแบบดั้งเดิมนั้นแข็งแกร่งกว่าที่เคย

สิ่งนี้สะท้อนให้เห็นถึงการพัฒนา HTML5 สำหรับมือถือในปี 2019 .. ไม่เป็นไปไม่ได้ แต่ไม่ได้ผลเท่าที่ควร

ฉันเปลี่ยนไปใช้การพัฒนาแบบดั้งเดิมหลังจากเกมการผลิตบางเกมสร้างขึ้นด้วยPhaserและCordovaสำหรับ IOS และ Android เบื่อหน่ายกับเพดานประสิทธิภาพการชนแม้กลไกที่ง่ายที่สุดในอุปกรณ์ระดับกลาง

เพียงแบ่งปันตัวเลือกโซลูชันเทคโนโลยี / สแต็คถัดไปของฉันเพื่อเลือกจากสำหรับทุกคนที่เห็นสิ่งนี้ในปัจจุบันหรืออนาคตอันใกล้:

  • SpriteKit สำหรับ IOS และ LibGDX สำหรับ Android: นี่อาจจะเป็นทางออกที่มีประสิทธิภาพมากที่สุดแม้ว่ามันจะต้องมีการพัฒนาสำหรับแต่ละแพลตฟอร์มแยกต่างหาก .. แต่ก็จะเป็น "ระดับต่ำ" ที่สุด

  • Cocos2D-Xไม่แน่ใจจริงๆว่ามันรองรับได้ดีแค่ไหนและมันยังเป็นตัวเลือกที่ถูกต้อง แต่มันควรจะเป็นผู้ใหญ่มากและนักแสดง + คุณสามารถเขียนใน C ++ และสร้างสำหรับแพลตฟอร์มใด ๆ ที่มี

  • Coronaดูเหมือนจะเป็นแพลตฟอร์มข้ามและเฟรมเวิร์กของนักแสดงที่น่าสนใจ (และฟรี) การใช้Luaจะต้องทดสอบกับโซลูชันอื่น ๆ ที่กล่าวถึงที่นี่

  • หนึ่งในการใช้เครื่องมือที่ทันสมัยเช่นความสามัคคีหรือGodot ไม่แน่ใจว่าสิ่งนี้เปรียบเทียบกับกรอบการทำงานที่กล่าวถึงอย่างชาญฉลาด

หวังว่านี่จะช่วยให้ทุกคน ..


0

เห็นนี้เมื่อวันก่อนอาจจะคุ้มค่าที่จะแก้ไขปัญหานี้ ฟังดูเหมือนเป็นความคิดที่ดีสำหรับฉัน: http://tmtg.net/glesjs/

ความจริงที่ว่ามันทำงานได้ดีเมื่ออยู่ในเบราว์เซอร์ แต่ไม่ใช่เมื่ออยู่บน Phonegap / Cordova นั้นแปลกมากอย่างแน่นอน สถานการณ์ Canvas / webGL ทั้งหมดบน Android (ไม่สามารถพูดสำหรับ iOS) ดูเหมือนจะน่ากลัวสำหรับฉันเสมอ บางสิ่งที่ GOogle ต้องใช้พลังงานมากขึ้นบางที Lollipop อาจเป็นการปรับปรุง!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.