librg es una biblioteca liviana que sirve como middleware entre bibliotecas de transferencia de datos (redes, transmisión de archivos, etc.) y la lógica central de aplicaciones/juegos.
Las principales responsabilidades de la biblioteca incluyen:
La biblioteca nació para resolver las complejidades de configurar y administrar el flujo de juegos multijugador y servidores de juegos dedicados. Recorrió un largo camino para eliminar cosas que no eran esenciales, esculpiéndolas lentamente hasta su forma actual, que puedes ver y usar hoy.
Por lo general, el mundo del juego en red consta de un conjunto de jugadores en red y un conjunto de entidades en red. La variante típica de establecer relaciones de sincronización entre entidades y jugadores es establecer conexiones de todo para todos.
Esta es la configuración más básica a seguir. Sin embargo, con una cantidad cada vez mayor de entidades, el ancho de banda se vuelve bastante ineficiente.
Con librg, puede disminuir considerablemente el uso de ancho de banda al crear relaciones entre entidades basadas en radio y visibilidad. Las entidades se sincronizarán solo con los jugadores para los que son visibles.
La interfaz general de la biblioteca se creó teniendo en cuenta el soporte de la mayoría de las bibliotecas de la red.
La biblioteca de redes debe admitir:
char *
¡Y eso es todo!
Una lista de qué tipo de bibliotecas son compatibles:
ENet
GameNetworkingSockets
yojimbo
SLikeNet
KCP
Raknet
Websocket
WebRTC
UDP
o TCP
Nota: puede consultar un ejemplo de integración de red para enet.
librg
es una biblioteca de un solo encabezado, lo que significa que para usarla, solo necesita obtener la versión más reciente (o específica) de dicho archivo de encabezado de la sección de lanzamientos de este repositorio, agregarlo a su proyecto y comenzar a disfrutar de los beneficios. .
Alternativamente, si se siente cómodo con su CLI, puede hacer lo siguiente;
curl -L https://github.com/zpl-c/librg/releases/latest/download/librg.h > librg.h
# OR
wget https://github.com/zpl-c/librg/releases/latest/download/librg.h -O librg.h
¿Es esta una biblioteca de redes?
¿Puedo usar cualquier biblioteca de redes con él?
UDP
puro y hasta WebSocket
/ WebRTC
. El repositorio contiene un montón de archivos *.h
y *.c
y, aun así, usted sugiere que sea una biblioteca de un solo encabezado, ¿cómo es eso posible?
¿Librg ofrece un sistema de entidades?
¿Cómo empaqueto datos? ¿Proporcionan métodos para ello?
protobuf
, flatbuffers
, msgpack
, etc.) o hacer tu propia implementación.Veo que mencionas fragmentos, ¿significa que mi juego/aplicación debería estar basado en fragmentos?
Para leer documentación detallada sobre la biblioteca, ver ejemplos y una guía de inicio rápido, visite nuestra página de documentación.
Además, puede consultar la carpeta de código/aplicaciones para ver ejemplos de código reales.
Aquí hay una ilustración simple que intenta replicar cómo funciona la biblioteca en un mundo 2D simple de fragmentos de 4x4. Para un mundo 3D de mayor tamaño, todo funcionaría de forma muy similar, sólo que en 3 dimensiones.
Y esta imagen muestra la estructura del protocolo binario subyacente que se utiliza para codificar y decodificar datos desde/hacia. El búfer binario resultante podría insertarse en cualquier otro búfer, guardarse en el disco como un archivo o enviarse a través de la red utilizando cualquier método disponible. Colocar datos personalizados junto a cada entidad dentro del paquete permite un almacenamiento de datos dependiente del contexto que amplía las capacidades y permite la replicación de entidades eficiente en memoria y ancho de banda.
Si ha utilizado la biblioteca antes de la versión v6.0.0
, se recomienda leer la guía de migración que se encuentra aquí.
Estamos probando la biblioteca para varias plataformas. Esta tabla proporciona algún tipo de descripción de compatibilidad. Si lo ha probado y su resultado es diferente al de la tabla, no dude en describir el problema en los problemas.
Plataforma / Resultado | ventanas | macos | linux | iOS | Androide | Frambuesa Pi | OpenBSD | FreeBSD | escritos |
---|---|---|---|---|---|---|---|---|---|
❔ | sonido metálico | sonido metálico | gcc, sonido metálico | gcc, sonido metálico | gcc, sonido metálico | ||||
✅ | msvc, mingw | gcc, sonido metálico | gcc, sonido metálico | emcc |
Si desea contribuir, agregar nuevas funciones, optimizaciones o mejoras generales, aquí tiene las instrucciones sobre cómo hacerlo:
git clone https://github.com/zpl-c/librg.git
make
para construir todos los proyectos y verificar que todo funcione.code/tests/
make test
nuevamente para verificar En caso de que esté trabajando desde Windows y/o no pueda usar make
, también puede usar el archivo de configuración cmake
incorporado para generar una solución de Visual Studio, para hacer eso:
mkdir build
cd build
cmake ../misc -G"Visual Studio 16 2019"
(o cualquier configuración que tenga)cmake --open .
(abre VS con la solución)Para los desarrolladores, ofrece buenos beneficios: