NBNET是一个单个标题C(C99)库,旨在实现客户服务器架构,更确切地说是在线视频游戏。该图书馆基于格伦·菲德勒(Glenn Fiedler)的这一文章。
NBNET可以通过“驱动程序”来针对不同协议,例如UDP或WEBRTC(有关更多信息,请参见下文)。
API的目的是尽可能直接,并依赖于事件民意调查,从而易于集成到游戏循环中。
免责声明:NBNET处于其发展的早期阶段,首先是我探索在线游戏开发时的学习项目。如果您正在寻找经过战斗的,可以进行制作的库,这可能不是一个。
您可以在此视频中看到NBNET的行动。
如果要讨论库或需要帮助,请加入NBNET的Discord服务器。
本地WebRTC驱动程序依赖于:
Duncan Stead(@duncanstead86)的一个有趣的动作游戏,该游戏碰到了网络浏览器。
在YouTube上查看。
WIP Battle Royal Game在网络浏览器中可以玩。
在YouTube上查看
在线多人RTS为Ludum Dare 49制作。
https://ldjam.com/events/ludum-dare/49/llamageddon
一个在线坦克游戏原型。
请参阅Github
用户限制的绑定列表(不正式支持它们,因此可能已过时):
NBNET不会直接实施任何低级“运输”代码,而是依赖驱动程序。
驱动程序是一组函数定义,该定义现有NBNET标头外,并为用于发送和接收数据包的NBNET提供了传输层实现。
NBNET带有三个现成的驱动程序:
在您的源文件中,恰好是:
#define NBNET_IMPL
#include "nbnet.h"
提供驱动程序实现。例如,对于UDP驱动程序,只需添加:
#include "net_drivers/udp.h"
将NBNET标头包含在定义NBNET_IMPL的同一源文件中。
NBNET不提供任何记录功能,因此您必须提供自己的记录功能:
#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__)
对于内存管理,NBNET使用malloc , realloc和free 。您可以在需要时重新定义它们:
#define NBN_Allocator malloc
#define NBN_Reallocator realloc
#define NBN_Deallocator free
从这里开始,我建议您跳入示例。如果您对WebRTC感兴趣,请转到这里。
NBNET带有原始的比特序列化系统。但是,如果您想使用自己的序列化解决方案,则NBNET可以让您发送和接收原始字节数组。
请参阅echo_bytes示例。