我正在创建一个游戏,我使用一个文件来记录玩家的统计数据(速度,关卡等),这样你就可以在退出游戏后继续使用你的角色。我的问题是,在我的测试版本中,我使用基本的Java Filewriter来保存/读取stat文件,但有人可以用记事本打开它并更改统计数据(这是我不想要的)。
有没有一种更安全、更可靠的方法来做这件事?如果有的话,有人可以给它链接一个教程吗?
我听说使用XML可能会有所帮助,但我不知道从哪里开始。
发布于 2013-04-09 00:28:18
首先,一些一般性的建议:如果你所有的东西都在客户端,你什么也保护不了。你只能增加别人解密它的时间。因此,如果你真的担心玩家操纵他们的保存游戏,你必须把你的游戏变成一个永远在线的云存储解决方案(这会带来它自己的问题,而不仅仅是技术问题)。
其次,如果你的游戏不在线,你为什么要阻止玩家编辑他们的存储名呢?很多游戏玩家(包括我)喜欢讲故事,但不一定是所有的游戏,而且不止一次,我不再喜欢玩这个游戏,但想知道故事和人物是如何发展的,或者我只是想尝试一下。如果没有一个优秀的编辑,我可能会完全脱离游戏,但多亏了作弊,我很高兴看到了剩下的事情是如何展开的(还有一些内疚的乐趣--一枪打死了某些顽强的敌人)。如果玩家想在单人游戏中作弊,何乐而不为?这是他们的经验,可以让他们保持参与。
防止作弊的两个原因是支持和竞争场景。如果一次射击一个老板角色阻止了一个本应该以50%的生命值运行的事件运行,如果我抱怨我的游戏处于无法获胜的状态,那么你就需要额外的工作来找出savegame是被操纵的,并且它不是你这边的bug。在竞争方面,如果你有成就或排行榜,作弊是一个问题。
但话又说回来,你不能在一个100%在客户端的游戏中有竞争元素,因为你不能做任何事情来防止篡改。
以下是一些如何让篡改变得更难的技巧:
使用存储在代码中的密钥在savegame
https://stackoverflow.com/questions/15859335
复制相似问题