cf战场模式吧 关注:66,989贴子:4,916,827

我是游戏程序员,吐槽一下兵种卡强化程序。

只看楼主收藏回复

很多人不了解兵种卡的强化成功率到底受什么因素影响。我来给大家解析一下。


IP属地:江苏来自Android客户端1楼2015-02-15 01:06回复
    前排围观


    来自Android客户端2楼2015-02-15 01:07
    收起回复
      看到很多人纠结强化,本人刚好是游戏程序员,就自己一些看法来解析一下穿越火线战场模式的强化系统。
      谈到强化,就必定用到随机数。战场模式强化系统用的是Source引擎,Source引擎用的是C++语言,那么先来看下C++是怎么得到一个随机数的,有几种方法。


      IP属地:江苏来自Android客户端3楼2015-02-15 01:07
      收起回复
        第一种 rand:
        例如得到一个0~100的随机数A的方法是:int A=rand()%101;
        返回结果其实并非是一个真正的随机数,而是一个固定的数列,这个数列从服务器端程序开始运行起随着每一次调用顺序取下一位来用。注意:没有任何网游会把强化随机数放在客户端运行,否则极易被修改软件利用,因此服务器的所有玩家事实上是共享的这一数列。


        IP属地:江苏来自Android客户端4楼2015-02-15 01:08
        收起回复
          What are you talking about ❓


          IP属地:湖北来自WindowsPhone客户端5楼2015-02-15 01:09
          收起回复
            4楼?


            来自iPhone客户端6楼2015-02-15 01:09
            收起回复
              围观


              IP属地:安徽来自Android客户端8楼2015-02-15 01:10
              收起回复
                这是一个排列好的无规则的非常长的数列,虽然他并非真正随机数,但是基本模拟了随机数的特点,但正因为不是真正意义的随机,所以极少出现连续多次相同或相近数字的情况。
                这种方式的缺点:服务器每次启动后的第一次调用的随机数,返回的结果永远相同。


                IP属地:江苏来自Android客户端9楼2015-02-15 01:10
                收起回复
                  表示完全看不懂,围观


                  IP属地:福建来自Android客户端10楼2015-02-15 01:10
                  收起回复
                    两天用了140多张卡盾牌没上10的路过
                    ————————
                    ★★★★★游戏区服:山东一区
                    ★★★★★游戏id:我是小呆
                    ★★★★★效力战队:天道酬勤
                    ★★★★★主打模式:战场挑战爆破
                    ★★★★★擅长枪械:雷神,91
                       --来自助手版贴吧客户端


                    IP属地:辽宁来自Android客户端11楼2015-02-15 01:11
                    收起回复
                      楼下儿子告诉你爸爸什么是现房!


                      来自Android客户端12楼2015-02-15 01:12
                      收起回复
                        楼主你说直接一点行么,


                        IP属地:安徽来自Android客户端13楼2015-02-15 01:12
                        回复
                          第二种方法 srand:
                          用法与rand相近,唯一不同的是它允许程序员设定一个种子,种子不同,数列就不同。多数程序员为了避免服务器每次调用随机数的第一次结果相同,而采取一些变量作为种子。例如日期,时间,甚至另一数字列,请看: srand(unsigned(time(0))); int aaa=rand()%6+1; //成功率25% if(aaa!=1) { cout<<"强化成功!"<<endl; } else cout<<"强化失败!"<<endl;


                          IP属地:江苏来自Android客户端14楼2015-02-15 01:12
                          收起回复
                            结论:
                            虽然无法得知穿越火线用的哪一种方法,但是基本可以分析出以下结论
                            1.你每次强化的成功几率都无法受到你之前随机结果的影响,这个理论适用于真正的随机数,但不适用于事先排列的固定数列。就像我说的,游戏程序所使用的伪随机数极少出现连续多次相同或相近数字的情况。


                            IP属地:江苏来自Android客户端15楼2015-02-15 01:13
                            回复