0

私はファンタジーターンベースゲームに取り組んでいます。次に、呪文のデータベース構造を作成する必要があります。問題は、それを作成する方法について本当に良い考えがないことです。たぶん、それらの呪文の効果はデータベースに保存されるべきではありませんか?

たとえば、効果は次のようになります。攻撃力を上げる、敵を引き寄せる、ヒールする、テレポートする、隠れる、地雷を設置するなど… 効果はかなり異なり、データベース構造を拡張可能にしたいと考えています。

編集:

ターンベースのゲームで、時間はターンと同じで、距離は正方形を表します。以下に私が意味することのいくつかの例を示します。

焼却があるとしましょう:

  • 敵1体のみを対象にできる(味方ではない)
  • 3マスの距離でキャストできます
  • 毎ターン5ダメージを与える
  • それは3ターン続く

これで、Shock Wave を取得できます。

  • 4マス一列に移動する
  • 詠唱者の近くのマスから始まります
  • 最初に命中したターゲット(味方または敵)にダメージを与える
  • 対象に 5 ダメージを与え、1 マス後退させる

そして最後のレインコール:

  • 任意の距離にキャストできます
  • それは5x5の正方形の大きさの雲です
  • 味方と敵の両方をターゲットにできる
  • 火のクリーチャーのみがダメージを受ける
  • 詠唱中、詠唱者は動けなくなり、毎ターン5マナを失う

ご覧のとおり、可能な列はたくさんあります: 移動距離、ターン、キャスト距離、タイプ (ダメージ、ヒール、アーマーなど)、値 (+2)、ターゲット (敵、味方、両方)、サイズ、等

4

2 に答える 2

1

呪文の保存にリレーショナル データベースは使用しません。リレーショナル データベースは、次の条件のほとんどが当てはまる場合に適しています。

  • 非常に大量のデータがあり、
  • データは n-ary リレーション (表、行、列) として論理的に編成できます。
  • データに同時にアクセスするユーザーが多数いる場合、
  • ACID プロパティが必要です。
  • など

データベースはトラックのようなものです。それらはおおきい。それらは使いにくいです。それらは高価です。(必要な専門知識、メンテナンス時間、実行時間の効率などの点で、金銭的ではないにしても)彼らは得意なことは得意ですが、それ以外のことは得意ではありません。自転車で十分な場合は、トラックを使用しないでください。

あなたの問題に行きましょう。さまざまなタイプの呪文の数は確実に制限されており、コンパイル時に認識されます。インターフェース ISpell を定義し、各呪文タイプを ISpell を実装するクラスにしないのはなぜですか? (共通コードの抽象クラスを定義することもできます) 次に、SpellFactory を構築して、プログラムの開始時にすべての呪文へのアクセスを提供します。コードに関係なく、外部から呪文にアクセスできるようにする必要がありますか?

SpellFactory のハードコーディングが目的に対して柔軟でない場合は、xml 構成ファイルを使用できます。<spell type="blind" description="bla bla" picture="file.jpg"> <effects> <effect .. /> .. </effects> <range>5</range>私はコンピュータゲームについてあまり知りませんが、これはたとえばシドマイヤー文明ゲームで彼らがしたことです. 次に、SpellFactory でさまざまなスペルをハードコーディングする代わりに、起動時に構成ファイルからそれらを読み取らせることができます。

私の知る限り、データベースの代わりに構成ファイルを使用すると、次の利点があります。

  • これは、高速で簡単、かつ軽量なソリューションです。
  • すべての呪文が同じ列のセットを持つよりもはるかに柔軟です (そのほとんどは特定の呪文には意味がありません)。
  • 実験やバリエーションなどのために、同時に複数のバージョンの呪文セットを用意する方がはるかに簡単です。
  • 機密データを含むデータベースにエンド ユーザーがアクセスすることなく、ゲームをカスタマイズするために xml ファイルにアクセスして操作できるようにすることができます。
  • など。

短所:

  • xml 形式よりもリレーショナル データベースについて知っている人の方が多いため、xml の "要素" を読み取って操作する方法を習得するには数時間かかる場合があります。
于 2012-05-01T10:44:07.253 に答える
0

あなたの質問はかなり大きいです。それは多くのことに依存します。実行時に呪文をロードしますか? たぶん、ゲームの開始時にそれらをロードしますか? どのデータベースを使用しますか?

Amit Bhargavaの提案は優れており、ユーザーが理解しやすいという利点があります。ただし、文字列はかなり遅いので、スペル テーブルでフラグを使用することができます。次に、フラグに基づいて、それがどのタイプの呪文であるかがわかります。

于 2012-04-29T19:42:35.260 に答える