
librg — это легкая библиотека, которая служит промежуточным программным обеспечением между библиотеками передачи данных (сетевыми, потоковыми файлами и т. д.) и основной логикой приложения/игры.
К основным обязанностям библиотеки относятся:
Библиотека была создана для решения сложностей настройки и управления потоком многопользовательских игр и выделенных игровых серверов. Он прошел долгий путь в удалении несущественных вещей и постепенном придании нынешней формы, которую вы можете увидеть и использовать сегодня.
Обычно сетевой игровой мир состоит из набора сетевых игроков и множества сетевых объектов. Типичным вариантом настройки отношений синхронизации между сущностями и игроками является настройка соединений «Все-всем».
Это самая базовая настройка, которой нужно следовать. Однако с увеличением количества объектов это становится довольно неэффективным с точки зрения пропускной способности.

С помощью librg вы можете значительно уменьшить использование полосы пропускания, создавая отношения сущностей на основе радиуса и видимости. Сущности будут синхронизироваться только с игроками, которым они видны.

Общий интерфейс библиотеки был сделан с учетом поддержки большинства сетевых библиотек.
Сетевая библиотека должна поддерживать:
char *И это почти все!
Список поддерживаемых библиотек:
ENetGameNetworkingSocketsyojimboSLikeNetKCPRaknetWebsocketWebRTCUDP или TCPПримечание: вы можете посмотреть пример сетевой интеграции для enet.
librg — это библиотека с одним заголовком, что означает, что для ее использования вам нужно всего лишь получить последнюю (или конкретную) версию указанного заголовочного файла из раздела выпусков этого репозитория, добавить ее в свой проект и начать пользоваться преимуществами. .
В качестве альтернативы, если вы чувствуете себя комфортно в своем CLI, вы можете просто сделать следующее:
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Это сетевая библиотека?
Могу ли я использовать с ним любую сетевую библиотеку?
UDP и заканчивая WebSocket / WebRTC . Репозиторий содержит кучу файлов *.h и *.c , но вы предполагаете, что это библиотека с одним заголовком, как это возможно?
Предлагает ли librg систему сущностей?
Как мне упаковать данные, предоставляете ли вы для этого методы?
protobuf , flatbuffers , msgpack и т. д.) или создать свою собственную реализацию.Я вижу, вы упомянули чанки. Означает ли это, что моя игра/приложение должно быть основано на чанках?
Чтобы прочитать подробную документацию по библиотеке, посмотреть примеры и краткое руководство, посетите нашу страницу документации.
Кроме того, вы можете проверить папку code/apps на наличие реальных примеров кода.
Вот простая иллюстрация, которая пытается воспроизвести работу библиотеки в простом 2D-мире, состоящем из блоков 4x4. В трехмерном мире большего размера все будет работать очень похоже, только в трех измерениях.

И это изображение демонстрирует структуру базового двоичного протокола, который используется для кодирования и декодирования данных из/в. Полученный двоичный буфер можно было вставить в любой другой буфер, сохранить на диск в виде файла или отправить по сети любым доступным способом. Размещение пользовательских данных рядом с каждым объектом в пакете позволяет хранить данные в зависимости от контекста, что расширяет возможности и обеспечивает репликацию объектов с эффективным использованием памяти и пропускной способности.

Если вы использовали библиотеку до версии v6.0.0 , рекомендуется прочитать руководство по миграции, расположенное здесь.
Мы тестируем библиотеку на различных платформах. В этой таблице представлено своего рода описание совместимости. Если вы протестировали его и ваш результат отличается от приведенного в таблице, пожалуйста, опишите проблему в вопросах.
| Платформа/Результат | Окна | macOS | Линукс | iOS | Андроид | Малиновый Пи | OpenBSD | FreeBSD | Эмскриптен |
|---|---|---|---|---|---|---|---|---|---|
| ❔ | лязг | лязг | gcc, лязг | gcc, лязг | gcc, лязг | ||||
| ✅ | мсвк, мингв | gcc, лязг | gcc, лязг | эмкк |
Если вы хотите внести свой вклад, добавить новые функции, оптимизации или общие улучшения, вот инструкции, как это сделать:
git clone https://github.com/zpl-c/librg.gitmake чтобы собрать все проекты и убедиться, что все работает.code/tests/make test чтобы проверить Если вы работаете в Windows и/или не можете использовать make , вы также можете использовать встроенный файл конфигурации cmake для создания решения Visual Studio:
mkdir buildcd buildcmake ../misc -G"Visual Studio 16 2019" (или любая имеющаяся у вас конфигурация)cmake --open . (открывает VS с решением)Для разработчиков это предлагает приятные преимущества: