Techniques

(jot down info. there's a describe what you changed thing but i can't click it on my phone. i mightve realised someone might not reformat this @o@)
not peer reviewed yet @o@ more on this later
[2024aug05 update: nameless considers this very inaccurate: it will be an undertaking to mold the clay. in chen233's post: vfpi bhopping is called 0.5yabhop. also yet to consult stark's thesis.]
someone change this title to "Needle Techniques" but i cant @o@
1-frame convention
== General ==
Needle RNG (Denferok): Your keyboard's polling rate is probably 1000, but the game runs at 50fps, because of that every 20ms you have to submit your shift press and shift release within these striated time periods. Because of this, 1-framing is inconsistent because you have to submit shift press and release within 1-20ms. I've implemented a needle rng reducer which multiplies framerate by 2 or 3 or n and resets striation to when you press jump, and 1-frames immediately became consistent, since by extension a (0f convention) 0.00f 0.33f and a 0.66f all counted as a 0f. (1f convention)
Slight differences in standard Fangame physics:
* Game Maker 8: there are two data types in Game Maker, ty_real, and ty_string. ty_real is a binary64 double.
* GameMaker: Studio ver.<1.4.9999: slightly different calculations than GM:S ver.1.4.9999
* GameMaker: Studio ver.1.4.9999: real numbers are now represented using a binary32 float.
* I wanna Maker: GM:S ver.1.4.9999, but physics are revamped due to plenty of gimmicks and extra code and things to make jumping less esoteric, like platforms not resetting your frac(y) to alternate between .0 and .4.
== Horizontal ==
=== Dot, Align ===
Main article: Aligns
Your x modulo 3. By running into walls you can move 1 or 2 pixels instead of the player's hspeed of 3. Discovered by Kinata in 2011 for a pixel perfect skip in I wanna be the Guy. Brought to the forefront when players were having trouble in the Kamilia 2 Color screen, where you cannot single jump the corne r jump with the bad dot to make the double corner at the top of the screen easier.
AD-trick, D-trick: Setting in Yuuutu engine that allows you to jut yourself one pixel left or right. Used in conjunction with jumping you can move 4px in one frame, allowing you to clear extra distance. I wanna be the Mega Jump
[horizontal] 0.5 glitch, hdiet, hfpi (misnomer): using a platform moving at a speed with frac(speed)=0.5. you can give the kid a 10-px hitbox" This allows you to single jump a ground height diamond, do a triple diamond at ground height and climb up blocks by clipping into them by turning left like for example doing a 9 block jump (Zorgo). 0.5 glitch ← hooly shit UwU in the url
Dual Collision: When the kid collides with a block, they return to their previous position, then anchor horizontally to a block if there is one 3px to the right, then anchor vertically to a block if there is one vspeed pixels above or below, then if a block is collided on a diagonal, hspeed becomes 0. This allows you to clear extra distance similar to the way grabbing onto the edge of a wall would in real life (unlike how it is in Aiwana). A block is placed 1-2 px to the right and elevated by usu. 32px of the block you will land on, for you to "grab on". In I wanna be the Needle Extremity, you use this to grab an align, then anchor out of the way of the spike covering the block, to "avoid touching" it as well. [Kinata ascension map]
28 second trick: When you stand on the x=0 of a screen, the trigonometric calculation of gravity_direction adds hfpi to your x-position with a negative value. Since the code to kill the player is if (x < 0) killPlayer():, and a==b is defined as abs(a-b)≤10^13, eventually x≠0 and you die.
5.7 million years trick: If the screen border doesn't kill you (?) or x=1(?), you can spend 5.7 million years bonking on a vine to give yourself the 0.5 glitch. However, I don't think it's attainable in realtime due to lifespan of current hardware, and perhaps memory leaking in the operating system. Though I think it can be simulated.
Farlands: When your x is 1, the epsilon (smallest representable increment) is 2^-53 in gm8 (which uses binary64), and 2^-24 in gm:s (which uses binary32). As the exponent of your floating point value increases, so does the epsilon, since the epsilon is the last bit of the mantissa, which is a power of 2 lower than the exponent. The exponent is a power of 2, which is then summed with various divisions of 2 of it represented by the mantissa to represent the real numbers. As you can see by the epsilon at x=1, there are 52 bits in the mantissa for binary64 and probably 24 bits in ths mantissa for binary32. Eventually, the epsilon becomes 1 or greater, leading to wonky physics. The same as in Minecraft world generation.
[Micro farlands], fpi: you can use farlands to round a .4999999999 frac(x) position into an exact .5 frac(x) position, giving you "control" over if you have hdiet.
== Vertical: ==
0f convention, 1-frame convention: The lowest frame single shift release jump is when you press and release shift on the same frame. However, this is colloquially referred to as a "1-frame", though it is technically a "0-frame". Needle players may specify 0f convention or 1f convention. Colloquially, some phrases may have association with a particular convention, like 1f bhop (0f bhop has never been said].
y-strings, V-strings: The kid has a 11x21 hitbox which is rounded based on the y-value, according to Banker's rounding. Because of this, the player manifests on different pixels depending on in order of relevance, frac(y), height, then fpi (floating point inaccuracies). Depending on how the numbers are crunched, some jumps may or may not be possible. V-strings explain simple phenomena like the 2-block trick, and why frac(y) and or y-position matter for clearing jumps.
vfpi, vertical floating point imprecision, vertical floating point inaccuracy: Due to how binary64 or binary32 is calculated, your y-position may sometimes have a bit or two or three difference from the represented value. Game maker and programming languages solves this by having == instead be abs(a-b)≤10^13. However this is important because vfpi bhopping requires you to land at an exact odd frac(y)=0.5 position.
frac(y), ya, vertical subpixel, y-subpixel, v-align: The fractional part of your y component. Depending on this value, the v-string of your jump will slightly differ, allowing you to clear jumps that otherwise cannot be cleared with another frac(y). The range of possible frac(y) can be called a v-align ranged. Lamedh F in I wanna ل uses a frac(y) you obtaining by 6-framing with .4 starting .frac(y) to allow you to clear this jump. Notated as .1-.5 to cover all possible v-aligns.
Height-dependency: Some jumps your y-position has to be at a specific value for the physics to crunch correctly, or else it is impossible. Leehe Triple Diamond (raised 32px) without D-trick is one notorious example. Many impossible games were made by lack of this knowledge.
Bunny hopping, bhop, bhopping, unstable v-aligns: When you land, you are reverted to your previous position and then anchored 1.0px at a time until the next anchor would clip into a block, and then your vspeed is set to 0. So one frame with vspeed 0 to be executed next frame, and one frame with vspeed 0.4 to be executed next frame, practically giving you 2 frames to bunny hop. Bunny hopping gives you access to jump from the 1px above unstable frac(y)'s, notated with .5-.1 (the other side of .1-.5) ex. jumping from .8. Clearing an standard invert using only your single jump is done using this method, as well as 4.5 block jumps.
Specific bunny hopping: Some bunny hopping is more "powerful" than others. There's 5-frame bunny hopping (popular with extended inverts), 4-frame bunny hopping, 2-frame bunny hopping, and 1-frame bunny hopping, etc. A 1-frame bunny hop can be used to skip in Save 1 of Lektphire, or is required to clear a jump in I wanna attain clarity screen 2.
Bunny falling: Same as bunny hopping, but instead of jumping, you fall. I wanna beat the Magic Jump 3 is cleared using this method. A walk-off t-bone without walk-off align can also be cleared this way.
doubt↓
vertical 0.5 glitch, [vdiet], vfpi bhop: When you land on an odd value + exactly .5 [i forgor, but 407.5 does not give you vfpi, more on this later], you allowing you to avoid collision by 1px with a playerKiller jutting out 1px from the floor, or to descend 1px further to have more vertical clearance. [what happens is that your collision is calculated differently from your y-position, giving you a collision that is 1px higher than your actual y-position. game maker uses banker's rounding, so your collision y-position actually binary64_previous(y) (.499999998) which rounds to .0 d only on gm:s 1.4.9999 you get a 20px high hitbox] LongJump.map (Kinata) and ⨌ are well-known examples of this.
* V-strings in action! Full jumping is symmetrical on both sides. So if you get a vfpi bhop, full jumping allows you to vfpi bhop again (LongJump.map).
Cactus jumping, double cactus, triple cactus: The generalised form of releasing more than one shift in a jump. [It was actually defined as any cancel which could not be performed on a normal keyboard. (Hectorpaddy(?))] During a jump, as long as the player's vspeed is less than 0 (rising), they may release shift to multiply vspeed by 0.45. The double C4 (cf. rotational symmetry) jump in Butterfly Nova was discovered to be possible with cactus. Realised in the last save of I wanna ل, which requires you to do it twice. A cactus is notated (m+n) cactus. So for example (5+6) cactus (?) to perform a skip in I wanna Orion (a ceiling diamond). A double cactus is equal to an (m+n+o) cactus. A triple cactus is equal to an (m+n+o+p) cactus. It is called cactus because Hectorpaddy didn't want players to be confused by misnomer terminology.
Jump cancellation, Jump cancel, (1+n) cactus, m-frame cancel: This form of cactus was known before cactus jumping, due to it's ability to allow you to perform very low jumps. This allows players to clear inverts more consistently, and single jump a downwards plane jumping from a block on which the lower spike is completely contacting the block you're jumping from. A 1+3 cactus is colloquially referred to as a 4-frame cancel. A 1+1 cactus is used to clear the first save of Butterfly Nova.
Double cancel. 1+1+1 cactus: Demonstrated in I wanna beat the Mega Jump 2.
Triple cancel, 1+1+1+1 cactus: Demonstrated in I wanna beat the Mega Jump 3.
Chain cancel, chain cancelling: Demonstrated in reizu games which uses extended water inverts. You simply cancel multiple times in quick succession. Methods of cancellation is scope for another page.
ptj, Platform triple jump, platform 1f boost: When you 1-frame off of a platform on frac(y)=0.4, the very next frame does not prevent you to single jump, since you are within 4px of the platform. You can use this frame to jump again, allowing you to jump higher. Used in the first save of I wanna ←. You also have to stand on only a platform to enable the onPlatform flag. Using this, you can have platforms in blocks connected to an isolated plattform (same y-position of platforms), and create pathing by requiring the player to walk to the isolated platform before walking back to use ptj.
Kinata pixel technique videos (dated) Part 1 Part 2 Part 3
Chen233 chinese explanation of Needle Techniques
Fangame Needle Tech discord server
nameless :aaaaaaa
Category:Techniques