Saya sedang mengembangkan 2D shmup (yaitu Aero Fighters ) dan saya bertanya-tanya apa saja berbagai cara untuk menyimpan level. Dengan asumsi bahwa musuh didefinisikan dalam file xml mereka sendiri, bagaimana Anda mendefinisikan ketika musuh memunculkan di tingkat?
Apakah ini didasarkan pada waktu? Pembaruan? Jarak?
Saat ini saya melakukan ini berdasarkan "level waktu" (jumlah waktu level berjalan - jeda tidak memperbarui waktu). Berikut ini sebuah contoh (serialisasi dilakukan oleh 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>
Setiap elemen Musuh pada dasarnya adalah gelombang tipe musuh tertentu. Jenisnya didefinisikan dalam EnemyType sedangkan SpawnTime adalah "level waktu" yang muncul oleh gelombang ini. NumberOfSpawns dan SpawnOffset adalah jumlah musuh yang akan muncul dan waktu yang dibutuhkan antara masing-masing spawn.
Ini bisa jadi ide bagus atau mungkin ada yang lebih baik di luar sana. Saya tidak yakin. Saya ingin melihat beberapa pendapat dan ide.
Saya memiliki dua masalah dengan ini: menelurkan musuh dengan benar dan membuat editor level. Masalah editor level adalah masalah yang sama sekali berbeda (yang mungkin akan saya posting di masa depan: P).
Adapun pemijahan dengan benar, masalahnya terletak pada kenyataan bahwa saya memiliki waktu pembaruan variabel dan jadi saya perlu memastikan saya tidak melewatkan musuh karena spawn offset terlalu kecil, atau karena pembaruan membutuhkan waktu lebih lama . Saya agak memperbaikinya untuk sebagian besar, tetapi bagi saya sepertinya masalahnya adalah bagaimana saya menyimpan level.
Jadi, ada ide? Komentar?
Terima kasih sebelumnya.