Sto sviluppando uno shmup 2D (ovvero Aero Fighters ) e mi chiedevo quali sono i vari modi per memorizzare un livello. Supponendo che i nemici siano definiti nel loro file xml, come definiresti quando un nemico apparirà nel livello?
Sarebbe basato sul tempo? Aggiornamenti? Distanza?
Attualmente lo faccio in base al "tempo di livello" (la quantità di tempo in cui il livello è in esecuzione - la pausa non aggiorna il tempo). Ecco un esempio (la serializzazione è stata eseguita da 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>
Ogni elemento nemico è fondamentalmente un'ondata di tipi nemici specifici. Il tipo è definito in EnemyType mentre SpawnTime è il "tempo di livello" che dovrebbe apparire questa onda. NumberOfSpawns e SpawnOffset è il numero di nemici che appariranno e il tempo necessario rispettivamente tra ogni spawn.
Questa potrebbe essere una buona idea o ce ne potrebbero essere di migliori là fuori. Non ne sono sicuro. Mi piacerebbe vedere alcune opinioni e idee.
Ho due problemi con questo: generare correttamente un nemico e creare un editor di livelli. L'editor di livello è un problema completamente diverso (che probabilmente posterò in futuro: P).
Per quanto riguarda la spawn corretta, il problema sta nel fatto che ho un tempo di aggiornamento variabile e quindi devo assicurarmi di non perdere una spawn nemica perché l'offset della spawn è troppo piccolo o perché l'aggiornamento ha richiesto un po 'più di tempo . L'ho risolto un po 'per la maggior parte, ma mi sembra che il problema sia il modo in cui memorizzo il livello.
Quindi, qualche idea? Commenti?
Grazie in anticipo.