

Needle Teaching

大家好,我是I wanna玩家破解,作为一名狂热跳刺玩家,我已经玩了两年的跳刺,了解的跳刺技巧也还算多。为了帮助更多人掌握更多贴墙的技巧,我在去年暑假的时候特意录制了三个半小时的视频(原2P,第3P为补录),然而我发现三个半小时过于冗长,并且视频模式会导致观众很难准确找到自己需要的部分,再加上当时是临场发挥所以很多东西遗漏未提,特此再追加一篇专栏,希望能继续帮助到更多玩家。特别感谢群里小伙伴们的大力支持及宝贵建议。另外本人的水平也有限,对某些部分也只是一知半解,如有错误也欢迎指正。本专栏共计8000余字,耗费了本人大量的心血,希望浏览之后也给更多I wanna跳刺爱好者推荐一下,感谢!

首先在开始介绍贴墙技巧之前,为了更好的切入正题,我先提供一下I wanna当中的一些基本数据,以便讲解更简洁(这些数据适用于绝大多数I wanna):
(1)游戏中空间的基本单位为像素(pixel,简称px),时间的基本单位为帧(frame,简称f);
(2)通常一格的长度为32px,普通砖为32*32px的正方形,kid的判定为11*21px的矩形;
(3)kid的X坐标是kid到屏幕最左端的距离,Y坐标是kid到屏幕最上方的距离;
(4)Align的数值为kid的X坐标除以3所得余数。
以上是在跳刺中的常用数据,其中(3)、(4)是对前两条的补充说明,可以不需了解,但(1)、(2)两条是必须要求了解的,无论是在实战还是讨论的时候都会经常用到,请先牢记这两条数据再继续浏览下面部分。

对于绝大多数I wanna系列游戏来说,其引擎设定大致是相同的,其中一个设定就是:在正常情况下kid每次进行移动的操作时,会发生3像素的位移。那么也就是说,如果kid连续移动,kid每次移动的最小单位都是3px。同时,接触过I wanna的玩家都知道,有许多较难的游戏对于操作是非常严格的,也许只是1~2像素的差别也会让刺阵的难度暴增。那么最大限度的把握这极其微小的差别,是很有必要的。倘若能让kid移动1px或2px, 使kid在开始的时候就把握这个差别,就能在无形中缩小难度。可令人头疼的是,kid移动的最小距离也有3px,在游戏中kid无法随心所欲的移动更小的距离,不能直接移动1px或者2px,这可难倒了众人。然而事实上,I wanna玩家们早已找到了实现这看似不可能完成的操作的方法,他们是如何做到的呢?
我们先看一个实例:假如你的书皱了,你如何将你的书摊平?答案很简单:把皱缩的部分摊开,再压平就可以了。实际上,在这个过程中,少不了桌子的功劳,因为你正是借助桌子让书变的平整,这里的桌子实际上起到了一个“修正”的效果。实际上,通过这个原理,我们很容易联想到:假设kid移动的过程中,我让一个障碍物挡住kid,这样不就能像之前那样“修正”kid的位置了吗?那么这个障碍物——很显然,肯定是砖块。
以上就是贴墙的原理和意义。拿下面的例子来说,假设在初始位置时离墙的距离为2px,那么如果你碰了一下墙,此时你离墙的距离变为0——这样,我们便顺利完成了2px位移,比基本位移3px更小,真正做到了“不可能的操作”。改变Align,是缩小刺阵难度的常用手法之一。

贴墙前

贴墙后
当然,只知道贴墙有什么作用还不够,更重要的是能将贴墙应用到实战中。如果我们知道游戏中每一个刺阵该贴哪个墙,能使刺阵难度最小,就可以达到事半功倍的效果。当然,I wanna的刺阵千变万化,我们不可能知道每个刺阵该贴什么墙,但是有许多刺阵是比较常见的,或者有处理同一类刺阵的方法,这些我们有必要了解。以下提供一些常见的常规刺阵的贴法,不用了解为什么,只需要硬记下来就行,这些是根据大量的堆命实验总结出来的实践经验。当然你也可以根据自己的理解来方便记忆,譬如出横纵刺的最好墙是最贴近刺的那个Align,因为越贴近刺越好钻出缝隙,这个就很容易理解,不过不理解也没关系,实战中不需要考虑为什么。

Align表格
Align表格

表格补充①——大刺F

表格补充②——钻苹果

表格注释
上面三个图是14种常见刺阵的贴法,我对第一个大表格的标注有所改动,后两个图是我自己补充的,并标注了贴不同的墙造成的效果(事实上,这些远远达不到正常跳刺的需求,但由于版面问题这里实在不方便逐一列举非常抱歉,想了解更多不妨观看Needle Teaching视频)。根据对刺阵的作用,我们可以把墙分为三类,这在图中已经标记好了。其中绿色是好墙(Good Align,简称GA),黄色是中等墙(Normal Align,简称NA),红色是坏墙(Bad Align,简称BA)。对于不同的刺阵,贴同样性质的墙也会有不同的差别,比如某些刺阵贴坏墙只是要求更精确,有的贴坏墙可能还需要改变跳法,有的贴坏墙可能直接导致无解,等等。同样,对于相同的刺阵,贴不同性质的墙也可能没有差别,比如大刺F的中等墙和好墙只是从理论上来区别开的,实际操作上几乎没有任何难度差别。
*温馨提示:在实战中,我们最好不要碰到这些刺再来对照表格来查找,这样不仅麻烦,而且费时,推荐将这些贴法记住,会更加方便。
*【重要】对贴墙的拓展补充
1.关于等价墙的计算
在上面的表格中,多余的墙只是用来标注的,然而试想一下,如果你在游戏内部碰到了这些刺,作者可能会这么好端端的给你摆三个墙让你贴吗?显然不会,也就是说,我们往往不能直接对照着表格来寻找我们需要的墙,这些墙作者很有可能不会直接给出来,我们需要寻找别的墙来替代Align表格中的墙。那么可以看出,我们要寻找的这个墙和Align表格当中的墙,所起到的作用是相同的,它们对应的Align的数值也应该是相等的,我们将使kid获得相等Align数值的墙组成一个集合,那么集合中的任意两个墙都可以互相称为等价墙。那么,在寻找等价墙的过程中,就会涉及到等价墙的计算,接下来让我们了解到底该如何寻找等价墙。
我们从上面的定义可以知道,若想称之为等价墙,它们所对应的Align数值必须是相等的,而Align的数值是kid的X坐标除以3所得余数,那么很容易得出:等价墙之间的距离必是3的倍数或0。但尤其需要注意的是,这里所谓的墙的距离指的是kid贴紧墙后kid相互之间的水平像素距离,而不是两墙的水平像素距离,这是非常容易让人混淆的地方,为了让大家彻底理解,接下来我们需要继续做一个讨论:

情况(Ⅰ)

情况(Ⅱ)
如上面二图所示,黑色线标注的两个墙在同一竖直线上,它们的水平像素距离是0,那么贴了这两个墙,似乎所获得的Align数字应该是相等的,然而真实情况是:贴上面的墙所获得的Align是2,而贴下面的墙所获得的Align居然变成了0!也就是说,虽然这两个墙的水平像素距离是0,但这两个墙不是等价墙,这是为什么呢?
事实上,由于kid移动的基本单位是3px,那么也就与之对应的有三种不同的状态,而我们无时无刻不处在这三种Align状态下。如果我们用3种颜色来区分它们,那么把水平线上所有点可以如图所示的状态分布图来表示:

水平线上的三种状态所分别对应的区域(状态分布图)
那么,如果kid处于用红色表示的状态,那么kid所在位置只能是在红色点上(假设kid判定的最左端表示kid的位置),不可能在黄色或绿色的点上。也就是说,只要贴的是等价墙,kid能够活动的区域应该是相同的。根据这一点,我们不妨做一个讨论:
(Ⅰ)当kid贴上方的墙即Align=2时,此时kid离面前的墙的距离为1px;

Align=2时
(Ⅱ)当kid贴下方的墙即Align=0时,此时kid离面前的墙的距离为2px;

Align=0时
由该讨论可以看出,贴两个墙使kid活动的区域不相同,并且kid获得的Align也不同,在同一竖直线上的这两个墙确实不等价。但是说了这么多,两个水平像素距离为0的墙,按道理似乎应该使kid对齐在同一竖直线上,可到底为什么不等价???请独立思考一会,如果仍然想不通,再接着往下看:
其实,这一切都是墙的朝向不同导致的。在情况(Ⅰ)中,kid贴的是面朝右边的墙,此时是kid的左边与墙对齐;而在情况(Ⅱ)中,kid贴的是面朝左边的墙,此时是kid的右边与墙对齐,在两种情况中,其实分别是kid的左侧和右侧与竖直线上对齐了,而kid判定的宽度是11px,因此,如果以kid判定的最左边为标准,此时两种情况下kid的水平距离为11px,很显然kid不能直接移动11px,即两种墙所对应的区域不相同,因此两墙不等价。
回到之前我们所说的等价墙的距离上来:等价墙的距离与等价墙的水平像素距离是两码事,两墙是否等价与两墙的水平像素距离无必然联系。两墙之间的水平像素距离是3的倍数或0时两墙不一定等价,只是对于同向墙来说两墙的水平像素距离恰好就等于kid之间的水平像素距离(即两墙的距离)。所以,只有同向墙的水平像素距离是3的倍数或0时两墙才等价,这个结论在异向墙的范畴中不成立。因此,在等价墙的计算中,我们需要对两种情况分别进行讨论:
A.同向墙的计算
根据以上的讨论,我们可以得出:若同向墙的水平像素距离为3n(n∈N),两墙就等价。取特殊情况,我们可以得出一些非常方便的结论:
a.当n=16即两同向墙的水平像素距离为一格半时,该两墙等价;
b.当n=32即两同向墙的水平像素距离为三格时,该两墙等价。
上述两个结论可分别适用于16px和32px网格。对于更大单位的网格,我们可以根据上面的规律叠加起来计算,比如九格、十三格半,等等;对于更小单位的网格,可以直接采用3n通式计算,比如9像素,当然小于16px网格的计算非常少见,一般最常见的是16px和32px网格。
B.异向墙的计算
异向墙的计算稍稍复杂一些,但是通过推导出一些非常简便的结论,我们仍然能得心应手:
a.一格面对面
在如下图中,黑色标记的两墙等价,可以用简单的小学计算证明:
设kid判定的最左端为kid的位置,贴左边墙时,kid的位置距离左边墙为0;贴右边墙时,kid最右端与右边墙对齐,则最右端距离左边墙为32px,kid判定的宽为11px,因此kid的左端即kid的位置距离左边墙为21px。21px是3px的整数倍距离,因此kid可以直接移动到贴近左边墙的位置。综上,黑色两墙等价。

一格面对面,两墙等价
b.二格背靠背
在如下图中,黑色标记的两墙等价,证明过程类似上面,可以自己试着证明。

二格背靠背,两墙等价
c.小砖块两边
小砖块左右两边的墙等价,结论自行证明,这里不作解释。

小砖块两边,两墙等价
综上,异向等价墙的三个普遍形式可简记为:一格面对面,二格背靠背,小砖块两边。
通过上面三种普遍形式对异向墙转换,可以先转化为同向墙的问题,然后再接着用同向等价墙的计算方法即可。
C. PlayerStart位置的等价墙

PlayerStart位置的等价墙
不管什么样的地图,必须要先设置一个PlayerStart的Object才能让kid出生,即PlayerStart的位置就是kid的出生点位置。事实上,PlayerStart的位置就是kid的出生位置,需要注意的是,PlayerStart的左右两边墙与之等价。这也是非常重要的,可用于判断kid的初始Align。
*温馨提示:在计算等价墙时,很容易将同向墙和异向墙混淆,需要格外注意,严格区分两种情况,并分别按照各自的方法计算。
2.关于贴墙规律的一些普遍性结论
在上面的叙述中,我们只说明了一些常见刺阵的贴法,对于不常见刺阵的贴法我们并没有提及,当然,知道每一个刺阵的贴法是不可能的,但是,对于某一部分刺阵来说,它们的处理方法是非常相近的,可以归为一类来讨论,这样得出来的结论是普遍性的,可以适用于非常多的刺阵,接下来让我们继续探索:
A.让kid站位最朝外的贴法

站位朝外的贴法
对于许多极限跳来说,需要让kid站在最外面,这样才可能跳的最远,因此,最佳站位应该是kid只有1px宽的判定在地面上,其他部分悬空。让我们试着证明:依旧设kid判定最左端为kid的位置,那么贴右边的绿色墙之后,kid最右端与该墙对齐,则此时kid的位置离该墙的水平像素距离为11px,离图中的kid脚下那条竖直线的水平像素距离为43px,让kid走到最外边而恰好不掉下来的位置,此时kid最多能走42px(42px是3px的整数倍距离,再向前就会掉下去),那么此时kid的位置离那条竖直线的距离为1px,即kid的判定有1px宽在地面上,与上面设想的情况吻合,因此可以推断绿色墙是GA。NA和BA也在图中分别标注了出来,kid分别有2px和3px的判定在地面上,不妨自己证明试试。
事实上,这个结论应用非常广泛,包括前面所讲的大刺F也是相同的规律,贴法也一模一样。
B.让kid最贴紧刺的贴法

贴紧刺的贴法
除了让kid站在最边缘,还有一种普遍情况就是使kid贴紧面前的刺,这样能使kid跳的最远。这种情况应用也非常普遍,例如三刺、五刺、A100、G阶等等。以五刺为例,如上图所示,利用一格背靠背的异向等价墙的结论可以轻松得出贴绿色墙能完全贴紧刺。
3.学会自主分析刺阵
事实上,有时候我们不一定必须靠记忆Align表格来贴墙,有时候我们完全可以独立思考。既可以真正理解Align表格,还可以通过自主分析来判断其他刺阵的贴法。这里以非常常见且极其重要的刺阵——倒刺为例。倒刺,顾名思义——就是在砖上摆一个倒过来的刺,而对于倒刺来说,最常见的还是站倒刺,即让kid站在倒刺与砖之间的夹缝中,对于这个刺阵,我们需要作一个略微详细的分析:

倒刺
事实上,I wanna的长度基本单位是像素,也就意味着I wanna物体并不是平滑的,而是突兀的,就像普通的刺,看上去好像是一个标准的三角形,但是如果我们把它放大,其实它是一个类三角形的封闭图形,但不是三角形,尽管如此,我们分析的时候仍然可以粗略的认为它是一个三角形。分析时,我们仅分析左半部分(右半部分与之完全对称),将其从中剖开:
我们将其简化成如图所示的三角形区域,其中AC边是刺的一边,BC边是砖。

简化后的倒刺(左半部分)
那么,kid究竟最多能站上去多少距离呢?利用相似三角形,我们能很快得出结论:
设红色矩形即是kid能站上去的最极限位置,易知AB=32,BC=16,DE=21,由相似三角形相关知识可知CE=10.5,那么BE=5.5,舍去小数部分,即倒刺上有5px的空隙可站,为了更方便讨论倒刺的墙,我们只需要画一个状态分布图即可一目了然:

倒刺的状态分布图
由上面可以看出,有两种状态是含2个像素区域的,而另一个状态只含1个像素区域,也就是说这种状态下kid站倒刺的难度更大,这就很容易得出Align表格中倒刺的好坏墙分别是哪个。
我们还可以利用“填补法”来讨论一个未知的刺阵,即将未知刺阵看做是某个刺阵的变形然后再进行分析。例如下面这个半草里刺,这个刺阵Align表格中没有给出,所以我们需要自己分析。

半草里刺
我们容易看出半草里刺的跳跃轨迹极其相似于珠峰,那么我们大抵上就可以将其看作是珠峰。

半草里刺的实质
又比如说下图所示的非正常克星,kid是不能直接越过克星的,需要在克星中间马上接二段。这个刺阵显然是比较难的(事实上也确实对Align有严格限制),分析时,我们可以想象kid跳跃的轨迹大致类似于A100,那么我们不妨把它看作是弱化A100,这样就容易得出这个刺的好墙:

非正常克星
请自己动脑想想看,下面这个刺可以看作是哪个刺阵的变形呢?(答案:横纵)

刺阵分析练习
当然,上面几个例子都非常好理解,然而这不过是少数情况,其实大多数的刺阵我们是无法直接分析的,这种情况下只能依赖于大量的堆命尝试才能得知该贴哪个墙,推荐遇到没见过的难刺阵时先用jtool练习一会,会轻松的多。
4.组合刺阵及刺阵组的综合考虑贴法
事实上,在实战中,我们遇到的刺阵大部分并非是基本刺型,而是将一些基本刺型组合在一起形成的一个新型刺阵,我们称之为组合刺阵。那么,这个时候我们不仅需要考虑单个基本刺型的贴墙,更要统筹兼顾的考虑每一个部分。只有尽量让每个部分的难度都最小,这样的墙才能称为该组合刺阵的最好墙。我们先看一个简单的例子:

外向双横纵
如图是由两个朝外的横纵构成的组合刺阵,此时为了使刺阵难度最小,我们需要保证两个横纵都是好墙,这样对于整个组合刺阵来说难度自然是最小的,因此,我们需要分别对这两个横纵进行分析:

横纵①

横纵②
对于横纵①来说,kid面对的墙是坏墙,但另外两个墙对横纵①有利;对于横纵②来说,kid上面一格的墙是坏墙,但另外两个墙对横纵②有利。因此,对于整个组合刺阵来说,最好的墙是kid下面一格的那个墙,而另外两个墙只分别对其中一个横纵有利,对另一个横纵不利,因此对于外向双横纵来说,只有一个唯一的好墙,没有绝对的坏墙。
同样,对于其他的组合刺阵,我们一样可以通过相似的考虑过程来分析整个刺阵,不管是两个基本刺阵还是多个基本刺阵都是一样的分析方法。又如内向双横纵(俗称菊花刺):

内向双横纵(菊花刺)
我们可以认为菊花刺是由两个横纵再加上上面的一个多余的强化刺组成的,因此只需对两个横纵进行分析(此处分析过程省略,方法同上)。
可以得出,绿色墙对两个横纵都有利,而红色墙和黄色墙只对其中一个横纵有利。但红色墙是对第一个横纵不利,黄色墙是对第二个横纵不利。而如果第一个横纵是坏墙,其难度比第二个横纵是坏墙的情况要大的多,因此可以认为菊花刺有绝对的坏墙。
当然,上面两种组合刺阵都有绝对的好墙,我们可以做到“鱼和熊掌兼得”,但是,也存在着一些“鱼和熊掌不可兼得”的情况,如图所示:

“鱼和熊掌不可兼得”
在上图中,易知对于外向双横纵来说,它的好墙是kid右边面对的墙,但这个墙对于上面的倒刺来说却是坏墙,这种情况就是不存在绝对的好墙的情况。一般来说,我们优先保证难度大的部分贴到好墙,如果实在不行,那就只能退而求其次,只好让难度小的部分贴坏墙。
当然,上面所说的情况是指多个基本刺型复合在一起形成的组合刺阵,在实战中也可能存在着多个基本刺型分开从而形成的一段刺阵组。

结构较简单的一个刺阵组
如图所示,这里我们既要考虑前面的横纵,又要考虑后面的T-bone,这也存在着之前那样“取舍”的问题。对于刺阵组来说,我们还需要结合刺阵所在位置来考虑。问一个很简单的问题:在长存档中,你希望难的刺阵在后面还是在前面?很显然在前面,因为前面的位置靠近存档,长存档当然是难刺阵越在前面越好。同理,如果难刺阵在后面,或者各部分难度大致相当,一般考虑优先保证后面的刺阵贴到好墙。刺阵组的考虑要比组合刺阵复杂,情况也更加多元化,一句两句很难概括全面,只有积累更多的实战经验才能运用的更加娴熟。
5.AD微移的计算
在上面一切贴墙的讨论中,我们都是以kid移动的基本单位是3px为基础的,但有些游戏比较特殊,例如单字母类型的游戏,刺阵非常密集,往往没有多余的空间给出好墙,为了方便,这些作者经常会添加一个其他游戏没有的设定——AD微移。AD微移指的是按A或D键后,kid可以只向左或右移动1px。这样,我们就不需要考虑找等价墙了,只需要利用AD微移获得我们想要的Align即可。以下图为例,假设kid目前的Align与贴紫色墙获得的Align相等,该如何利用AD微移来转化到贴蓝色墙获得的Align?

如何利用AD微移获得相应的Align?
设kid判定的最左边为kid的位置,则当kid分别贴紧紫色墙和蓝色墙时,两kid的位置的水平像素距离为32px,那么当kid贴紧紫色墙时按两下D,此时水平像素距离变为30px,30px是3px的整数距离,因此此时kid的Align已经变成与贴蓝色墙相同的Align了;或者按一下A,此时水平像素距离变为33px,也可以达到同样的效果。同理,若想使Align变为与贴黑色墙获得的Align相同,按一下D或两下A即可。
又因黑色墙与紫色左边一格的墙等价,我们可以总结得到:向左移动1px,kid所对应的墙向右移动一格;向右移动1px,kid所对应的墙向左移动一格。用更简练的一句口诀概括就是:向左则右,向右则左。只要记住这8个字,AD微移的计算就能手到擒来。
【作者的话】贴墙是所有跳刺技巧中最具有理论性的一门技巧,尽管经过各路大神的挖掘,贴墙已经不再那么神秘,但仍然有无尽的宝藏等着我们去挖掘,贴墙技巧讲解至此告一段落,感谢各位的耐心阅读,如果觉得有帮助,请给其他小伙伴们推荐一下,在这里谢谢大家!