Desarrollando un sistema de encuentro RPG

8

Estoy en medio de un sistema de encuentro para un XNA RPG. La idea es que camines alrededor de una mazmorra, y ciertas fichas están marcadas como RandomBattleTiles, y tienes un área en el mapa que define qué monstruos se pueden encontrar. Lo que necesito es una forma de diseñar la forma en que un monstruo se nivela y cómo aumenta su estadística. Estaba pensando en algo como esto:

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

¿Sería esto correcto? Los movimientos seguirían un patrón de definición similar.

Patrick Godwin
fuente

Respuestas:

5

He visto este tipo de base de datos XML utilizada en algunos roguelikes.

Le sugiero que almacene las especies y las tablas de encuentros aleatorios por separado.

No necesita poner un conjunto separado de estadísticas para cada nivel posible. Solo use uno para el nivel mínimo y uno para el máximo. Tu juego debe interpolarse entre ellos para obtener las estadísticas del monstruo de acuerdo con su nivel.

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

Luego, por separado, crea los encuentros aleatorios:

<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>
Usuario no encontrado
fuente
Sé que esto está realmente fuera del punto, pero en su ejemplo, ¿un monstruo de la especie 1 con un levle 26+ nunca usaría una barra oblicua?
lathomas64
Sí, pero para entonces el jugador debería tener una estadística de defensa más alta, haciendo de Slash un ataque ineficaz. Esto se trata de equilibrio, ¿no?
Patrick Godwin
En lugar de usar el Nivel 1 y el Nivel 100, ¿no podría tener una clase Stat, hacer BaseStat y MaxStats, y luego tener un límite de nivel de monstruo global?
Patrick Godwin
Sí, supongo que sería más conveniente declarar el límite de nivel como una especie de constante global en lugar de codificarlo a un número fijo como 100.
Usuario no encontrado el