How big of a hole has Zwift dug itself?

There are two main frustrations on this forum linked to the following pattern of ‘progress’ on Zwift. Namely, a decline in significant feature development over time, and an increase in performance issues and bugs. Even seemingly simple changes seem to take longer and longer to implement. Quote for emphasis:

Zwift was not designed to do what it does today. The spaghetti code and horribly outdated engine have been dragged along kicking and screaming whilst the marketing team talk about Olympics inclusion and professional racing, and resource is dedicated to developing a Zwift Bike.

Check out the first minute or so from the log file, showing only the errors, and this is on a dedicated PC with everything working as well as it can. It’s a wonder Zwift loads at all. I’ve also cut this short, the errors keep coming and keep coming.

[20:20:41] ERROR: Sky::Load(): Default not found

[20:20:41] ERROR: Sky::Load(): Japan not found

[20:20:41] ERROR: Sky::Load(): France not found

[20:20:41] ERROR: Sky::Load(): France not found

[20:20:41] GLFW ERROR 65540: Full screen windows cannot be moved

[20:20:43] Syntax Error.  USAGE: set VARNAME=VALUE

[20:20:44] ERROR: Missing Vertex Shader asset data/shaders/Final/GaussianBlur.vsh

[20:20:44] ERROR: Missing Vertex Shader asset data/shaders/Final/GaussianBlur.vsh

[20:20:44] [GFX]: ERROR: GFX_CreateShaderFromFile(GaussianBlur[0][0]) failed!

[20:20:44] ERROR: Missing Vertex Shader asset data/shaders/Final/WatopiaDesert.vsh

[20:20:44] ERROR: Missing Vertex Shader asset data/shaders/Final/WatopiaDesert.vsh

[20:20:44] [GFX]: ERROR: GFX_CreateShaderFromFile(WatopiaDesert[0][0]) failed!

[20:20:44] ERROR: Missing Vertex Shader asset data/shaders/Final/wireShadow.vsh

[20:20:44] ERROR: Missing Vertex Shader asset data/shaders/Final/wireShadow.vsh

[20:20:44] [GFX]: ERROR: GFX_CreateShaderFromFile(wireShadow[0][0]) failed!

[20:20:44] ERROR: Missing Vertex Shader asset data/shaders/Final/RadialBlur.vsh

[20:20:44] ERROR: Missing Vertex Shader asset data/shaders/Final/RadialBlur.vsh

[20:20:44] [GFX]: ERROR: GFX_CreateShaderFromFile(RadialBlur[0][0]) failed!

[20:20:47] Unable to open WAD file "assets/Bikes/Frames/ScottSparkMountainBike2019/frame.wad".

[20:20:47] ERROR: Could not load wad file: assets/Bikes/Frames/ScottSparkMountainBike2019/frame.wad

[20:20:49] ERROR: Accessory::GetThumbnailTextureHandle Error - Asset Load Failure - Cannot find thumbnail texture - UI/WhiteOrangeTheme/JerseyIcons/Zwift_RaceLeader_thumb.tga

[20:20:52] ERROR: Accessory::GetThumbnailTextureHandle Error - Asset Load Failure - Cannot find thumbnail texture - UI/WhiteOrangeTheme/JerseyIcons/TealPink2020_thumb.tga

[20:20:54] ERROR: Accessory::GetThumbnailTextureHandle Error - Asset Load Failure - Cannot find thumbnail texture - UI/WhiteOrangeTheme/JerseyIcons/Twenty242021_thumb.tga

[20:20:58] ERROR: Accessory::GetThumbnailTextureHandle Error - Asset Load Failure - Cannot find thumbnail texture - UI/WhiteOrangeTheme/Customization/RunningShirts/TealPink2020_thumb.tga

[20:21:00] ERROR: Accessory::GetThumbnailTextureHandle Error - Asset Load Failure - Cannot find thumbnail texture - UI/WhiteOrangeTheme/Customization/RunningShorts/TealPink2020_thumb.tga

[20:21:03] ERROR: Accessory::GetThumbnailTextureHandle Error - Asset Load Failure - Cannot find thumbnail texture - UI/WhiteOrangeTheme/Customization/Glasses/Glasses_TealPink2020Glasses01_thumb.tga

[20:21:03] ERROR: Accessory::GetThumbnailTextureHandle Error - Asset Load Failure - Cannot find thumbnail texture - UI/WhiteOrangeTheme/Customization/Glasses/Glasses_TealPink2020Glasses02_thumb.tga

[20:21:13] FILE : Unable to load UI/WhiteOrangeTheme/JerseyIcons/Zwift_RaceLeader_thumb.tga

[20:21:13] FILE : Unable to load UI/WhiteOrangeTheme/JerseyIcons/TealPink2020_thumb.tga

[20:21:13] FILE : Unable to load UI/WhiteOrangeTheme/JerseyIcons/Twenty242021_thumb.tga

[20:21:13] FILE : Unable to load UI/WhiteOrangeTheme/Customization/RunningShirts/TealPink2020_thumb.tga

[20:21:16] ERROR: CriticalPowerCurve::Save Query; pOutDataPoints is NULL

[20:21:16] ERROR: CriticalPowerCurve::Save Query; pOutDataPoints is NULL

[20:21:16] ERROR: CriticalPowerCurve::Save Query; pOutDataPoints is NULL

[20:21:16] ERROR: CriticalPowerCurve::Save Query; pOutDataPoints is NULL

[20:21:21] Couldnt load road tex Environment\Road\FreshRoad\FreshRoadOneLine.tga

[20:21:21] Couldnt load road tex Environment\Road\FreshRoad\FreshRoadOneLineNml.tga

[20:21:21] Couldnt load road tex Environment\Road\FreshRoad\FreshRoadOneLine.tga

[20:21:21] Couldnt load road tex Environment\Road\FreshRoad\FreshRoadOneLineNml.tga

[20:21:22] Shader Loaded successfully.  data/shaders/Final/colorRoadShader.psh

[20:21:44] WARN : Load Route Warning - Cannot find leadincheckpoint in data/Worlds/world1/routes/routes11.xml

[20:21:44] WARN : Load Route Warning - Cannot find leadinhighrescheckpoint in data/Worlds/world1/routes/routes11.xml

[20:21:44] WARN : Load Route Warning - Cannot find leadincheckpoint in data/Worlds/world1/routes/routes12.xml

[20:21:44] WARN : Load Route Warning - Cannot find leadinhighrescheckpoint in data/Worlds/world1/routes/routes12.xml

[20:21:44] WARN : Load Route Warning - Cannot find leadincheckpoint in data/Worlds/world1/routes/routes16.xml

[20:21:44] WARN : Load Route Warning - Cannot find leadinhighrescheckpoint in data/Worlds/world1/routes/routes16.xml

[20:21:44] WARN : Load Route Warning - Cannot find leadincheckpoint in data/Worlds/world1/routes/routes24.xml

[20:21:44] WARN : Load Route Warning - Cannot find leadinhighrescheckpoint in data/Worlds/world1/routes/routes24.xml

[20:21:44] WARN : Load Route Warning - Cannot find leadincheckpoint in data/Worlds/world1/routes/routes33.xml

[20:21:44] WARN : Load Route Warning - Cannot find leadinhighrescheckpoint in data/Worlds/world1/routes/routes33.xml

[20:21:44] WARN : Load Route Warning - Cannot find leadincheckpoint in data/Worlds/world1/routes/routes36.xml

[20:21:44] WARN : Load Route Warning - Cannot find leadinhighrescheckpoint in data/Worlds/world1/routes/routes36.xml

[20:21:44] WARN : Load Route Warning - failed to open "data/Worlds/world1/routes/routes71.xml"

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/3day13one_FESTIVAL.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/trainingplans.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/3day13one.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/5kRecordBreaker.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/6wk_FTP_Builder.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/8wkRacePrep.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/12wk_Winter_Plan.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/Cyclist_10K.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/Fondo.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/GC_TrainingPlan.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/GranFondo.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/Gravel_Grinder.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/PRL100_2018.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/PRL46.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/TT_Build.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/running_101.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/cycling_101.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/bike_ftp_multi.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/Coast_Ride.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/mcmillan_adv_half.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/marathon_phase2.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/marathon_phase1.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/running201_5k.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/Pebble_Pounder.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/Dirt_Destroyer.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/Singletrack_Slayer.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/zwift_racing.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/BackToFitness.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/3day13one_LITE.xml

[20:21:48] Tried to load a valid xml file, but it seems to not really be a ZWO file?

[20:21:48] LoadWorkout failed to load.

[20:21:48] Failed workout path: TrainingPlans/5kRecordBreaker_Lite.xml


To me this comes down to the investment model and the objectives of the most senior at the company. Their focus is on creating an ecosystem and a userbase, marketing led, that can be sold to the highest bidder or IPO’d for a big shareholder return. However Zwift is the software, and the foundations aren’t just shakey, they are probably beyond repair. Focus and strategy has been completely misplaced for too long. If it were to IPO it would be an investment so bad you may as well set fire to your money before throwing it down the drain.

This is all very doomsday, but I guess the question is - can Zwift still save itself, or has it buried itself too deep?

I think there is a fundamental difference between what you are asking, and what those people you mention in Zwift HQ want.
They want their buy out - As simple as that. Everything else costs money and takes focus away from that end goal.

This is no longer Jon M building a tool for fellow cyclists, this is an application to make a significant sum of money. There will definitely be people who want to make the game better, but their voice will be a long way behind those who move them closer to the buy out.

Making the game improve (especially to the level the community demands) involves taking a step backwards in the current situation and that’s simply not viable at the moment.

15 Likes

This is a large part of where things went badly wrong IMHO. Getting distracted by the idea of getting into hardware and losing focus (and significant resources) on the core product - the Zwift game.

12 Likes

My guess is it would depend on the value attributable to the racing community versus the non-racing community. From a value driving perspective i expect there is a much bigger upside to bolting on TR, as is being predicted, than the downside of pissing off the gobby racers

This isn’t a racing only point (racing only mentioned as it is key marketing ammunition). The errors in the log relate to simply loading Zwift itself. Game crashes, terrible performance etc are applicable to all users.

3 Likes

Implementing 3D graphics across multiple operating systems and multiple versions of the operating systems and keeping the codebases in sync is complex at the best of times. They end up having to use the lowest common denominator, in this case probably an older OpenGL version, while at the same time the industry itself is moving to Vulkan or at least modern OpenGL (OpenGL, particularly OpenGL before 4 are really difficult to multithread which may be why they don’t have good threading performance).

2 Likes

zwift can only go so far before subscriber use is saturated, and they know this, so, where do they go from there to upsell/get more revenue? hardware, so they bring out a bike that people can just jump on and use, issue here is that not everyone wants that type of bike and those that do pretty much will already have an atom/kickr/stages etc so who exactly is this new bike being targeted at?

The game engine itself needs to move away from its existing engine and be rebuilt with a totally new one, but that means investing money and we all know billion dollar corps love their money and not having to use any of it to improve services. This would most likely mean deprecating more platforms (older laptops/tablets/phones) and having a beefier machine to run on which would most likely cost them subscribers, but ZHQ are happy with the money they are making, its screw the customer, the customer is not always right in their eyes.

5 Likes

Peloton are the prime example of having to stop innovating due to the VC money. They need to save, save save and get them market ready. Its not about the user experience anymore.

1 Like

They’ve moved iOS/tvOS onto Metal now, and MacOS is following soon. That will leave Windows and Android on OpenGL, and therefore two distinctly different developments - instead of moving to Vulkan across the board. Doesn’t bode well tbh.

2 Likes

I’ll hop in early here, apologies I won’t be able to contribute much to the conversation over the day as I’m traveling.

We’re carefully balancing foundational tech rebuild, new feature development, and content experience creation. As the team of Zwifters here on this thread know, we’re all in this together.

I can tell you personally, after over a year here, on a growing and passionate team - we’re here for Zwifters and are scaling and stabilizing this platform each and every day. Is it all perfect, no - but we’re rebuilding many foundational pieces just as we build the new features atop.

Mark

4 Likes

With all due respect Mark, I don’t think anyone is questioning the enthusiasm and passion of the workforce. This is a question of overall company direction at the highest level - and maybe it is OK now, but it is too late? That is up for debate. There is a lot of evidence out there, and it is forming a clearer and clearer picture of the state of affairs. Unless someone like Eric wants to chip in and provide evidence otherwise.

1 Like

Which is it, Unity or UE4? And if it’s UE4, can it be UE5? :rofl:

2 Likes

I know why Zwift on Apple devices has been moved to Metal - because Apple deprecated OpenGL several years ago so they had to switch at some point, or risk sudden incompatibility - but it concerns me that we now effectively have the game running on two separate graphics APIs.

I assume the impact of this split on development and support has been fully considered, but it seems like it may lead to an situation where Zwift on Apple is seen as the long-term, preferred platform by the company, and the game on PC/Windows becomes neglected as a result.

It would be interesting to hear some sort of roadmap on the underlying technical side of the game as a piece of software. As it is we just get random snippets of information on places like Reddit and Zwift Insider, and this forum is left in the dark.

5 Likes

Is it just my system, or has anyone else noticed a decay in the graphics since the most recent update? It might also be that my only rides since taking a week off between my old one breaking and my my new one arriving were 2 heavily attended Tour of Watopia rides, but the feed (still set on ultra) definitely looked grainy-er (more pixelated) and transitions between areas (like entering the tunnels) were opaque and I saw a couple of instances of “new pr” confetti clouds just hanging in the air like a wall. I hope it’s just the strain of the 1300 riders in my C cat ToW ride yesterday afternoon and not an issue with the update on my machine (or my graphics card failing or my computer not being able to handle controlling the game and a smart trainer or the game itself failing).

Been a distinct increase in reports of graphical issues recently. I haven’t had any myself but it’s definitely worth doing a fresh install of the game. Remember to delete any local files and reboot after the uninstall.

2 Likes

So what’s the plan? What can we expect in the next 3 or 6 months? How does this all improve?

The main priority for me is my user experience, has this improved over the last year? The honest answer is no it hasn’t.

There seems to be more bugs, issues and the need for workarounds than ever before. If I’m having to introduce a work around to improve my user experience your failing.

IMHO there seems to be a ever widening gulf between zwifts ivory towers and the (paying) user base in recent months as seen with pr disasters and lack of innovation but it runs much deeper than those examples.

Yes.

(Sorry, but that was the first thing that came to my mind and it made me smile.)

btw: What happened to the new home screen? I still haven’t seen any of it. Not that I’d need it in any way. I just feel a litte left out.

I think the biggest problem Zwift has right now, is all the bugs and crashes they introduce. People are satisfied with no change if the alternative is frequent upgrades that just introduces more bugs.
I haven’t had much problems with Zwift, but the times I e.g. loose power after an upgrade and have to do a factory calibration and miss the race, are the worst.
If you can’t release without so many bugs, you have to spend more time doing QA before you release. There are very few new and notable changes in these releases. They are mostly bug fix releases. I would rather like less frequent releases with less bugs. I know that is not the the way the industry is going, but you have to adjust to the reality.
I’m taking client side releases now. On serverside, things are different.

…and all the errors in the log files do not exactly make QA and debugging any easier. If the game outputs hundreds of errors even when working “normally”, it is obviously a lot more difficult to spot the actual errors that could tell you something useful from all the noise. The fact that these are left unaddressed for years (and addressing many of them is not rocket surgery; my personal favourite are all the errors from the graphics profile config files which for one would only require deleting the offending lines) tells a lot about the software development process.

I still would like to know what the people who did the tech due diligence for Zwift’s latest funding round were smoking, and where can I get some? (as long as it is WADA-legal)

9 Likes

That is my biggest (maybe only) annoyance at the moment.

for example, i zwift before work, this morning i was running a bit late so just wanted to jump on the bike and ride but they had released yet another update to fix the stuff the previous update had broken. so that cut 5 minutes off my ride.

2 Likes