Entwicklung eines RPG Encounter Systems


8

Ich bin mitten in einem Begegnungssystem für ein XNA-Rollenspiel. Die Idee ist, dass Sie in einem Dungeon herumlaufen und bestimmte Kacheln als RandomBattleTiles erstellt werden. Auf der Karte befindet sich ein Bereich, in dem festgelegt ist, welche Monster angetroffen werden können. Was ich brauche, ist eine Möglichkeit, die Art und Weise zu bestimmen, wie ein Monster Level erreicht und wie sich die Statistik erhöht. Ich habe etwas in diese Richtung gedacht:

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

Wäre das richtig? Bewegungen würden einem ähnlichen Definitionsmuster folgen.

Antworten:


5

Ich habe diese Art von XML-Datenbank gesehen, die in einigen Roguelikes verwendet wurde.

Ich schlage vor, Sie speichern die Arten und die zufälligen Begegnungstabellen getrennt.

Sie müssen nicht für jedes mögliche Level einen eigenen Satz von Statistiken erstellen. Verwenden Sie einfach eine für das Minimum und eine für das Maximum. Dein Spiel sollte zwischen ihnen interpolieren, um die Statistiken des Monsters entsprechend seiner Stufe zu erhalten.

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

Erstellen Sie dann separat die zufälligen Begegnungen:

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

Ich weiß, das ist wirklich nebensächlich, aber würde in Ihrem Beispiel ein Monster der Spezies 1 mit einem Level 26+ niemals einen Schrägstrich verwenden?
Lathomas64

Ja, aber bis dahin sollte der Spieler einen höheren Verteidigungswert haben, was Slash zu einem ineffektiven Angriff macht. Hier dreht sich alles um Balance, nein?
Patrick Godwin

Könnte ich anstelle von Level 1 und Level 100 keine Stat-Klasse haben, BaseStat und MaxStats ausführen und dann eine globale Monster-Level-Obergrenze haben?
Patrick Godwin

Ja, ich denke, es wäre bequemer, das Level-Cap als eine Art globale Konstante zu deklarieren, anstatt es auf eine feste Zahl wie 100 fest zu codieren.
Benutzer nicht gefunden
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.