Les architectures possibles du jeu en réseau
Quel que soit un jeu en ligne (MMORPG, FPS ou autre). Il existe "deux architectures" principales possibles mises en oeuvre pour permettre aux joueurs de se connecter et de jouer ensemble.
- Le client / serveur : dans ce cas, vous vous connectez à un serveur positionné sur Internet qui aura à sa charge de manière très globale de vous permettre de jouer (gestion des connexions, calcul du jeu, rotation des cartes, des modes de jeu, interactions avec les PNJ et j'en passe). Votre jeu est considéré comme "le client" qui vient utiliser les services de ce serveur. Votre ordinateur / console prend à sa charge tout de même certains rôles tels que par exemple, le calcul graphique de l'environnement de jeu.
Dans le cas présent, le serveur reste toujours serveur et le client reste toujours client.
À titre d'exemple très "simplifié", lorsque vous jouez à WoW, votre ordinateur vient afficher des informations transmises par le serveur de jeu et vos actions sont envoyées au serveur pour faire évoluer l'ensemble du jeu.
En marge du modèle Client / Serveur, il existe un type infrastructure qui est en voit de développement qui est le Cloud Gaming. De manière très simplifiée, il s'agit d'une infrastructure Client / Serveur poussée à l'extrême ou votre PC ou Console n'est plus que le PAD et l'écran. L'ensemble des calculs, des simulations et rendus graphiques sont fait au niveau de la plateforme de jeu distante. On ne vous envoie que des images et vous envoyez des commandes.
- Le peer to peer (ou pair à pair en français) : dans ce type d'architecture, votre ordinateur ou votre console peut tour à tour être le serveur ou le client. Cette architecture est bien connue du public grâce aux logiciels de téléchargement et aux scandales qui en ont découlé.
Ainsi lorsque votre ordinateur ou console a été désigné comme serveur pour une partie par exemple, votre machine fournit les informations nécessaires aux clients pour jouer tout en vous permettant de jouer.
Un des points bloquants est lorsque, pour une raison volontaire ou non, le serveur se déconnecte ou quitte le jeu. Ce phénomène est bien connu notamment dans la communauté Call Of Duty sous le terme de "migration hôte".
Dans un cas comme dans l'autre, des contraintes existent et ne doivent pas être perdues de vue :
- les données transitent via Internet et sont donc soumises à "un temps de transfert" entre les clients et le serveur qui est non nul : la latence ou lag. Il faut donc partir du principe que ce que vous voyez sur votre écran appartient déjà au passé. Le seul "présent du jeu" est situé sur le serveur.
- seul le serveur possède une connaissance "absolue" du contexte de jeu. Les clients ne connaissent qu'une partie de l'information (pour éviter notamment aux joueurs de tricher en envoyant au serveur des informations erronées).
- Les données transitant sur Internet, il faut accepter le fait que ces informations peuvent et vont se perdre. Les clients doivent donc être à même de prédire et / ou estimer les mouvements selon les informations dont ils disposent.
- Le serveur, qu'il soit dédié, ou positionné sur un client faisant office de serveur dans une architecture Peer to Peer, doit envoyer de manière régulière à chacun des clients l'ensemble des informations nécessaires pour assurer la cohérence de l'environnement du jeu.
- Le serveur et le client possèdent "les mêmes règles" de simulations, déplacements ... (sauf dans le Cloud Gaming)