indieVelo Beta-tester Uses Cycling and Professional Background to Help Guide Game Physics

indieVelo physical simulation—a first-person account from community member Dave Blodgett applying cycling and fluid mechanics background to tune indieVelo virtual cycling simulation

indieVelo Dave Blodget Physics Test Setup
Dave's Garage indieVelo testing lab

Trials and Tribulations

In August 2022, I had achieved my major goals and was just trying to make it through the late summer with my four-year-old and a one-year-old, with a bit of motivation. I undertook a significant nutrition experiment to try and shed some mass and maintain some volume into the fall. For some inexplicable reason, I was aiming to take part in the next iteration of the Zwift premier league.

The first setback was that, having invested in a 1% trainer (an Elite Drivo II), I discovered that it would not be supported for competition because Elite no longer supported its firmware. The second setback was that my team, Restart Racing, wasn’t even invited to participate in the league! 

Then a series of illnesses hit. COVID in August, hand, foot, and mouth in September, kids were generally sick with daycare crud in October, and I got the full-on flu in November. It was a nightmare.

We made it through the holidays without any major issues, but then it was January. I was facing reality, trying to figure out how to get my fitness act together and make something of myself during my structured “take care of Dave” time from January through March.

A First Taste

On January 6th, my good friend Mike texted me about a new ecycling game that was in the works. The infamous “Dr. ZADA” was behind it, apparently. Within a week or two, Mike sent me an IP address link to an installer for a game called indieVelo. indieVelo, as it became known, was EXACTLY what I needed. 

When I first installed it and logged on, everything “just worked.” But it wasn’t finished; that was clear. My first post to the indieVelo Discord server was about my overwhelmingly positive indieVeloe experience of getting started in the game and riding around the island.

Background

I need to provide some context here. My education is in Environmental Fluid Mechanics, and I made Cat 1 on the Road (USAC) in my early 30s. I’m now a 38-year-old “gravel racer” with a big-screen TV and a custom gaming computer in my garage. I write high-level geo-informatics software and coordinate water resource IT projects for the U.S. Geological Survey. Needless to say, testing a simulation of bike racing software is something I am well-prepared to do. And that’s what Winter 2023 turned into.

Almost every day, I would head out to the garage and ride around the indieVelo island, trying to identify issues with the game. Not just minor issues that are a matter of opinion but things that were counter to my intuition of real-world physical behavior and cycling dynamics. I was so engaged.

indieVelo Fluid Dynamics Game Physics

The Ztandard

I can’t avoid talking about Zwift here. Zwift is the game that set the standard. It’s simple yet immersive, and it ticks many of the right boxes regarding cycling dynamics. But it is far from complete.

Zwift is a one-dimensional simulation.

Reducing the number of spatial dimensions represented is a common way to limit complexity when modeling physical systems. Cycling, at its most basic, is really a 1D sport. You pedal harder to go faster and beat the next person. So Zwift gets it right from this perspective. 

But experientially, cycling is NOT a 1D sport. 

With any amount of wind, one side or the other of the wheel in front of you is always sheltered. This basic left-right forcing leads to all kinds of emergent behaviors of groups of cyclists, most notably the paceline.

This is what struck me on my first ride. There was one side of the group that was better than the other. It sounds mundane, but it adds an additional dimension to the racing, making Zwift’s 1D simulation feel flat and incomplete.

Now, there is another (vertical) dimension that, so far, it is not representing. The roads do not camber; there are no tall and short avatars. We’ve been asking for things that demand this third spatial dimension, and we will see if the engine that “Dr. Zada” has created can support it.

Dr. George Gilbert

Who is Dr. ZADA? Well, his name is George Gilbert, and if I hadn’t heard a recent The Zomunique Virtual Velo Podcast, I would have thought he was basically Gandalf on a bike. Throughout the winter, I only knew his voice, which sounded like a 70-year-old British wise man. 


I heard he works for Microsoft and developed the conspiracy theory that he works on a Microsoft Flight Simulator team who thought it would be fun to turn him loose to simulate cycling dynamics. (Because really, if anyone could excel at it, they could.) But it turns out George is a former elite athlete who’s been through the wringer and back again. He’s humble to a fault yet more capable than the most arrogant person you’ve ever met—incredibly capable.

Balance

OK, so what makes it different? One word. Balance.

I realized George was a minor genius when he described that the bot population scales with server load. So when more humans join and make the server work harder, some bots log off, and the server load stabilizes. This design decision perfectly illustrated what I had come to understand in the physics simulation part of the game. Everything is a balance with inherent stability. George would have to write the post about the stability of the simulation, but I’ll talk a bit about the balances that are in the indieVelo simulation.

The word balance evokes different things for different people, but at its root, it’s about opposing forces that find some equilibrium.

In my mind, it’s best to think in terms of a vector of force applied and a vector of resisting force. Each vector comprises many components that add up to a balanced applied vs. resisting system. These two must always be balanced, or an acceleration will occur. In it, as opposed to Zwift, the vectors have both an along-road and crossroad component.

Drag is basically a given; for any wind speed/direction and rider speed/direction, there is really only one drag vector. The force applied by a rider and their bike is the power put through the pedals and the lateral force the wheels apply. And this is where things get interesting.

When riding in a crosswind, does the wind blow a rider across the road? No. The rider corrects and rides in a straight line. How does the game account for this correction? Balance.

indieVelo Fluid Dynamics Dave Blodget

Draft Seeking

OK, so this is really subtle. If you’ve made it this far, kudos; you are a geek. I have a deep appreciation for that.

When following a rider in a crosswind, no matter how minor, there is a “sweet spot.” indieVelo finds this sweet spot through a balance of forces—tending toward the draft or tending away from it. The elegance of the solution is profound. I find it impactful that a minor adjustment to the balance (think tipping point) can cause an avatar to avoid the draft completely.

indieVelo exploits this by changing the balance based on power applied to the pedals such that when you push harder, you tend to go around, and when you coast, you tend to follow the rider in front. If you coast up to the rider in front, you latch on to the draft. If you sprint up behind someone, you go around.

But that’s not all.

Group Dynamics

Say your avatar is in a group, and you want to get to the front. There’s Zwift, where you “blob up” and maybe pop through, but that breaks some basic laws of physics in that two avatars occupy the same space. When I first joined indieVelo, avatars did overlap occasionally, but a new rider collision scheme was released sometime in the middle of the winter.

indieVelo handles avatar interactions; wait for it—as a balance of forces. While I do not know specifics, I know that when you smash through a group, your avatar is essentially a particle in a group of elliptical particles. Avatars in front can be pushed to the side but do not “feel” any forward push when riders from behind are pushing to get through.

When pushing through a group, you CAN force through, but if everyone else at the back of the group is doing the same, no one will get through. Sorry tail gunners, you’re out of luck unless you’ve got a lead out. On the flip side, when there is space and you are pushing harder, your avatar just slips around the side of the rider in front of you. Which side you take is determined by the balance of forces and the shape of the “bubble” around your avatar and those around you.

We did a LOT of testing on this collision behavior. It is one of the most original and best things about it. If you sprint from the back of a big group, you have to push other riders to the side to get through, but they don’t actually get pushed—they just get shuffled sideways.

indieVelo avatars by shore

The Pull-Through Test

This has gotten long, but I want to illustrate a couple of other unique aspects of indieVelo that are also a balance of forces—the “pull through” and cornering. First, the “pull through.”

 

When testing the indieVelo draft, my aim was to sit in predictably and pull through without shooting off the front. There is a very delicate balance between riding just hard enough to stay on the wheel and riding harder than the person in front of you to indicate you want to pull through to the front. 

 

At times in the development, the combination of wind direction and collision detection made it so you would get stuck behind the rider in front. There were other times when the draft window was so wide that you could almost ride alongside another rider with the same draft benefit as riding behind. Where we landed at the end of the winter was a—balance.

 

With no crosswind, you can sit behind another avatar at an appreciably lower power output in a predictable and intuitive way. It sounds unremarkable, but it’s really hard to “feel” right in the game. If you increase power to match or slightly exceed that of the rider in front, you will bump into the back of their avatar’s “bubble” and start to come alongside them. If both riders are going hard, it may feel like you get “stuck” trying to come alongside—but it’s probably just that they are going harder than you think! If you continue just hard enough, you will come alongside as expected. If you pull even harder, you will pull through such that your avatar experiences no draft, and the person behind receindieVeloes a full draft and can back off.

 

A common behavior we experienced was “getting stuck” in the draft and “popping through” such that your avatar would shoot off the front. At high power output, this behavior does still happen to some extent. It’s much harder to smoothly modulate the power and control the “pull through” when pushing super hard. 

 

It is especially frustrating if you have a group trying to work together where the person in the front slows slightly, and people behind cannot come off the wheel and pull through smoothly. As of Spring 2023, it is good on this front, but it could still be better, especially at high power output.

Cornering

Another big area of testing was corner braking. indieVelo simulates lateral forces due to cornering and uses typical frictional properties of tarmac and tires to determine a maximum speed. If an avatar travels too fast for an approaching corner, the game slows the avatar down as if they are applying the brakes. If the rider keeps pedaling hard through the braking, a corner penalty is applied as a worse line and a flywheel speed reduction.


We went through several iterations of this cornering behavior and likely have more work to do, but it’s in a pretty good place right now. At one point, a “kinetic energy reduction” scheme was implemented where if you pedaled through the brake point, your speed was limited for a short time when exiting a corner. It was very hard to predict and play, so it was scrapped. The current scheme works well, as people who hammer into corners typically just get shuffled back a few spots and get an unpleasant flywheel speed reduction. The penalty isn’t major, but it’s something and can certainly ruin a sprint or make an attack fail completely.

Conclusion

That’s enough for now. There’s plenty more to type out if people are interested, so let me know if there are other aspects of the game that would be interesting to learn about from the perspective of an early tester.

Special thanks to Beta-tester Dave Blodget for his expertise and dedication to promoting the evolution of cycling esports!

Subscribe
Notify of
guest

5 Comments
Inline Feedbacks
View all comments
Tony Richardson Richardson
Tony Richardson Richardson
2 years ago

Love it.

Tim K
Tim K
2 years ago

Good read! Looking forward to a public beta test 🙂

Latest Podcast!

Virtual Velo Podcast New Episode Ep. 91 Virtual Cycling Singapore Yi Jun
Check out Episode 91 here!
UCI Cycling Esports World Championship LiveBlog
Click to join the fun!

Latest Posts!

Use code ZOMM50 at checkout for $50 off your Velocity Rocker Plate order exclusively for our followers!

Wahoo Run Smart Treadmill
Click the image to be one of the first to get the revolutionary Wahoo Run Smart Treadmill!
Zwift ride frame
Click for complete line of Zwift Bikes!

Do you want to join the VVN team? Tap the logo for details!

The Zommunique’ Community gets 10% off at LEVELVelo.com with coupon code “TheZomm gives 10% off”   

Broadcast Partner to The Virtual Velo Network!

The DIRT Dad Fund

Contribute to a great cause!

The DIRT Dad Fund

Share the power of The DIRT Effect

Click to see the full Zwift product line!

Jaclyn Long, MFT

Certified Yoga & Mindfulness Teacher

Marriage & Family Therapist in CA

Sports Anxiety Therapy

Purchase your Zwift Play controllers here!

5
0
Would love your thoughts, please comment.x
()
x
The Zommunique
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.