Я разрабатываю 2D Shmup (т.е. Aero Fighters ), и мне было интересно, каковы различные способы хранения уровня. Предполагая, что враги определены в их собственном XML-файле, как бы вы определили, когда враг появляется на уровне?
Будет ли это основано на времени? Обновления? Расстояние?
В настоящее время я делаю это на основе «времени уровня» (количество времени, в течение которого работает уровень - пауза не обновляет время). Вот пример (сериализация была сделана 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>
Каждый элемент врага - это, в основном, волна определенных типов врагов. Тип определяется в EnemyType, тогда как SpawnTime - это «время уровня», при котором должна появляться эта волна. NumberOfSpawns и SpawnOffset - это количество врагов, которые появятся, и время, которое требуется между каждым появлением соответственно.
Это может быть хорошей идеей или может быть лучше. Я не уверен. Я хотел бы увидеть некоторые мнения и идеи.
У меня две проблемы: правильно создать врага и создать редактор уровней. Редактор уровней - это совершенно другая проблема (о которой я, вероятно, опубликую в будущем: P).
Что касается правильного нереста, проблема заключается в том, что у меня переменное время обновления, и поэтому мне нужно убедиться, что я не пропустил вражеский спавн, потому что смещение спавна слишком мало, или потому что обновление заняло немного больше времени , Я вроде как исправил это по большей части, но мне кажется, что проблема в том, как я храню уровень.
Итак, есть идеи? Комментарии?
Заранее спасибо.