【破竹寺出品】编号、几率、复制
最近两天看到了关于编号的不少讨论,觉得很有意思。
先谈谈关于编号。
从数据结构上看,任何物品都会有编号。这里所说的编号概念比较泛泛。我把它分为技术编号和逻辑编号。
先谈技术编号,这在程序处理上是用来方便查找对应位置用的。比如类型、数量、所属角色、位置等。多维坐标(就是多个字段)确定唯一物品记录。在流行数据库中,用sequence主键或者auto-increment主键表示唯一的物品,对于可以重复属性的物品,则用多个字段确定其唯一的位置。
再谈逻辑编号,这才是大家所熟悉的编号。比如神兵编号xxxx,人物角色编号IDxxxxxx,每次周四维护的版本更新编号(RevisionXXXX),以及召唤兽(包括神兽)的编号。召唤兽的编号的暴露在02年就已经被大家所知晓,具体做法是在宝宝升级后,点数分配上狂按不止,利用网络延迟造成一些程序BUG,最后会显示出错信息(个人认为那是开发阶段用于Debug的弹出信息设置,一直没取消而已):召唤兽XXXXXXX没有那么多分配点数!这个XXXXXX就是召唤兽的逻辑编号。
为了谈论简便起见,以下所述编号问题,如非特意声明,均指逻辑编号。
有编号的属性包括角色ID,神兵神兽、普通召唤兽、装备等。
没有编号的属性包括:经验、等级、金钱、可叠加的物品例如药品和炼化原料、不可叠加但属性无差异的物品例如补天等打造矿石。
玩家昵称和ID都是编号,只不过ID更具有统一性和方便数据处理而已。系统的NPC其实也是有编号的,NPC说话(修罗说话、宝宝说话、任务活动介绍人说话等)的时候,点击聊天框即得到该NPC的ID。可以对其设定为私聊对象,发表情/emote。
编号的作用
玩家之间的交流是通过编号找到对方的。往往在频道交易中,会告知对方自己的编号,省得去查询,为交流沟通提供了使用功能上的便利。
为什么有些盗号案能够顺利告破?除了警方的介入和网易的屈从合作外,编号也是帮了大忙的。在数据库中,先找到交易记录,从交易记录上看到神兵神兽的编号。然后一路追查下去,凡是经手的ID都不能逃脱追捕。顺藤摸瓜就能知道盗窃者的IP,然后从中国电信/网通等ISP中得到其注册地理位置,最后直接追踪到个人。当然,盗号者也可以使用代理,但是仍然逃不过法网,因为通过路由和代理服务器Log还是能找到真身。有些事情,不是网易做不了,而是不想给自己添麻烦。除非有警方介入,它才会乖乖合作。
再谈谈最近玩家的发现:普通装备也有编号的问题。
我认为:
其实那个编号,应该是技术上的编号。比如某个帽子被在频道出售,然后系统就会将帽子的逻辑位置放到链接中。比如用一串随机数字或者是其他表示意义的数字表示玩家角色在本次登录中的ID号,再加@符号作为分隔符,然后加上该物品在玩家角色上面的存放位置。
关于如何验证我的假设:
先在频道上出示某个装备,然后把装备放入当铺,中间过程角色不下线。当装备放入当铺后,相当于位置位置改变,按照原来的链接指向,是找不到那个装备的信息的。
这种验证过程当然并不严谨,只能一定程度上证明了编号对于普通装备识别辅助作用。这种频道发布的链接编号,我认为是临时编号。在技术编号上,必定还有唯一识别的标记。
编号和几率
这个也是很久以来被一些玩家所痛斥的“GM作弊/偏心”问题。神兽神兵的投放一度认为和ID有密切关系。
实际上两者毫无关系,一般来说,极品装备和宝宝的获得,都是通过某个随机数实现的。所以,可以认为完全和玩家ID这种编号无关。几率对于大家都是一样的。可能在某阶段,小ID频频获得好东西,然后大家骂,都是五位数四位数ID获得东西,网易偏心。但也会有时间新ID获得好东西,然后大家又骂,网易都在照顾新人,放弃了老玩家!
至于什么几率作弊,可能性太小,一来GM都是小虾米,没那么大的权利;二来即使作弊,那也只是开发技术人员的个人行为,和网易本身无关。不过从一些BUG暴露的程度推断,网易没什么像样的测试团队,对于这种“技术作弊”,网易目前基本无能为力。随着2.5的开发和一些神兽神兵的价值飙升,为了维持公平游戏,届时网易将不得不面临这种防治“内贼”的烦恼。当利益大到了一定程度,什么事情都有可能发生的。所以,即使出现了作弊情况,也不必大惊小怪,那是网易的无能。如果存在作弊情况,那么一定是和编号有关的,因为只有通过编号,才能确定最后的得利者。至于是不是真的存在作弊,本文不做讨论。
编号和复制
我说一下复制的原理。当发生交易或者某种转移物品的行为时,系统会增加一份物品到转移目标角色上,然后相应地删除原物品。只要让删除动作失败,而同时其他动作成功,那么就完成了整个复制过程。玩过传奇和奇迹的人都知道怎么复制了,原理是一样的,到任何游戏的设计上都是万变不离其宗。我记得以前大话发生过的复制是通过宝宝穿装备,然后强行离线实现的。
不过,复制终究是复制,很难逃过检测程序的关卡。对于没有编号的金钱和药品,复制起来倒也是很难察觉。但是对于有编号的物品,那就逃得过初一逃不过十五了。编号是唯一的,但是数据库字段也许不是设定为唯一。在转移物品完成后,程序不会去扫描整个表,也不会让数据库服务器自己检查重复值,因为那样是很消耗资源的做法,效率不高。所以复制物品不会立即被发现,往往是在系统维护的时候,会进行这种非法数据的检查,发现复制物品后的处理办法就是一个字,删!
感到欣慰的是,这个游戏的复制状况不多,没有造成严重的游戏平衡冲击。









