隐藏玩家的游戏数据?


13

我正在开发我的第一个(C ++)游戏,并且我想使用基于组件的设计。我最近已经阅读了很多有关此内容的信息,昨天我决定将对象数据存储在外部JSON文件中,以提供更大的灵活性和访问便利性。

然后我突然意识到,将这些文件保留在游戏的目录树中将使玩家可以非常轻松地修改他们想要的任何内容。

我不担心向开发人员展示代码,因为该游戏将是开源的,但我担心经验不足的游戏玩家可能会破坏游戏或至少破坏游戏的乐趣。

我想念什么吗?隐藏游戏数据(在开源游戏中)有什么政策?让所有人都能清楚地访问所有内容是否正常?

如果没有,什么是隐藏数据的好方法?


3
通常,修改游戏的功能是功能,而不是错误,尤其是对于单人游戏。
jprete 2011年

8
我真的不会打扰。您的时间最好花在制作出色的游戏上。=)
Jari Komppa

1
我倾向于认为(几乎)任何下载开源游戏的人都知道,足以真正享受修补游戏数据和破坏游戏过程的乐趣。如果这是一款不错的游戏,那么您会立即看到一个维基百科,上面弹出解释JSON格式的信息!
没关系,

Answers:


33

如果玩家修补并破坏了乐趣,我会说这是他们的问题。对于修补匠来说,一半的乐趣就是看到什么破了。

这就像担心玩家会使用上帝模式的作弊代码,并担心玩家不会受到挑战一样。

除了将这些配置文件放在zip文件中之外,我什么也不会做(您可能应该为加载时间做些什么),并确保您的代码可以优雅地处理损坏的数据。


20

恐怕没有经验的玩家可能会破坏游戏或至少破坏游戏的乐趣。

如果他们干预游戏数据,那就是他们认为的“有趣”。您无需为此保护他们。毕竟,实体组件数据很难被破坏。也许如果您在那里有对话或任务数据,那将是一个问题,但可能没有。大多数游戏玩家甚至都不知道在哪里寻找这种东西,也不必介意故意搜索或编辑它。

我的建议是将其压缩并重命名文件扩展名。这将使外观看起来更随意,但使用起来并不困难。您可以使用PhysicsFS之类的东西来处理文件。


5
是的 我记得在Amiga玩殖民游戏。单位参数存储在带有标准txt扩展名的简单文本文件中。玩了很多游戏之后,我决定通过调整这些参数来使游戏更加困难。后来我与朋友分享了这些设置。很好玩……
liori 2011年

3

您可以使用对称加密方案(AES)存储加密的数据,但这毫无意义:该软件是开放源代码的,因此每个人都可以读取密钥并因此解密数据。这只会“阻止”休闲玩家作弊。

即使在封闭源代码项目中,这也是毫无意义的,因为在游戏二进制文件中找到密钥非常容易。

因此,您有两种可能性:

  1. 只需保留未加密的内容即可(但至少收集每个文件的md5哈希值,以便您可以在运行时检查它对游戏分发中的任何损坏);
  2. 进入封闭源,对数据进行加密(使用秘密的可逆多步算法,例如字符串反向+字节交换+带有常数字符串的xor等),然后使用AES加密所有内容。任何人都很难恢复数据。难得多。

1
甚至您的封闭源代码方法也不是那么难。那些经常破坏用于复制保护的方案的人也可能会破坏这一点。主要区别在于它们不会打扰。
jprete 2011年

@jprete:当然可以。这只是时间问题,但是时间对人们而言至关重要,因此有时使其变得困难而不赚钱就足够了。
gd1 2011年

3

我会离开的。有一个庞大的mod社区,并且玩家喜欢更换/改装游戏。如果他们弄坏了东西,那就在他们身上。他们可以随时重新安装。

也使其他开发人员更容易使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.