失谐门的内在原理
你是否思考过这样一个问题:为什么失谐门总是依靠韧皮雕像和篝火来制作?为何一扇门能变出天顶剑?失谐门的运作原理到底是什么?我也曾想过这个问题,然而搜遍b站百度贴吧抖音,却没有一个人能解答。秉持着对真理的不懈追求,我打开浏览器“出国”学习了一番,收获颇丰,便来分享分享
泰拉瑞亚的物品贴图都储存在电子表(sprite sheet)上。frameX与frameY是以像素(px.)为单位的用于定位某个物块贴图在电子表中的位置的值(可以将电子表理解为中学所学的直角坐标系,但它其实更像早期的元素周期表),整个坐标系以左上角为原点,frameX值向右增长,frameY值向下增长。每当物块需要改变贴图时,系统都会为这个物块加减frame值,从而根据新的坐标取用新的贴图
游戏源代码规定,每当frameX增加72px时,物品ID都会增加36;每当frameY增加54px时,物品ID都会增加1。这个规定与电子表物品的排列以及像素格有关系
韧皮雕像贴图是横着排的,所以它只受frameX影响。它的“激活状态”的贴图与“关闭状态”的贴图相隔72px,所以每当玩家激活它时,系统就会为其增加72px的frameX使其变为“激活状态”贴图,同样的,当玩家关闭它时,系统会减去其72px使其变回“关闭状态”贴图。值得注意的是,由于韧皮雕像占位2*3格,所以系统每次执行此操作时,会更改整个区域也就是6格的frameX值
如果在这个2*3格的区域内出现了不属于韧皮雕像本体的物块,那么无论此区域加或减frameX值,非本体物块都会一直加自身的frameX值。这种无限加frameX的漏洞被称为“哲学家之石”(philosopher's stone)
篝火漏洞(Campfire glitch)也是同理。不过区别在于,篝火贴图是竖着排的,所以它只会改变自身的frameY值,且每次改变量为54px
失谐门本身并不是一个漏洞,而是多个漏洞组合起来的装置。接下来讲讲整个装置中最核心的漏洞——门
众所周知,门有开和关两种状态,同样对应两种贴图。门的电子表相当大,高度达到1982px,宽度为142px。为了选择所有贴图,系统会同时查看它的frameX和frameY,所以门贴图的改变受两个值的影响。此外,门在改变frame值后不会进行值域检测,也就是说,门的frame值可以超出自身电子表的值域,从而变成别的物品
以上就是失谐门的基本原理。接下来的步骤大家就非常熟悉了:利用沙子、机关门将韧皮雕像、篝火与门的贴图区域重叠在一起,通过改变韧皮雕像来增加门的frameX值,通过改变篝火增加门的frameY值。由于门的值域没有边界,所以它的ID也便随之发生嬗变了