您的当前位置:多玩首页>洛奇英雄传专区>综合杂类 > 垫刀有理冰草莓无用 程序员浅析强化系统

垫刀有理冰草莓无用 程序员浅析强化系统

2013-04-21 19:21:46 网友评论0|来源:贴吧|作者:wonder3d|进入论坛

  看到很多人纠结强化,包括冰草莓,垫刀,换线,下线等等。本人刚好是游戏程序员,就自己一些看法来解析一下洛英的强化系统。

  谈到强化和附魔,就必定用到随机数。洛英用的是Source引擎,Source引擎用的是C++语言,那么先来看下C++是怎么得到一个随机数的,有几种方法,

  第一种 rand:

  例如得到一个0~100的随机数A的方法是:int A=rand()%101;

  返回结果其实并非是一个真正的随机数,而是一个固定的数列,这个数列从服务器端程序开始运行起随着每一次调用顺序取下一位来用。注意:没有任何网游会把强化随机数放在客户端运行,否则极易被修改软件利用,因此服务器的所有玩家事实上是共享的这一数列。

  这是一个排列好的无规则的非常长的数列,虽然他并非真正随机数,但是基本模拟了随机数的特点,但正因为不是真正意义的随机,所以极少出现连续多次相同或相近数字的情况。

  这种方式的缺点:服务器每次启动后的第一次调用的随机数,返回的结果永远相同。

  第二种方法 srand()

  用法与rand相近,唯一不同的是它允许程序员设定一个种子,种子不同,数列就不同。多数程序员为了避免服务器每次调用随机数的第一次结果相同,而采取一些变量作为种子。例如日期,时间,甚至另一个数列。

  结论:

  虽然无法得知洛英用的哪一种方法,但是基本可以分析出以下结论

  1,垫刀有没有用取决于当前服务器强化武器的人数,如果整个服务器只有你在强化,那么垫刀是有用的(注意:整个服务器指的是所有的线加在一起)。有人会说在概率学里你每次强化的成功几率都无法受到你之前随机结果的影响,这个理论适用于真正的随机数,但不适用于事先排列的固定数列。就像我说的,游戏程序所使用的伪随机数极少出现连续多次相同或相近数字的情况。因此如果你能确定当前服务器只有你一人在强化装备,那么垫刀是一定有用的。

  2,换线与下线是无用的。先说下线,客户端的开启与关闭无法影响服务器调用随机数,所以下线是没有意义的,只有服务器重启才能重新调用随机数列。再说换线,洛奇的线概念只是为了分散玩家,缓解客户端压力而设计的,也就是说减少你的电脑同时需要处理的信息数量而设计的,与服务器无关,所有线都是由同一服务器处理的。

  3,冰草莓。从程序设计上来讲,加入冰草莓概念不算太麻烦,但是却增加了今后可能产生bug的不确定因素,为了一个幽默小彩蛋而增加风险没有太大必要。因此这个基本是不靠谱的。

  4,1000 把武器如果按照50%成功率,就一定会得到500把成功吗? 如果当前服务器只有你一个玩家在强化,那么你将得到一个非常接近于500的成功数字。但是如果当前服务器有多人在强化,那么这个成功率将被打断,人数越多其结果将越远偏离预期。所以如果你想赌人品,那么就找人多的时候强化,连续10次成功也不是不可能,但是如果你准备了多把武器想走概率,那么就找人少的时候强化。

  5,强化几率与角色无关,更与你曾经碎了多少武器无关,也与你手上有没有高强武器无关。这些条件判断会导致第三方程序介入影响结果的可能性,程序员不会这么做。简而言之,条件判断越多,可利用的漏洞就越多,没有程序员会希望给自己找麻烦。

  顺便说下垫刀,大部分程序员写这种几率会发生改变的随机数判断会用以下方法:

  先取1~100随机数

  成功率 80%: 如果返回结果小于80则成功,大于80失败。

  成功率 50%: 如果返回结果小于50则成功,大于50失败。

  成功率 20%: 如果返回结果小于20则成功,大于20失败。

  结论:如果对于80%成功率的东西你多次失败,说明数列里连续出现了多次极大数,那么下一个数字出现一个极小数的几率将变大。

  实际应用自己想吧~

看完本文后有何评价? 已有0人评价,点选表情后可看到其他玩家的表态。
0
0
0
0
0
0
0
加了个油 一撸而过 太给力了 亲求合体~ 坑爹呢这 笑而不语 暴怒狂抽
0 [与更多人共享]

热门新闻排行榜

洛英外观展示大全

»更多