Project1

标题: 怎样实现不联机的情况下,相同游戏的物品可以互换 [打印本页]

作者: 芯☆淡茹水    时间: 2015-3-10 12:01
标题: 怎样实现不联机的情况下,相同游戏的物品可以互换
   嘛~,讨论区捏冷清,给 恐惧剑刃 添点人气。

最近突然就想到了这么个,怎样实现不联机的情况下,相同游戏的物品可以互换或给予,当然要通过一定媒介,比如网页—RM论坛。

举例:比如A和B同样玩某个单机游戏,A得了件好装备,欲给予B。我的思路是:A在游戏的“打包”功能里,将装备打包,也就是单独的将该装备各数据生成一个rxdata存档,然后A就失去该装备。A将装备存档上传到论坛给B,B下载后,把装备存档放到制定文件夹,然后在游戏里“导入”该装备,B就得到了该装备。

下面有2个问题未解决:
1,装备存档可随意复制,A就相当于什么都没有失去。也可以用此BUG来无限复制东西。
2,装备存档只是一个 rxdata 文件,无法知道里面到底是什么东西。
作者: soulsaga    时间: 2015-3-10 19:52
本帖最后由 soulsaga 于 2015-3-10 19:55 编辑

1是无解的...
换个思维吧..
可以的话是游戏通关后
让玩家创造一件个性装备..属性随角色等级增加 制作时附加特殊能力消耗玩家在游戏中得到的特殊物品数量来附上....复制存档也自然改变不了特殊能力的上限
这样复制装备也没太大意义...
作者: RyanBern    时间: 2015-3-10 20:07
问题1如果不借助服务器这类统一收集信息的东西的话应该是无解的,因为你无法确定什么样的存档被用过,什么样的存档没用。换言之,这种“交易”一定要有个统一的标准,否则一定有方法让人钻空子。
例如我们给手机充值,就要输入充值卡密码,一个充值卡用过一次之后,就不能重复使用。但是只有10086知道哪个密码被用过,哪个没有。如果不借助服务器,这一定是没有办法的事情。
我想的这个方法,原理和“充值卡”类似,给每一个rxdata文件设置一个独特的密码,最好长一点。然后再打包装备的时候,就随机生成一个密码。用其他客户端收取的时候,先检查这个“密码”有没有被使用,如果已经被使用,则拒绝识别;如果未被使用,那么记录这个密码,然后接受装备即可。记录的位置可以放在$game_system里面,和存档连成一体。这样可以防止一般的无脑复制,不过这里有个问题就是一个人发出的rxdata文件可以被多人接受,那么这种方法下,多人都可以收到这个文件,而且都可以识别。因此三个人还是可以“无限刷装备”,例如A发出一个文件,复制2份给B和C,B和C接收之后,再原封不动发回去,此时密码已经改变,A可以同时接收,这样A就有2个装备了。
总之,不借助服务器这种统一标准,此问题无解。
作者: 芯☆淡茹水    时间: 2015-3-10 21:13
看来只有有限制的共享,比如生成一个新的装备或其它什么东西时,生成一个该装备或东西独有的序列号,比如 计算机名+装备序号
这样在“导入”时,如果判断游戏里有该物品的序列号时,删除物品存档。
这样就能防玩家无限复制,但是能大范围的共享。
作者: 晴兰    时间: 2015-3-11 09:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: wolves    时间: 2015-3-11 11:16
本帖最后由 wolves 于 2015-3-11 11:18 编辑

1那个save-load大法只能把物品信息全存在数据库里,开启游戏时自检才能解决。
2那个可以通过数据库实现。

A的rmxp把信息通过api传给vb,vb直接用post的方式与php交互修改数据库,B的rmxp可以调用vb并指定数据获取php信息。
当然有免费的数据库空间,我用起来还不错。我这里就不做广告了。
作者: 芯☆淡茹水    时间: 2015-3-11 12:06
wolves 发表于 2015-3-11 11:16
1那个save-load大法只能把物品信息全存在数据库里,开启游戏时自检才能解决。
2那个可以通过数据库实现。

我的那个 仿网游装备 就是这样。
首先一个装备空数组,生成新装备时,根据这个数组的 size 决定装备的索引,然后装备数组再添加这个新装备。调用该装备时,装备数组[装备索引]  ,而不是数据库ID 。删除时:装备数组[装备索引] = nil

所以在”打包“时:打包文件数据 = 装备数组[装备索引]  ;  装备数组[装备索引] = nil
在”导入“时:装备 = 打包文件数据 ; 装备.索引 = 装备数组.size ;装备数组添加装备 ; 删除打包文件
作者: 不死鸟之翼    时间: 2015-3-13 00:40
如果你想脱机进行交换的话,倒是有一个方法
想要交换的时候,先让接收方根据目前的装备、状态等信息生成一个hash校验码c1,然后发送方根据c1运算得c2(增加的因子为要导入的装备信息),放到存档文件中。接收方接收的时候再根据生成c1的方式生成c3,使用相同算法运算得c4,与存档中的c2比对,如果符合则通过
一旦导入装备后当前状态会改变(你也可以每导入一次后固定地增加某变量的值作为区分因子),这样一个文件经指定目标导入一次后就失效,而且其他目标不可导入;无脑将文件中的c2提取出来拿到其他文件中也是不可能欺骗导入的
作者: 上贺茂润    时间: 2015-3-13 10:21
复制一下存档就两份了
作者: 恐惧剑刃    时间: 2015-3-13 19:12
只能联网,用 hash 什么的都是不行的!!
就算给每个用户随机生成一个10位数的ID,选择ID给予物品,也会因为无限复制rxdata而无限复制
作者: 芯☆淡茹水    时间: 2015-3-13 19:53
本帖最后由 芯☆淡茹水 于 2015-3-13 19:55 编辑
恐惧剑刃 发表于 2015-3-13 19:12
只能联网,用 hash 什么的都是不行的!!
就算给每个用户随机生成一个10位数的ID,选择ID给予物品,也会因 ...


所以说这个问题只能达到玩家不能复制。
比如一件武器,生成它时,生成一个专属的序列号实例变量。
像上面所说的存档复制,存档 --> 导出武器--> 关游戏读档(这时游戏里仍然有刚刚导出的武器)-- >
                                 导入 ---> 判断游戏里有武器和导入的武器序列号相同,导入失败。

所以一个游戏相同序列号的东西只能有一件。
但玩家可以拿出来给玩相同游戏的玩家分享。
作者: 晴兰    时间: 2015-3-13 22:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小传子    时间: 2015-3-13 23:55
网都没有,就不要交换资源了:)
作者: chd114    时间: 2015-3-14 17:26
war3的局域网对战···好吧这个貌似也是联机了
作者: q374435503    时间: 2015-3-21 08:35
蓝牙算么
作者: crow2006    时间: 2015-4-3 22:16
在我的游戏中已经实现了交换功能。
但是无法阻止问题1.

作者: 汪汪    时间: 2015-4-8 13:00
直接变成一个交互式卡牌游戏算了……
设定物品只能有多少件的上限,多出点功用不同的东西,各有妙用。物品泛滥主要是造成导致游戏平衡性或可玩性下降吧。解决根本问题不就好了。只要玩家变强,游戏难度也增加。
作者: 负零    时间: 2015-4-9 12:56
问题2我有个想法,像PSP的一个游戏中,他们的模型会被映画在你下载的文件上(就在文件上。当然,是通过游戏的接口显示的),让你直观知道这是个什么东西。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1