The TL;DR is that steering is too slow and it makes hitting boosts and avoiding hazards very difficult and very frustrating in the context of Repack Rush and Crit Cade.
Note: This has been adapted from a support email I sent, although the analysis of race results is new.
This has been a longterm issue with Repack Rush for me, but it was only when I discovered that Zwift Games Stage 6b was a boost and hazards race that this became important enough for me to bring up. The game response is so slow that (unlike most electronics that I use or design) you can actually kind of see what’s happening instead of just inferring that there’s lag somewhere in the system from perceived response not quite lining up with when you think you applied an input. In this case, I think there’s probably about 0.5 to 0.75 s of straight up command delay plus probably a 1 Hz to 0.6 Hz second order filter on the input. Coupled with large-amplitude rate limits in how fast I can move my arms, the net effect is that I get rider induced oscillation if I try to close the loop with much more than about 0.5 Hz of bandwidth. I was finding about 0.2 to 0.25 Hz bandwidth on the feedback kind of gave the best results. However, because of the architectural decision to keep superimposing the feedforward steering to stay on course, the rider is often needing to fight signals with dominant frequency content on the order of 1 Hz which just doesn’t work with a 0.2 Hz control loop. Further, there are situations where you physically don’t have enough time to avoid or hit bonuses after rounding a corner because inputs literally don’t start applying until after you’ve hit or missed the hitbox. There were many instances in the Stage 6b race where I saw something that I needed to do, made a quick input, didn’t actually get the response I needed, hit of missed the thing I was trying to miss or hit, and then went through several cycles of oscillation before I managed to detune myself back down to a stable set of gains. Needless to say, this was immensely frustrating and I found myself yelling at the computer several times.
I’ve typically heard humans being quoted as having about 2 Hz of bandwidth. I don’t actually remember if there’s typically one dominant pole, two dominant poles, or if the behavior is best modeled as a pure delay. It probably depends on the situation and is a blend of factors. However, if we just take a first order system as an example, 2 Hz corresponds to a time constant of about 80 ms. In order for the software to be mostly out of the way, it needs to be responding significantly faster than that, e.g. about 20 ms or about 1 frame at 50 to 60 Hz. This is a bike racing game - not Super Smash Bros or a modern first person shooter where players are expecting to be able nail a 180 headshot before hitting the ground - so you can probably sacrifice a bit on the latency requirement, but you should definitely be aiming for less than 50 ms and it absolutely needs to be below 200 ms.
As I have already mentioned, I was extremely frustrated with this behavior and I was not alone. After the race, there were many negative comments from other riders including “absolutely terrible” and “never again.” If you’re wanting the Crit Cade genre of race to be successful in the future, you really need to address this with urgency (although I suppose most of the damage is already done since Zwift Games ends today). After this experience, I’m personally just going to quick out of any race that has boosts and hazards.
For completeness, I’m running an Elite Sterzo Smart, although I also tried Zwift Plays (Model Z003), and I’m also using an old laptop with a Intel Xeon E3-1505M v5 CPU and an NVIDIA Quadro M2000M GPU.
I’m kind of suspicious that the terribleness of the experience is somewhat related to the hardware. In the race I did, things were pretty fractured by the end of lap 1 and basically everyone was by themselves by the end of lap 2. There were 3 riders that more or less finished as a group, but they were separated by 20 s at lap 5, so I think this was mostly just a coincidence. As a result, how well someone did largely depended on power, how many boosts they got, and how many hazards they hit.
Here’s what power and specific power vs finish time looked like:
I’ve excluded #12 because he just stopped trying and makes the rest of the data hard to see. I was #11 and probably represent a worst case for “steering unusable.” #1 and #2 were big blokes who were just dumping a lot of Watts and probably deserved the win, but power and specific power are basically uncorrelated with finish times of #3 through #11. There’s also an absolutely enormous spread of solo riders (3:59 between #1 and #11 on an 18:17 race), so some people were clearly able to actually hit the boosts while others were having a much harder time.


