Sviluppare un sistema di incontro RPG


8

Sono nel mezzo di un sistema di incontro per un gioco di ruolo XNA. L'idea è che cammini in un dungeon e alcune tessere sono trasformate in RandomBattleTiles e hai un'area nella mappa che definisce quali mostri possono essere incontrati. Quello di cui ho bisogno è un modo per tracciare il modo in cui un mostro si livella e come aumenti le statistiche. Stavo pensando a qualcosa del genere:

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

Sarebbe corretto? Le mosse seguirebbero un modello di definizione simile.

Risposte:


5

Ho visto questo tipo di database XML usato in alcuni roguelike.

Ti suggerisco di memorizzare separatamente le specie e le tabelle degli incontri casuali.

Non è necessario mettere un insieme separato di statistiche per ogni livello possibile. Basta usarne uno per il livello minimo e uno per il massimo. Il tuo gioco dovrebbe interpolare tra loro per ottenere le statistiche del mostro in base al suo livello.

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

Quindi, separatamente, crea gli incontri casuali:

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

So che questo è davvero oltre il punto, ma nel tuo esempio un mostro di specie 1 con un livello 26+ non userebbe mai la barra?
lathomas64,

Sì, ma a quel punto il giocatore dovrebbe avere una statistica di difesa più alta, rendendo Slash un attacco inefficace. Si tratta di Balance, no?
Patrick Godwin,

Piuttosto che usare il Livello 1 e il Livello 100, non potrei avere una classe Stat, fare BaseStat e MaxStats e quindi avere un limite di livello mostro globale?
Patrick Godwin,

Sì, suppongo che sarebbe più conveniente dichiarare il limite di livello come una sorta di costante globale invece di codificarlo a un numero fisso come 100.
Utente non trovato il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.