0

これはこの質問のフォローアップです。コンテキストは同じなので、スキミングが役立つ場合があります。私はこれについて何日もブレインストーミングを行ってきましたが、どこにも行き着かなかったので、あきらめてここに来ました。

そこで説明したようなシステムを作成するときに、どのような設計パターンが機能するのか疑問に思っています。両側に任意の数の戦闘員を配置できる戦闘アルゴリズムがあるとします。まず、誰が誰を攻撃したかを突き止めてから実行します。

注意が必要な部分は、追加できる追加の動作が多数あり、それらが多少恣意的である可能性があることです。「パッシブスキル」と考えてください。ターゲットに命中したときにステータスが増加するなどの動作もありますが、これは一部の種類の戦闘でのみ発生します。

私の前の質問は、Decorator がどのように失敗したかを示しています。答えは Strategy パターンを提案しましたが、私は何十もの異なるタイプの戦略を書き、次にそれらのそれぞれに対していくつかの具体的なクラスを書きたいとは思っていません。それでも、自分が持っていたものとはまったく異なるまったく新しい行動が必要な場合は、Open Closed の原則に違反する必要があります。一度に複数の戦略を組み合わせる必要がある場合もあり、装飾戦略または複合戦略につながる可能性があります。たとえば、ダメージを受けたときに、1. ダメージを半分にするアビリティを持っている、2. ダメージをさらに軽減するアイテムを装備している、3. 攻撃者にダメージを返している、4. ステータス ポイントを獲得している、などがあります。 .

では、経験豊富な建築家はここで何をするでしょうか? 多くのゲームにこれらのシステムが実装されているので、どのパターンまたはパターンの組み合わせがうまく機能するのか興味があります。

コードの巨大な壁を投稿したくないので、私のシステムの特定の部分がある場合は、コメントで質問してください.

4

1 に答える 1

0

これは、ゲームの仕組みに関する知識を必要とする大きな問題です。しかし、私はこの勧告から始めます。最初のステップは、明確に定義され文書化された操作順序があることを確認してから、それを戦闘解決アルゴリズムのフレームワークまたはテンプレートに変換することです。例えば:

たとえば、ダメージを受けたときに、1. ダメージを半分にするアビリティを持っている、2. ダメージをさらに軽減するアイテムを装備している、3. 攻撃者にダメージを返している、4. ステータス ポイントを獲得している、などがあります。 .

#3(ダメージの反射)が最初に発生し、次に#4(統計を取得し、おそらくptを防御することさえあります)、次に#1と#2が発生した場合はどうなりますか. この場合、防御側は返されたダメージを最大化し、防御力も最大化する可能性があります。

これらの手順を特定の順序でリストしましたが、なぜですか? 各ステップ (攻撃と防御) がいつ適用されるかがわかるように、ルールを定義する必要があります。そうして初めて、戦闘を解決するためのシステムを作成できます。例えば:

  1. ベースダメージから始める
  2. 攻撃によってトリガーされる攻撃効果を適用する
  3. 攻撃によってトリガーされる防御効果を適用する
  4. すべての攻撃者のダメージを増加させる生来の能力を適用する
  5. アタッカーのダメージ増加装備アビリティをすべて適用する
  6. すべての防御者のアーマーを増加させる生来の能力を適用する
  7. ディフェンダーのアーマー増加装備アビリティをすべて適用する
  8. 防御発動のアタッカー効果を適用する
  9. 防御発動の防御効果を適用する
  10. ダメージを受ける
  11. ダメージ発動のアタッカー効果を適用
  12. ダメージによって誘発される防御効果を適用する

これはお尻からです、私はあなたのルールシステムを知りません。

これを取得したら、ソース、ターゲット、(開始) ダメージ、リスト AttackEffects、および DefenseEffects のリストを含むように戦闘をモデル化することを検討してください。これらの効果は、OnAttack()、OnApplyInnate()、OnApplyEquipment()、OnDamaged() などを使用してテンプレート (テンプレート メソッド パターン) としてコーディングする必要があります。その後、戦闘解決のさまざまなフェーズで効果を反復し、それぞれに機会を与えることができます。適切なタイミングでその効果を適用します。

于 2012-09-10T15:23:24.410 に答える