弾丸パターンを効果的に作成する方法


8

現在、東方のようなトップダウンのシューティングゲームを作成しています。ゲームの最も重要な要素は、弾丸が生成されてプレーヤーに発砲されるさまざまなパターンと方法がたくさんあることですこのビデオを参照してください:http : //www.youtube.com/watch?v=4Nb5Ohbt1Sg # start=0 :60;終了= 9:53 ;

現時点では、移動と撮影の一連のステップがある「パターン」というクラスを使用しています。ただし、この方法は攻撃ごとに新しいパターンを作成する必要があり、おそらく特定の動作を実装する新しいBulletクラスを作成する必要があるため、非常に手間がかかると感じています。

この質問には、特定のパターンで弾丸を簡単に作成および保存するためにBulletMLを調べる必要があることを示すコメントが寄せられました。見た目はまともですが、他にどのような解決策がありますか。

更新

私の現在のデザインは次のとおりです:

UML図

実装されたパターンの例:

私のGigasPatternは、最初にアリスを画面上の特定のポイント(X、Y)に移動するテレポートを実行します。これが完了すると、パターンはMoverを使用してスプライトを移動し始めます(テレポーティングには個別のエフェクトとアニメーションがあります)。これらは非常に単純なので、実際には問題ありません。

シューターはまた、さまざまな攻撃を作成します。これも、私が投稿した質問のように、シューターがさまざまなパターンの弾丸を作成するために使用できるクラスです。ムーバーが目的地に到達すると、ムーバーとシューターの両方が停止し、非アクティブな状態に戻ります。パターンが完了し、AIによって削除され、新しいパターンが選択されます。

回答:


4

どんなに面倒でも、そのようなレベルを作成するのは簡単な作業のように見え、それほど難しくはないかもしれませんが、常に多くの時間がかかります。(大まかな見積もり:そのビデオと同じくらいクールなものの再生時間の1000倍。)

スクリプト言語を使用する場合でも、まったく同じコードを別の言語で記述する必要があります。その利点は、コンパイルされたコードをいじらずにスクリプトレベルを作成できることです。あなたが大きなチームで働いているなら、あなたは間違いなくそれを望んでいるでしょうが、単独の開発者としては、通常、大きな違いはありません。

BulletML自体は答えではありません。ゲームの他の部分と連動する必要のある、使用言語での実装が必要です。それでも、これらすべてのXMLファイルを作成するという大きな仕事があります。

クラスの望ましいパターンをプログラミングすることに固執するべきだと私は言う傾向がありますが、おそらく現在の構造のいくつかのサンプルを明らかにすることができ、改善すべき点があるかもしれません。

編集:
物事を少し単純化し、わずかに優れたツールボックスを提供する1つの実現があるかもしれません。AIをパターンとして説明することもできますが、1つのタイプのエンティティのみが理想的ですが、そのようなエンティティは同じタイプの別のエンティティを呼び出してジョブを実行することを選択できます。これにより、責任の伝播をネストできる深さに制限がなくなり、検討するクラスのタイプが1つ少なくなります。

少なくともそれは私が図から収集したものです。質問に含めるコードの量を制限する必要があるのは当然ですが、実際のコードを見ることの完全な代用はありません。


確かに、助けてくれてありがとう。現在のデザインの簡略化されたUMLダイアグラムと、デザインの実際のアプリケーション例を含めました。お役に立てば幸いです。
IAE

2

ゲームに独自の小さなスクリプト言語を実装できるかもしれません。次に、新しいスクリプトを追加するだけで、弾丸の動作をスクリプト化できます。独自のスクリプト言語の利点は、ゲームの他の部分でそれを使用できることです。または、Luaを使用してみてください(使用している言語/フレームワークがわかりません)。しかし、私の意見では、ムーヴィンなパターンを作りたいだけの場合、Luaはやりすぎです。

間:私はすでにスペースシューターのためにこれを行いましたが、敵の行動のためです。うまくいったので、実際に試してみてください。


私はASを使用していますが、ローカルリソースを使用するのにあまり適していませんが、スクリプト言語またはXMLを使用することは価値があるかもしれません。
IAE

2

私は少し前にまったく同じ状況にあり、弾丸パターンの独自のアーキテクチャの実装を開始しました。ただし、C#/ XNA用のBulletMLの実装に出会ったため、あきらめました。BulletMLC#

いくつか変更を加える必要がありましたが、今では見事なパターンを作成するのは本当に簡単です。偉大なデモがあり、ここであなたはどのように、XMLの数行のショーは、素晴らしいパターンを作成することができます。

C#で作業している場合は、ホイールの再発明を避けることを強くお勧めします。特に、非常に複雑なパターンが必要な場合。BulletMLに頭を回すには少し時間がかかるかもしれませんが、私の意見では、時間をかける価値は十分にあります。

ただし、BulletMLを使用しない場合は、少なくとも、C#コードを調べて、そのアーキテクチャについて理解してください。それはあなたにいくつかのアイデアを与えるかもしれません。


ありがとう!私はこのプロジェクトのためにActionScriptから離れ始めたばかりで、現在はC#/ XNAで記述しています。私は間違いなくコードを見るつもりです、ありがとう。
IAE、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.