首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止播放器在Java中编辑stat文件

如何防止播放器在Java中编辑stat文件
EN

Stack Overflow用户
提问于 2013-04-07 13:48:09
回答 1查看 324关注 0票数 1

我正在创建一个游戏,我使用一个文件来记录玩家的统计数据(速度,关卡等),这样你就可以在退出游戏后继续使用你的角色。我的问题是,在我的测试版本中,我使用基本的Java Filewriter来保存/读取stat文件,但有人可以用记事本打开它并更改统计数据(这是我不想要的)。

有没有一种更安全、更可靠的方法来做这件事?如果有的话,有人可以给它链接一个教程吗?

我听说使用XML可能会有所帮助,但我不知道从哪里开始。

EN

回答 1

Stack Overflow用户

发布于 2013-04-09 00:28:18

首先,一些一般性的建议:如果你所有的东西都在客户端,你什么也保护不了。你只能增加别人解密它的时间。因此,如果你真的担心玩家操纵他们的保存游戏,你必须把你的游戏变成一个永远在线的云存储解决方案(这会带来它自己的问题,而不仅仅是技术问题)。

其次,如果你的游戏不在线,你为什么要阻止玩家编辑他们的存储名呢?很多游戏玩家(包括我)喜欢讲故事,但不一定是所有的游戏,而且不止一次,我不再喜欢玩这个游戏,但想知道故事和人物是如何发展的,或者我只是想尝试一下。如果没有一个优秀的编辑,我可能会完全脱离游戏,但多亏了作弊,我很高兴看到了剩下的事情是如何展开的(还有一些内疚的乐趣--一枪打死了某些顽强的敌人)。如果玩家想在单人游戏中作弊,何乐而不为?这是他们的经验,可以让他们保持参与。

防止作弊的两个原因是支持和竞争场景。如果一次射击一个老板角色阻止了一个本应该以50%的生命值运行的事件运行,如果我抱怨我的游戏处于无法获胜的状态,那么你就需要额外的工作来找出savegame是被操纵的,并且它不是你这边的bug。在竞争方面,如果你有成就或排行榜,作弊是一个问题。

但话又说回来,你不能在一个100%在客户端的游戏中有竞争元素,因为你不能做任何事情来防止篡改。

以下是一些如何让篡改变得更难的技巧:

使用存储在代码中的密钥在savegame

  • Encrypting it上使用校验和,或者(
  • !)使用游戏中某些文件的SHA1作为加密密钥
  • 保存一个“有效”状态列表并检测不可能的情况,例如,一个拥有9000 HP的3级角色或一个20级角色没有通过故事中的第二章,或者一个在云城堡地牢
  • 外挥舞着末日之剑的角色检测到savegame被操纵,但允许玩家继续操作,只是让他们知道技术支持将不会被授予与该savegame有关的问题。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15859335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档