我有一个游戏,用户可以在其中创建自定义关卡。我目前正在生成一些用于对级别进行编码的JSON,但是我希望用户能够轻松共享彼此的级别(最好是10个以下字符的ID)。没有互联网连接,因此该关卡的所有信息都必须编码为该ID,以便游戏可以对其进行解码并生成关卡。
我尝试了各种加密和压缩算法,但是我似乎无法达到合理的可共享长度。散列不起作用,因为我需要对其进行散列,并且必须具有非常低的(0)冲突,因为它必须对生成的特定级别进行编码。
是否有更好的方法来解决此问题?我意识到我正在尝试将数据填充为10个字符,但是如果我使用91个不同字符的填充,那应该给我6,426,898,010,533个可能的级别ID。
我的用户是否受到长ID的困扰,或者是否有更好的方法将(最好是JSON数据)压缩为短字符串? JSON数据随着级别的大小而变大。我不太关心安全性。如果有人确实知道如何解码它,他们只会得到一些无用的JSON。
答案 0 :(得分:1)
我尝试了各种加密和压缩算法,但是我似乎无法达到合理的可共享长度。散列不起作用,因为我需要对其进行散列,并且必须具有非常低的(0)冲突,因为它必须对生成的特定级别进行编码。
恕我直言,这全都涉及信息量和数据的“可压缩性”。使用某种文本格式(JSON,..)只会使其破裂。也许您可以只编码(base64?)一些有效的二进制表示形式(+ hash / checksum来检查数据完整性)。
无论整个级别的描述可能会很大,仅需键入即可。当熵高且没有可重复的模式时,即使压缩也无济于事。
也许您可以使用其他传输方式,例如用于移动蓝牙(如今红外线并不常见)或用于计算机的串行传输。