Développement d'un système de rencontre RPG


8

Je suis au milieu d'un système de rencontre pour un RPG XNA. L'idée est que vous vous promenez dans un donjon, et certaines tuiles sont marquées comme RandomBattleTiles, et vous avez une zone sur la carte définissant quels monstres peuvent être rencontrés. Ce dont j'ai besoin, c'est d'un moyen de définir la façon dont un monstre se nivelle et comment l'augmentation de ses statistiques. Je pensais à quelque chose dans ce sens:

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

Serait-ce approprié? Les mouvements suivraient un modèle de définition similaire.

Réponses:


5

J'ai vu ce type de base de données XML utilisé dans quelques roguelikes.

Je vous suggère de stocker séparément les espèces et les tables de rencontres aléatoires.

Vous n'avez pas besoin de mettre un ensemble de statistiques distinct pour chaque niveau possible. Utilisez-en un pour le niveau minimum et un pour le maximum. Votre jeu doit interpoler entre eux pour obtenir les statistiques du monstre en fonction de son niveau.

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

Ensuite, séparément, créez les rencontres aléatoires:

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

Je sais que c'est vraiment ailleurs, mais dans votre exemple, un monstre de l'espèce 1 avec un niveau 26+ n'utiliserait-il jamais de barre oblique?
lathomas64

Oui, mais d'ici là, le joueur devrait avoir une statistique de défense plus élevée, faisant de Slash une attaque inefficace. Tout est question d'équilibre, non?
Patrick Godwin

Plutôt que d'utiliser le niveau 1 et le niveau 100, ne pourrais-je pas avoir une classe Stat, faire BaseStat et MaxStats, puis avoir un plafond de niveau monstre global?
Patrick Godwin

Ouais, je suppose qu'il serait plus pratique de déclarer le plafond de niveau comme une sorte de constante globale au lieu de le coder en dur à un nombre fixe comme 100.
Utilisateur non trouvé
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.