サイトのトップへ戻る

AndEngineドキュメント 日本語訳

ヒントと小技 - パフォーマンスを改善する方法:

パフォーマンスはモバイル端末上でのゲーム開発で最も重要なものです。それはハードウェアのパワーとリソースによって制限されます。 ゲーム開発は、注意深く賢く行う必要があります。 デュアルコアを搭載した携帯など、今日ますます端末は強化されています - しかし、andoridユーザーの大多数は中間クラスの端末を使用しているので、常にそのことを忘れないでください。 Androidの公式 ウェブサイトから引用すると:

効率的なコードを記述するには、二つの基本的なルールがあります:

  • 必要ないことはやらない。
  • できるだけメモリの割り当てをしない。


以下で、AndEngine のパフォーマンスのみに限定したいくつかのヒントを説明しようと思います:



1. Culling - blessing for performance.
Scene上に大量のSpriteを貼り付けている場合、culling 機能を使用することを強くお勧めします。culling とは何をするものでしょうか? これはsprite が画面外にいる間の描写を停止します。たいていの場合 、これを使用するとパフォーマンスが大きく向上することが分かるでしょう (私のゲームでは、ほとんどのSpriteでこれを有効にして ~ 15 FPS 以上の違いが表れました)。使用例:
yourSprite.setCullingEnabled(true);


2. Sprite Batches.

Sprites はOpenGLへ冗長して適用されている多くの設定を共有しており、これにはとてもコストがかかっています。そこで SpriteBatch クラスの出番です。 SpriteBatch クラスはそうした冗長した呼び出しを省略します。そして最も重要なのは、全てのジオメトリ(三角形の頂点) と テクスチャ座標をまとめて一つの大きなバッファに格納し、細切れが非常に多い状態をなくしてパフォーマンスを大幅に向上させます。 そのため、多くのSpriteが同じ設定を共有している場合は(テクスチャが同じであることが必要です)、この機能を使用してください! 詳細情報についてはオリジナルのスレッドを確認してください



3. 可能な限り、オブジェクトを再利用する!

ベストな流れは、まず始めに必要なオブジェクトを全て作成することです。実行中に新たにオブジェクトを作成すると、 GC (ガーベージコレクターGarbage collector) サイクルが引き起こされることがあり、結果としてユーザーはゲーム中にスローダウンが発生したと感じます。 そこで例えば、複数の弾丸を発射する銃のようなものを作成したい場合、新しい弾丸が必要になる度に毎回新規にオブジェクトを作成するのは無謀です。 共有プールを使って既に作成済みのオブジェクトを再利用するのが良いでしょう。詳細情報については、この記事を読みことを推奨します。



4. テーマ無しの背景

AndEngine アプリのパフォーマンスを数 %向上させるには、テーマ無しの背景を作成して、それを activity内で使用することができます。詳細な手順についてはこのスレッドを参考にしてください



5. 低品質のテクスチャとディザリングを組み合わせる。
高品質のテクスチャ(RGBA 8888)ではなく低品質のテクスチャ (RGBA 4444)を使用することで、メモリ使用量を50%カットできます。 しかし、残念ながらこの方法には品質が落ちるという欠点があります - そうは言っても、ディザリングを使えば品質を向上させることはできます。私のウェブサイトに投稿されている以下の記事を参照してください:


エンジェル戦記