O NBNET é uma biblioteca C (C99) de cabeçalho único, projetado para implementar a arquitetura cliente-servidor, com mais precisão para videogames on-line. A biblioteca é baseada nessa grande série de artigos de Glenn Fiedler.
O NBNET pode atingir diferentes protocolos, como UDP ou WebRTC, através de "drivers" (veja abaixo para obter mais informações).
A API deve ser o mais simples possível e depende da pesquisa de eventos, facilitando a integração em um loop de jogo.
Isenção de responsabilidade : A NBNET está nos estágios iniciais de seu desenvolvimento e é, em primeiro lugar, um projeto de aprendizado meu ao explorar o desenvolvimento de jogos on -line. Se você está procurando uma biblioteca pronta para a produção, provavelmente não é a única.
Você pode ver a NBNET em ação neste vídeo.
Se você deseja discutir a biblioteca ou precisar de ajuda, junte -se ao servidor Discord da NBNET.
O driver WebRTC nativo conta com:
Um jogo de ação divertido que se depara com um navegador da web, de Duncan Stead (@duncanstead86).
Veja no YouTube.
Um jogo de batalha do WIP jogável em um navegador da web.
Veja no YouTube
Um RTS multiplayer online feito para o Ludum Dare 49.
https://ldjam.com/events/ludum-tare/49/llamedageddon
Um pequeno protótipo de jogo de tanque online.
Veja no Github
Uma lista de ligações contribuídas pelo usuário (elas não são oficialmente suportadas, para que possam estar desatualizadas):
A NBNET não implementa diretamente nenhum código de "transporte" de baixo nível e depende de drivers .
Um driver é um conjunto de definições de função que vivem fora do cabeçalho do NBNET e fornecem uma implementação da camada de transporte para o NBNET usado para enviar e receber pacotes.
O NBNET vem com três drivers prontos para uso:
Em exatamente um de seus arquivos de origem:
#define NBNET_IMPL
#include "nbnet.h"
Fornecer uma implementação do driver. Por exemplo, para o driver UDP, basta adicionar:
#include "net_drivers/udp.h"
Depois de incluir o cabeçalho do NBNET no mesmo arquivo de origem, onde você definiu NBNET_IMPL .
A NBNET não fornece nenhum recurso de registro, então você precisa fornecer o seu próprio:
#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__)
Para gerenciamento de memória, a NBNET usa malloc , realloc e free . Você pode redefini -los, se necessário:
#define NBN_Allocator malloc
#define NBN_Reallocator realloc
#define NBN_Deallocator free
Todos os conjuntos, a partir daqui, sugiro que você entre nos exemplos. Se você estiver interessado no WebRTC, clique aqui.
O NBNET vem com um sistema de serialização de nível de bit primitivo; Mas, se você deseja usar sua própria solução de serialização, a NBNET permite enviar e receber matrizes de bytes cruas.
Veja o exemplo echo_bytes.