次のような大きな3D配列を管理するための最良の方法を知りたいです:
x = 1000 y = 1000 z = 100
=>100000000オブジェクト
そして、各セルは、ある程度のデータを持つオブジェクトです。
すべてのデータが折りたたまれている場合でも、単純なメソッドは非常に簡単です(私は最初にオブジェクトの配列の配列の配列を試しました)
class Test
def initialize
@name = "Test"
end
end
qtt = 1000*1000*100
Array.new(qtt).each { |e| e = Test.new }
私はどこかでDBがそのような場合に良いことかもしれないと読んだ。
あなたはこのことについてどう思いますか ?
私は何をしようとしていますか?
この「マトリックス」は世界を表しています。また、各要素は1mx1mx2mのブロックであり、異なる種類(水、泥、石など)である可能性があります。一部のブロックも空である可能性があります。
しかし、ユーザーはどこでもブロックを取り外して、周りのすべてを変更できる必要があります(後ろに水がある場合、それは例として穴を通って流れます。
実際、私がやりたいのは、MinecraftがDwarfFortressの本当に小さなクローンになることではありません(http://www.bay12games.com/dwarves/)
その他の興味深いこと
私のモデルでは、グラウドはレベル10です。これは、ほとんどの場合、[0,10]が空の空であることを意味します。丘と山の一部だけがそれらの層に存在する可能性があります。
地下は基本的に不明であり、掘られていません。したがって、未使用のブロックのインスタンスを追加する必要はありません。
最初からモデルに追加する必要があるもの:隣接する石/ムード/アースブロックを保管しなくても保管できる宝石、金、水。
ゲームの開始時に、キューブの80%をメモリにロードする必要はありません。
掘るたびに、新しいブロックを作成します。掘った空のブロックとその周りのブロックです。
インデックスを作成する必要があるのは次のとおりです。
- 地下河川
- 地下湖
- 溶岩川