NBNET est une bibliothèque C (C99) en tête unique conçue pour implémenter l'architecture client-serveur, plus précisément pour les jeux vidéo en ligne. La bibliothèque est basée sur cette grande série d'articles de Glenn Fiedler.
NBNET peut cibler différents protocoles tels que UDP ou WEBRTC via des "pilotes" (voir ci-dessous pour plus d'informations).
L'API est censée être aussi simple que possible et s'appuie sur le sondage des événements, ce qui facilite l'intégration dans une boucle de jeu.
Avis de non-responsabilité : NBNET en est aux premiers stades de son développement et est, avant tout, un projet d'apprentissage alors que j'explore le développement de jeux en ligne. Si vous recherchez une bibliothèque de la production de la production, ce n'est probablement pas celle-ci.
Vous pouvez voir NBNET en action dans cette vidéo.
Si vous souhaitez discuter de la bibliothèque ou avez besoin d'aide, rejoignez le serveur Discord du NBNET.
Le conducteur de WebBrTC natif s'appuie sur:
Un jeu d'action amusant qui rencontre un navigateur Web, par Duncan Stead (@ Duncanstead86).
Voir sur YouTube.
Un jeu Royal Wip Battle jouable dans un navigateur Web.
Voir sur YouTube
Un multijoueur en ligne RTS conçu pour le Ludum Dare 49.
https://ldjam.com/events/ludum-dare/49/llaMageddon
Un petit prototype de jeu de chars en ligne.
Voir sur github
Une liste de liaisons contrôlées par l'utilisateur (elles ne sont pas officiellement prises en charge, donc elles peuvent être obsolètes):
NBNET n'implémente directement aucun code de «transport» de bas niveau et s'appuie sur les pilotes .
Un pilote est un ensemble de définitions de fonction qui vivent en dehors de l'en-tête NBNET et fournissent une implémentation de couche de transport pour NBNET utilisé pour envoyer et recevoir des paquets.
NBNET est livré avec trois pilotes prêts à l'emploi:
Dans exactement l'un de vos fichiers source:
#define NBNET_IMPL
#include "nbnet.h"
Fournir une implémentation du pilote. Par exemple, pour le pilote UDP, ajoutez simplement:
#include "net_drivers/udp.h"
Après avoir inclus l'en-tête NBNET dans le même fichier source où vous avez défini NBNET_IMPL .
NBNET ne fournit aucune capacité de journalisation, vous devez donc fournir le vôtre:
#define NBN_LogInfo(...) SomeLoggingFunction(__VA_ARGS__)
#define NBN_LogError(...) SomeLoggingFunction(__VA_ARGS__)
#define NBN_LogDebug(...) SomeLoggingFunction(__VA_ARGS__)
#define NBN_LogTrace(...) SomeLoggingFunction(__VA_ARGS__)
#define NBN_LogWarning(...) SomeLoggingFunction(__VA_ARGS__)
Pour la gestion de la mémoire, NBNET utilise malloc , realloc et free . Vous pouvez les redéfinir si nécessaire:
#define NBN_Allocator malloc
#define NBN_Reallocator realloc
#define NBN_Deallocator free
Tout set, à partir d'ici, je vous suggère de sauter dans les exemples. Si vous êtes intéressé par WebBrTC, allez ici.
NBNET est livré avec un système de sérialisation de niveau bit primitif; Mais, si vous souhaitez utiliser votre propre solution de sérialisation, NBNET vous permet d'envoyer et de recevoir des tableaux d'octets bruts.
Voir l'exemple Echo_Bytes.