NBNET ist eine einzelne Header C (C99) -Bibliothek, mit der die Client-Server-Architektur genauer für Online-Videospiele implementiert werden soll. Die Bibliothek basiert auf dieser großartigen Reihe von Artikeln von Glenn Fiedler.
NBNET kann auf verschiedene Protokolle wie UDP oder WebRTC durch "Treiber" abzielen (weitere Informationen finden Sie unten).
Die API soll so einfach wie möglich sein und sich auf Ereignisabfragen verlassen, was es einfach macht, sich in eine Spielschleife zu integrieren.
Haftungsausschluss : NBNET befindet sich in den frühen Phasen seiner Entwicklung und ist in erster Linie ein Lernprojekt von mir, während ich die Online -Spielentwicklung erforsche. Wenn Sie nach einer kattgetesteten, produktionsbereiten Bibliothek suchen, ist dies wahrscheinlich nicht diejenige.
Sie können NBNET in diesem Video in Aktion sehen.
Wenn Sie die Bibliothek besprechen oder Hilfe benötigen möchten, schließen Sie sich dem Discord -Server des NBNET bei.
Der native Webrtc -Treiber verlässt sich auf:
Ein lustiges Action -Spiel, das einen Webbrowser von Duncan Stead (@Duncanstead86) betreibt.
Siehe auf YouTube.
Ein WIP Battle Royal Game Playable in einem Webbrowser.
Siehe auf YouTube
Ein Online -Multiplayer -RTS für das Ludum Dare 49.
https://ldjam.com/events/ludum-dare/49/llamageddon
Ein kleiner Online -Tankspielprototyp.
Siehe auf Github
Eine Liste von benutzerfreundlichen Bindungen (sie werden nicht offiziell unterstützt, daher können sie veraltet sein):
NBNET implementiert keinen "Transportcode" auf niedrigem Niveau und stützt sich auf Treiber .
Ein Treiber ist eine Reihe von Funktionsdefinitionen, die außerhalb des NBNET -Headers leben und eine Transportschichtimplementierung für NBNET bereitstellen, die zum Senden und Empfangen von Paketen verwendet werden.
NBNET verfügt über drei nutzende Treiber:
In genau einer Ihrer Quelldateien tun es:
#define NBNET_IMPL
#include "nbnet.h"
Bereitstellung einer Treiberimplementierung. Fügen Sie beispielsweise für den UDP -Treiber einfach hinzu:
#include "net_drivers/udp.h"
Nachdem Sie den NBNET -Header in dieselbe Quelldatei eingefügt haben, in der Sie NBNET_IMPL definiert haben.
NBNET bietet keine Protokollierungsfunktionen, sodass Sie Ihre eigenen bereitstellen müssen:
#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__)
Für die Speicherverwaltung verwendet NBNET malloc , realloc und free . Sie können sie bei Bedarf neu definieren:
#define NBN_Allocator malloc
#define NBN_Reallocator realloc
#define NBN_Deallocator free
Alle gesetzt von hier aus schlage ich vor, dass Sie in die Beispiele einsteigen. Wenn Sie an Webrtc interessiert sind, gehen Sie hierher.
NBNET verfügt über ein primitives Serialisierungssystem in Bit-Level. Wenn Sie jedoch Ihre eigene Serialisierungslösung verwenden möchten, können Sie mit NBNET RAW -Byte -Arrays senden und empfangen.
Siehe Beispiel für echo_Bytes.