Je développe un shmup 2D (c'est-à-dire Aero Fighters ) et je me demandais quelles sont les différentes façons de stocker un niveau. En supposant que les ennemis sont définis dans leur propre fichier xml, comment définiriez-vous quand un ennemi apparaît dans le niveau?
Serait-ce basé sur le temps? Mises à jour? Distance?
Actuellement, je fais cela en fonction du "temps de niveau" (la durée pendant laquelle le niveau est en cours d'exécution - la pause ne met pas à jour l'heure). Voici un exemple (la sérialisation a été effectuée par XNA):
<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:level="pekalicious.xanor.XanorContentShared.content.level">
<Asset Type="level:Level">
<Enemies>
<Enemy>
<EnemyType>data/enemies/smallenemy</EnemyType>
<SpawnTime>PT0S</SpawnTime>
<NumberOfSpawns>60</NumberOfSpawns>
<SpawnOffset>PT0.2S</SpawnOffset>
</Enemy>
<Enemy>
<EnemyType>data/enemies/secondenemy</EnemyType>
<SpawnTime>PT0S</SpawnTime>
<NumberOfSpawns>10</NumberOfSpawns>
<SpawnOffset>PT0.5S</SpawnOffset>
</Enemy>
<Enemy>
<EnemyType>data/enemies/secondenemy</EnemyType>
<SpawnTime>PT20S</SpawnTime>
<NumberOfSpawns>10</NumberOfSpawns>
<SpawnOffset>PT0.5S</SpawnOffset>
</Enemy>
<Enemy>
<EnemyType>data/enemies/boss1</EnemyType>
<SpawnTime>PT30S</SpawnTime>
<NumberOfSpawns>1</NumberOfSpawns>
<SpawnOffset>PT0S</SpawnOffset>
</Enemy>
</Enemies>
</Asset>
</XnaContent>
Chaque élément ennemi est essentiellement une vague de types d'ennemis spécifiques. Le type est défini dans EnemyType tandis que SpawnTime est le "temps de niveau" auquel cette onde devrait apparaître. NumberOfSpawns et SpawnOffset est le nombre d'ennemis qui apparaîtront et le temps qu'il faut entre chaque apparition respectivement.
Cela pourrait être une bonne idée ou il pourrait y en avoir de meilleures. Je ne suis pas sûr. J'aimerais voir quelques opinions et idées.
J'ai deux problèmes avec cela: engendrer un ennemi correctement et créer un éditeur de niveau. L'éditeur de niveau est un problème entièrement différent (que je posterai probablement à l'avenir: P).
En ce qui concerne le frai correctement, le problème réside dans le fait que j'ai un temps de mise à jour variable et je dois donc m'assurer de ne pas manquer un spawn ennemi parce que le décalage de spawn est trop petit, ou parce que la mise à jour a pris un peu plus de temps . Je l'ai un peu corrigé pour la plupart, mais il me semble que le problème est de savoir comment je stocke le niveau.
Alors, des idées? Commentaires?
Merci d'avance.