11

私は将来のゲームのために C++ でゲーム エンジン ランタイム環境に取り組んでおり、Android をプラットフォームとして検討し始めています。Java と密接に結びついており、Java VM を多用していることに気付きました。

しかし、Android NDK で完全な C++ ランタイム環境を維持することは可能でしょうか? 私は Java に対して何も反対しておらず、必要に応じて Java を使用する準備ができていますが、パフォーマンスは私の最大の関心事の 1 つです (私のゲームはリソースを集中的に使用するつもりです)、特に電話で。

また、完全な C++ 環境が可能である場合、Eclipse Indigo CDT にどのように実装すればよいでしょうか? 最大限のパフォーマンスを得るために、事前に Android 用のコンパイル済みゲーム実行ファイルを作成することはできますか? また、Eclipse にインストールする必要がある追加のプラグインはありますか? ゲームのコンパイルに MinGW を使用できますか? それとも、別のコンパイラを使用する必要がありますか? なんらかの方法で Java を使用する必要がある場合、C++ コードのコンパイルが必要になるでしょうか? これらはすべて、Eclipse IDE で安定した開発環境を実現するために答えたい質問です。

私はまだ Android 開発とマルチプラットフォーム プログラミング全般にかなり慣れていないことを知っておいてください。私の目標は、新しいハードウェア、特に携帯電話を最大限に活用するゲーム エンジンを作成することです!

皆さんのアドバイスに感謝します!

4

3 に答える 3

9

Android 2.3 (API 9) で追加された NativeActivity は、C++ のみを使用して Android ゲームを作成するという点で探しているものかもしれません。http://developer.android.com/reference/android/app/NativeActivity.html

しかし、あなたはこれに慣れていないので、すぐに自分で作成するのではなく、現在利用可能な Android ゲーム エンジンの 1 つから始めたいと思うかもしれません。モバイル デバイスには、他のプラットフォームとはまったく異なる一連の制約があります。バッテリーが午後半ばに切れてしまうと、電話はあまり役に立ちません。そのため、「リソース集約的」であるという明確な目標を持ってプロジェクトを開始することは、すでに悪いスタートを切っています. 夕方に電話をかけられないことを意味する場合、あちこちで 20 分間ゲームをプレイしたいと思う人はほとんどいません。

ハイエンドのグラフィックスを狙っているのであれば、デバイスにはこの分野で幅広い機能があり、ハイエンドのみをターゲットにすることで視聴者が制限されることに注意してください。異なる GPU には非常に異なる戦略とパフォーマンス特性があり、すべてが優れている場合と遅れている場合があります。最も成功したモバイル ゲームは、最高のポリカウントや最も複雑なライティング シェーダーを備えたゲームではなく、一貫してスムーズなフレームレートを実現し、独特のスタイルを持つゲームです。

Android 用の既存のゲーム エンジンのいくつかを見て、試してみてください。いくつかの小さなゲームを作成してテスト ドライブに使用し、実行しようとしているものと一致する場所と一致しない場所を確認します。利用できるものに限界を感じている場合は、学んだことを取り入れて、作成したいゲームの種類に合った独自のエンジンを作成してみてください。

ここにいくつかのリンクがあります。これらのエンジンは、Android マーケットで非常に人気のあるいくつかのゲームを支えており、多くの開発者がそれらの有用性を認識しています。

http://www.andengine.org/ andengine は Java で書かれており、オープン ソースです。

http://unity3d.com/ Unity は C# と Mono に基づいています。

http://www.madewithmarmalade.com/ Marmalade、以前の Airplay SDK は C++ に基づいています。

于 2011-10-01T19:01:22.200 に答える
2

注目したいのは@adampさんの回答です。あなた自身の危険で彼の答えを無視してください。

ただし、質問の他のいくつかの点に対処するには:

最大限のパフォーマンスを得るために、事前に Android 用のコンパイル済みゲーム実行ファイルを作成することはできますか?

いいえ、Android が「コンパイルされたゲーム実行可能ファイル」を使用しない限り。C/C++ コードは Linux 共有オブジェクト (.so) ファイルにコンパイルされ、APK ファイル内の他の要素 (マニフェストなど) と一緒にパッケージ化されます。ただし、.so のコンパイルは前倒しになります。

ゲームのコンパイルに MinGW を使用できますか? 別のコンパイラを使用する必要がありますか?

Windows 上の Cygwin で NDK 開発を行おうとすると、目をつぶってしまうような印象を受けます。OS X または Linux で NDK 開発を行うことを心からお勧めします。少なくとも、Ubuntu などを含む VirtualBox をセットアップして、NDK コンパイルを実行します。

とにかく、NDK には独自の GCC コンパイラが付属しています。私の知る限り、MinGW はクロスコンパイラではなく、ほとんどの Android デバイスは x86 CPU で動作していません。

なんらかの方法で Java を使用する必要がある場合、C++ コードのコンパイルが必要になるでしょうか?

はい。現在、Honeycomb では、OpenGL 作業に Renderscript を使用するオプションがあります。これは、コードを NDK でコンパイルする必要がない C99 環境に相当します。

于 2011-10-01T19:25:59.407 に答える
-1

私はそれらの束を試しました、そして私が見つけた最高のものの1つは、他のデバイスの束に即座にクロスコンパイルし、HTML5 / C ++コンボ(sweeeeet)であなたのグッズをプログラムしましょうMoSync(http://www.mosync .com /)ともう少しセットアップに適したもう1つのあまり知られていないものは、MotorolaのMotoDevです(http://developer.motorola.com/tools/motodevstudio/?utm_campaign=mhp01092012&utm_source=mhp&utm_medium=mws

セットアップの手間を防ぐために使用できる仮想マシンのイメージとチュートリアルがいくつかあることに気づきました。

于 2012-06-11T22:45:09.980 に答える