方舟生存进化吧 关注:381,538贴子:6,075,483

底层变异机制-详解

只看楼主收藏回复

变异本身毫无技术含量,相信各位早已学会。
相比变异本身,难度更大的是如何让变异过程简化,批量化,方便管理,以及可持续。但是这不在本帖的讨论范围之类
本帖仅将剖析变异底层游戏机制,以便有需要的朋友进行参考学习
注:本帖对象为有一定基础知识的玩家,新手看不懂建议先去学习更基础的内容
SD羽毛南巨镇楼,并没有什么特别的含义


IP属地:湖北来自Android客户端1楼2023-09-08 14:37回复
    简单来说,变异就是一种,在后代繁育过程中,属性点点数相比遗传所得属性增长的现象。变异只可能增长属性点,不可能降低。


    IP属地:湖北来自Android客户端2楼2023-09-08 14:41
    回复
      首先,你要清楚一点,那就是遗传和变异的顺序。遗传是在变异之前的,也就是说,当一个生物遗传自父母的属性确定下来之后,才会进行变异的程序


      IP属地:湖北来自Android客户端3楼2023-09-08 14:44
      回复
        遗传的内容就不说了。这里稍微提一嘴,遗传来自父母属性时,较高的属性有55%的概率选中,而较低属性有45%概率选中,而不是50%的概率


        IP属地:湖北来自Android客户端4楼2023-09-08 14:48
        收起回复
          接下来介绍变异机制
          一个子代恐龙,变异的判定流程会重复进行三轮
          判定的流程如下
          1.选择将要变异的属性点。不能升级的属性点是不会被选中的(比如非解飞下飞行龙的移速点,标准海洋龙的氧气点)
          2.选择父方或者母方作为变异的来源(详细的在后面讲)
          3.概率判定。概率2.5%,进行下一步,否则本轮变异判定失败,进行下一轮变异判定,若是最后一轮判定,则结束判定
          4.施加变异和颜色变异
          然后进行下一轮判定或者结束判定


          IP属地:湖北来自Android客户端5楼2023-09-08 15:01
          回复
            快快讲如何工厂模式批量化去变异恐龙


            IP属地:广东来自iPhone客户端6楼2023-09-08 15:12
            收起回复
              好贴快更!


              IP属地:上海来自iPhone客户端8楼2023-09-08 15:15
              回复
                等等,这里有一点问题,我稍微去考证一下


                IP属地:湖北来自Android客户端11楼2023-09-08 15:31
                回复
                  // Mutation is tied to one parent (there is a 55/45 chance for it to be the parent with the best stat)
                  var chanceForParent = this.NumberOfLevelUpPointsApplied[randomStatIndex] <= withMate.NumberOfLevelUpPointsApplied[randomStatIndex]
                  ? 0.55000001f : 0.44999999f;
                  var randomParentRoll = NewRandom();
                  var randomMutationIsFromMate = randomParentRoll <= chanceForParent;


                  IP属地:湖北来自Android客户端12楼2023-09-08 15:48
                  回复
                    也就是说,wiki上的描述是错误的,较高的一方才有更大概率被选中


                    IP属地:湖北来自Android客户端13楼2023-09-08 15:50
                    回复
                      于是这里对7楼进行订正修改
                      下面将对上面一些内容进行补充说明
                      2.选择父方或者母方作为变异的来源。
                      注意!这个和属性点遗传自父方还是母方无关!属性点遗传在变异判定之前就已经完成!他是一个独立的判定!
                      选择父母中的一个作为突变的来源,其中属性点较低的一方有45%的概率被选中,而属性点较高的一方有55%的概率被选中。
                      这里会进行一个判定。如果被选择为“变异的来源”的龙,他的变异计数器达到了20点的上限,那么这一轮的变异判定失败,将进行下一轮变异或者结束判定


                      IP属地:湖北来自Android客户端14楼2023-09-08 15:52
                      回复
                        只有这样,才能推导出第10楼的结论
                        而这个第二步,也是变异计数器限制变异的根本原理。我们能够很容易地从中推导出以下结论
                        1.只要父母双方的变异计数器都小于20,则变异概率不会有任何影响
                        2.如果父母双方中,只有一方的变异计数器大于等于20,而另一方小于20,有两种情况
                        (仅针对单一属性)
                        -当属性点较高的一方变异计数器到达限制时,变异的概率降低55%
                        -当属性点较低的一方变异计数器到达限制时,变异的概率降低45%
                        3.当父母双方的变异计数器都大于20,则没有变异的可能


                        IP属地:湖北来自Android客户端15楼2023-09-08 15:53
                        回复
                          第四步就是在一系列判定成功之后,实施变异的步骤
                          1.属性点增加。有一个判定,就是属性点必须小于255,如果小于255,则会增加2个属性点 2.并在选中的“变异来源”增加1点变异计数器点数
                          3.进行一次颜色变异,随机进行一次颜色变异。90%概率变异出正常颜色,10%变异出染料颜色。所有颜色都有被选中的可能。变异颜色的位置是随机,有可能变异到生物没有的位置上


                          IP属地:湖北来自Android客户端16楼2023-09-08 16:04
                          回复
                            像这样的判定,会进行三轮
                            也就是说,在父母双方变异计数器都小于20的情况下
                            发生变异的概率是7.314%
                            至少发生两次变异的概率是0.1844%
                            发生三次变异的概率是0.0015625%,即6.4万分之一的概率
                            四变异从机制上就不存在,你看到谁说自己四变异,给他两巴掌


                            IP属地:湖北来自Android客户端17楼2023-09-08 16:14
                            收起回复
                              机制介绍完毕,接下来稍微提几句
                              如果是屁股0变,公种不断累积变异点数的话,在公种变异计数器抵达20之前,概率不会受到影响。而在抵达/突破20后,概率会降低55%,以前网传的是“大幅降低变异概率”,这个说法实际上很模糊。实际上,降低55%的概率,并没有特别离谱,翻倍龙房的规模就基本上可以弥补。对于某些动辄上千头龙的龙房,其实这个影响并不算特别大


                              IP属地:湖北来自Android客户端18楼2023-09-08 16:22
                              回复