librg — это легкая библиотека, которая служит промежуточным программным обеспечением между библиотеками передачи данных (сетевыми, потоковыми файлами и т. д.) и основной логикой приложения/игры.
К основным обязанностям библиотеки относятся:
Библиотека была создана для решения сложностей настройки и управления потоком многопользовательских игр и выделенных игровых серверов. Он прошел долгий путь в удалении несущественных вещей и постепенном придании нынешней формы, которую вы можете увидеть и использовать сегодня.
Обычно сетевой игровой мир состоит из набора сетевых игроков и множества сетевых объектов. Типичным вариантом настройки отношений синхронизации между сущностями и игроками является настройка соединений «Все-всем».
Это самая базовая настройка, которой нужно следовать. Однако с увеличением количества объектов это становится довольно неэффективным с точки зрения пропускной способности.
С помощью librg вы можете значительно уменьшить использование полосы пропускания, создавая отношения сущностей на основе радиуса и видимости. Сущности будут синхронизироваться только с игроками, которым они видны.
Общий интерфейс библиотеки был сделан с учетом поддержки большинства сетевых библиотек.
Сетевая библиотека должна поддерживать:
char *
И это почти все!
Список поддерживаемых библиотек:
ENet
GameNetworkingSockets
yojimbo
SLikeNet
KCP
Raknet
Websocket
WebRTC
UDP
или 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.git
make
чтобы собрать все проекты и убедиться, что все работает.code/tests/
make test
чтобы проверить Если вы работаете в Windows и/или не можете использовать make
, вы также можете использовать встроенный файл конфигурации cmake
для создания решения Visual Studio:
mkdir build
cd build
cmake ../misc -G"Visual Studio 16 2019"
(или любая имеющаяся у вас конфигурация)cmake --open .
(открывает VS с решением)Для разработчиков это предлагает приятные преимущества: