Javascript:存储地图数据的最佳方式?

时间:2014-05-03 20:29:26

标签: javascript html5 canvas 2d tile

我在JavaScript中构建一个简单的基于图块的2D游戏,我想知道在客户端存储地图数据的最佳方法。

在服务器上,我将地图存储在64x64块中,当玩家进入当前64x64块的象限时,我会请求接下来的三组。

因此,我绝对需要将块拆分为四叉树,其中每个节点是地图的1/4。

我想知道如何在四叉树中存储每个象限。我最关心的是我能够快速解析数据。当我请求新的64x64地图时,我需要准备好它才能让玩家看到它。如果我将地图数据存储为二维数组,则存储它需要O(N ^ 2)时间,这是我不满意的,特别是因为我正在做3x 4096个图块。是否有可能将其归结为O(nlogn)?

如果它有帮助,我有一个简单的游戏世界演示。目前,它只是将一个64x64块复制到2D阵列中。 https://rawgit.com/Meredithrs/HTML5-Canvas/master/game-window-demo/index.html

1 个答案:

答案 0 :(得分:1)

根据我的理解

首次优化

您可以尝试将允许的移动位置仅存储在主要图块的单维数组中,而不是存储所有图块的位置。这将大大减少数据存储。

另一项优化

您还可以将视图拆分为四个象限。 (比如分而治之)

<强>例如 如果总维度为[400,400]

将其拆分为

         - [0,0] - [ 200,200]
         -  [200,0] - [400, 200]
         -  [0, 200] - [200, 400]
         -  [200,200] - [400, 400]

然后创建四个单维数组,每个象限下允许位置坐标[x,y]。

现在根据图块位置,选择哪个象限数组。然后迭代它以查找是否允许移动。

优化可以做得更多..祝你的项目好运:))