Bir 2D shmup geliştiriyorum (yani Aero Fighters ) ve bir seviyeyi depolamanın çeşitli yollarının neler olduğunu merak ediyordum. Düşmanların kendi xml dosyalarında tanımlandığını varsayarsak, bir düşman seviye atladığında nasıl tanımlarsınız?
Zamana dayanır mı? Güncellemeler? Mesafe?
Şu anda bunu "seviye zaman" (seviye çalışıyor - duraklatma zaman güncellemez) miktarına göre yaparım. İşte bir örnek (serileştirme XNA tarafından yapılmıştır):
<?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>
Her Düşman öğesi temel olarak belirli düşman türlerinin bir dalgasıdır. Tür EnemyType'ta tanımlanırken SpawnTime, bu dalganın görünmesi gereken "düzey zamanı" dır. NumberOfSpawns ve SpawnOffset, ortaya çıkacak düşman sayısı ve her bir yumurtlama arasında geçen süredir.
Bu iyi bir fikir olabilir ya da daha iyi olanlar olabilir. Emin değilim. Bazı fikir ve fikirleri görmek istiyorum.
Bu konuda iki problemim var: bir düşmanı doğru şekilde yumurtlamak ve seviye editörü yaratmak. Seviye editörü şey tamamen farklı bir sorundur (muhtemelen gelecekte yayınlayacağım: P).
Doğru yumurtlama gelince, sorun değişken bir güncelleme zamanım olduğu gerçeğinde yatıyor ve bu yüzden spawn ofseti çok küçük olduğu için ya da güncelleme biraz daha uzun sürdüğü için bir düşman yumurtasını kaçırmamaya dikkat etmeliyim. . Çoğunlukla bunu düzelttim, ama bana göre sorun seviyeyi nasıl sakladığımla ilgili.
Peki, herhangi bir fikir? Yorumlar?
Şimdiden teşekkür ederim.