Zeetius
PRODUITS

Le tournoi KBSA est diffusé sur Zeetius Tv REGARDER

Ingénierie

Tennis de table, lutte, basket-ball : un seul moteur, trois sports très différents

Un exemple concret de la façon dont la même infrastructure de scoring gère un sport d'échanges, un sport de combat et un sport au chronomètre sans devenir une bouillie générique.

7 min de lecture

Trois interfaces de score côte à côte pour le tennis de table, la lutte et le basket-ball

Nous avons déjà parlé des paradigmes de scoring de façon abstraite. Cet article en est la version concrète : trois sports que nous gérons réellement, ce que chacun exige, et où s'arrête le moteur commun pour laisser place au travail propre à chaque sport.

Tennis de table : un sport d'échanges avec un problème de rotation

Le scoring paraît simple. Au meilleur des cinq ou sept manches, manches en 11 points, deux points d'écart, sans plafond. Toute la complexité réside dans le service.

Le service alterne tous les deux points, sauf à 10-10 (égalité), où il alterne à chaque point, indéfiniment. En double, l'ordre de réception tourne lui aussi, et change d'une manche à l'autre. Si la rotation est fausse, l'arbitre corrige manuellement l'ordre de service en pleine manche, exactement la friction que le système est censé supprimer.

Le modèle du tennis de table suit donc l'état du service comme un élément à part entière du score, déduit de la séquence des points plutôt que saisi. Comme il est déduit, un arbitre qui corrige un point trois échanges plus tôt corrige aussi automatiquement la rotation du service — un de ces détails invisibles quand tout fonctionne et exaspérants quand ce n'est pas le cas.

Nous avons aussi rencontré en production une particularité de données, documentée à nos dépens : dans certains déploiements, seuls les points d'un côté étaient enregistrés à chaque échange, ceux de l'adversaire étant déduits. C'est suffisant pour le score, mais inutilisable pour les analyses dérivées des échanges, puisqu'une moitié des événements manque. Enregistrer les deux côtés à chaque échange était un préalable à toute analyse de match de tennis de table.

Une interface de scoring de tennis de table mettant en évidence l'indicateur de service déduit et la rotation en double

L'état déduit l'emporte sur l'état saisi

Le principe général qu'illustre cet exemple : tout ce que les règles peuvent calculer à partir de la séquence des points doit être calculé, jamais saisi. Rotation du service, balle de manche, balle de match, règle des deux points active ou non, qui reçoit ensuite en double. Chaque champ qu'un arbitre doit tenir à la main finira par être faux à 20 h le troisième jour.

Lutte : points continus et fin soudaine

La lutte rompt totalement avec l'hypothèse de l'échange. Il n'y a aucun événement discret de gain de point à compter — les points s'accumulent en continu au fil de périodes chronométrées, avec des valeurs différentes, pour des actions de natures diverses, au profit de l'un ou l'autre lutteur, à tout moment.

Et un combat peut se terminer instantanément. Un tombé y met fin quel que soit le score. Une supériorité technique y met fin dès que l'écart est atteint, en pleine période. Ce ne sont pas des cas limites à traiter après coup ; ce sont des conditions que le moteur doit évaluer après chaque action marquée, car le match est peut-être déjà terminé.

Les avertissements et la passivité ajoutent une couche supplémentaire : un état qui influe sur le combat sans être un score, et qui peut se convertir en points plus tard. L'interface de scoring doit donc proposer des valeurs de points, le suivi des avertissements, un bouton de tombé et un chronomètre de période — sans rien d'autre à l'écran, car un officiel de lutte n'a pratiquement pas le temps de chercher une commande.

Basketball : le chronomètre est le vrai défi

L'arithmétique du score au basketball est la plus simple des trois — deux, trois ou un point, attribué à un joueur et à une équipe. C'est le chronomètre qui rend l'exercice difficile.

Le temps de jeu est un état qui s'écoule, s'arrête, et doit rester identique entre l'appareil de scoring, l'affichage de la salle et l'écran de chaque spectateur. Une horloge synchronisée par interrogation dérive visiblement en un quart-temps. L'approche qui fonctionne consiste à transmettre les transitions du chronomètre — démarré à tel instant, arrêté à tel autre — et à laisser chaque client calculer localement la valeur courante. Tous les écrans déduisent alors le même temps des mêmes événements, et un client qui se reconnecte après une coupure calcule immédiatement l'heure exacte au lieu de reprendre à partir d'une valeur périmée.

Set et échange tennis de table, badminton, tennis, pickleball, padel, volley-ball
Combat lutte, chessboxing
Chrono basket-ball, football, handball, hockey

Ce qui est réellement partagé

Vu la différence entre ces trois sports, on peut se demander ce qu'apporte réellement le moteur commun. Beaucoup, en fait — et rien de tout cela n'est de la logique de scoring.

  • Le flux d'événements : ordonné, en ajout seul, tolérant aux coupures, rejouable. Identique pour les trois.
  • Rejeu côté serveur comme source de vérité, pour que les corrections fonctionnent partout de la même façon.
  • Diffusion vers les pages en direct, les tableaux, les habillages de diffusion et les analyses — un seul chemin de publication.
  • Structure du tournoi : tirages au sort, tableaux, planification, résultats et classements, qui se moquent du sport dont provient le résultat.
  • File d’attente hors ligne et réconciliation, écrites une fois et héritées par tous les sports.

Ce qui est propre à chaque sport, c'est l'évaluation des règles et l'interface de scoring — les deux seuls éléments qui doivent l'être. Le reste étant partagé, le trente et unième sport se compte en semaines plutôt qu'en réécriture.