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示例。