NBNet은 온라인 비디오 게임을 위해보다 정확하게 클라이언트 서버 아키텍처를 구현하도록 설계된 단일 헤더 C (C99) 라이브러리입니다. 도서관은 Glenn Fiedler 의이 훌륭한 기사를 기반으로합니다.
NBNET은 "드라이버"를 통해 UDP 또는 WEBRTC와 같은 다른 프로토콜을 타겟팅 할 수 있습니다 (자세한 내용은 아래 참조).
API는 가능한 한 간단하고 이벤트 폴링에 의존하여 게임 루프에 쉽게 통합 할 수 있습니다.
면책 조항 : NBNET은 개발 초기 단계에 있으며, 무엇보다도 온라인 게임 개발을 탐구 할 때 저의 학습 프로젝트입니다. 전투 테스트, 프로덕션 준비된 라이브러리를 찾고 있다면 아마도 이것이 아닐 것입니다.
이 비디오에서 NBNET이 작동하는 것을 볼 수 있습니다.
라이브러리에 대해 논의하거나 도움이 필요한 경우 NBNET의 Discord 서버에 가입하십시오.
기본 WEBRTC 운전자는 다음에 의존합니다.
Duncan Stead (@duncanstead86)의 웹 브라우저에 들어가는 재미있는 액션 게임.
YouTube를 참조하십시오.
웹 브라우저에서 재생 가능한 WIP 배틀 로얄 게임.
YouTube를 참조하십시오
Ludum Dare 49 용 온라인 멀티 플레이어 RT.
https://ldjam.com/events/ludum-dare/49/llamageddon
약간의 온라인 탱크 게임 프로토 타입.
Github를 참조하십시오
사용자 대조적 바인딩 목록 (공식적으로 지원되지 않으므로 구식이 될 수 있음) :
NBNET은 저수준 "전송"코드를 직접 구현하지 않으며 드라이버 에 의존합니다.
드라이버는 NBNET 헤더 외부에 거주하는 일련의 기능 정의이며 패킷을 보내고 수신하는 데 사용되는 NBNET의 전송 계층 구현을 제공합니다.
NBNET은 3 개의 즉시 사용 가능한 드라이버와 함께 제공됩니다.
소스 파일 중 하나 에서 다음과 같습니다.
#define NBNET_IMPL
#include "nbnet.h"
드라이버 구현을 제공하십시오. 예를 들어 UDP 드라이버의 경우 다음을 추가하십시오.
#include "net_drivers/udp.h"
NBNET_IMPL 정의한 동일한 소스 파일에 NBNET 헤더를 포함시킨 후.
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 예제를 참조하십시오.