Ich entwickle ein 2D-Shmup (dh Aero Fighters ) und habe mich gefragt, wie ich ein Level auf verschiedene Arten speichern kann. Angenommen, Feinde sind in ihrer eigenen XML-Datei definiert, wie würden Sie definieren, wann ein Feind im Level erscheint?
Würde es auf Zeit basieren? Aktualisierung? Entfernung?
Momentan mache ich dies basierend auf der "Level-Zeit" (die Zeitdauer, in der das Level läuft - Pause aktualisiert die Zeit nicht). Hier ist ein Beispiel (die Serialisierung wurde von XNA durchgeführt):
<?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>
Jedes feindliche Element ist im Grunde eine Welle spezifischer Feindtypen. Der Typ wird in EnemyType definiert, während SpawnTime die "Level Time" ist, zu der diese Wave erscheinen soll. NumberOfSpawns und SpawnOffset ist die Anzahl der Feinde, die angezeigt werden, und die Zeit, die zwischen den einzelnen Spawns vergeht.
Dies könnte eine gute Idee sein oder es könnte bessere da draußen geben. Ich bin mir nicht sicher. Ich würde gerne einige Meinungen und Ideen sehen.
Ich habe zwei Probleme damit: Einen Feind richtig spawnen und einen Level-Editor erstellen. Die Leveleditor-Sache ist ein ganz anderes Problem (das ich wahrscheinlich in Zukunft posten werde: P).
Was das korrekte Laichen betrifft, liegt das Problem in der Tatsache, dass ich eine variable Aktualisierungszeit habe und daher sicherstellen muss, dass ich keinen gegnerischen Laich verpasse, weil der Versatz für das Laichen zu gering ist oder weil das Aktualisieren etwas länger gedauert hat . Ich habe es größtenteils irgendwie behoben, aber es scheint mir, dass das Problem darin besteht, wie ich den Level speichere.
Also irgendwelche Ideen? Bemerkungen?
Danke im Voraus.