RPGエンカウンターシステムの開発


8

XNA RPGの遭遇システムの真ん中です。アイデアは、ダンジョンを歩き回り、特定のタイルがRandomBattleTilesとして作成され、マップ内に、遭遇できるモンスターを定義する領域があるというものです。私が必要としているのは、モンスターがレベルを上げる方法と、それがどのようにステータスが増加するかをレイアウトする方法です。私はこれらの線に沿って何かを考えていました:

<Species>
    <Name>MonsterA</Name>
    <ID>001</ID>
    <SpriteName>monstera_sprite</SpriteName>
    <Levels>
       <Level>
          <LevelID>1</LevelID>
          <Stats>
              <Attack>12</Attack>
              <Defense>10</Defense>
              <Speed>20</Speed>
          </Stats>
          <Moves>
               <Move ID="1" Level="2"/>
          </Moves>
        </Level>
     </Levels>
</Species>

これは適切でしょうか?移動も同様の定義パターンに従います。

回答:


5

この種のXMLデータベースがいくつかのローグライクで使用されているのを見てきました。

種とランダムエンカウンターテーブルは別々に保存することをお勧めします。

考えられるすべてのレベルに個別の統計セットを配置する必要はありません。最小レベルに1つ、最大レベルに1つ使用してください。あなたのゲームはそのレベルに従ってモンスターの統計を取得するためにそれらの間を補間する必要があります。

<Species>
    <Name>MonsterA</Name>
    <ID>001</ID>
    <SpriteName>monstera_sprite</SpriteName>
    <Levels>
       <!-- Monster's stats at level 1 -->
       <Level>
          <LevelID>1</LevelID>
          <Stats>
              <Attack>12</Attack>
              <Defense>10</Defense>
              <Speed>20</Speed>
          </Stats>
       </Level>
       <!-- Monster's stats at level 100 -->
       <Level>
          <LevelID>100</LevelID>
          <Stats>
              <Attack>1200</Attack>
              <Defense>900</Defense>
              <Speed>15</Speed>
          </Stats>
       </Level>
    </Levels>
    <Moves>
        <!-- Monster's possible moves, according to its level and the circumstances of battle -->
        <Move Name="Slash" MinLevel="1" MaxLevel="25" AiRestrictions="Always" />
        <Move Name="Heal" MinLevel="15" MaxLevel="100" AiRestrictions="HP<25%" />
        <Move Name="Poison" MinLevel="25" MaxLevel="100" AiRestrictions="Enemy.Status!=POISON" />
    </Moves>
</Species>

次に、個別にランダムなエンカウンターを作成します。

<RandomEncounters>
    <RandomEncounter>
        <ID>100</ID>
        <Probability>3</Probability>
        <ExperiencePoints>3600</ExperiencePoints>
        <Gold>1000</Gold>
        <Monsters>
            <Monster Species="1" MinLevel="17" MaxLevel="20" />
            <Monster Species="2" MinLevel="11" MaxLevel="12" />
            <Monster Species="2" MinLevel="11" MaxLevel="12" />
        </Monsters>
    </RandomEncounter>
</RandomEncounters>

私はこれが本当にポイントの外にあることを知っていますが、あなたの例では、26歳以上のレベル1の種1のモンスターがスラッシュを使用しないでしょうか?
lathomas64 2010

ええ、しかしそれまでにプレイヤーはより高い防御ステータスを持つべきであり、スラッシュを無効な攻撃にします。これはバランスの問題です。
Patrick Godwin

レベル1とレベル100を使用する代わりに、Statクラスを作成し、BaseStatとMaxStatsを実行してから、グローバルモンスターレベルの上限を設定することはできませんか?
Patrick Godwin

ええ、私は100のように固定された数にそれをハードコーディングするのではなく、グローバル定数のいくつかの種類として、レベルキャップを宣言する方が便利だろうと思います
見つからないユーザー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.