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.

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>

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.