Desenvolvendo um sistema de encontro de RPG

8

Estou no meio de um sistema de encontros para um XNA RPG. A idéia é que você passeie por uma masmorra e determinadas peças são marcadas como RandomBattleTiles, e você tem uma área no mapa que define quais monstros podem ser encontrados. O que eu preciso é de uma maneira de criar um layout do nível de um monstro e de como ele aumenta. Eu estava pensando em algo assim:

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

Isso seria apropriado? Os movimentos seguiriam um padrão de definição semelhante.

Patrick Godwin
fonte

Respostas:

5

Eu já vi esse tipo de banco de dados XML usado em alguns roguelikes.

Sugiro que você armazene as espécies e as tabelas de encontro aleatório separadamente.

Você não precisa colocar um conjunto separado de estatísticas para todos os níveis possíveis. Basta usar um para o nível mínimo e outro para o máximo. Seu jogo deve interpolar entre eles para obter as estatísticas do monstro de acordo com seu nível.

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

Em seguida, crie separadamente os encontros aleatórios:

<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>
Usuário não encontrado
fonte
Eu sei que isso está realmente além do ponto, mas no seu exemplo, um monstro da espécie 1 com um nível 26+ nunca usaria barra?
precisa saber é o seguinte
Sim, mas a essa altura o jogador deve ter um status de defesa mais alto, tornando Slash um ataque ineficaz. Isso é tudo sobre Balance, não?
Patrick Godwin
Em vez de usar o Nível 1 e o Nível 100, eu não poderia ter uma classe Stat, BaseStat e MaxStats e, em seguida, ter um limite global de nível de monstro?
Patrick Godwin
Sim, acho que seria mais conveniente declarar o limite de nível como algum tipo de constante global em vez de codificá-lo para um número fixo como 100.
Usuário não encontrado