从计算机角度而言,计算所做的任何动作都是由确定指令产生的。随机算法一直是计算机研究的一个领域。但是总体而言,计算机的随机和现实世界或者说理想的随机概率是有区别的。所以在计算机领域,这个领域叫做【伪随机算法】或者【伪随机序列生成】。
我们先从最基本的随机开始说起,要让确定性的计算机产生一个不确定的数字,那么第一件事情就是引入【随机种子】。一般而言,程序员倾向于采用计算机时间的ms或者us、ns数据作为随机种子。通俗而言,例如,计算现在处在2014.10.29日 15:53:17,但是在执行指令的这个瞬间是这1秒中的第多少ms确实不确定的。当然随机种子还可以有其他的取法,但无论如何,计算机需要一个随机种子来生成后续的概率。
有个随机种子后,生成随机概率的方法就简单得多了,各种姿势也是百家争鸣。这里举最简单的一种。例如,需要一个事件的发生概率是25%,分以下几步完成[1]取随机种子x 。[2]计算取余函数x%4,结果集为{0,1,2,3} [3]随便规定一个数代表成功,例如3代表成功。那么随机到0,1,2的时候就会失败,随机到3的时候就会成功。
这种最基础的随机算法在大量早期游戏中使用,其中包括著名的魔兽争霸。使用这种算法的特点就是,这个系统其实很类似于真正的随机环境。一个玩Dota的,如果他脸好去玩剑圣,理论上存在他的剑圣每一次被攻击都产生反击螺旋的可能。这个世界上总有脸好的和脸黑的玩家。但这个矛盾在普通暴击或者致命一击这种攻击概率事件中还不明显,因为这个事件发生次数实在太多(成千上万次),导致事实上的随机和玩家感受到的概率是一致的。
但是这个概率在新一代网络游戏的强化系统(或者类似系统)中则显示出了不足。原因就是如果一个玩家连续被爆100次装备(概率上可能),估计他杀人的想法都有了。主要你玩剑圣,连续100次不暴击你还是能接受的。于是游戏的强化系统一般不再采用基础的随机种子算法。两种不同解决思路开始产生【1】叠加概率,导致事件一定可能成功【2】生成局部序列。
首先解释叠加概率,就是假设初始概率是X,第一次不成功,第二次概率加大到2X,第三次3X,直到某一次的成功率一定能达到100%以上。这里不是数学吧或者计算机吧,我就不罗列最终的计算公式和最终概率反推初始概率的公式。但是一个基础结论就是在这类系统下,【上一次触发事件不成功,下一次触发这个事件成功的概率增加】。
第二种是伪局部随机序列生成,例如最终需要的概率是1/4,那么程序中只需要生成一个序列{成功,不成功,不成功,不成功},然后随机打乱顺序即可。这种算法就保证了4次中必有一次成功,而且概率真正符合1/4。近来的手游里的刀塔传奇和类似的抽卡牌游戏,只要宣称什么10连抽必中的,基本都是这类系统。
DNF由于开发的年代比较早,没有采取后面这种更加合理的伪随机序列算法,而是采用了前一种概率叠加算法。但是涉及到具体的强化合成事件,还有一个重要的事情就是,这个随机叠加是针对于玩家个人,还是针对服务器。也就是比如说凯丽,她会针对每个玩家保留一份强化成功率累加值,还是针对于凯丽自己(也就是相当于大家共用一个概率值)。DNF初始设计的时候并没有将人物当前某个事件的概率累加值添加在人物属性中。而是每个事件有每个事件的概率生成器。这样做的原因有两点【1】如果某个事件直接作为人物角色信息,那么新添加事件,不得不重新更改数据库表的结构【2】如果每个人物单独保存事件累加概率,代价太大。其实主要原因是第一条,添加新的事件需要更改数据库表,这是基本任何游戏设计都不能允许的。所以DNF和其他多数游戏一样,采用全局事件概率生成器。总结而言就是【大家共用概率累加】。举例而言,同服务器的人,强化+13失败了,你再去强化加+13,你成功的概率增加!
最后澄清几个强化的谣传,理清几个相关问题。【1】服务器频道有无关系,每个频道本质上是不同的服务器,所以服务器频道有关系,频道120有人强化+12失败,频道121的强化+12的概率不会增加。【2】低等级垫子有无作用,比如很多谣传的必强化成功的垫子序列,从程序设计角度而言,没有必要在前面已经复杂化的概率叠加机制上再将不同等级的强化概率混合在一起。强化+11失败和强化+12成功没有关系!【3】普通武器和神器甚至传说是否共享概率叠加机制。共享!因为如果不共享,添加一次物品等级,就要修改一个概率生成器,这是程序维护不可能支持的。所以普通白色装备和神器共享概率生成器。【4】增幅和强化的概率混合吗?增幅和强化是2个不同的概率生成器,不混合!
希望这个帖子能终结所有关于DNF武器强化的问题。武器强化有无捷径之路?答案留给认真分析的人。不保证后续版本是否会修改相应机制!转载请注明作者:theprinceofelf(凌烟子墨)。
我们先从最基本的随机开始说起,要让确定性的计算机产生一个不确定的数字,那么第一件事情就是引入【随机种子】。一般而言,程序员倾向于采用计算机时间的ms或者us、ns数据作为随机种子。通俗而言,例如,计算现在处在2014.10.29日 15:53:17,但是在执行指令的这个瞬间是这1秒中的第多少ms确实不确定的。当然随机种子还可以有其他的取法,但无论如何,计算机需要一个随机种子来生成后续的概率。
有个随机种子后,生成随机概率的方法就简单得多了,各种姿势也是百家争鸣。这里举最简单的一种。例如,需要一个事件的发生概率是25%,分以下几步完成[1]取随机种子x 。[2]计算取余函数x%4,结果集为{0,1,2,3} [3]随便规定一个数代表成功,例如3代表成功。那么随机到0,1,2的时候就会失败,随机到3的时候就会成功。
这种最基础的随机算法在大量早期游戏中使用,其中包括著名的魔兽争霸。使用这种算法的特点就是,这个系统其实很类似于真正的随机环境。一个玩Dota的,如果他脸好去玩剑圣,理论上存在他的剑圣每一次被攻击都产生反击螺旋的可能。这个世界上总有脸好的和脸黑的玩家。但这个矛盾在普通暴击或者致命一击这种攻击概率事件中还不明显,因为这个事件发生次数实在太多(成千上万次),导致事实上的随机和玩家感受到的概率是一致的。
但是这个概率在新一代网络游戏的强化系统(或者类似系统)中则显示出了不足。原因就是如果一个玩家连续被爆100次装备(概率上可能),估计他杀人的想法都有了。主要你玩剑圣,连续100次不暴击你还是能接受的。于是游戏的强化系统一般不再采用基础的随机种子算法。两种不同解决思路开始产生【1】叠加概率,导致事件一定可能成功【2】生成局部序列。
首先解释叠加概率,就是假设初始概率是X,第一次不成功,第二次概率加大到2X,第三次3X,直到某一次的成功率一定能达到100%以上。这里不是数学吧或者计算机吧,我就不罗列最终的计算公式和最终概率反推初始概率的公式。但是一个基础结论就是在这类系统下,【上一次触发事件不成功,下一次触发这个事件成功的概率增加】。
第二种是伪局部随机序列生成,例如最终需要的概率是1/4,那么程序中只需要生成一个序列{成功,不成功,不成功,不成功},然后随机打乱顺序即可。这种算法就保证了4次中必有一次成功,而且概率真正符合1/4。近来的手游里的刀塔传奇和类似的抽卡牌游戏,只要宣称什么10连抽必中的,基本都是这类系统。
DNF由于开发的年代比较早,没有采取后面这种更加合理的伪随机序列算法,而是采用了前一种概率叠加算法。但是涉及到具体的强化合成事件,还有一个重要的事情就是,这个随机叠加是针对于玩家个人,还是针对服务器。也就是比如说凯丽,她会针对每个玩家保留一份强化成功率累加值,还是针对于凯丽自己(也就是相当于大家共用一个概率值)。DNF初始设计的时候并没有将人物当前某个事件的概率累加值添加在人物属性中。而是每个事件有每个事件的概率生成器。这样做的原因有两点【1】如果某个事件直接作为人物角色信息,那么新添加事件,不得不重新更改数据库表的结构【2】如果每个人物单独保存事件累加概率,代价太大。其实主要原因是第一条,添加新的事件需要更改数据库表,这是基本任何游戏设计都不能允许的。所以DNF和其他多数游戏一样,采用全局事件概率生成器。总结而言就是【大家共用概率累加】。举例而言,同服务器的人,强化+13失败了,你再去强化加+13,你成功的概率增加!
最后澄清几个强化的谣传,理清几个相关问题。【1】服务器频道有无关系,每个频道本质上是不同的服务器,所以服务器频道有关系,频道120有人强化+12失败,频道121的强化+12的概率不会增加。【2】低等级垫子有无作用,比如很多谣传的必强化成功的垫子序列,从程序设计角度而言,没有必要在前面已经复杂化的概率叠加机制上再将不同等级的强化概率混合在一起。强化+11失败和强化+12成功没有关系!【3】普通武器和神器甚至传说是否共享概率叠加机制。共享!因为如果不共享,添加一次物品等级,就要修改一个概率生成器,这是程序维护不可能支持的。所以普通白色装备和神器共享概率生成器。【4】增幅和强化的概率混合吗?增幅和强化是2个不同的概率生成器,不混合!
希望这个帖子能终结所有关于DNF武器强化的问题。武器强化有无捷径之路?答案留给认真分析的人。不保证后续版本是否会修改相应机制!转载请注明作者:theprinceofelf(凌烟子墨)。