Zipping

The Zip glitch is a consistent and reproducible, but very precise frame perfect glitch that sets your character’s velocity very high for a single frame, causing your character to essentially teleport across large distances. It works on any game version.

Zip demo.gif

How does the zip work?

The zip glitch works by aligning the move animation with the moment the block idle animation loops in a specific way.

The reason you have to block for it to work is because the block idle animation keeps playing in the background, while the normal idle animation does not.

It is believed that this passes on certain values to the next cycle of the block idle animation in a way that causes your velocity to be calculated wrong.

Weapon Setups

There are two setups for the zip glitch that behave slightly differently. The first and slightly faster setup is the medium shield zip. It requires you to have a medium shield equipped in your left hand and any other weapon that is not considered a two-handed weapon in your right hand.

The second setup is the two-handed zip. It requires using any weapon two-handed, including shields or your character’s fists.

Methods

The two primary methods to perform zips are the one-step method and the two-step method, named after the amount of walk inputs required. Both are consistent, given correct inputs, however the one-step method is considered easier to perform.

The basic idea behind both methods is the same: Start blocking -> Do the frame-perfect walk inputs -> Zip -> Stop blocking

Timings

Zip timings are measured in frames @ 60 FPS. Zip methods are split up into wait time and move time and always start with the moment you start blocking. Timings are often shared in the following format, where the timings are listed in order and separated by slashes: 126/7 or 57/13/9

The one-step method starts with a long primary wait time, followed by a short primary move time. Both need to add up to 133 frames when doing a medium shield zip, or 139 frames when doing a two-handed zip. In both cases, the primary move time has to be between 4 and 10 frames long, which means the primary wait time has to be adjusted accordingly.

The two-step method starts with a long primary move time, followed by a short primary wait time and ending with a short secondary move time. All 3 timings need to add up to 79 frames. The primary move time has to be 57 frames long and the secondary move time has to be between 4 and 10 frames long, which means the primary wait time has to be adjusted accordingly.

In addition to those timings, you can also add offset cycles, which allow you to perform the zip at a later animation loop. In the case of the one-step method, you extend the primary wait time by 120 frames for each offset cycle and in the case of the two-step method, you extend the primary move time by 80 frames for each offset cycle.

Keep in mind that regardless of the method, you need to keep blocking until after the zip, which will occur about 17 frames after the last input is released, otherwise it will fail!

Guide

Using the knowledge above, you can perform a one-step medium shield zip with the timings 126/7 like this:

Equip a medium shield in the left hand and either a one-handed weapon or no weapon at all in the right hand. A two-handed weapon, regardless of whether or not you are actually two-handing it, must not be equipped.

  • Hold the walk (Alt) button while performing the zip.
  • Begin by pressing block (right mouse button) for 126 frames.
  • Then, while continuing to hold block, press W for 7 frames.
  • Do not release walk or block until after the zip.

Distances

Distance measurements in this document use a specific value from the physics engine, called the movement value. This is not an actual distance in meters and instead is more like velocity, but it is a consistent value we can easily look up using Cheat Engine. Lower values result in higher distances.

The timings determine the movement value of the zip. In general, you can say that primary move timings of 7, 8 and 10 give you roughly the same distance, 4 and 9 give you slightly less and more (respectively) and 5 and 6 both give you rather low distance, with 6 being the lowest.

In addition to that, being on heavy load or overloaded increases the distance a bit too. By about 7.99% for medium shield zips and about 8.46% for two-handed zips, regardless of the method used.

Here are the movement values of all possible combinations for the one-step method:

4 Move Time 5 Move Time 6 Move Time 7 Move Time 8 Move Time 9 Move Time 10 Move Time
Medium Shield & Two-Handed Zip, Medium Load -515.3120117 -471.7408752 -449.2333374 -520.1359863 -520.1118164 -526.3693237 -520.0956421
Medium Shield Zip, Heavy Load -556.5292358 -509.4714355 -485.1639404 -561.7402344 -561.7175903 -568.4741821 -561.7011108
Two-Handed Zip, Heavy Load -558.8994141 -511.6361694 -487.224823 -564.126709 -564.1046143 -570.8900757 -564.0892334

And here are the movement values of all possible combinations for the two-step method:

4 Move Time 5 Move Time 6 Move Time 7 Move Time 8 Move Time 9 Move Time 10 Move Time
Medium Shield & Two-Handed Zip, Medium Load -455.1994934 -413.0736694 -391.5965576 -459.9093628 -450.4013977 -464.7659912 -459.8709106
Medium Shield Zip, Heavy Load -491.6081238 -446.1148071 -422.9230957 -496.6952515 -486.4339294 -501.9458313 -496.6543274
Two-Handed Zip, Heavy Load -493.7012634 -448.0065918 -424.7160034 -498.808197 -488.4998474 -504.0807495 -498.7676392

It is also possible to decrease the distance you get from zips via offset cycles, since each one results in a movement value closer to 0. For example, here is a table of a medium shield zip at medium load with 126/7 timings at different offset cycles:

Offset Cycle Movement Value
0 -520.1359863
1 -338.695343
2 -254.0228271
3 -202.2726898
4 -168.045578
5 -143.7245941

Bouncing off of geometry during a zip drastically changes both the angle and the distance you get from it. We call those zips bounce zips and the angle and distance you get is consistent, given the same zip method, timings and alignment.

Combining all of the above allows for good control over zip distance, making a lot of setups used in speedruns even possible. There is another way to get much longer zips however, which has its own section: Mega zips

Points of Failure

There are a few ways zips can fail.

Of course the simplest failure is if your timings are off and you just do a short step forward. If your timings are off by a frame or two, you might notice a short zip that only zips you forward by like 10-20 cm.

Another simple fail is if your performance is not 100% stable. The game must maintain a constant internal 60.0002327 frame rate for the entire duration of the zip attempt. Any deviation from this exact frame rate will cause unexpected zip distances, or more likely, zip fails. The internal frame rate can be viewed in Cheat Engine using the zip tools CT found in the tools section. The Cheat Engine update interval must be set to 10ms or less in order to view the fps value for every frame. Other FPS tools such as Steam’s performance overlay or RTSS (Rivatuner Statistics Server) cannot be used to determine the internal frame rate. More information can be found in the performance section.

A more nasty fail is a so called rejected zip. These can be noticed by your character kind of wiggling the weapon, by you simply being pushed into a direction for a meter or two, or by the area you are in being reloaded. These rejected zips are currently believed to be caused by getting a successful zip that sends you somewhere the game simply says "nope" and refuses to place your character there.

Mega Zips

A Mega Zip is an extension to the normal zip that allows you to zip much further, with a wide range of possible distances. It is done by adding a second directional key press after the first one, but before you actually zip. The original zip setup doesn’t change and the mega zip is only done by doing additional input after it, therefore it is also referred to as a zip extension and requires you to first hit the correct timings for the normal zip setup.

Megazip demo.gif

Timings

Adding to the normal zip timings, there are two additional timings, called extension wait time and extension move time. Adjustments to these times affect the distance of a mega zip.

The required timings are 1-14 frames for the wait time and 2-3 frames for the move time. The longer the total time, the longer the mega zip.

A useful detail about this is if your extension wait time is at least 12 frames long, your extension move time can be longer than 3 frames since the zip itself effectively acts as a stop for it. Another detail is if you manage to hit the correct frames for the normal setup, but hold the directional key too long for the mega zip, the whole zip gets cancelled.

Depending on your consistency with the different timings, you can make use of one detail or the other to improve your consistency. If you are very good at hitting the normal zip setup, for example, it might be worth going for an extension wait time somewhere in the middle to ensure if you get a zip, it is absolutely a mega zip. If on the other hand you can’t reliably hit a 2-3 frame key press for the extension move time, it might be worth trying to go for at least a 12 frame extension wait time, although keep in mind the risk of accidentally getting a normal zip instead of a mega zip is higher in that case.

Distances

Mega zips are about 270% - 640% longer, depending on the total combined extension time. Needless to say, this is very far… Far enough, in fact, that it can be used to kill bosses with zips. This works by zipping so far that the boss arena despawns, causing the boss itself to fall to its death.

Timings for mega zips are shared like those of normal zips, but with the extension wait time and extension move time added to the end, like this: 126/7/10/3

Here is a table showing the movement values of different extension wait times (medium shield zip, heavy load, 126/7/x/2):

Extension Wait Time Movement Value
1 -1265.474854
2 -1528.813232
3 -1797.543213
4 -2066.273193
5 -2329.610596
6 -2582.162842
7 -2818.537109
8 -3033.34082
9 -3221.181885
10 -3376.66748
11 -3494.405029
12 -3569.002197
13 -3523.164795
14 -3595.066162

As you can see, that’s a lot of room to work with in terms of distance. Combining them with offset cycles and different zip methods and timings allows for very good fine control over distance.

Guide

Since a mega zip is just an extension of a normal zip, the first part of the setup is identical. You can perform a one-step medium shield mega zip with the timings 126/7/10/3 like this:

Equip a medium shield in the left hand and either a one-handed weapon or no weapon at all in the right hand. A two-handed weapon, regardless of whether or not you are actually two-handing it, must not be equipped.

  • Hold the walk (Alt) button while performing the mega zip.
  • Begin by pressing block (right mouse button) for 126 frames.
  • Then, while continuing to hold block, press W for 7 frames.
  • Wait another 10 frames after releasing W.
  • Press W again for 3 frames.
  • Do not release walk or block until after the mega zip.

Performance

The zip glitch relies heavily on performance, although despite common beliefs, it is not hardware dependent. Minimum spec and even below minimum spec hardware is powerful enough to run the game at the required performance and do the glitch consistently.

What does it depend on then? Mostly background processes and OS settings. Here are some tips to improve performance and therefore consistency:

  • Make sure you are not running the game with EAC. You can find instructions on how to disable EAC here.
  • Close as many background programs as possible. Do not forget to check the background processes in the task bar too. If you have some mouse/keyboard RGB software, close it. Antivirus? Close it. Printer software and other drivers? Close it. Vanguard or other anticheat software from different games? Close it. Using an animated wallpaper? Close it. You get the idea.
  • Optimize the programs you absolutely need. For web browsers and Discord, turn off hardware acceleration. In the case of Discord, it’s enabled in 2 places, both under "Voice & Video" as well as "Advanced". As for Steam, log out of Steam friends (set yourself to offline), go into the settings and disable hardware acceleration and enable low performance/bandwith modes for your library and after that turn on small mode. Disable any sort of ingame overlays, like the Steam overlay, Discord overlay or Nvidia/AMD GPU overlay. Turn off any sort of instant replay too, like Nvidia ShadowPlay or AMD ReLive. Go into your Windows settings, to "Ease of Access" and disable both animations and transparency effects. In OBS (or any other recording/streaming software), mess around with settings a bit and try a GPU encoder instead of a CPU one.
  • Turn off any sort of external FPS limiter. This is an important point, as having one enabled somewhere will drop your consistency to 0%! Make sure you don’t have one set in RTSS and also check your GPU settings to make sure there is no option like that enabled either. Any options that claim to "improve efficiency" or "improve latency" can cause issues, as those often tend to dynamically mess with FPS limits on purpose!
  • Set your ingame settings to "low". This is just to ensure performance is definitely not limited by graphics.
  • Assign your game to specific cores. From testing on an AMD Ryzen 5800X system, assigning the game to the second thread of the first 7 CPU cores resulted in the most stable performance, but the optimal configuration may vary between systems.
  • Restart your game after using Cheat Engine to adjust game speed! Current cheat tables do not correctly restore the game speed, which makes zips impossible.
  • Make sure your monitor’s refresh rate is actually 60 Hz and not 59.9x Hz. This can be verified using a tool called CRU (Custom Resolution Utility). If the highest detailed resolution is in fact 59.9x Hz, you can try a different monitor, a different resolution in fullscreen mode that shows as 60 Hz, or overclock your monitor to actual 60 Hz using CRU (keep in mind that it might void your warranty).
  • Open and close the ingame map after long streaks of failed zips. Doing that can "reset" the game's stability for a short while.

You can measure performance using the zip tools CT found in the tools section. Make sure you change the polling interval in Cheat Engine to 10ms or lower.

You need the values to be exactly these during the whole zip setup:

FPS 60.0002327
Frametime 0.01666660234

Tools & Notes

If you want more information about zips and would like to read some of the history about it, you can find that in the dedicated zip thread on the SpeedSouls Discord server.

You can find various tools for zips below: