Collisions: Difference between revisions

From Minecraft Parkour Wiki
Content added Content deleted
(started rewriting. Need code, visuals, and 1.14+ explanation)
(completed text, visuals needed)
Line 1: Line 1:
Minecraft's collision physics is very simplistic, yet it contains many glitches.
Minecraft's collision physics is very simplistic, yet it contains many glitches.


Instead of ray-tracing the collisions, the game simply attempts to move the player sequentially along each axis.
Instead of ray-tracing the collisions, the game simply moves the player sequentially along each axis.


As a reminder, Minecraft's physics is updated 20 [[ticks]] per second. The player's movement and collisions are updated once per tick.
As a reminder, Minecraft's physics is updated 20 [[ticks]] per second. The player's movement and collisions are updated once per tick.
Line 15: Line 15:
** See [[Stepping]] for explanations and visuals.
** See [[Stepping]] for explanations and visuals.
** This mechanic is responsible for [[Blip|Blips]] and [[Jump Cancel|Jump-Cancel]], and their glitched variants.
** This mechanic is responsible for [[Blip|Blips]] and [[Jump Cancel|Jump-Cancel]], and their glitched variants.

== Vertical Collisions ==
Vertical movement is processed before horizontal movement. Due to this:

* The player is able to jump one tick after running off a block. In particular, this is why [[Timings|headhitter timing]] works.
* To land on a block, the player must be above its surface on the final tick of the jump.


== X/Z Facing ==
== X/Z Facing ==
Line 23: Line 29:
* '''Z-facing''' refers to jumps that point towards North/South.
* '''Z-facing''' refers to jumps that point towards North/South.


Some jumps are only possible when facing one axis or the other.


Players tend to find Z-facing neos more intuitive, but X-facing neos can actually be a bit easier:


* Z-facing neos are very similar to linear jumps. To convert a neo to its equivalent, simply add 1.2 to its distance and increase its [[Tiers|tier]] by one. For example, a triple neo is equivalent to a "4.2+0.25" (which cannot be built, but this sort of comparison is useful for analysis)
Players tend to find Z-facing neos more intuitive, but X-facing neos can actually be a bit easier.
* X-facing neos don't have a linear equivalent. Compared to Z-facing neos, they are "shifted" by 1 tick (wall collision begins and ends 1 tick earlier). This shift reduces the momentum, but makes it more efficient as the player typically has more speed at the end of their jump than at the start.

Z-facing neos are very similar to linear jumps. To convert a neo to its equivalent, simply add 1.2 to its distance and increase its [[Tiers|tier]] by one.

For example, a triple neo is equivalent to a "4.2+0.25" (these equivalents cannot be built, but are useful for analysis, as it's quite easy to determine whether a linear jump is possible or not).


Some jumps are only possible when facing one axis or the other.


The axis of a jump can be checked with [[Debug Screen|F3]].
The axis of a jump can be checked with [[Debug Screen|F3]].


== 1.14+ ==
== 1.14+ ==
In 1.14, the collision physics were updated. The collision order now depends on the player's velocity:
[WIP]

* If the player has more Z speed than X speed, the collision order is '''Y-X-Z'''.
* Otherwise, the collision order is '''Y-Z-X'''.

In most cases, all collisions now resemble X-facing. Some jumps which involve cutting corners may become very different compared to pre-1.14.

Revision as of 11:41, 23 May 2021

Minecraft's collision physics is very simplistic, yet it contains many glitches.

Instead of ray-tracing the collisions, the game simply moves the player sequentially along each axis.

As a reminder, Minecraft's physics is updated 20 ticks per second. The player's movement and collisions are updated once per tick.


Order of collisions

Every tick, after the player's velocity has been updated, the game does these steps to check collisions:

  • Move the player along the Y axis. If a vertical collision is detected when falling, the player is now considered to be on ground.
  • Move the player along the X axis.
  • Move the player along the Z axis.
  • If the player is on ground and collided with a wall, perhaps they could step on top of it (e.g. if the wall is just a slab).
    • See Stepping for explanations and visuals.
    • This mechanic is responsible for Blips and Jump-Cancel, and their glitched variants.

Vertical Collisions

Vertical movement is processed before horizontal movement. Due to this:

  • The player is able to jump one tick after running off a block. In particular, this is why headhitter timing works.
  • To land on a block, the player must be above its surface on the final tick of the jump.

X/Z Facing

Due to the X axis being processed before the Z axis, they are fundamentally asymetric: it's important to distinguish "X-facing" jumps from "Z-facing" ones.

  • X-facing refers to jumps that point towards East/West.
  • Z-facing refers to jumps that point towards North/South.


Players tend to find Z-facing neos more intuitive, but X-facing neos can actually be a bit easier:

  • Z-facing neos are very similar to linear jumps. To convert a neo to its equivalent, simply add 1.2 to its distance and increase its tier by one. For example, a triple neo is equivalent to a "4.2+0.25" (which cannot be built, but this sort of comparison is useful for analysis)
  • X-facing neos don't have a linear equivalent. Compared to Z-facing neos, they are "shifted" by 1 tick (wall collision begins and ends 1 tick earlier). This shift reduces the momentum, but makes it more efficient as the player typically has more speed at the end of their jump than at the start.

Some jumps are only possible when facing one axis or the other.

The axis of a jump can be checked with F3.

1.14+

In 1.14, the collision physics were updated. The collision order now depends on the player's velocity:

  • If the player has more Z speed than X speed, the collision order is Y-X-Z.
  • Otherwise, the collision order is Y-Z-X.

In most cases, all collisions now resemble X-facing. Some jumps which involve cutting corners may become very different compared to pre-1.14.