À propos du projet
netcode est une bibliothèque C implémentant un protocole client/serveur sécurisé pour jeux multijoueurs en temps réel au-dessus d'UDP. Il résout le problème courant qu'UDP n'offre aucun concept de connexion, obligeant les développeurs à construire eux-mêmes la gestion des connexions, la sécurité et la fiabilité.
Conception et fonctionnalités :
- Protocole orienté connexion sur UDP, permettant aux jeux d'échanger des paquets non fiables et non ordonnés sans blocage en tête de ligne de TCP.
- Connexions client sécurisées via des jetons de connexion : seuls les clients autorisés par un backend peuvent se connecter, ce qui convient aux flux de matchmaking où un backend web émet des jetons.
- Système de slots clients : les serveurs définissent n slots ; les clients se voient attribuer un slot à la connexion et sont refusés rapidement lorsque c'est plein.
- Déconnexions propres et rapides des deux côtés pour libérer les slots, plus des délais d'expiration pour les déconnexions forcées.
- Paquets chiffrés et signés via la bibliothèque sodium, protégeant contre la falsification et l'écoute clandestine.
- Protections de sécurité contre les paquets malveillants, les attaques par rejeu et les attaques par amplification de paquets.
- Marquage optionnel des paquets pour réduire la gigue sur les routeurs Wi-Fi.
- Prise en charge d'IPv4 et IPv6.
Aperçu de l'utilisation : générer une clé privée aléatoire de 32 octets gardée secrète sur le serveur ; créer un serveur avec une configuration incluant la clé privée et la durée de vie maximale du jeton de connexion ; le démarrer avec un nombre de slots clients. Les clients obtiennent un jeton de connexion auprès d'une API REST backend et appellent netcode_client_connect. Après connexion, le client reçoit un index client et peut échanger des paquets chiffrés et signés avec le serveur. Un exemple de code est fourni dans client.c et server.c.
Le dépôt contient l'implémentation C. Le README liste également des implémentations en C#, Go, Rust, Unity, UE4 et TypeScript, et renvoie au standard netcode 1.02 et à IMPLEMENTERS.md pour ceux qui écrivent leurs propres versions. Le projet est sous licence BSD 3-Clause et demande une mention dans les crédits du produit.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.