Faire jouer du monde ensemble, sans filet

Le jeu en réseau, c’est une de mes grandes passions de geek. Réunir une gang de joueurs dans une même partie, chacun chez eux, pis que tout le monde voie la même affaire en même temps — quand j’y pense en tant que passionné de techno, je trouve ça quasiment un miracle. Faire jouer du monde ensemble, sans filet, c’est un défi technique fascinant.

Parce que le réseau, lui, s’en fout de ton fun. Y’a de la latence: le temps que ton geste voyage jusqu’au serveur pis revienne chez les autres. Quelques dizaines de millisecondes, pis ton tir arrive « après » que l’adversaire a bougé. C’est là que la magie risque de casser.

Le voyage d’un geste

flowchart LR
    A[Mon geste] --> B[Mon PC]
    B --> C[Internet<br/>latence]
    C --> D[Serveur de jeu]
    D --> E[Autres joueurs]
    E -.-> F{Tout le monde voit<br/>la même chose?}

Le défi, c’est que chaque joueur a une latence différente. Le serveur doit jongler avec ça pour donner l’impression que tout le monde est dans le même monde, en même temps. Y’a des tas de petites ruses — prédire le prochain geste, lisser les mouvements, corriger doucement quand la réalité rattrape la prédiction.

Pourquoi ça m’allume comme passionné

C’est là que mon œil curieux de techno s’emballe: un jeu en ligne, c’est un système distribué déguisé en divertissement. Les mêmes problèmes que les gros systèmes sérieux — synchronisation, cohérence, tolérance aux délais — mais avec un retour immédiat: si ça marche pas, le jeu est plate pis tout le monde le sent tout de suite. Pas de meilleur banc d’essai pour comprendre les systèmes distribués.

Ce qui me reste

Faire jouer du monde ensemble sans filet, c’est un casse-tête magnifique. Le réseau impose ses limites physiques, pis tout l’art consiste à les cacher pour que le fun reste intact. Comme passionné, je trouve ça génial que le jeu vidéo soit, mine de rien, un des terrains les plus exigeants de l’informatique en temps réel. Le divertissement pousse la technique aussi fort que bien des applications « sérieuses ».