您的位置:>聚仙>任务升级>

[原创]网游强化装备的随机数研究

发表时间:2011-04-26 作者:酱烤甜虾 编辑:微波 来源:网络
先说明一下啊,这绝对是在聚仙论坛首发(转载请注明出处~),这封测也结束了,没啥可做的,就写写东西给大家看着玩哈~网上有很多文章,讨论在强化装备时,成功率高的方法.猜测的成分过大,也有一些经验之谈.我这篇文章,是从浅显的技术角度,和一些发生概率较高的假设下,做出

先说明一下啊,这绝对是在聚仙论坛首发(转载请注明出处~),这封测也结束了,没啥可做的,就写写东西给大家看着玩哈~
网上有很多文章,讨论在强化装备时,成功率高的方法.猜测的成分过大,也有一些经验之谈.我这篇文章,是从浅显的技术角度,和一些发生概率较高的假设下,做出的一些研究.很多人会问,网游里强化装备的成功率真的可以把握住吗?我的回答是,完全可以.
但是,我要做下面一些假设,这些假设,发生的概率是很高的.再以这些假设向深层研究,那么可以发现,快速,省钱地打造出顶级装备,是有可能的.
1.游戏服务器采用通用rand()算法
rand()算法简单说,服务器通过它随机取得0-100中的一个数,再与本次装备强化成功率(假设10%)对比,小于10代表成功,rand就是取随机数.我说的"通用"是什么意思呢?大部分游戏,采用的rand()算法都与下面代码一致.

代码:
int __cdecl rand (
        void
        )
{

        _ptiddata ptd = _getptd();

        return( ((ptd->_holdrand = ptd->_holdrand * 214013L + 2531011L) >> 16) & 0x7fff );

}

(摘自c运行时库rand.c)
看不懂没关系,我会在下面做出解释.
2.游戏服务器的装备强化功能,采用特 定单元.
很多游戏的服务器通常会分为很多单元.物品买卖单元,物品属性更改单元,怪物与玩家互动单元,玩家聊天沟通单元等等...
3.服务器维护重新开启后,你可以快速登录游戏(几秒之内)
4.服务器强化结果不会受除了rand()值外其他因素影响
为什么这么说?我曾遇到一款游戏,它的服务器除了计算你本次是否rand成功外,还有另外一个判断,就是当前服务器玩家中,如果已经有3个人打出了顶级装备,那么后面的人即使rand()成功,那也是100%不让你成功的.

现在我来讲一下,如何在这几个假设下,估算出装备成功概率.

return( ((ptd->_holdrand = ptd->_holdrand * 214013L + 2531011L) >> 16) & 0x7fff );直接翻译,就是返回这样一个值:它是用"上次"得出的返回值乘以214013后再加2531011,然后把结果转为二进制后右移16位,最后取后15 位的值.没懂,没关系,我们从中可以得出结论.

第一,随机数只和"上次"的值有关,如果你知道"上次"的值,你就可以算出本次的值!第二,ptd->_holdrand这个数,每差1,rand()值将会差大约3-4.

那么"上次"的值如何得到呢?假如服务器刚刚开启,

它认为"上次"是几呢?幸运的,在很多程序中,这个值其实就是服务器开启的时间与1970年1月1日0时0分0秒的差(单位:秒)!

那么最关键的问题来了,我们如何知道服务器开启的时间,精确到秒?!

如果服务器得到一个开启时间,并开始一次次计算随机值,那么所有这些值其实都是固定的,rand()第一次是38,第二次62,第三次....

如果我们知道服务器准确的开启时间,那么我们就可以知道第一次强化概率是38,第二次是62...

我们现在需要一个工具,它在服务器维护结束之前,启动运行,并认为之后每一秒服务器都有可能开启,计算以这一秒为"上次"的所有rand()值的序列.

如7点5分0秒(38,62...)7点5分1秒(11,89...).然后,我们尽快登入游戏,尽可能

在周围无人的情况下,自己占用这台服务器的这个运算单元

, 也就是只有你一个人在那里做强化(如假设2)!连续强化5次左右,以你成功和失败的过程,与这个工具之前计算出的各个数集作比较.如果某游戏(如:聚仙) 能告知你当前条件下成功率的值,你就能很快得出服务器的开启时间!举例,你成功和失败分别是:成功,成功,失败,失败,成功.游戏中强化界面显示你每次成 功率分别为100,100,45,45,20.刚好你工具中有一组数吻合,为95,88,46,77,19.(不过要注意,100%的时候,有的程序是不 进行一次rand()的,因为100%成功,随机数是多少都是成功,还算它干嘛- -)

于是

找到了服务器开启时间并按照工具中对应的rand()值序列,你就能够知道服务器这个运算单元下一次rand()的结果

,如果某游戏界面显示你本次成功率为70%,而工具告诉你,下次服务器会返回80,那么你就拿个烂装备去顶一次吧.

从技术角度研究出这个方法.这个方法也不是100%成功,不是万金油.我只是在假设情况下哈...还有

提醒一下游戏策划,最好别把每次强化的概率显示出来.除非你们不是我说的这种随机数取法.否则还是挺危险的.

各位加我为好友吧。大家一起聊技术,一起玩聚仙~

相关资讯:
特色结婚礼服 展现女人最美丽的一刻
游戏主题曲隆重发布 徐天受邀征选歌词歌手
精美壁纸:游戏场景截图第五期
唯美宏大集于一身 聚仙首部场景视频公布
《聚仙》高清CG震撼出击
上一篇:GameBar《聚仙》铠甲专辑之阴阳师 下一篇:任务升级:玩家分享自己的升级经验