KZ Climb Community Website

Sorry for the delay but real life got in the way.

Congrats to @Carrier for his first Pro global on such a hard map. He beat the previous record held by @eightbo for nearly a year. I know he put time and effort into running this map and even a few chokes, including this run ;) he had to pause a few times to calm down his shakes (I tried to edit them out). Anyways, now everyone can enjoy a lovely combination of Carrier strafes, slight demo desync, pauses and chokes that ultimately ended up with a global time.

Send your records to
@Orbit here (not clickbit) with a fairly clean run on a long and strafe heavy map. He beat the previous time by just over 2 minutes. It is always nice to have variation of featured runs as the only other submitted demo to me was Linus on kz_ext_bblocks, a map we already had a vid on the channel for. In the end, it is a nice run on a good looking map... enjoy!

Honourable Mentions
@mistersisterfister improving a former ROTW on trashsurf
@Ivan (i think thats the right one) taking back module
@nykaN getting that sub 50 on kz_gfy_final
@EphNey clicking on gurk
@Fr0ggy hopping on watertemple
@linus just doing linus things
@b0utamine on exoteric (what i personally wanted as ROTW but no good recording, cry everytime)


Macrodox and you: Linus, the ban and unban.

Last week, Linus was banned automatically by Macrodox for having a ‘perf rate’ of 90%+. The community was shocked and the global team scrambled to figure out what we should do.

After a few days, we determined that the likelihood that Linus was cheating was very low, and that a bug was the likely culprit. With the help of the community, the bug was discovered and documented (Thank you Sach, Haru, Carrier, Squared, Potts, GameChaos, Kohze, Zpamm). This post is the explanation of that bug, and how we believe Linus ended up getting 90%+ perf rate.

Macrodox: a primer

Macrodox is a plugin that has been around since 1.6 that is designed to catch obvious cheaters. It does this using two methods: analyzing jump counts (scroll patterns) and tracking a player’s bhop success rate.

Jump counts
The jump counts are established by counting the number of times a player issues a jump command and releases that jump command between when macrodox updates its calculations. If you tap space bar every time you land, your jump counts will be all 1s. A normal scroll number is around 5-12, although this can vary greatly between players. There are 30 total jump counts saved by macrodox, although only 26 are shown using !bhopcheck.

Bhop success rate
Bhop success rate, or perf rate, is calculated using a formula that gets executed every time macrodox updates its calculations. Here is the calculation that occurs:

When a player joins the server, their bhop success rate is set to 0.33, or 33%

When a macrodox calculation occurs, the bhop success rate is set to:
If bhop is a perf:
( current bhop success rate * 9.0 + 1 ) / 10.0

If bhop is not a perf:
( current bhop success rate * 9.0 ) / 10.0

For example, if a player has 20% perf rate:
If they get a perf, their new bhop success rate will be
( .2 * 9 + 1) / 10 = .28 = 28%

If a player misses the perf, their new rate will be:
( .2 * 9 ) / 10 = .18 =18%

Or, if a player has a 85% perf rate:
If they get a perf, their new bhop success rate will be
( .85 * 9 + 1) / 10 = .865 = 86.5%

If a player misses the perf, their new rate will be:
( .85 * 9 ) / 10 = .765 = 76.5%

You can see that this isn’t a true average and punishes players more as they approach 90%. (Missing a perf at 85% gives you 85% -> 76.5% whereas missing a perf at 20% gives you 20% -> 18%)

When it updates
Macrodox updates its calculations of jump counts and bhop success rates every time a player starts a jump and is on the ground. That means that the jump counts are not incremented until this calculation happens. This condition turns out to be the cause of the bug that may have caused linus’ ban.

Here’s a diagram to illustrate (credit to Zach47)

Macrodox: the bug

There are three flavors of the bug all caused by the same issue: macrodox only updates its calculations when a player starts a jump and is on the ground. So if a player never meets this condition but effectively fails a bhop, that failure is not counted. As a result, a player can miss many jumps in a row but their bhop success rate will not go down. The three conditions where this happens naturally are:
1: Bhopping into teleport triggers
2: Bhopping up a surf ramp
3: Grinding WJs.

Grinding WJs
Let’s take the third option - grinding WJs - as an example. Here’s the behavior of a played grinding WJ’s that would trigger the bug:

(Diagram credit to Zach47)

1: Player runs off of a block (Note, because the player didn’t jump off of the block, no macrodox calculation occurs)

2: Player jumps in the air using the bind or spacebar, but too early, missing the perf. This jump increments the jump counter silently.
-Because the player isn’t on the ground, no macrodox calculation occurs

3: Player lands on the ground

4: Player teleports back to block and repeats the process N times (let’s say 4 times)

Then, the cycle ends when a player gets a perf:

1: Player runs off of a block
-Because the player didn’t jump off of the block, no macrodox calculation occurs

2: Player lands on the ground and jumps in the same tick
-Because the player is on the ground and the player started jumping, the macrodox calculation is triggered!
-The jump count is set to the total number of jumps that have occurred since the last calculation, in this case N or 4.
-The bhop success rate goes up using the formula.

As long as a player follows these events, their perf rate would only go up, and their jump counts would show the number of attempts the player made to try to get a perf.

Here’s a video of Sachburger using this method to have his bhop success rate only increase:

Now let’s look at linus’ macrodox ban record:
Scroll pattern: 1 3 6 3 6 7 1 1 2 2 1 1 7 1 1 3 1 4 7 6 1 4 3 13 1 1 1 3 1 2, Avg. scroll pattern: 8.257684, Avg. speed: 288.185729, Perfect jump ratio: 90.57%

If we assume that the described method was used, then we can see that the numbers above 1 are actually the number of attempts it took for linus to hit a perf using only the space bar, or the number of attempts before he hit space bar after he landed, thus triggering a macrodox calculation and decreasing his bhop success rate. Not all of the jumps in this scroll pattern have to have used the bug, but in order to reach 90%+ there would have to be around 15 perfs in a row.

This WJ method only works with the bind or with jump bound to space bar, because if a player scrolls when they hit the ground, they’re very likely to jump after they’ve landed, this triggering the macrodox calculation.

So, that’s it?

Well, not really. In order for this bug to continue to raise a player’s bhop success rate, that player must only jump before hitting the ground, not after. If the player hits the jump after they have landed, the macrodox calculation is triggered and the player’s perf rate decreases. This is difficult to do, but we don’t have a lot of data to show how difficult this really is. Many of the players who think Linus did cheat point to the fact that jumping only before you land is very difficult, and doing it consistently may be roughly as hard as timing the jump on the perf itself. However, we have had several players try this bug and come very close to 90%.

We have created a non-global test server for you to try this WJ technique and try to get autobanned for 90%+ bhop success rate. Please join the server by typing “connect” into the console and giving it a try.

We look forward to your feedback and are happy to answer any question you might have on macrodox.

Thank you,

P.S. While I’ve called this a bug, it is only a bug in so far as it leads to these three edge cases. The code is working as written.
Thanks @PlastiS for a great edit, I specifically like the colour correction with the lava during the run. Got this clean run on one of the older records and oldest maps in csgo. Also received 0 demo submissions this week so legit no choice! :)

SEND TO KZCLIMBGO@GMAIL.COM to prevent the channel from becoming KZ-Sachburger

Most runs this week were from the wiped maps, next week is already looking stronger in terms of optimized runs. ;)
Re-approved, times wiped (former bind bhop skip maps)
Re-approved, these were disabled due to booster exploit
  • bkz_hellokitty_v2
  • bkz_uninspired_trash
  • kz_bhop_skyworld_go
  • kz_communityjump3
  • kz_conrun_mq
  • kz_conrun_scrub
  • kz_neon_portal
  • kz_zhop_freestyle
  • kz_zhop_function3
  • kz_ziggurath_final
  • kz_zxp_final4
Updated mapcycle.txt
Global KZ Maps

The console command for hosting a workshop map is:
host_workshop_map <file id>
+host_workshop_map <file id> in the launch options of a server

Let me know if there are any issues with the release. Easiest way to get a hold of me is through steam or discord.
KZTimerGlobal 1.87 Release

The Global Team is excited to announce the release of the newest version of KZTimerGlobal: 1.87. This release features a widely anticipated change - the removal of the crouch-jump bind during runs. In addition to this major gameplay change, the release contains a number of bug fixes.

The full patch notes are below:
  • Removed all benefits from getting a crouch and jump in the same tick
  • Added a small delay to team joining (0.75s)
  • Added a small delay to pausing after joining a team (0.1s)
  • Added a small delay to unpausing after pausing (0.4s) to prevent unintentionally unpausing while trying to pause
  • Added an error sound for pausing mid-air & pause delay
  • Colored pause delay & pausing mid-air messages
  • Added a command to check map's difficulty (!tier), Also a help page (!tierhelp). Tier info chat messages are disableable through !kzadmin or cvar kz_tier_messages
  • Prevented a record from being global if the player leaves the server during the run
  • Fixed an exploit using team joining
  • Fixed a bug that caused paused time to be added to final time
  • Fixed a second exploit using team joining
  • Fixed a bug with macrodox that would allow player to reset their stats in a run
  • Fixed an exploit related to map boosters

Resetting Map Times

With the removal of the crouch-jump bind, some map times will be reset and wiped. This is because the Global Team determined that players using the bind had a significant advantage over those who did not use it on these maps.

The times on the following maps will be reset:
  • Kz_gy_agitation
  • Kz_ext_bblocks
  • Kz_beginnerblock_go
  • Kz_exoteric
  • Kz_haki_v2
  • Kzpro_concrete_c02
  • Kz_gfy_limit
  • Kz_natureblock_go
  • Kz_redline
  • Kz_spiritblockv2
  • Kz_tradeblock
  • Kz_bhop_skyworld_go


As of this post, only 1.87 servers can submit global times. There will be no grace period for upgrading. Server owners, please remember to remove all times / bots for the maps that have been reset.

Upgrade from 1.86 to 1.87:

Full install of 1.87:

We’re excited to continue to develop and support KZTimer and we look forward to hearing your feedback on the changes in 1.87.

Thank you,
The Global Team
@mistersisterfister back at it again with another ROTW, this time on a very unconventional map. He recently got some new tech to get a clean fast run, utilizing boosters and skilled surfs to beat the old route by almost 2 minutes.

Honourable Mentions:
the linus runs
a frog jumping around on xtremeblock
my runs were ok

This kind of opens up a discussion of what the "run of the week" actually is.... I think it's the most interesting run to watch from the past week. It can be due to sheer speed, skill, optimization or in this case new route discovery. There is no way people weren't wondering how sub 40 seconds was possible on this map.
In honour of bind being banned we will go with MOAR CLICKS! (also didnt get any of the demos from linus/bouta this week, this is actually a bot but a damn fine one if you ask me). In all seriousness it's a pretty damn clean run, so good job ClickBit (@Orbit )!

1.87 Beta Test Servers:

Within this update we have implemented a bind fix, to make in-game lj bind nullified during runs. Meaning you no longer get the increased height while using the LJ alias of “+duck; +jump”. This bind is still available to use while map timer is not active to allow for jumpstatters to continue using it.

The extra height is removed by nullifying tick perfect crouch jumps (CJ). To obtain a successful CJ (increased jump height by up to 2 units) there is a small window before jumping that a crouch can be done. Runners that currently do CJ no-ducks and crouch jumps greater than 64 units already use this timing window to perform successful CJs.

False positives are entirely possible but are most likely to go unnoticed as you will still get the same height as if you crouched 1 tick after your jump command (standing 55 height). As a runner and a #fuckthebind enthusiast I honestly already performed my crouches purposefully before the jump command to make my CJ no-duck combos as consistently as possible. Just by principle hitting that timing window before jumping (it is several ticks) is more accurate and consistent than going for that exact same tick as jumping.

You can see how this bind fix works in practice below:

The rest of the changelog can be seen below:
  • Added an IPCheck for Global bans & Reviews
  • Added a small delay to team joining (0.75s)
  • Added a small delay to pausing after joining a team (0.1s)
  • Added a small delay to unpausing after pausing (0.4s) to prevent unintentionally unpausing while trying to pause
  • Added an error sound for pausing mid-air & pause delay
  • Fixed booster exploit
  • Coloured pause delay & pausing mid-air messages
  • Fixed an issue where if you finished paused, the pause time would get added to final time
  • Fixed an issue where global records would still count after reconnecting
  • Fixed a macrodox bug
  • Added a command to check map's difficulty (!tier), Also a help page (!tierhelp). Tier info chat messages are disableable through kzadmin or cvar kz_tier_messages
  • !mapinfo now functions as !tier does
@Cobrex is a veteran of the 1.6 kreedz community, XJ, in which he started an active role back in 2009. He became a prominent moviemaker & mapper, eventually creating his well known video "Kreedz The Movie" in 2013.

But very recently he came over to CSGO kz to give it a shot and was particularly impressed with the aesthetics of some CSGO maps. For his first video @Cobrex chose to edit a run done on kz_moonlight due to the exceptional mapping from Jurkelis(@banananosis ), "for creating such a masterpiece".

I hope to see him stick around for more great videos. You can find some of his previous work on youtube.