私は学校プロジェクトのためにJavaで2-D RPGスタイルのスプライトベースのゲームをコーディングしています。私たちのグループは、ゲームに固定されたものではなくプレーヤーに従うカメラが必要であると判断しました。プレーヤーが移動するにつれて世界のデータを動的にロードする必要があります。私はこれがMinecraftのように世界のセクションをチャンクに読み込むことで実現できることを知っていますが、大量のデータをあまり頻繁に読み込むのではなく、少量のデータを選択的かつ頻繁にロードできるようにしたいと思います。たとえば、プレーヤーは1つのユニットを上に移動するので、チャンク全体をロードしたり、チャンクを毎回アンロードしたりするのではなく、一番上のローをロードしながら、メモリからデータの最下位行を破棄することができます。現在のところ、関連する世界のデータはすべて2次元配列に格納されているので、全体を読み込んだり大きなチャンクで読み込んだりすることなく、配列内の特定のデータポイントをワールドファイルからロードする効率的な方法はありますか?Javaの直列化オブジェクトから選択データを読み込むにはどうすればよいですか?
また、ハードドライブからの読み込みに時間がかかりますので、大きなチャンクローディングが最適です。
この場合、基本的にはチャンクである領域という小さなファイルで構成されるワールドファイルがあるとします。
私の質問は次のようなものです。「すべてのものを一度にロードせずにメインワールドファイルから特定の領域をロードするにはどうすればいいですか?
これで、ファイルに行列を保存し、後でファイル全体を調べずにファイルからランダムにサブ行列にアクセスしたいとしますか? –
@WasiAhmad基本的にはい。 –
ファイル形式によって異なります。指定されたセルのオフセットをプログラムで決定できる場合は、そのオフセットを検索して読み込むことができます。できない場合(セルのサイズが可変)、シリアル化されたデータのインデックスをセルからオフセットにする必要があります。しかし、このために、ディスクシークはあなたを殺してくれるでしょうし、あなたはおそらく世界全体を記憶に収めることができます。 –