NBNET es una biblioteca de encabezado C (C99) diseñada para implementar la arquitectura de cliente cliente, más precisamente para los videojuegos en línea. La biblioteca se basa en esta gran serie de artículos de Glenn Fiedler.
NBNET puede dirigirse a diferentes protocolos como UDP o WEBRTC a través de "controladores" (ver más abajo para obtener más información).
La API está destinada a ser lo más directa posible y depende de la encuesta de eventos, lo que facilita la integración en un bucle de juego.
Descargo de responsabilidad : NBNET se encuentra en las primeras etapas de su desarrollo y es, en primer lugar, un proyecto de aprendizaje mío mientras exploro el desarrollo de juegos en línea. Si está buscando una biblioteca preparada para la producción de batalla, probablemente esta no sea la indicada.
Puede ver NBNET en acción en este video.
Si desea discutir la biblioteca o necesita ayuda, únase al servidor Discord de NBNET.
El controlador nativo de WEBRTC confía en:
Un juego de acción divertido que se encuentra con un navegador web, por Duncan Stead (@Duncanstead86).
Ver en YouTube.
Un juego real de WIP Battle Royal en un navegador web.
Ver en YouTube
Un RTS multijugador en línea hecho para Ludum Dare 49.
https://ldjam.com/events/ludum-dare/49/llamageddon
Un pequeño prototipo de juego de tanques en línea.
Ver en Github
Una lista de enlaces tratados de usuarios (no son compatibles oficialmente, por lo que pueden estar desactualizados):
NBNET no implementa directamente ningún código de "transporte" de bajo nivel y se basa en los controladores .
Un controlador es un conjunto de definiciones de funciones que viven fuera del encabezado NBNET y proporcionan una implementación de la capa de transporte para NBNET utilizada para enviar y recibir paquetes.
NBNET viene con tres controladores listos para usar:
En exactamente uno de sus archivos fuente, lo hace:
#define NBNET_IMPL
#include "nbnet.h"
Proporcionar una implementación del controlador. Por ejemplo, para el controlador UDP, solo agregue:
#include "net_drivers/udp.h"
Después de incluir el encabezado NBNET en el mismo archivo fuente donde definió NBNET_IMPL .
NBNET no proporciona ninguna capacidad de registro, por lo que debe proporcionar la suya:
#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 la gestión de la memoria, NBNET utiliza malloc , realloc y free . Puedes redefinirlos si es necesario:
#define NBN_Allocator malloc
#define NBN_Reallocator realloc
#define NBN_Deallocator free
Todo establecido, desde aquí, te sugiero que te subas a los ejemplos. Si está interesado en WebRTC, vaya aquí.
NBNET viene con un sistema de serialización de nivel de bit primitivo; Pero, si desea utilizar su propia solución de serialización, NBNET le permite enviar y recibir matrices de bytes sin procesar.
Vea el ejemplo de echo_bytes.