注意:这是与 android 相关的,但最好的答案可能不是特定于平台的,因此是其他标签。
考虑一个类似于愤怒的小鸟的游戏:你有很多关卡。每次你完成一个关卡,下一个关卡都可以玩,但之前不行。如何让玩家更难破解我的游戏文件并解锁不应该可用的关卡?假设进度数据存储在本地。
我的想法:
在 android 上,所有应用程序文件都存储在一个文件夹中,用户只有在具有 root 访问权限时才能访问该文件夹(默认情况下,他们从不这样做,但只要你谷歌一点,通常很容易获得)。现在,我正在使用一个看起来像这样的 sqlite 数据库:
LevelId = pk | UnlockStatus = int, 0 = locked, 1 = unlocked, 2 = completed with 1 star, ...
只要用户没有 root 权限或根本不熟悉应用程序文件的存储位置,这很好。但是,如果他们有 root,则此文件很容易编辑。
据我所知,愤怒的小鸟将其关卡数据存储在一个.lua
文件中,至少根据其名称。我找不到包含级别信息的文本文件或数据库文件。在文本编辑器中打开它.lua
只会显示乱码。我还没有尝试过十六进制编辑器。
使用 sql 表非常方便。有没有一种简单的方法可以将进度数据存储在 sql 表中,这样用户会更难理解它?理想情况下,实施起来也不应该太耗时。作为一款离线游戏,我不在乎玩家是否破解它,所以我正在寻找最好的质量 - 实施时间权衡。然而,理论上的答案可以产生更多的实施时间以获得更高的质量,但也值得赞赏。