ゲームエンジンのカスタマイズまたは移植について

道具、恒星、惑星 C または C++ を使用してゲームエンジンを開発またはカスタマイズする場合、Android サポートをゲームエンジンに統合するには、次の要件が不可欠です。

  • Android 開発ツールを活用する
  • アクティビティを構築する
  • 画面に描画する
  • 入力イベントを処理する
  • 音声を出力する
  • メモリを管理する
  • テストして磨きをかける
  • Google Play に公開する

このページで説明する要件は、ゲームエンジンをゼロから開発する方法を説明するものではなく、他のプラットフォームと比べて Android の独自性が発揮される領域を示すものです。

Android 開発ツールを活用する

Android Studio に用意されているツールを使用して、次のことができます。

  • プロジェクトを設定する
  • ゲームの作成、デバッグ、パッケージ化を行う
  • システム、CPU、メモリのプロファイラを使用して、ゲームのパフォーマンスを調査する
  • ゲームのパッケージまたは App Bundle の内容を検査する
  • Android SDK および NDK の追加機能を統合する

Android Graphics Inspector は、ゲームのレンダリング パフォーマンスの特性を明らかにし、フレーム プロファイリングを使用してレンダリングされたフレームの詳細を調査します。

Microsoft Visual Studio を主に使用している場合は、Android Game Development Extension(AGDE)を使用して、既存のプロジェクトに Android ターゲットを追加できます。AGDE は、Visual Studio でのネイティブ デバッグをサポートしており、多くの Android Studio プロファイリング ツールのスタンドアロン バージョンを含んでいます。

アクティビティを構築する

ゲームは Activity を構築してインタラクションを行う必要があります。Android のアクティビティのライフサイクルについて学習し、アクティビティの作成、開始、再開、一時停止、停止、破棄のタイミングについて理解します。

GameActivity ライブラリに関するリソースをお読みください。このライブラリは、ネイティブ C または C++ ゲームエンジンの Activity に関連するニーズ(ゲーム ウィンドウ、ライフサイクル、レンダリング、イベント処理)を統合し、それらのニーズに応えます。

画面に描画する

ゲームはオブジェクトとスプライトを画面に描画する必要があります。Android の SurfaceView と、ゲームエンジンでグラフィックを設定する方法を学習しましょう。

Android デバイスは、さまざまな画面リフレッシュ レートをサポートします。フレームのドロップとフレーム バッファのグリッチを防ぐため、ゲームループ内のレンダリングについて学習しましょう。

OpenGL と Vulkan でスムーズなレンダリングを行うため、フレーム ペーシングを実現する方法をお読みください。Android Performance Tuner を使用すると、フレームレートを最適化できます。

マルチサンプル アンチエイリアス(MSAA)を使用してレンダリングの品質を向上させます。MSAA は、わずかなオーバーヘッドで使用できます。詳しくは、ブログ投稿「ほぼ無料のマルチサンプリング アンチエイリアス - タイルベースのレンダリング ハードウェア」をご覧ください。

入力イベントを処理する

ゲームエンジンは、さまざまなソースから入力イベントを受け取ります。臨場感あふれるゲーム エクスペリエンスを実現するため、さまざまな Android 入力ソースをサポートする方法を学習しましょう。

音声を出力する

ゲームエンジンは、さまざまなデバイスと Android バージョンで音声を出力する必要があります。Google のオープンソース C++ 音声ライブラリである Oboe を使用して、ゲームに高性能オーディオを組み込む方法を学習しましょう。

Oboe を使用すると、レイテンシを最小限に抑え、音声の特定の不具合を防ぎ、使用可能な最良のネイティブ ライブラリ(AAudio や OpenSL ES など)を自動選択できます。

メモリを管理する

Android デバイスでは、システムはできるだけ多くのシステムメモリ(RAM)を使用するよう試み、必要な場合はさまざまなメモリ最適化を行って空き容量を増やします。メモリ使用量を管理してゲームの低速化や終了を防ぐ方法を学習しましょう。

テストして磨きをかける

Android アプリは、未処理の例外またはシグナルが原因で予期しない終了が発生すると、クラッシュします。クラッシュの検出と診断を行う方法、スタック トレース、メモリ例外とネットワーク例外、logcat の使い方、Java と Kotlin に特有のエラーを把握する方法を学習しましょう。

Google Play に公開する

プレーヤーは、さまざまな国、ネットワーク状態、データプランにあるさまざまな Android デバイスを使用してゲームをダウンロードします。Google Play を使用して、コンテンツ配信ネットワークのメリットを活用した大規模なゲーム用の App Bundle とアセットパックを配信する方法をご確認ください。