Низька продуктивність в Android під час запуску APK, працює у веб-переглядачі


12

Я створив невеликий ігровий проект у HTML5 за допомогою двигуна Phaser (спробував і 1.1.5 і 1.1.6). Потім, щоб перенести його на мобільну платформу, використовували Phonegap / Cordova для Windows Phone 8, Android та iOS.

У моїй грі є близько 10 елементів, які анімуються (переміщення від точки a до точки b і деякий поворот одночасно). На iOS та Windows Phone 8 я не стикався з жодною проблемою.

Але з Android продуктивність неприйнятна. З іншого боку, якщо я запускаю свою гру через браузер пристрою, вона запускається гладко, без будь-якого відставання. Але складений APK працює дуже ривком, і елементи рухаються дуже повільно & мерехтливим чином.

Я перевірив, що прапор апаратного прискорення для Android встановлений на "true" у файлі маніфесту. Спробував також змінити помилкове значення, але це не відобразило жодних змін у роботі.

Я перевірив те саме на Android 4.2 на пристрої Samsung S2 і на цьому продуктивність краща. Але на Asus Nexus Tab 7 (на базі Android 4.4) його дуже хиткий, тоді як ОС і Пристрій - останні. Також перевірили на іншому пристрої під керуванням Android 4.3 (Samsung Galaxy Grand Duos), і на цьому надто продуктивність зовсім не хороша.

У моїй грі спробували рендеринг WebGL / Canvas (Phaser Engine використовує Pixi.js, який повертається до 2d полотна, якщо WebGL не підтримується), але без змін. Аналогічно з easeljs.

Якщо хтось інший стикався з подібним питанням, і може запропонувати будь-який спосіб отримати рідне, як виступ. Я перевірив приклади cocoonjs, і хоча вони здаються гладкими та прийнятними, я не можу йти цим маршрутом.


3
Це питання дуже добре написане. Мені хотілося б дізнатися, чи ви застосували тест чи профілер, щоб звузити, що може бути винуватцем, і якщо ви зв’язалися з фонегапом за допомогою легких кроків для відтворення цього?
AturSams

Я ще не писав у фонегап. Спробував профайлер і не зміг знайти нічого незвичайного з фреймворком або кодовою базою. Можливо, ось чому все працює на робочому столі, а також мобільному браузері. Одне з висновків полягало в тому, що Android має інший час виконання програм для веб-перегляду та самого браузера. Але не вдалося знайти нічого, що вказувало б на те, чому такий невеликий тюнінг викликає стільки відставання в режимі APK (WebView). Насправді ця проблема з’являється на вкладці Nexus під керуванням KitKat, яка, як кажуть, має найшвидший веб-перегляд (на базі Chrome).
devilzk83

Це дуже поверхневе спостереження з мого боку; здається, що ви можете потрапити на помилку. Я не бачу, чому було б сильне розбіжність у роботі між високопродуктивними пристроями.
AturSams

1
Мені цікаво, чому ви не хочете їхати маршрутом CocoonJS. Я вважаю, що і Фазер, і Піксі добре працюють в CocoonJS. Що заважає вам спробувати цей варіант?
Джефф

2
Помилка, що викликає кульгавий CSS3 & Canvas-рендерінг, є новим веб-переглядом на основі хрому, і це повне фіаско для Cordova / Phonegap Devs на Android ... Ghaaadzoooks нікого не перевіряв у Google на тести веб-перегляду полотна / CSS3 перед завантаженням KitKat у двері ? Я сподіваюсь, що це швидко і надійно виправлено, особливо для людей на мобільних телефонах із сторонніми блоками Android ... Повна фіаско. Якщо ви розробник Кордова / Фонегап або використовуєте веб-перегляд, будь ласка, позначте цю помилку за допомогою звітів про помилки Google Android .. більше інформації: groups.google.com/forum/#!topic/phonegap/1ZxXe6chHZc code.googl

Відповіді:


2

Веб-перегляд на базі Chromium, що спричиняє цю проблему, в кінцевому підсумку було оновлено у KitKat версії 4.4.3 / 4.4.4 в середині 2014 року, але це дуже комфортно, враховуючи, що деякі постачальники прийняли деякі, здавалося б, довільні рішення щодо того, який з їхніх телефонів отримав оновлення, а який - ні. Наприклад, Samsung Galaxy S4, як і раніше, залишається в папці 4.4.2.

Дотримуйтесь порад, наданих іншими відповідями: якщо у вас є гра на основі полотна, тоді уникайте PhoneGap, якщо ви не зможете визначити, що застряг із виключенням телефонів, на яких працює версія KitKat нижче 4.4.3.


1

Спробуйте переробити свою гру в libgdx. Libgdx досить швидкий і не має таких питань, і він працює на всіх платформах. На жаль, це лише те, про що я зараз можу подумати, і мені не подобається ідея перетворення js на андроїд-Java або все, що робить те, що прикриває. Хоча це займе певний час, дайте тест LibGDX.


1

Схоже, це проблема у більшості розробників ігор. Аналогічне питання

"Я часто чув, що фонегап був не найкращим вибором, коли хотіли зробити полотні ігри. Він більше адаптований до веб-додатків до рідних".

Здається, це надає можливості випуску для телефонів Android. Є деякі двигуни, які не можуть працювати з більшою кількістю спрайтів. Я знаю, що 10 об’єктів легко зробити, але це, безумовно, виглядає проблемою з можливостями надання.

Моя пропозиція, щоб ви їхали з cocoonjs .


1

Я зіткнувся з тією ж проблемою з Phaser (з цією простою грою ). На жаль, ви користуєтеся HTML5 та рендерінгом веб-полотен, але ви користуєтеся своїм телефоном - знайдуться користувачі зі зламаними або неякісними веб-переглядачами (як-от у мене).

Як і запропонував @ capitalbuzz123, єдине реальне рішення - перейти на не-HTML5 платформу. Наразі моїм інструментом вибору є OpenFL .

У той час як мій (дуже простий) додаток Phaser працює на моєму телефоні близько 8-12 кадрів в секунду, з OpenFL (оскільки він перекладається на C ++ і працює через Android NDK), я отримую дуже плавну, текучу продуктивність на своєму телефоні.

Це обов'язково варто спробувати.


1

Оновлення за перший тиждень 2020 року:

Cocoonjs, ймовірно, був надійним рішенням цього питання в минулому, але вони закриваються .. цитата з їх офіційного веб-сайту, яка говорить про все

Із глибоким жалем оголошуємо, що припинимо надавати кохану послугу, Cocoon.

Ми почали Ludei / Cocoon, тому що вірили, що майбутнє розвитку додатків та ігор буде базуватися на HTML5. На жаль, цього не сталося, і рідний розвиток сильніший як ніколи.

Це насправді відображає розробку HTML5 для мобільних пристроїв у 2019 році. Не те, що це неможливо, але не ефективно, як очікувалося ...

Я переходжу до власного розвитку після деяких виробничих ігор, побудованих за допомогою Phaser і Cordova для IOS та Android. Нагоріли вражаючим плафоном продуктивності навіть найпростішої механіки на пристроях середнього рівня

Просто поділитися своїми наступними варіантами рішення щодо технічного / стекового вибору для тих, хто бачить це в теперішньому чи найближчому майбутньому:

  • SpriteKit для IOS та LibGDX для Android: Це, мабуть, буде найефективнішим рішенням, хоча воно потребує розробки для кожної платформи окремо .. але також буде найбільш "низьким рівнем"

  • Cocos2D-X не дуже впевнений, наскільки він добре підтримується, і чи це все-таки правильний вибір, але він повинен бути дуже зрілим і виконавським + ви можете писати на C ++ і створювати будь-яку платформу

  • Корона здається цікавою (і вільною) крос-платформою та виконавською рамкою, використовуючи Lua , потрібно буде протестувати її та інші рішення, згадані тут

  • Використовуйте один із сучасних двигунів, як Unity або Godot . Не впевнений, наскільки це порівняно з ефективністю згаданих рамок

Сподіваюся, це допоможе комусь ..


0

Побачила це днями, можливо, варто розібратися, щоб вирішити цю проблему. Мені здається дуже приємною ідеєю: http://tmtg.net/glesjs/

Те, що він працює добре, коли в браузері, але не тоді, коли в Phonegap / Cordova, дійсно дуже дивно. Вся ситуація на полотні / webGL на Android (не можу говорити для iOS) завжди здавалася мені дуже страшною. Безумовно, щось потрібно Google вкласти більше енергії, можливо, Lollipop стане вдосконаленням!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.