2

私は Android ゲーム開発にかなり慣れていないことを指摘したいと思います。ゲームをプログラミングするいくつかの方法を試してみましたが、どちらも機能することがわかりましたが、どちらにも独自の利点がありました。ですから、どちらの方法がより良い/一般的な方法であるかを知りたいです。たとえば、ジグソー パズル ゲームを作成しようとしている場合、互いに相互作用し、タッチ イベントに応答する多くのパズル ピース オブジェクトが必要です。

方法 1:

Java から学んだように、同じように動作するオブジェクトが多数ある場合は、クラスを作成してから、そのクラスのオブジェクトを作成する必要があります。これをゲームプロジェクトで試し、ImageViewを拡張したクラス「PuzzlePiece」を作成しました。次に、メイン プログラムでそれらをレイアウトに追加し、メイン アクティビティから移動しました。これはかなり複雑で時間がかかりました。また、それを行う正しい方法のようにも感じませんでした。

方法 2:

ゲーム オブジェクトをコンポーネントとして追加しました (ImageView、ImageButton、画像の背景を持つカスタム レイアウトなど)。このようにして、それらをより適切に制御できるようになり、同時に多くのオブジェクトを保持して相互に作用させることがより簡単になりました。しかし、この方法は非常に遅く、正しい方法とは思えませんでした。

方法 3:

Activity に SurfaceView を追加し、draw() メソッドを使用してすべてのオブジェクトをキャンバスに描画します。この方法ははるかに高速でしたが、この方法ではオブジェクトをあまり制御できませんでした。たとえば、キャンバスに多くのオブジェクトを描画し、それらすべてをタッチ イベントに応答させたり、相互にやり取りさせたりすることは、実現が困難でした。

私が逃した他の方法はありますか、それとも私の方法の1つがこれを行う正しい方法に近いですか?

4

2 に答える 2

1

Androidクラスを使用して物を構築するか、十分なスキルがあれば、andengine.orgや、opengl esを使用する他のオープンソースゲームエンジンのようなものから始めて、opengl es部分をほとんど抽象化することができます。それでもかなりの量の構成を行う必要がありますが、opengl ベースのアプリをゼロから構築する場合ほど悪くはありません。

andengine.org

また、開発コミュニティによって十分にサポートされているオープン ソースの Android ゲーム エンジンも数多くあります。ちょっとググって調べてみてください。そうしないと、ゲームに関して達成したいことのほとんどに気付いたように、通常の android ビューを使用すると、かなり遅くなり、ぎこちなくなります。

于 2013-02-05T00:22:22.383 に答える
1

ネイティブ android の方法では、方法 3 が正しいと思います。しかし、以前経験したように、それはひどく厄介で扱いにくいです (デバイスまたは OS バージョンによっては、GC からの深刻なフレーム ドロップに直面するでしょう。

練習だけなら方法1はAndroidのアーキテクチャを理解しやすいです。方法 3 では、レイアウト レンダリング テクニックをトレーニングできます。しかし、市場に公開することは決して考えないでください。Android の断片化のひどい経験をするでしょう。

実際のゲームを市場に出すことを考えているなら、OpenGL を使わなければなりません。OpenGL を使用するゲーム エンジンはいくつかあります。

于 2013-02-05T00:29:23.410 に答える