私は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は、表示される敵の数と、それぞれのスポーンにかかる時間です。
これは良いアイデアかもしれませんし、もっと良いものがあるかもしれません。よく分かりません。私はいくつかの意見やアイデアを見たいです。
これには2つの問題があります。敵を正しくスポーンすることと、レベルエディターを作成することです。レベルエディターの問題は、まったく別の問題です(おそらく、今後投稿します:P)。
正しくスポーンする場合、問題は更新時間が可変であるという事実にあります。そのため、スポーンオフセットが小さすぎるか、更新に少し時間がかかったため、敵のスポーンを見逃さないようにする必要があります。 。私はそれを大部分修正しましたが、問題はレベルの保存方法にあるようです。
だから、アイデアはありますか?コメント?
前もって感謝します。