La face cachée de ZwiftPower.com

La face cachée de ZwiftPower.com

Zwift a grandi depuis les idées issues de la tête de Jon Mayfield vers cet outil dont il est aujourd’hui largement admis qu’il a révolutionné la manière de faire du vélo d’intérieur. Au début, la priorité de la société était de mettre l’accent sur l’expérience utilisateur. Quant aux cyclistes, leur priorité était de rouler plus vite et mettre en oeuvre le principe des courses que certains utilisateurs avaient déjà commencé à développer. Ce système aujourd’hui largement connu est ZwiftPower qui centralise la majorité des résultats des courses Zwift. Attardons nous un petit peu sur les dessous de ZwiftPower.

ZwiftPower est un élément fondamental de la communauté Zwift, tout ceux qui courent ont un jour ou l’autre eu affaire à ZwiftPower.com. Ce n’est pas minimiser qu’affirmer que ZP a joué un rôle central dans la communauté ces deux dernières années. Sans cet outil, aucune des équipes majeures telles que Team Experimental ou KISS Race Team ne se seraient formées.

ZP est administré par 3 personnes : Glen Knight, Christian Weidmann et James Hodges (qui est timide et ne se montre jamais en photo!). Pour remettre en perspective la quantité de travail que ZP représente, Glen a jeté un oeil rapidement sur le nombre de messages échangés autour de ZP, cela représente approximativement 21.000 messages.

Maintenant que nous avons compris l’importance de ZP, voyons les origines de ce système, son code, qui est derrière et la manière dont cet outil a évolué.

Les débuts de ZP, la puissance humaine

Dans les premiers jours, des courses Zwift tels que la course Zwift Training organisée par Christian Weidmann, les résultats étaient constitués manuellement. Soit en analysant les segments Strava, soit en utilisant des coureurs (largement non fiables) et en observant manuellement qui avait passé la ligne sur une vidéo enregistrée (avec les temps les plus précis possibles). Voici une idée du type de vidéo que l’on pouvait enregistrer à cette époque.

Vous pouvez le voir sur cette vidéo, nous avions à cette époque 80 coureurs dans TOUT Watopia. Ces chiffres étaient déjà important à l’époque alors qu’on considère aujourd’hui que 80 coureurs est une participation moyenne pour une sortie ou une course. Aussi, tous les coureurs devaient avoir la course et la catégorie dans leur nom, sinon ils n’étaient pas classés. Ces courses ou sorties étaient postées à l’époque sur Facebook. Les chiffres étaient calculés manuellement plusieurs heures plus tard comme vous pouvez le voir sur ce listing.

ZwiftPower

Les débuts de ZP, la puissance du code

A cette époque, un développeur du nom de Jonathan Lemon fut à l’origine de l’outil Zlogger Utility, un utilitaire sur lequel s’appuie ZP aujourd’hui. Il existe de nombreux projets ou programmes utilisés par les coureurs Zwift qui sont ex-même basés sur de précédents projets. La plupart reprennent le code original de Jonathan Lemon.

Zlogger remplaçait à l’époque le visualisateur humain et observait les coureurs sur les courses pour rendre compte du moment où chaque cycliste franchissait la ligne. Que ce soit la ligne de départ, la ligne d’arrivée, les KOM, etc.. En réalisant cela, Jonathan a optimisé une quantité colossale de travail réalisé en amont pour générer les classements. C’est aujourd’hui l’une des fondations principales de ZP. Si Zlogger a automatisé une bonne partie du processus permettant de récupérer les données des courses, il restait encore une quantité très importante de travail manuel effectuée par les organisateurs (les configurations de chaque course étant différentes).

Les débuts de ZP, mettre en place les relations

Zlogger fût vite remplacé par plusieurs personnes chez ZwiftPower mais resta un élément vital car son code est encore aujourd’hui utilisé pour récupérer les données envoyés à ZwiftPower.com. Cette partie de l’interface fût prise en charge par des coureurs du Team Experimental et de la communauté, comme Christian Weidmann.

ZwiftPower

A l’origine, Christian avait besoin d’extensions pour les séries de courses ZTR pour faciliter la génération des résultats car cette course se développait rapidement avec des règles très formelles. Petit à petit, Christian a rapidement remplacé Jonathan en tant que contributeur le plus actif des données provenant de ZP. Glen Knight eu l’idée de stocker les données provenant de plusieurs “commissaires” (les robots qui visualisent les coureurs) dans une base de données commune. Christian s’est rapidement mis à écrire un script pour transférer les données de zlogger vers la base centralisée de Zwiftpower.

ZwiftPower est désormais basé sur le principe qui consiste à observer les performances des coureurs sur une course à partir d’endroits stratégiques (les différentes lignes) via des coureurs de type “commissaires” plutôt qu’utiliser des coureurs “robots”. Dans la figure suivante, vous pouvez voir les nombreuses instances de coureurs “commissaires” prises sur une KISS.

ZwiftPower

En plus d’enregistrer les performances et les chiffres, ce qui est vital pour les courses, Christian a écrit d’autres scripts qui récupèrent les profiles des coureurs et planifient des événements à partir de Zwift que ZwiftPower pourra ensuite extraire et afficher au quotidien sur Zwiftpower.com.

Malheureusement Zwift ne propose pas aujourd’hui d’API publique qui pourrait permettre à un site tiers d’extraire des informations spécifiques issues du jeu. Le gros challenge pour ZP a donc été d’imaginer un mécanisme permettant d’accéder aux données internes de Zwift. Plusieurs membres de la communautés ont cherché de manière indépendante des moyens d’y arriver. Ainsi, Christian a trouvé une solution en analysant la manière dont le client Zwift communiquait avec le serveur lors du login en récupérant les informations sur le profil utilisateur.

ZwiftPower

Naissance  de ZwiftPower

Si Zlogger est attribué à Jonathan, l’accès aux données Zwift et leur intégration par Christian, le développement du code de ZwiftPower est attribué à James Hodges. ZP était au départ un projet  personnel lui permettant de suivre les données  de chaque coureurs lors des courses. Ces données étaient le poids, les W/kgs, les zones de puissance sur 20mn/5mn/1mn et les meilleurs efforts. Au départ, l’idée n’était de couvrir que 2 ou 3 courses par semaine, notamment celles auxquelles James participait lui-même. Jusqu’au jour où les courses KISS sont arrivées …

Glen Knight a convaincu James de mettre en place des idées totalement folles sur la surveillance et l’administration des courses basé sur une vaste ferme de serveurs que nous connaissons aujourd’hui sous le nom de ZwiftPower.com : Ce jour là, le vrai job a commencé !!

ZwiftPower

En tant que seul développeur de ZwiftPower, James Hodges est responsable de maintenir le site en ligne (ce qui est déjà un challenge en soi) et d’introduire de nouvelles fonctionnalités. ZwiftPower a poussé l’automatisation un peu plus loin en intégrant non seulement les données du module événementiel fourni par Zwift (l’heure de la course, son nom et ses informations) mais aussi et surtout le fameux mode LIVE, un des plus gros challenges. En effet, il arrive souvent que les données live de la course soient incomplètes et nécessitent des mises à jour sur le site ZwiftPower. Ces données Live restent aujourd’hui le plus gros challenge auquel l’équipe a été confronté mais aussi le plus gros succès de ZwiftPower.

Désormais les événements Zwift sont analysés, créés et les résultats consolidés de manière automatisée. Il existe encore 3 niveaux de vérification qui impliquent des vérifications humaines (d’où les étoiles creuses ou pleines que vous voyez apparaître en suffixe des noms de course). Ces données sont personnelles (propre au coureur) ou globales.

Et les courses KISS dans tout ça ?

ZwiftPower

Dans les premiers jours de la communauté Zwift, c’était le Farwest, les gens apprenaient, réalisaient et construisaient des choses en même temps. Concernant les séries de courses, les événements principaux étaient les ZTR, ZHR, ODZ, KISS. Glen Knight a rencontré Jonathan Lemon et Christian Wiedann pour mutualiser les commissaires virtuels sur plusieurs courses. Ainsi, les données étaient communes et disponibles pour toutes les autres courses. Avec la disponibilité de ces données, il fut très simple de discuter entre responsables de courses pour construire les données Live, connus aujourd’hui sous le nom de ZwiftPower LIVE.  ZwiftPower est le fruit de la collaboration entre Jonathan, Christian et les pionniers de l’époque, il est utilisé aujourd’hui par la plupart des organisateurs de courses.

Glen récupère des données provenant de 3000 événements différents, à titre d’exemple le 17 Janvier 2017, 33 courses étaient organisées dans la journée et consolidées sur ZwiftPower.

Mais qu’est-ce que tout cela signifie en terme d’hébergement ? 

Et bien Glen possède aujourd’hui à titre personnel 20 machines physiques exécutant de nombreuses instances Zwift (les fameux commissaires virtuels) mais aussi la plateforme Zlogger et les nombreux scripts de transferts de données et de conversion. Ajouté à cela, il y a 5 serveurs qui hébergent ZwiftOnBoard, la possibilité pour un coureur de broadcaster sa webcam pour apparaître dans le live de Nathan.

D’un point de vue technique, ZP utilise un serveur MySQL sur un réseau local de telle sorte que le réseau Internet n’affecte pas les temps de transfert des données vers la base interne provenant des 40 instances Zwift (les fameux commissaires). Ces données sont également répliquées vers 2 serveurs hébergées dans le Cloud. Un des serveurs est utilisé pour lancer les scripts permettant de récupérer les informations de profile utilisateur. L’autre est utilisé pour héberger le serveur Web chez Glen (dans sa maison). A noter qu’il ne demande rien en échange à la communauté Zwift. Toute cette infrastructure est proposée gratuitement à la communauté Zwift.

Mais les choses sont loin d’être finies, chaque semaine est un nouveau challenge, une nouvelle difficulté pour l’équipe ZP. Même si, pour James, le gros challenge consiste à gérer les innombrables idées que Glen peut faire germer continuellement dans sa tête :-). Ce challenge que doit affronter ZP aujourd’hui est la croissance de Zwift qui ne ressemble plus aux débuts avec Jarvis Island et ses 41 coureurs .. Aujourd’hui, une journée calme rassemble 1400 coureurs.

ZwiftPower administre aujourd’hui plus de 100 sources de données à travers 3 grandes courses et ce, 24/24 et 7/7. Avec parfois, d’horribles quantités de données provenant de Zwift, notamment lorsqu’il s’agit de 3000 coureurs simultanés. Pour remettre tout cela dans son contexte, ZP stocke aujourd’hui 41.000.000 d’enregistrements depuis seulement Mars 2016. Et avant que vous le demandiez, oui il existe des sauvegardes !

Quand on demande à l’équipe quelle est la partie de ce projet dont ils sont le plus fiers, les avis sont variés.  Certains apprécient la partie technique, le passage d’un serveur unique à un cluster de données et toutes les lignes de codes nécessaires à un tel projet. D’autres, comme Glen, sont plus impressionnés par l’impact de ZP sur la communauté et la manière dont les classements et les chiffres de puissance ont aidé les coureurs dans leur pratique individuelle.

L’équipe est en contact régulier avec les créateurs de Zwift que sont Jon Mayfield et Roberto Duarte, notamment pour évoquer les données et la configuration du jeu, spécialement important pour les données Live en course mais aussi pour échanger sur les projets futurs. Tout le monde est surpris des progrès réalisés depuis seulement un an comparé aux débuts. Ils sont également portés sur l’avenir.

Quel est donc le futur de ZwiftPower ?

Les personnes derrière ZP ont pleins d’idées qu’ils voudraient implémenter en fonction du temps disponible. Cela va de simples optimisations jusqu’à des changements plus importants ou des fonctionnalités comme la télémétrie et les données de chat en live.

Le Streaming existe déjà via ZwiftOnBoard, mais l’équipe souhaite se consacrer à la stabilité et l’intégration avec ZwiftPower pour permettre l’affichage d’informations supplémentaires.

L’équipe travaille également sur une façon de créer un classement basé sur les records (PR) par segment qui pourraient s’ajouter à la consolidation des résultats. La possibilité de gérer les événements de type KISS Zwift Quest ou des courses de différents types (pour épicer les choses).

ZP est probablement un des éléments vitaux de la communauté Zwift et avec l’arrivée de nouveaux systèmes de classements tels que celui de Cycligent basé sur les données de ZP, l’importance du site ne va cesser de croître.

Le futur est aussi à l’évidence lié à celui du Jeu Zwift lui même. L’équipe espère que des API publiques proches des fonctionnalités de zlogger seront publiées pour éviter de lancer les nombreuses instances du jeu en local. Cela permettrait de faire héberger le jeu sur le Cloud et surtout économiserait la facture colossale d’électricité de Glen Knight. Mais de manière plus importante, cela permettrait de gagner en stabilité !

Note du rédacteur : Je pense que le commentaire de Glen sur l’électricité est important. ZP est une des pierres angulaires de la communauté Zwift. On pourrait imaginer qu’en cas d’arrêt du site, quelqu’un comblera le vide mais ce serait sous-estimer la charge colossale que cela représente. ZP c’est des centaines d’heures de travail et un investissement en temps non négligeable sans compter l’infrastructure technique. Tout cela repose sur les épaules de l’équipe et le bénévolat. S’il y a un aspect très rarement évoqué par ZP, c’est le coût d’une telle organisation. J’ai été moi même très surpris par la somme que cela peut représenter au service de personnes qu’ils ne rencontreront probablement jamais physiquement. On espère que ce projet continuera de grandir et de servir dans les années à venir la communauté Zwift.


Auteur : 
Traduit de l’original par Sami Jaber

Sami

Sami JABER est le créateur de Zwift France et Zwifteur lui même dans l'équipe de France. Il anime à ses heures perdues de manière bénévole la communauté Zwift France.

3 COMMENTS
  • Simonnet pascal
    Reply

    Bonjour moi j’ai un souci je inscrit a une course jusque la tout va bien je vois mon nom et une fois fini je ne vois pas la ligne d’arrivé et j’ai aucun classement et ne trouve pas non plus dans zwiftpower…

  • sucameli thierry
    Reply

    bonjour j éprouve des difficultés a me connecte a zwift power je rajoute le code demande devant mon nom mais rien ne ce passe

  • Pochylski
    Reply

    J’ ai changer de Home trainer tacx néo et j ai fait une course hier et je suis pas dans le classement ?avant j avais un smart muin b +
    Cordialement

Leave a Reply

Your email address will not be published. Required fields are marked *