Ever since I started Zwifting – in 2015 after a broken collarbone – I’ve been interested in the draft, and how we could make Zwift feel more like riding in the real world.
I even raised a support request after my first month, asking if it would be possible to adjust the resistance on smart trainers according to the draft as well as according to the terrain. Feeling the terrain is great, but as a trackie myself, feeling the draft is almost more important than feeling the terrain for total immersion in the game.
Editor’s note: interestingly enough, Zwift Insider also published an opinion piece on the topic of “feeling the draft” back in September 2019
I envisaged a new generation of smart trainers that replicate the speed in the virtual world rather than the gradient – the Tacx NEO has the perfect hardware to do this.
5 years later, I’m finally building this for myself – I’m converting my rollers to run at the speed of my avatar in Zwift – like a rolling road – rather than simply adjusting resistance for gradient which is what I currently have. I’ll then be able to feel every change in speed in Zwift, rather than only seeing and hearing it.
Testing the Draft
So how good is Zwift’s modeling of speed, and what can I expect to feel? For a lone rider, it’s fantastic! I did some analysis a couple of years ago to reverse estimate the model, and then compare actual rider speeds with the speeds from my model. I got to a very close match – enough to show that Zwift uses standard equations sensibly applied.
But what about the draft? I’ve always been bothered by two things. First: the weird effects in medium-paced group rides, where you have to concentrate to not ride off the front of the bunch while it’s challenging to stay on the back. Second: the dreaded sticky draft! For me, the sticky draft is a real enjoyment killer – you find someone to ride with at a good challenging pace, and are rolling along together nicely. But then you overtake a group, and one of you gets stuck, and that nice partnership is over.
So, I wanted to see what the sticky draft actually looks like…
I set up a dashboard displaying power and speed of the rider I am watching, picked a faster rider to watch, and waited for them to overtake a group – and I saw this:
The rider’s speed was varying nicely according to power and terrain (this should feel great on my rolling road) then bang! – at 14:15:44 they instantly lost about 3km/h when they reached a slower group.
I watched a few more riders, and could see this pattern happening again and again…
So I set up a more scientific experiment – fixed power on a flat road to rule out gradient changes. Here’s a video of a test rider holding 250W through Ocean Boulevard – the flattest bit of road in Zwift, where we can expect to find lots of riders/groups to overtake – together with the live dashboard:
There’s a lot of interesting stuff to see here.
On a flat road at 250W, this rider will end up at a solo speed around 37.6km/h.
First (00:01) we see that doing a u-turn immediately drops your speed to about 24km/h. (I also noticed there’s a similar effect going round the Buckingham Place u-turn on London – so it turns out that Zwift can force dropping speed for corners!)
Then we roll down the slope to the underwater section, taking a couple of small knocks on the way (00:30 and 00:37) – but let’s not worry about these – there are bigger ones to come.
A little dip at the bottom of the slope, and then from 00:58 we’re on the flat, and our speed should converge on around 37.6km/h, except where lifted by drafting.
We see some really nice examples of drafting working exactly as you hope it would: speed curving upwards as you get closer and closer to the rider in front, and then as you pass, resuming the decay towards the 37.6km/h solo speed.
And then bang! At 2:10 we hit the rider in front, and instantly drop from 40.76 to 38.74km/h, and then half a second later, another bump down to 37.65 km/h. This looks like a classic sticky draft – but there’s a bigger one coming that we’ll look at in more detail:
We carry on passing riders with drafting working as expected as we pass small groups:
And then the biggest hit is at 3:10, where we drop from 41.50 to 38.12 km/h.
Here are my logs for this big hit – the Zwift client is sending around 5 updates per second to the server – and between two of these updates – in less than 0.2s – we have lost 3.37 km/h.
2021-01-02 14:02:57,077 INFO speed 40304760 power 250
2021-01-02 14:02:57,280 INFO speed 40368648 power 250
2021-01-02 14:02:57,484 INFO speed 40435204 power 250
2021-01-02 14:02:57,670 INFO speed 40501076 power 250
2021-01-02 14:02:57,890 INFO speed 40578068 power 250
2021-01-02 14:02:58,076 INFO speed 40655804 power 250
2021-01-02 14:02:58,280 INFO speed 40737588 power 250
2021-01-02 14:02:58,480 INFO speed 40813260 power 250
2021-01-02 14:02:58,681 INFO speed 40895832 power 250
2021-01-02 14:02:58,880 INFO speed 41000124 power 250
2021-01-02 14:02:59,067 INFO speed 41087960 power 250
2021-01-02 14:02:59,270 INFO speed 41212560 power 250
2021-01-02 14:02:59,473 INFO speed 41352544 power 250
2021-01-02 14:02:59,676 INFO speed 41499440 power 250
2021-01-02 14:02:59,865 INFO speed 38126480 power 250
2021-01-02 14:03:00,087 INFO speed 37877664 power 250
2021-01-02 14:03:00,274 INFO speed 37946692 power 250
2021-01-02 14:03:00,477 INFO speed 38015924 power 250
2021-01-02 14:03:00,694 INFO speed 38094700 power 250
2021-01-02 14:03:00,868 INFO speed 38163176 power 250
2021-01-02 14:03:01,072 INFO speed 38229232 power 250
2021-01-02 14:03:01,274 INFO speed 38297072 power 250
2021-01-02 14:03:01,475 INFO speed 38383356 power 250
2021-01-02 14:03:01,680 INFO speed 38463896 power 250
2021-01-02 14:03:01,865 INFO speed 38525808 power 250
2021-01-02 14:03:02,082 INFO speed 38592660 power 250
2021-01-02 14:03:02,283 INFO speed 38656560 power 250
2021-01-02 14:03:02,468 INFO speed 38718224 power 250
2021-01-02 14:03:02,671 INFO speed 38783208 power 250
2021-01-02 14:03:02,876 INFO speed 38818664 power 250
In energy terms, this is an instant loss of at least 678 J (calculated from the rider weight – we will in fact have lost more than this for the weight of the bike and the spinning wheels).
If we then add say 50 Watts, it will take nearly 16 seconds to regain this lost energy, i.e. just to get back to the speed we should have been at. And we’ll be falling behind nearly 1 metre every second at first. So after say 5 seconds we’ll be nearly 5 metres behind the riders we were with, outside their draft, and still needing another 10 seconds at increased power to get back up to speed, let alone to catch up again.
So I think this explains why the sticky draft feels like it does. It feels like you suddenly get pinned to a slower rider, and then struggle to escape them. I think in fact you get hit once to their speed, and you are then struggling to get back up to speed – rather than struggling to escape them. And in some cases, you may get more than one hit, like at 2:10.
A Bug, or a Feature?
But why is this happening? To me it looks like it’s either a bug – albeit a long-standing one – or it’s a slightly crude feature put in place to work around some other difficulty in modeling drafting.
If it is a bug, ‘fixing’ it might have other unintended consequences.
The draft is a complex area – knowing who is in the front row of the bunch and should be taking the wind, and who is sheltered and should be getting maximum draft benefit is not easy when each game client needs to work this out from slightly delayed updates from other clients.
In the real world, riders can’t go full gas when they are in the wheels, but in Zwift they can – we need some kind of mechanism to stop the body of a bunch going faster than the front row – otherwise the bunch will accelerate to unrealistic speeds – but we still need to allow riders to move up and rotate at the front.
It doesn’t feel like instantly taking 3 or 4 km/h from a rider is the best solution here – it feels like it would be better to put more riders effectively in the wind. For example, putting you in the wind as soon as you are moving up on a rider you were drafting – and this would help you stay in the draft. Then you could sit in a bunch, but have to work hard to move up. Though no doubt this would introduce its own problems, and a lot of experimentation and tuning would be needed.
It’s the kind of challenge I love to get involved in, especially understanding the knock-on consequences. I’d love the opportunity to get involved in solving this one!
Share Your Thoughts
What are your thoughts on the sticky draft? Is it working the way it must due to a lack of braking/steering, or could something be improved? Share your comments below!