我的世界Alpha刷怪详解,因为MC里的方块数目太多,因此Notch使用更大的单位来度量地图,那就是chunk,我这里译作“组块” ,今天教大家刷怪塔的制作原理,希望大家能喜欢~我的世界刷怪塔。
因为MC里的方块数目太多,因此Notch使用更大的单位来度量地图,那就是chunk,我这里译作“组块” 一个组块就是16×16×128(长×宽×高)个方块,即横截面为16×16,贯穿整个高度的长方体(Alpha里的竖直空间只有128格)。Alpha的地图中只有玩家周围的81个组块处于激活状态(有怪物活动,水流动等等),随着玩家在游戏中的探索移动,会不断有新的组块生成和加载,而原来激活的组块如果离得太远则会释放。
译文: 第一节:刷怪全能法则 1)难度级别不影响刷怪率 千真万确,这一点已经在代码里验证过。算法在生成怪物时并不调用难度参数。技术上而言,即使Peaceful难度也有着相同的刷怪率,尽管攻击性怪物在生成后立刻被移除。 2)怪物可以在人造方块上生成 鹅卵石,双层台阶,羊毛这些方块同石头与泥土一样可以生出怪物。然而怪物不会在玻璃或半层台阶上生成。对可以生成怪物的方块来说,刷怪率也没有差别。 3)刷怪现象存在于玩家周围144×144格的范围以内,24米以外 明确地说,刷怪发生于玩家周围的144×144×128(长×宽×高)空间以内。同时怪物只能在以玩家为中心,半径为24m的球面之外生成。(游戏中一个方块棱长1米,Alpha里的竖直空间只有128格) 示意图:
怪物也不能再玩家初始地点24米以内生成。 4)大型史莱姆能够在peaceful难度下存在 史莱姆会在peaceful以外的所有难度生成。不过和其他攻击性怪物不同的是,即使是大型史莱姆也不会在难度切换到peaceful时消失。如果在peaceful难度下杀掉大型史莱姆,它不会分裂成小史莱姆。史莱姆也能够在任何亮度下生成,不过仅限于最下面的15格空间。 5)攻击性怪物在亮度小于等于7级时生成。温顺的怪物只会在亮度大于等于9级的草地上生成。 方块的亮度计算方式比较诡异。每个方块本身的亮度和相邻的4个方块以及它上方的空气方块相比较,其中最亮的作为该方块的亮度级别。这意味着即使是一个7级亮度的方块,如果它相邻方块中有一个亮度为8级的话,攻击性怪物也无法生成(补充:不知道为什么,这种情况只对泥土和半层台阶方块有效)。
6)对指定的某个方块而言,在它上面生成怪物的概率受到该方块亮度(及周围环境)的影响 每轮会随机在0到7中选中一个数赋给变量R。如果方块的亮度小于或等于R,在那一轮怪物就能够在方块上生成。所以亮度为0的漆黑洞穴比起亮度为4级的月光照亮的区域会高出75%的刷怪率。参考数据:火炬亮度14级,火焰和日光为15级,月光是4级,而红石火炬则是7级。离光源每隔一个方块,亮度降低一级。 至于周围环境对刷怪率的影响,详见第三节。 7)在任意时刻,攻击性怪物不超过200只,温顺的怪物不超过15只 一旦上限达到,除非有怪物死亡,消失,或者怪物所在的那块地图被释放,否则不会生成新的怪物。 8)在一个空间里放置火炬不会影响别的空间里的刷怪率 当然,怪物数量达到上限时会出现例外。每个怪物在每一轮只有一次机会生成,如果由于火炬的原因而没能成功生成的话,它也无法重新选择生成地点,因此其他地方不会受到火炬的影响。换言之,用火炬把怪物聚集在一个区域的想法是不可行的。 9)史莱姆不遵循这些规律 第二节:刷怪算法 刷怪算法一般每秒调用20次。每一轮执行两次,一次生成攻击性怪物,一次生成温顺的怪物。 刷怪主循环: 1)把当前所有的81个组块放进一张伪随机列表。(并不是真正的随机,而是一串无法确定的特定顺序) 2)如果列表非空,就从中取出一个组块。 3)取一个随机数来决定下面的行为。有十分之一的机会进入第4步,否则忽略该组块回到第2步。 4)随机选择一种怪物(温顺的:猪,牛,鸡,羊。攻击性:蜘蛛,骷髅,僵尸,creeper,史莱姆) 5)在组块里完全随机地选择一个地点L1 6)如果L1在岩石或其他实体内部的话,就完全退出本次刷怪算法,忽略掉列表中剩下的组块。 7)如果L1没问题的话,它将作为一批怪物的生成地点。在L1周围较分散地选取6个地点,记为L(i)。 刷怪子循环 8)检查当前地点L(i)是否没被占用,而且下面是能够生成怪物的方块,上方有空余空间。 9)如果检查没通过,则读取下一个L(i)并回到第8步 10)检查L(i)是不是在(所有)玩家24米以外。还要检查是不是在初始地点24米以外。如果不是,则读取下一个L(i)并回到第8步 11)准备好要生成的怪物(位置,朝向等) 12)LGT(i)表示L(i)处的亮度 13)(如果是生成攻击性怪物)从0到7中随机选一个数赋给变量R,如果LGT(i)≤R,就在L(i)处生成怪物。 13)(如果是生成温顺的怪物)如果LGT(i)>8,则在L(i)处生成怪物。 14)如果生成的怪物时蜘蛛的话,还会取一个随机数决定是否再生成一只骷髅骑在蜘蛛背上,概率为百分之一。 15)读取下一个L(i)并回到第8步。 16)处理完所有的L(i)以后,回到第2步。 17)返回。 (注:史莱姆有特别的生成规则,要考虑到海拔和亮度级别,这在第一节里提到过。)
第三节:探讨 假如你想造怪物收割机或是别的什么而需要使刷怪量最大化的话,就需要遵循一些规则。理想的刷怪场所例如净化间,内部空空如也,只有一层让怪物出现的地板。在净化间里刷怪速度很快,在几秒内就能达到200只的上限。 之所以这么高效,是因为几乎完全避免了算法中第6步退出的情况,原因是在这些组块中仅有0.8%的地方被实体方块所占据。因此,大部分时间里所有的81个组块都有刷怪的机会。 你也许会认为多层地板能进一步增加刷怪率,因为有更大的刷怪面积。虽然严格说来没错,但这么做也增加了触发第6步退出的可能,从长远看来弊远大于利。 可能大部分人都没法挖出144×144的深坑,所以最佳方案是找到一个低海拔洞穴尽可能多的区域。开放空间越大,刷怪率越高。即便没有绘制出洞穴分布图也有办法找到合适的地方:可以四处探索,直到发现某处的怪物数量明显偏高,那里就有可能一直出现很多怪物。 第四节:神奇的刷怪塔 对于玩家所在的每个组块而言,组块的读取顺序都是独一无二的,不过有一个例外。如果组块(0,0)(即方块0,0到15,15)在玩家周围的81个组块之中的话,该组块总会第一个读取。我们可以利用这个规律。不管地形如何,在读取组块(0,0)之前算法绝不会退出。这意味着组块(0,0)比起其他的80个组块而言有着最高的刷怪率,和净化室一样高。 为了说明这一点,我在组块(0,0)里建造了一个19×19×64的刷怪塔,共有16层地板。几分钟以后塔里就聚集了约150只怪物,如果不是达到上限的话,可能会有更多。
(图中的玻璃方块其实是岩石,为了方便观察用NBTForge修改成了玻璃的外观)
一哥手游平台是重庆一哥手游科技公司旗下手机游戏玩家平台,以精品运营为理念,以贴心服务为宗旨,致力于为各种不同渠道与玩家打造好玩的手机游戏服务平台,同时免费提供丰富的手机游戏下载,立志成为国内一流的综合性手机游戏娱乐平台,不断追求更加卓越的品质!一哥手游!
|