UDP vs TCP : Pourquoi faire fonctionner les serveurs de jeux séparément du chat ?
Published: 2023-11-30 08:28:12

Lorsqu'il s'agit de créer des jeux multijoueurs, les développeurs sont souvent confrontés à un dilemme.

-   Dois-je utiliser mes serveurs de jeu existants qui alimentent déjà ma fonctionnalité multijoueur pour faire fonctionner le chat ?
    
-   Dois-je séparer mes serveurs de jeu et gérer mon chat indépendamment ?
    

Car après tout, il ne s'agit que de messages de chat, n'est-ce pas ? De petits messages envoyés à un seul utilisateur ou à un petit groupe, autant utiliser ce qui est déjà construit ? Qu'est-ce qui pourrait nuire ? Bien que l'utilisation de ce que vous avez déjà construit puisse sembler une bonne option au départ, il y a un certain nombre de problèmes qui peuvent survenir en choisissant ce modèle de conception.

Nous allons vous montrer pourquoi vous devriez faire fonctionner vos serveurs de jeu et vos fonctions sociales (surtout le [chat](https://www.pubnub.com/use-case/in-app-chat/)) de manière indépendante, ce qui est bénéfique à la fois pour vous en tant que développeur de jeux et pour vos utilisateurs finaux. Ce faisant, vous augmenterez les performances et l'évolutivité du jeu lui-même et permettrez aux fonctions sociales d'être facilement étendues avec de nouvelles fonctionnalités à l'avenir.

**Qu'est-ce que TCP et UDP ?**
------------------------------

TCP et [UDP](https://www.pubnub.com/guides/udp/) sont des protocoles réseau utilisés pour le transfert de données sur l'internet. Le TCP est un protocole internet orienté connexion, tandis que l'UDP est un protocole sans connexion.

Le grand débat sur les protocoles de jeux multijoueurs est de savoir quand utiliser UDP (User Datagram Protocol) ou [TCP (Transmission Control Protocol)](https://www.pubnub.com/guides/tcp-ip/) et quand il est préférable d'utiliser l'un ou l'autre.

Mais avant d'en arriver là, parlons de l'architecture des jeux en ligne.

**Serveurs de jeux UDP ou TCP : Comment rendre votre jeu en ligne plus facile à gérer**
---------------------------------------------------------------------------------------

Une architecture orientée microservices divise une grande application, dans ce cas votre jeu, en petits services modulaires, versionnés indépendamment, et qui communiquent entre eux par le biais d'API simples et universellement accessibles. Il est ainsi beaucoup plus facile de créer de nouvelles fonctionnalités et d'assurer la maintenance de la bande passante et des fonctionnalités une fois qu'elles ont été créées.

En séparant vos serveurs de jeu de votre fonctionnalité de chat, vous rendez l'ensemble de votre infrastructure plus facile à gérer et vous vous rapprochez d'une architecture entièrement orientée vers les microservices. Dans ce cas, examinons plus particulièrement le chat dans le jeu et sa relation avec les serveurs de jeu qui alimentent le jeu multijoueur.

Avec une architecture monolithique, votre équipe de développement est désormais enfermée dans une pile technologique unique, utilisant les mêmes langages de programmation, bases de données et environnements logiciels que ceux sur lesquels le jeu a déjà été construit. Lorsqu'il s'agit de recruter de nouveaux développeurs ou de prototyper de nouvelles technologies et de nouveaux systèmes, il est beaucoup plus facile d'avancer rapidement dans une architecture microservices.

Les dépendances sont également beaucoup plus évidentes avec les architectures monolithiques. Si une seule fonction de votre application tombe en panne, c'est tout le jeu qui s'écroule. En divisant votre jeu en microservices, si un seul module tombe en panne, il est plus facile d'isoler le défaut et de le réparer.

Vos serveurs de jeu sont conçus pour [fournir les mouvements et l'état des joueurs](https://www.pubnub.com/docs/general/presence/overview) en temps réel, et ils le font bien. Reproduire la même technologie et la même conception pour les messages de chat, c'est tout simplement ne pas utiliser les meilleures options pour cette fonctionnalité particulière. Les composants décentralisés sont plus faciles à entretenir et plus évolutifs.

![](https://images.ctfassets.net/3prze68gbwl1/h3rC4If7TY4W9s4s3NADr/ef310e0b3415530bc0cfcd72a089131c/game-infrastructure.png)

Exemple d'infrastructure de jeu où le chat est séparé des serveurs de jeu. Nous pouvons également exécuter d'autres services en dehors des serveurs de jeu, notamment l'autorisation, la présence, les statistiques et les classements.

**Serveurs de jeux UDP vs TCP : Garantir une expérience de jeu transparente et les performances du chat**
---------------------------------------------------------------------------------------------------------

Les performances globales du jeu sont une considération majeure pour un jeu multijoueur. Avec une architecture monolithique, le jeu peut fonctionner en laboratoire, mais pour les jeux en ligne avec un grand nombre d'utilisateurs communiquant à un rythme rapide, vous commencerez à observer des décalages et des latences accrues à la fois pour la livraison des messages de chat et pour l'expérience de jeu.

En séparant les deux, on s'assure que les ressources de l'unité centrale et du réseau sont utilisées de manière plus efficace. L'objectif principal de vos serveurs de jeu est d'offrir une expérience transparente à tous les utilisateurs de votre jeu. Par conséquent, la puissance de traitement doit être utilisée pour maximiser cette performance.

Supposons que vous ayez un jeu d'arène de combat en ligne comme League of Legends ou EVE Online. Vous pouvez avoir des centaines de joueurs dans un seul monde, à un moment donné. Cela représente des milliers de messages envoyés par vos serveurs de jeu pour chaque entrée créée par chaque joueur. Ajoutez à cela les messages de chat. Il est tout à fait possible que les joueurs puissent spammer le canal de discussion et ralentir délibérément le serveur de jeu, puisque tous les messages auraient la même priorité.

Le serveur de jeu gère déjà des expériences de jeu intensives - physique, graphisme, son. Si l'on ajoute à cela les messages de discussion - individuels, de groupe, d'équipe -, l'analyse et l'acheminement des messages vers les utilisateurs appropriés, tous ces messages s'accumulent lentement pour les jeux à grande échelle et nuisent aux performances globales du jeu. Il est évident que les canaux de discussion doivent être séparés des canaux multijoueurs. C'est une perte de puissance de traitement importante qui pourrait être mieux utilisée pour des problèmes plus complexes que l'acheminement des messages de chat.

**TCP vs UDP - Quand vous avez besoin des deux, et quand vous n'en avez pas besoin**
------------------------------------------------------------------------------------

Les jeux multijoueurs rapides (jeux de tir à la première personne, jeux d'arène, etc.) utilisent le protocole UDP pour synchroniser les mouvements des joueurs et mettre à jour l'état du jeu. Les en-têtes UDP sont idéaux pour envoyer ces mises à jour à une vitesse ridicule, mais les messages ne sont pas garantis (parce que le message suivant arrive très vite derrière).

### Pourquoi l'UDP est-il préféré au TCP ? Et vice-versa ?

La connexion TCP garantit la livraison des messages, ce qui en fait une excellente option pour le chat. Vous obtiendrez d'excellentes performances en utilisant le protocole UDP pour vos jeux et le protocole TCP pour vos fonctions sociales.

![](https://images.ctfassets.net/3prze68gbwl1/3F6epR2uvWaGMsZs6QVgjF/43009b230140dde81fa41153063718d9/tcp-vs-udp.png)

Cependant, pour les jeux multijoueurs moins intenses, comme les jeux au tour par tour, TCP est une option appropriée à la fois pour le jeu et pour le chat. Parce que TCP garantit la transmission des messages, et dans les jeux où chaque mouvement compte (comme un tour de Scrabble ou de tic-tac-toe), c'est une excellente option pour alimenter le jeu multijoueur. Bien entendu, vous voudrez toujours séparer votre chat des connexions au serveur de jeu, en particulier lorsque votre jeu prendra de l'ampleur et que vous aurez des milliers d'utilisateurs connectés en même temps.

### Tenez compte de la latence lorsque vous choisissez d'utiliser TCP et UDP pour des fonctionnalités différentes.

La latence est un autre élément à prendre en compte, car les normes de latence diffèrent selon qu'il s'agit de fonctionnalités multijoueurs ou de fonctions sociales. Pour un jeu multijoueur, qui assure l'état du jeu et la transmission des données des joueurs, la norme industrielle est de 20 ms maximum. En revanche, pour une application de chat, la latence maximale pour la transmission d'un message de chat est de 250 ms. Vous avez donc deux types différents de messagerie en temps réel pour les jeux en ligne, avec deux normes différentes. Le fait qu'ils fonctionnent séparément vous permet de gérer chacun d'entre eux en fonction des besoins.

**Ajouter facilement de nouvelles fonctionnalités sociales en utilisant le protocole TCP ou UDP**
-------------------------------------------------------------------------------------------------

L'exécution du chat en tant que service autonome et le choix d'un protocole réseau standard[(XMPP](https://www.pubnub.com/learn/glossary/what-is-xmpp/), [WebSockets](https://www.pubnub.com/guides/what-are-websockets-and-when-should-you-use-them/), [ngrok](https://www.pubnub.com/guides/what-is-ngrok/)) ou d'un service hébergé (PubNub) offrent la possibilité d'ajouter facilement de nouvelles fonctionnalités sociales puissantes.

Commencez par le chat de base, qui permet aux utilisateurs de discuter individuellement ou en groupe. Avec cela, vous avez l'infrastructure sous-jacente, ainsi que la [publication et l'abonnement de](https://www.pubnub.com/guides/everything-you-need-to-know-about-pub-sub/) base, et il y a beaucoup d'autres fonctionnalités sociales que vous pouvez facilement construire sur cette base. Avec un minimum de code, vous pouvez ajouter des fonctionnalités de chat de table comme des indicateurs de frappe, la présence pour montrer quels joueurs sont en ligne et hors ligne, et des compteurs de messages non lus - des fonctionnalités qui sont attendues par les utilisateurs.

**TCP et UDP : Perspectives d'avenir**
--------------------------------------

Les applications de jeu, grandes et petites, s'orientent vers cette conception architecturale, notamment [Pocket Gems](https://www.pubnub.com/customers/pocket-gems/)et plus récemment [EVE Online](https://www.eveonline.com/article/p4i0qx/new-chat-backend-coming-with-the-march-release). Les avantages sont évidents : une meilleure évolutivité, un meilleur contrôle des flux, des performances plus efficaces, la liberté d'innover sans être enfermé dans une seule pile, la séparation du chat de vos serveurs de jeu est la voie à suivre.

_Avec PubNub Chat, vous pouvez facilement_ [_implémenter le chat dans le jeu_](https://www.pubnub.com/industry/gaming/) _comme base pour des fonctionnalités sociales robustes, vous permettant de vous concentrer davantage sur le développement de votre jeu et moins sur la mise à l'échelle et la maintenance de l'infrastructure sociale_.

#### **_Références_**

-   [_Premiers pas dans la programmation de jeux multijoueurs_](https://hub.packtpub.com/getting-started-multiplayer-game-programming/)
    
-   [_Analyse et refonte de l'architecture du chat dans EVE Online_](http://uu.diva-portal.org/smash/get/diva2:408940/FULLTEXT01.pdf)
    

Comment PubNub peut-il vous aider ?
===================================

Cet article a été publié à l'origine sur [PubNub.com](https://pubnub.com/blog/tcp-vs-udp/)

Notre plateforme aide les développeurs à construire, livrer et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.

La base de notre plateforme est le réseau de messagerie périphérique en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.

Découvrez PubNub
----------------

Découvrez le [Live Tour](https://www.pubnub.com/tour/introduction/) pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.

S'installer
-----------

Créez un [compte PubNub](https://admin.pubnub.com/signup/) pour un accès immédiat et gratuit aux clés PubNub.

Commencer
---------

La [documentation PubNub](https://www.pubnub.com/docs) vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre [SDK](https://www.pubnub.com/docs).