libquicknet
Bibliothèque réseau UDP simple et fiable pour les jeux
❗ libquicknet est en cours de développement et ne convient pas au code de production ❗
La cible principale de cette bibliothèque sont les prototypes de jeux ou les jeux de jam qui nécessitent un sous-système de mise en réseau rapide et plug&play.
Très facile à mettre en route !
Caractéristiques:
- Protocole UDP orienté connexion avec prise de contact en 3 étapes
- Prise en charge client<->serveur et peer-to-peer
- Faible utilisation de la bande passante
- Support séquencé/non séquencé fiable/peu fiable
- Système d'acquittement redondant rapide pour des messages fiables
- Découverte de serveur (LAN uniquement)
- Système de somme de contrôle complet pour éviter la corruption des messages
- Fusion facultative des messages lors de l'envoi
- Taux d'envoi fixe sélectionnable
- Détection des messages en double
- Prise en charge des fausses latences et des pertes de paquets
- Estimation du ping et du temps d'aller-retour
- Multiplateforme (Windows/Linux)
Fonctionnalités futures :
- Synchronisation de l'heure
- Synchronisation RNG pour les systèmes déterministes
- Bitpacking et compression
- Chiffrement symétrique avec échange de clés lors de la prise de contact
- Traversée NAT et punch-through
- Conscience de l'endianité
- Améliorer le système de reconnaissance
Installation
Supprimez tous les fichiers sources de votre projet et compilez !
Usage
- inclure quicknet_peer.h
- créer un descendant de quicknet :: Peer
- remplacer les méthodes OnConnection, OnDisconnection et OnGameMessage
- Définissez vos messages de jeu personnalisés comme indiqué dans quicknet_messagetypes.h
- Incluez vos identifiants de message dans quicknet_messagelookup.h
- Prêt!
Pour un exemple simple, veuillez consulter test.cpp
Arrière-plan
Cette bibliothèque a été écrite en une semaine, et même si elle est entièrement fonctionnelle, elle nécessite encore beaucoup de travail pour la rendre encore meilleure !
Il y a encore beaucoup de choses codées en dur qui nécessitent des soins, mais je vais essayer d'en faire une bibliothèque facilement personnalisable.