明月庄主吧 关注:21,602贴子:240,650

Minecraft 1.8 挖掘效率算法详解

只看楼主收藏回复

应庄主邀请,今天研究了一下1.8挖掘速度方面的代码,略微整理了一下。
必须要说这部分代码涉及的概念有点多,我尽力说的明白一点……


1楼2015-06-20 00:53回复
    先介绍一下MC里挖掘的机制,当鼠标点一个方块时,即开始挖掘这个方块,有的方块可以直接破坏,有的需要按住鼠标以持续挖掘。
    挖掘进度初始为0,每1游戏刻根据挖掘工具、挖掘方块、玩家位置等因素增加一定值(后文称这个值为挖掘效率),增加至1时方块被破坏。每个游戏刻只能破坏一个方块。
    破坏两个方块之间有5游戏刻的冷却时间。但是,在非创造模式下,如果挖掘效率>=1(即方块可以直接破坏),将不会有这个冷却,比如效率V的铲子可以一下子破坏很多土方块。在创造模式下,通过连点的方式(连续点鼠标)也可以无视这个冷却。


    2楼2015-06-20 00:56
    回复
      为了进一步说明挖掘速度的算法,我们来举几个例子


      4楼2015-06-20 00:58
      回复
        急迫II效率V钻石镐挖圆石
        钻石镐挖圆石的工具效率为8,效率V的附魔修正值为5^2+1=26,急迫II的修正值为1+2*0.2=1.4,圆石的硬度为2,收割修正值为30(稿子可以收集圆石)。
        综合起来挖掘效率为(8+26)*1.4/2/100=0.7933,需要2T破坏,两次破坏之间还会触发5T的冷却,总计7T可以破坏一个圆石。


        5楼2015-06-20 00:58
        收起回复
          达到1T破坏草方块所需要钻石铲的最低附魔
          钻石铲挖草方块的工具效率为8,设附魔等级为x,附魔修正值为x^2+1,草方块的硬度为0.6,收割修正值为30。可得不等式(8+x^2+1)/0.6/30>=1,解得x>=3。
          另外泥土方块的硬度为0.5,相应不等式为(8+x^2+1)/0.5/30>=1,解得x>2。
          本例可以看出铲子附魔效率III就可以了,更高的附魔基本上是在浪费修理花费的等级……而考虑到快速破坏泥土经常会导致误操作,可以附魔效率II作为“精修铲”。


          7楼2015-06-20 00:59
          收起回复
            另外我最近开了自己的博客(http://etflly.me),近期的计划是更读MC源码的成果。本文的原始链接为http://etflly.me/?p=94


            10楼2015-06-20 01:02
            收起回复
              不是30*硬度/((效率+效率附魔)*急迫) 么?
              ——————来自中二病精神操纵端 觉醒吧邪王真眼爆裂吧现实崩断吧精神粉碎吧世界


              IP属地:浙江来自Android客户端11楼2015-06-20 08:17
              回复
                好顶赞


                IP属地:陕西12楼2015-06-20 09:56
                回复
                  应该反过来除吧,这样得出结果是多少T挖下来,你这结果的单位算啥……
                  ——————来自中二病精神操纵端 觉醒吧邪王真眼爆裂吧现实崩断吧精神粉碎吧世界


                  IP属地:浙江来自Android客户端13楼2015-06-20 14:40
                  收起回复
                    3级的大触0.o


                    来自Android客户端14楼2015-06-20 20:03
                    回复
                      又见大触惹QWQ


                      IP属地:广西15楼2015-06-21 10:19
                      回复
                        希望
                        etfl
                        能详细说下
                        木 石 铁 金 钻 的 斧 铲 镐 分别挖掘对应的方块的时间是多少
                        效率1 2 3 4 5 之后分别又是多少
                        加了急迫又是多少秒破坏一个方块


                        16楼2015-06-21 12:37
                        收起回复
                          厉害啊,虽然觉得游戏时没用。。


                          IP属地:河南来自Android客户端17楼2015-06-26 21:01
                          回复
                            真触


                            18楼2015-07-17 08:48
                            回复
                              身为数学狂人的楼主值得我们学习!
                              向楼主致敬!


                              19楼2016-12-10 18:20
                              回复