Mengembangkan Sistem Encounter RPG


8

Saya berada di tengah-tengah sistem pertemuan untuk RPG XNA. Idenya adalah, Anda berjalan di sekitar ruang bawah tanah, dan ubin tertentu dibuat sebagai RandomBattleTiles, dan Anda memiliki area di peta yang mendefinisikan monster apa yang bisa ditemui. Yang saya butuhkan adalah cara untuk tata letak tingkat monster dan bagaimana itu meningkatkan stat. Saya sedang memikirkan sesuatu seperti ini:

<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>

Apakah ini tepat? Gerakan akan mengikuti pola definisi yang sama.

Jawaban:


5

Saya telah melihat jenis database XML yang digunakan dalam beberapa roguelikes.

Saya sarankan Anda menyimpan spesies dan tabel pertemuan acak secara terpisah.

Anda tidak perlu meletakkan set statistik yang terpisah untuk setiap level yang memungkinkan. Cukup gunakan satu untuk level minimum dan satu untuk maksimum. Game Anda harus diinterpolasi di antara mereka untuk mendapatkan statistik monster sesuai dengan levelnya.

<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>

Kemudian, secara terpisah, buat pertemuan acak:

<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>

Saya tahu ini benar-benar tidak penting tetapi dalam contoh Anda apakah monster spesies 1 dengan levle 26+ tidak pernah menggunakan tebasan?
lathomas64

Ya, tetapi pada saat itu pemain harus memiliki stat pertahanan yang lebih tinggi, membuat Slash serangan yang tidak efektif. Ini semua tentang Balance, bukan?
Patrick Godwin

Daripada menggunakan Level 1 dan Level 100, tidak bisakah saya memiliki kelas Stat, melakukan BaseStat dan MaxStats, dan kemudian memiliki tutup level monster global?
Patrick Godwin

Ya, saya kira akan lebih mudah untuk mendeklarasikan level cap sebagai semacam konstanta global daripada mengkodekannya ke nomor tetap seperti 100.
Pengguna tidak ditemukan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.