4


1

私はユーザーが画面の一番右の部分に行くことができるゲームを作りたいと思っています、そして彼らがそれ以上先に行けば、彼らは新しいビューに滑り込むでしょう。

したがって、基本的には、3人のモンスターが画面#1でそれらを追いかけていて、さらに右にいって進み続けると、5人の新しいモンスターと1つの新しい地形がある画面#2に入ります。

ゲームが始まったら、すべてのスクリーンのNPCモンスターと地形機能をすぐに初期化するべきですか、それとも入ったときにそれぞれのスクリーンを初期化するべきですか? また、各画面に表示される内容を保存するための最適な形式/方法は何ですか?

1 Answer


9


_ すべての画面のすべてのNPCモンスターと地形機能をすぐに初期化する必要があります _

できますが、それを妨げるものは何もありません。

しかし、それはあなたのレベルがどれだけ大きいか、そしてロード時間とゲーム中の遅れとの間のトレードオフ(例えば次のスクリーンがロードされるとき)に依存します。

私は以下を提案します:

最初:スレッド

同時に実行される2つのスレッドを作成します。1つは実際のゲームプレイに見合ったもので、もう1つは新しい地形をロードすることのみを担当します。 gameplay`スレッドがメインで、プレイヤーが次の画面に進むと loader`スレッドに新しい地形データをロードさせます。

第二に:ある地形と別の地形との間の遅れを減らす

入るときに次の地形をロードしないでください。 代わりにやるべきことは(横スクロールの場合)、左側に1つの地形をロードし、現在位置の右側に1つの地形をロードすることです。 こうすることで、レベル全体を一度にメモリに保持する必要がなくなり、同時に隣接する地形に入ったときに遅れが生じることもありません。 これは最初の点ではかなりうまくいきます。

これはまた、ある地形にいるNPCモンスターがあなたを次の地形に「追いかける」ことができるというあなたの要求にもぴったり合っています(あなたがそれらを殺さなかった場合)。注意しなければならないのは、NPCモンスターが1人を通過せずに、プレーヤーが2つのスクリーンを連続して通過した場合、彼らはそれ以上あなたを追うことはできないということです。とにかく、私がプレイしたサイドスクローラーのうちどれだけがうまく動くかのようです。

また、これはレベルを開始するとき、2つか3つの地形を一度にロードしなければならないことを意味しますが、その後は、2つのテレインをロードする必要があります。プレイヤーが次の地形に進むたびに、現在の地形を隣接する地形と交換するだけでよいため、一度に1つの地形を読み込むことができます。

_ 各画面に入るものを保存するための最適なフォーマット/方法は何ですか? _

シリアライズ

選択したプラットフォームがJavaであることを考えると、レベルデータを永続化するための最もロード時効率の良い方法はシリアライゼーションです。 レベルとオブジェクトに関する情報を格納するクラスを `Serializable`インターフェースを実装するようにします。

このオプションを選択した場合、初めてレベルを作成するときには、各レベルの初期化をハードコードしてからゲームをロードする前にそれらをシリアル化する特別なメソッドを作成する必要があります。そうでなければ、レベルエディタを構築する必要があります。

XML

このオプションを選択すると、オブジェクトのシリアル化を解除する場合と比べてロード時間が大幅に長くなりますが、より堅牢で、しかも変更が簡単にできます。 あなたのレベルがそれほど複雑ではない場合、これはおそらく最良の選択肢です。

実際、あなたが両方の組み合わせをするのを妨げるものは何もありません。