Java 用于存储大型平铺贴图的选项
我正在创建一个基于虚拟回合的在线战略浏览器游戏,其中许多人在同一个世界中玩了很长一段时间(几个月)。为此,我希望有一个64000x64000瓷砖=40亿瓷砖的地图。我需要每个磁贴大约6-10字节的数据,总共约30GB的数据用于存储地图 每个瓷砖应具有以下属性:类型(水、草、沙漠、山)、资源(木材、奶牛、黄金)和玩家建筑(道路、建筑) 客户只需要同时访问大约100x100个瓷砖 我已经控制了客户端的地图。我面临的问题是如何在服务器端存储、检索和修改此地图中的信息 所需功能:Java 用于存储大型平铺贴图的选项,java,database,game-engine,procedural-generation,bigdata,Java,Database,Game Engine,Procedural Generation,Bigdata,我正在创建一个基于虚拟回合的在线战略浏览器游戏,其中许多人在同一个世界中玩了很长一段时间(几个月)。为此,我希望有一个64000x64000瓷砖=40亿瓷砖的地图。我需要每个磁贴大约6-10字节的数据,总共约30GB的数据用于存储地图 每个瓷砖应具有以下属性:类型(水、草、沙漠、山)、资源(木材、奶牛、黄金)和玩家建筑(道路、建筑) 客户只需要同时访问大约100x100个瓷砖 我已经控制了客户端的地图。我面临的问题是如何在服务器端存储、检索和修改此地图中的信息 所需功能: 创建、存储和修改640
- 你有多少内存(或玩家/用户有多少内存)
- 大多数平铺贴图是否为空(稀疏)?对面是密集的
- 是否有默认地形(如空地形或水地形?)
您还可以在几个过程中加载数据:首先是地形,然后是其他对象。。。每一层可以以不同的方式存储。例如,地形可能是柏林噪声生成+另一层可以修改。欢迎使用SO!你可能会得到这个问题的一些有用的答案,但总的来说,对于这个网站来说,它实在太宽泛了。正确的答案是“这取决于”游戏设计的诸多因素。如果您可以更具体地了解在每个解决方案中看到的问题,并询问如何解决这些问题,那么您可能会得到更好的信息。如果这对您来说过于宽泛,请不要感到惊讶。每个磁贴大约有多少数据?每个磁贴8位的解决方案将与每个磁贴1 mb的解决方案大不相同…Sprinter-感谢您的欢迎,我将在将来尽量使其更简洁。Pikalek-每个磁贴大约有16字节的数据。这16字节的数据到底是什么?通过只存储对公共值组合的引用,完全有可能使磁贴消耗更少的内存。牛不生活在水里,所以类型和资源可能以一种有用的方式结合在一起。谢谢我当时的想法是:我需要一些位(2字节?)来确定类型(草)和资源类型(牛、金)。然后,我需要两个更大的整数(每个4字节)来确定剩余的资源量和对潜在playerBuiltObject的ID引用。这构成了大约10字节的上限,除非我需要存储任何附加信息。平均约为6字节,因为只有不到1%的磁贴具有PlayerBuilton对象。