NDKを使用せずにAndroidゲームを開発すると、パフォーマンスが大幅に低下すると聞きました。これは真実ですか?
3 に答える
NDK を使用する主な理由は 3 つあります。
- C/C++ コード ベースを再利用したい (例: C++ で書かれたゲーム エンジン、クロスプラットフォーム ゲーム)
- より多くのメモリを取得します (NDK を介してより多くのメモリを使用できます)
- あなたのゲームは非常に CPU を集中的に使用し、すべてのデバイスのパワーが必要です。
それ以外の場合は、好きなものを選択できます。SDK/Java では、OpenGL を NDK と同じ方法で使用できるため、グラフィックが遅くなることはありません。スムーズなゲームプレイを実現するには、GC に注意する必要があります。ゲームが非常に CPU を集中的に使用する場合、C++ でいくつかのメソッドを記述し、JNI 経由で呼び出すことができます。ところで、Dalvik には JIT があるため、Java コードは C コードと同じくらい高速 (場合によってはさらに高速) になります。
いいえ、それは単に真実ではありません。
それは、特定のゲームが何をしているかに大きく依存します。重要な質問は、ゲームが CPU を集中的に使用するか (または大量のメモリを必要とするか) かどうかです。
- そうでない場合は、SDK を使用してください。
- 過去に多くのゲームを書いたことがなく、わからない場合は、ぜひ SDK を使用してください。
- 余分な処理能力で処理できるゲームの部分があったとしても、必要に応じて開発中にいつでもそれらの部分をネイティブ コードに抽出できます。
SDK ではなく NDK を選択する理由の 1 つは、C++ の豊富なバックグラウンドを持っていることです。これにより、その環境での生産性が向上する可能性があります。ただし、ツールセットの現在の状態 (便利なデバッグ、ビルド時間、SDK ライブラリへの簡単なアクセスなど) を考えると、これはほとんど効果的ではありません。
Real Racing 3のような超リアルな 3D ゲームを作成する場合を除き、ndk を使用する必要はありません。単純なグラフィックスを使用するゲームであるか、時間が重要でないゲームである場合は Java で問題ありません。