この種のXMLデータベースがいくつかのローグライクで使用されているのを見てきました。
種とランダムエンカウンターテーブルは別々に保存することをお勧めします。
考えられるすべてのレベルに個別の統計セットを配置する必要はありません。最小レベルに1つ、最大レベルに1つ使用してください。あなたのゲームはそのレベルに従ってモンスターの統計を取得するためにそれらの間を補間する必要があります。
<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>
次に、個別にランダムなエンカウンターを作成します。
<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>