Javascript:存储地图数据的最佳方式?
我正在用JavaScript构建一个简单的基于平铺的2D游戏,我想知道在客户端上存储地图数据的最佳方法 在服务器上,我将地图存储在64x64块中,当玩家进入其当前64x64块的象限时,我将请求接下来的三组 因此,我肯定需要将块分割成一个四叉树,其中每个节点是贴图的1/4 我想知道如何在四叉树中存储每个象限。我最关心的是我能以多快的速度解析数据。当我需要一张新的64x64的地图时,我需要在玩家能够看到它之前准备好它。如果我将地图数据存储为二维数组,则需要O(N^2)个时间来存储它,这一点我并不满意,特别是因为我将使用3x4096个平铺。是否有可能将其降到O(nlogn)Javascript:存储地图数据的最佳方式?,javascript,html,canvas,2d,tile,Javascript,Html,Canvas,2d,Tile,我正在用JavaScript构建一个简单的基于平铺的2D游戏,我想知道在客户端上存储地图数据的最佳方法 在服务器上,我将地图存储在64x64块中,当玩家进入其当前64x64块的象限时,我将请求接下来的三组 因此,我肯定需要将块分割成一个四叉树,其中每个节点是贴图的1/4 我想知道如何在四叉树中存储每个象限。我最关心的是我能以多快的速度解析数据。当我需要一张新的64x64的地图时,我需要在玩家能够看到它之前准备好它。如果我将地图数据存储为二维数组,则需要O(N^2)个时间来存储它,这一点我并不满意
如果有帮助的话,我有一个简单的游戏世界演示。目前,它只是将一个64x64块复制到一个二维数组中 根据我的理解 第一次优化 您可以尝试仅在主磁贴的一维数组中存储允许的移动位置,而不是存储所有磁贴的位置。这将大大减少数据存储 另一个优化 您还可以将视图拆分为四个象限。(就像分而治之) 例如 如果总尺寸为[400400] 像分开一样分开
- [0,0] - [ 200,200]
- [200,0] - [400, 200]
- [0, 200] - [200, 400]
- [200,200] - [400, 400]
然后创建四个一维数组,每个象限下有允许的位置坐标[x,y]
现在根据平铺位置,选择哪个象限阵列。然后遍历它以确定是否允许移动
优化还可以做得更多。。祝您的项目好运:)我不会在映射数组中存储基元,因此我应该能够执行map.get(x,y).isWalkable(),这不需要迭代,具体取决于我使用的数据结构。我更关心的是尽快将数据从字符串传输到数据结构。