Ingénierie
De 15 à 30 sports : ce qu’il faut vraiment pour construire une plateforme multisport
Ajouter un sport n’est pas un simple changement de configuration. C’est un nouveau règlement, un nouveau modèle de score et de nouveaux cas limites. Voici comment Zeetius a doublé sa couverture.
Quand on apprend qu’une plateforme prend en charge trente sports, on imagine généralement une liste déroulante quelque part et un tableau de règles derrière. On ajoute une ligne, on obtient un sport. Nous pensions la même chose au départ. C’est loin d’être vrai, et la raison en est le problème d’ingénierie le plus passionnant de ce métier.
Chaque sport a sa propre idée de ce qu’est un score
Le badminton se joue au meilleur des trois manches de 21 points, avec deux points d’écart et un plafond à 30. Le tennis de table se joue au meilleur des cinq ou sept manches de 11 points, avec deux points d’écart, sans plafond, et le service change tous les deux points. La lutte cumule des points en continu au sein de périodes et peut s’arrêter instantanément sur un tomber. Le basket-ball a un chrono qui s’arrête. Le cricket a des manches. Le chessboxing alterne entre deux systèmes de score entièrement différents au sein d’un même combat.
Aucune abstraction commune ne couvre tout cela sans devenir si vague qu’elle en perd son utilité. Un champ générique « points » qui signifie autre chose dans chaque sport n’est pas un modèle — c’est une zone de texte avec des étapes en plus, et chaque consommateur de ces données doit réimplémenter la logique du sport pour l’interpréter.
Notre choix : des paradigmes, pas des sports
La percée a consisté à cesser de modéliser des sports pour modéliser des paradigmes de score. Sous trente sports se cache en fait un nombre bien plus restreint de formes réellement différentes :
- Sports en manches et échanges — badminton, tennis de table, tennis, pickleball, padel, volley-ball. Un match est une suite de manches ; une manche est une suite d’échanges ; un échange a exactement un vainqueur. Les variations portent uniquement sur le score cible, la règle des deux points d’écart, le plafond et la rotation du service.
- Sports au chronomètre avec cumul de points — football, basket-ball, handball, hockey. Un match est une suite de périodes chronométrées ; les points s’accumulent par événements attribués à une équipe et souvent à un joueur ; le chrono lui-même est un état qui peut démarrer, s’arrêter et expirer.
- Sports de combat — lutte, chessboxing. Périodes, score continu et conditions de fin pouvant se déclencher à tout moment et primer sur tout le reste.
Dès lors qu’un sport est rattaché à un paradigme, l’ajouter revient à déclarer ses paramètres plutôt qu’à écrire une nouvelle logique. Le pickleball a pris des jours, pas des semaines, car c’est un sport en manches et échanges avec une règle de service inhabituelle et un autre score cible — deux éléments pour lesquels le paradigme avait déjà prévu des emplacements.
Le règlement est une donnée, le moteur est du code
Cette séparation permet à une équipe qui n’est pas trente fois plus grande de maintenir trente sports. Une correction de la logique de l’écart de deux points est faite une fois et vaut simultanément pour six sports. Un nouveau sport hérite de toutes les corrections que le paradigme a un jour reçues. Et quand une fédération change une règle — ce qui arrive plus souvent que ne le croient les profanes — c’est un changement de données, relu et déployé, pas un changement de code à raisonner à partir de zéro.
Ce dont personne ne vous prévient : les cas limites
Les paradigmes gèrent le cas nominal. Environ la moitié du travail réel se trouve dans ce qui se passe quand le sport ne coopère pas.
- Un joueur abandonne en plein échange. Qui remporte la manche, et que doit afficher le score dans les archives de résultats ?
- Un arbitre corrige un point saisi deux échanges plus tôt. Tout ce qui en dépend — la page en direct, la probabilité de victoire, le tableau — doit se réconcilier sans rechargement de page.
- Un forfait est enregistré avant le début du match. Il n’y a pas de score, mais il y a un résultat, et le tableau doit tout de même avancer.
- Deux joueurs du même tirage portent le même nom. L’écran de score doit les distinguer sans que l’arbitre ait à plisser les yeux sur un numéro de membre.
- La connectivité disparaît au bord du court — ce qui, dans un gymnase scolaire, arrive à coup sûr. Les scores doivent être mis en file d’attente localement et réconciliés dans l’ordre au retour du réseau.
Ce dernier point a façonné l’architecture plus que n’importe quelle différence de règle. Le bord du court est un environnement réseau hostile, et un système de score qui suppose la connectivité est un système de score qui perd des matchs.
Pourquoi cela compte, même si vous n’êtes pas ingénieur
Parce que cela détermine ce qu’une fédération peut réellement demander. Sur une plateforme où chaque sport est un développement sur mesure, « pouvez-vous prendre en charge le kalaripayattu ? » représente un trimestre de feuille de route. Sur une plateforme fondée sur des paradigmes, la réponse honnête est généralement une question en retour : quelle est la forme du score, et où remet-elle en cause les hypothèses ? S’il s’agit d’un sport en manches et échanges aux paramètres inhabituels, c’est une question de semaines. S’il s’agit d’un paradigme réellement nouveau, c’est plus long — et nous le dirons.
Trente sports, ce n’est pas l’exploit. L’exploit, c’est de pouvoir dire oui au trente et unième sans rien réécrire.