【发布时间】:2018-02-24 07:32:02
【问题描述】:
我为类似塞尔达的游戏 (rpg) 编写了一个小型关卡设计器 无论是否在某个地方(从关卡设计器保存地图时,预先计算了可以行走的 16x16 方格) 然后将该地图加载到游戏中。
可行走的方块(瓦片)存储在大量数组 (x,y) 中
假设这是一个很小的 3x3 地图,json 应该是这样的:
walls = [[true,true, true],
[true,false,true],
[true,true, true]]
意味着只有中心街区可以步行(1x1 不是墙 == false)
现在我确实使用布尔值来优化空间,从技术上讲,我可以在 1 个字节中存储 8 个块信息。
但它的存储方式现在感觉是未优化的,因为每个块都存储为 json 文件中布尔值的字符串表示形式。
有没有办法存储数组的原始二进制数据,或者创建我自己的协议并将这些不规则的二进制数据存储在 json 中?
这个数组在生成时显然不会被人类解释,所以我不介意它不可读。
【问题讨论】:
-
您可以使用整数,只要您坚持 50 位左右。十六进制字符串会稍微不那么疯狂并且更接近可读(或至少是可格式化的)。
-
JSON 中没有二进制数据类型,但您可以将二进制值转换为十进制,或者更有效地转换为字符串,即每个字节一个字符。
-
文森特,看看我的回答。它可以将这个特定的“墙”数组简化为:
7|5|7,然后再将其转换回来。
标签: javascript arrays json typescript binary