APKを実行するとAndroidのパフォーマンスが低下し、ブラウザで正常に実行されます


12

Phaserエンジンを使用してHTML5で小さなゲームプロジェクトを作成しました(1.1.5と1.1.6の両方を試しました)。次に、モバイルプラットフォームに移植するために、Windows Phone 8、Android、iOSでPhonegap / Cordovaを使用しました。

私のゲームには、アニメーション化された(ポイントaからポイントbに移動し、同時に回転する)約10個の要素があります。iOSおよびWindows Phone 8では、問題は発生しませんでした。

しかし、Androidでは、パフォーマンスは受け入れられません。一方、デバイスブラウザーを介してゲームを実行すると、遅延なくスムーズに実行されます。しかし、コンパイルされたAPKは非常にぎくしゃくして動作し、要素の動きは非常に遅く、ちらつきます。

マニフェストファイルで、Androidハードウェアアクセラレーションフラグが「true」に設定されていることを確認しました。falseに変更しようとしましたが、パフォーマンスの変化は反映されませんでした。

Samsung S2デバイスのAndroid 4.2でも同じことを確認しましたが、そのパフォーマンスは向上しています。しかし、Asus Nexus Tab 7(Android 4.4を実行している)では非常にぎくしゃくしていますが、OSとデバイスはどちらも最新です。また、Android 4.3(Samsung Galaxy Grand Duos)を実行している別のデバイスで確認しましたが、そのパフォーマンスもまったく良くありません。

私のゲームではWebGLとCanvasの両方のレンダリングを試みました(PhaserエンジンはPixi.jsを使用しますが、WebGLがサポートされていない場合は2dキャンバスにフォールバックします)が、変更はありません。イーゼルjsでも同様です。

他の誰かが同様の問題に直面し、ネイティブのようなパフォーマンスを得る方法を提案できる場合。cocoonjsの例を確認しましたが、滑らかで許容できるように見えますが、そのルートに行くことはできません。


3
この質問は非常によく書かれています。ベンチマークまたはプロファイラーを実行して原因を絞り込むか、これを再現するための簡単な手順を電話ギャップに連絡したかどうかを知りたいですか?
AturSams 14年

私はまだphonegapに書いていません。プロファイラーを試したところ、フレームワークまたはコードベースで異常なものは見つかりませんでした。おそらくそれが、デスクトップでもモバイルブラウザでもすべてがスムーズに実行される理由です。1つの発見は、AndroidにはWebViewベースのアプリとブラウザ自体のランタイムが異なることです。しかし、このような小さなトゥイーンがAPK(WebView)モードでこれほど大きな遅延を引き起こす理由を示すものは見つかりませんでした。実際、この問題は、最速のWebビュー(Chromeベース)があると言われているKitKatを実行しているNexusタブで発生しています。
devilzk83 14年

これは非常に表面的な観察です。バグが発生しているようです。ハイエンドのデバイス間でパフォーマンスが大きく異なるのはなぜかわかりません。
AturSams 14年

1
なぜCocoonJSルートに行きたくないのか興味があります。PhaserとPixiの両方がCocoonJS内でうまく動作すると信じています。そのオプションを試すことを妨げているのは何ですか?
ジェフ14年

2
不十分なCSS3とCanvasレンダリングを引き起こすバグは、新しいChromiumベースのWebビューであり、AndroidのCordova / Phonegap開発者にとっては大失敗です... ?特にサードパーティのロックされたAndroidビルドを搭載した携帯電話を使用しているユーザーには、この問題が迅速に解決されることを願っています。Utter大失敗。Cordova / Phonegap開発者またはWebviewを使用している場合。詳細:groups.google.com/forum / #! topic

回答:


2

この問題を引き起こしているChromiumベースのWebViewは、2014年半ばにキットカットバージョン4.4.3 / 4.4.4で最終的に更新されましたが、一部のベンダーは、どの電話を更新するか、どの電話を更新するかについて一見arbitrary意的な決定を下したことを考えると、それは冷静ですありません。たとえば、Samsung Galaxy S4は、まだ4.4.2に閉じ込められています。

他の回答で与えられたアドバイスに従ってください:キャンバスベースのゲームをお持ちの場合、4.4.3以下のKitKatバージョンを実行している電話を除外することにこだわると判断できない限り、PhoneGapは避けてください。


1

libgdxでゲームを作り直してみてください。Libgdxは十分に高速で、そのような問題はなく、すべてのプラットフォームで機能します。残念なことに、これは私が今考えることができるものだけであり、私はjsをアンドロイドjavaまたはそのカバータが行うものに変換するという考えが好きではありません。しばらく時間がかかりますが、LibGDXをテストしてください。


1

これはほとんどのゲーム開発者にとっての問題のようです。 同様の問題

「キャンバスゲームを作りたいとき、phonegapは最良の選択ではなかったとよく耳にします。それはWebアプリからネイティブへの適合性が高いです。」

アンドロイド携帯電話のレンダリング機能の問題のようです。より多くのスプライトレンダリングを処理できないエンジンがいくつかあります。10個のオブジェクトは簡単にレンダリングできますが、レンダリング機能に問題があるようです。

私の提案は、cocoonjsを使用することです


1

Phaserで同じ問題に遭遇しました(このシンプルなゲームで)。残念ながら、HTML5とweb / canvasレンダリングでは、あなたはあなたの電話に翻弄されています-壊れたブラウザやパフォーマンスの悪いブラウザ(私のような)がいるでしょう。

@ captainbuzz123が提案したように、唯一の本当の解決策はHTML5以外のプラットフォームに移行することです。今のところ私が選んだツールはOpenFLですです。

私の(非常に単純な)Phaserアプリは、OpenFLを使用して(C ++に変換され、Android NDKを実行するため)携帯電話で約8-12FPSで動作しますが、携帯電話では非常に滑らかで滑らかなパフォーマンスが得られます。

それは間違いなく試してみる価値があります。


1

2020年代の最初の週の更新:

Cocoonjsは、おそらく過去にこの問題の堅実な解決策だったと思われますが、閉鎖されています。すべてを述べている公式Webサイトからの引用

最愛のサービスであるCocoonの提供を停止することを発表したことを深く後悔しています。

Ludei / Cocoonを開始したのは、アプリとゲームの開発の将来がHTML5に基づいていると信じていたためです。残念ながら、それは起こらず、ネイティブ開発はこれまで以上に強力です。

これは、実際には2019年のモバイル向けHTML5開発を反映しています。それが不可能ではないというわけではありませんが、期待どおりに効果的ではありません...

IOSおよびAndroid用のPhaserおよびCordovaで構築されたいくつかの製品ゲームの後、ネイティブ開発に切り替えています。ミディアムエンドデバイスの最も単純なメカニクスでさえ、パフォーマンスの上限に達してしまう

現在または近い将来にこれを見る人のために選ぶための私の次の技術/スタックソリューションオプションを共有するだけです:

  • IOS用のSpriteKitとAndroid用のLibGDX:これはおそらく最もパフォーマンスの高いソリューションになりますが、プラットフォームごとに個別に開発する必要がありますが、最も「低レベル」になります

  • Cocos2D-Xはそれがどれだけ適切にサポートされているか確かではなく、まだ有効な選択肢ですが、非常に成熟していてパフォーマンスが高いはずです

  • Coronaは、興味深い(かつ無料の)クロスプラットフォームおよびパフォーマンスフレームワークのようです。Luaを使用するには、ここで説明した他のソリューションと比較してテストする必要があります。

  • UnityGodotなどの最新のエンジンを使用してください。これが前述のフレームワークのパフォーマンスと比較してどうなのかわからない

これが誰にも役立つことを願っています。


0

先日これを見ましたが、この問題を解決するのに一見の価値があるかもしれません。私にはかなりいいアイデアのように聞こえます:http : //tmtg.net/glesjs/

ブラウザーでは正常に動作しますが、Phonegap / Cordovaでは正常に動作しないという事実は非常に奇妙です。Androidのcanvas / webGL全体の状況(iOSのことは言えません)は、常に私にとって非常に悲惨なように思えました。間違いなく、GOogleはより多くのエネルギーを投入する必要があります。おそらく、ロリポップは改善されるでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.