我想知道管理大型 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 }
我在某处读到数据库对于这种情况可能是一件好事。
你怎么看待这件事 ?
我想做什么?
这个“矩阵”代表一个世界。每个元素都是一个 1mx1mx2m 的块,可能是不同的类型(水、泥、石头……)有些块也可能是空的。
但是用户应该能够在任何地方移除块并改变周围的一切(如果他们后面有水,它会流过孔,例如。
事实上,我想做的不是 Minecraft 成为 DwarfFortress 的一个非常小的克隆(http://www.bay12games.com/dwarves/)
其他有趣的事情
在我的模型中,地面处于 10 级。这意味着在大多数情况下,[0,10] 是空旷的天空。在这些层上只能存在丘陵和部分山脉。
地下基本上是未知的,没有被挖掘。所以我们不必为未使用的块添加实例。
我们应该从一开始就添加到模型中:宝石、黄金、水,它们可以存储而无需存储相邻的石头/情绪/土块。
在游戏开始时,80%的立方体不需要加载到内存中。
每次我们挖掘我们都会创建新的块:我们挖的空块和周围的块。
我们唯一应该索引的是:
- 地下河
- 地下湖
- 熔岩河