易码技术论坛

 找回密码
 加入易码
搜索
12
返回列表 发新帖
楼主: purpler

【讨论】防止修改游戏数值的一些想法

[复制链接]
发表于 2006-8-25 16:43:49 | 显示全部楼层
没这个必要了
发表于 2006-8-25 19:51:28 | 显示全部楼层
在发现存档被修改后,出现如下字样:"你TMD小样竟敢修改存档??"第二行显示:"机器正在准备格式化.............."
发表于 2006-8-26 13:35:51 | 显示全部楼层
支持LS
发表于 2006-8-26 17:40:01 | 显示全部楼层
山村淘金记的存档修改不了
 楼主| 发表于 2006-8-27 12:19:59 | 显示全部楼层
引用第22楼ncshinn2006-08-25 19:51发表的“”:
在发现存档被修改后,出现如下字样:"你TMD小样竟敢修改存档??"第二行显示:"机器正在准备格式化.............."


嘿嘿,那不吓死了?

我有这些想法也是因为制作《美少女梦工场4》才想到的

因为养成类游戏一旦修改就没有什么意思了(尽管我玩这个游戏时也是修改的嘿嘿:) 但也是为了制作游戏需要)
雪落梨花 该用户已被删除
发表于 2006-8-28 14:13:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2006-8-28 17:16:29 | 显示全部楼层
引用第25楼purpler2006-08-27 12:19发表的“”:
嘿嘿,那不吓死了?

我有这些想法也是因为制作《美少女梦工场4》才想到的

因为养成类游戏一旦修改就没有什么意思了(尽管我玩这个游戏时也是修改的嘿嘿:) 但也是为了制作游戏需要)

.......
那就更毒点"恭喜!你修改了存档!","正在将您的机器NFLASH ERROR化"
 楼主| 发表于 2006-7-31 15:59:04 | 显示全部楼层 |阅读模式
  防止修改游戏数值的一些想法

A.双份存档
把数据存入存档文件以后,接着再存储一次。这样在一个存储文件里面上下有两份相同的存储数据。读取的时候,用两套变量存储数据,然后判断两套变量中对应位子的数据值是否相同。全部相同说明没有问题,否则就是修改过的。
B.备份存档
把数据存入存档文件以后,接着再打开游戏的数据文件(除了存档文件以外的文件),在末尾追加存储一份存档数据(也可以在制作数据文件的时候预先留出存放存档数据的空间)。读取的时候,同样用两套变量存储数据,一份来自存档文件,一份来自数据文件,然后判断两套变量中对应位子的数据值是否相同。全部相同说明没有问题,否则就是修改过的。这个方法的好处我觉得是,存档在数据文件中备份,不容易被发现。而且假如数据文件很大的话,存档数据加在末尾,也不容易查找。
C.三保险存档
  A+B合用。存储三份数据。存档文件两份,数据文件一份。读取时就要用三套变量。判断相对应的三个数据是否相同。全部相同说明没有问题,否则就是修改过的。
个人觉得以上方法可以防止在星星上面直接修改存档文件,但是对于在电脑端用游侠等直接修改内存中的数据就行不通了,再用下面的方法看看。
D.扩大法
  游戏中变量存储的数值始终都是实际展现给玩家的N倍。比如:玩家在屏幕上看到的数值是10,而游戏中的实际变量数值是20,也就是显示的变量值是实际变量值÷2。这样当玩家看到数值10,然后在内存中寻找10是找不到的。达到反修改的目的。
E.校验法
  在改变数据变量A的时候,用一个表达式把数值计算成新数值。然后赋值给另外一个变量B。验证的时候把B中的数值反向计算回去,如果计算结果和A相同,则说明没有被修改。注:A是游戏中实际使用的数值,B只是A的变值备份。
例:int a,b;
   a=13;
   b=a*3+2;  // (b=41)  显示给玩家的是a
当玩家把a的数值改变的时候,并没有改变b。(用个复杂点的表达式一般是不好被破解的)当我用b反过去检验a时就可以知道有没有被修改。(判断(b-2)/3和a是否相等)。
F.超级大结合
  个人觉得前三种可以防止在星星上修改存档文件,后两种方法可以防止修改内存中的数值,两者结合应该就会更好!!
一共准备三份变量,一份是显示给玩家的数值,一份是实际存储的数值(D中的扩大数值)还有一份是E中通过表达式算出来的新数值。把这三份分别存储在数据文件(B法)和存档文件(A法)中。检验三份存储数据对应的数值(有两个数值需要转换)是否相同,就知道有没有被修改了。
G.数字分段
  把实际数值分成两段用两个变量存储。例:实际显示数值long a=9876;把它分成int b=98;int c=76;当a增加需要进位的时候可以if(c>99){c=0;b++;}显示给玩家的a的值可以是放在变量里的(tmp=b*100+c)也可以直接先显示b然后接着显示c,玩家看到的还是9876但是9876并不存在。


http://club.ggv.com.cn/pwblog/article.php?tid=2448


大家觉得行的通吗??
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-5-2 04:34 , Processed in 0.009907 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表