gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 14:49:00 25 4
gpt4 key购买 nike

我正在用 JavaScript 构建一个简单的基于图 block 的 2D 游戏,我想知道在客户端存储 map 数据的最佳方式。

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

因此,我肯定需要将 block 拆分为四叉树,其中每个节点占 map 的 1/4。

我想知道如何在四叉树中存储每个象限。我最关心的是我能多快地解析数据。当我请求一张新的 64x64 map 时,我需要在玩家能够看到它之前准备好它。如果我将 map 数据存储为二维数组,存储它需要 O(N^2) 时间,我对此并不满意,尤其是因为我要处理 3x 4096 个图 block 。是否有可能将其降低到 O(nlogn)?

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

最佳答案

据我了解

第一次优化

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

另一个优化

您还可以将 View 分成四个象限。 (就像分而治之)

例如如果总维度是 [400,400]

像这样拆分

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

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

现在根据瓦片位置,选择哪个象限阵列。然后遍历它以查找是否允许移动。

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

关于Javascript:存储 map 数据的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23449463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com