NBNet-это единая библиотека C (C99), предназначенная для реализации архитектуры клиента-сервера, точнее для онлайн-видеоигр. Библиотека основана на этой великой серии статей Гленна Фидлера.
NBNet может нацелиться на различные протоколы, такие как UDP или WEBRTC, через «Драйверы» (см. Ниже для получения дополнительной информации).
API предназначен для того, чтобы быть максимально простым, и опирается на опрос событий, что позволяет легко интегрироваться в петлю игры.
Отказ от ответственности : NBNet находится на ранних стадиях своего развития и, в первую очередь, является моим учебным проектом, когда я исследую разработку онлайн -игры. Если вы ищете проверенную библиотеку, готовую к производству библиотеку, это, вероятно, не та.
Вы можете увидеть NBNet в действии в этом видео.
Если вы хотите обсудить библиотеку или нужна помощь, присоединяйтесь к серверу Discord NBNet.
Нативный драйвер Webrtc полагается:
Веселая игра, которая сталкивается с веб -браузером, Дункан Стед (@Duncanstead86).
Смотрите на YouTube.
Wip Battle Royal игра, играющая в веб -браузере.
Смотрите на YouTube
Онлайн многопользовательский RTS, созданный для Ludum Dare 49.
https://ldjam.com/events/ludum-dare/49/llamageddon
Немного прототипа онлайн -игры.
Смотрите на GitHub
Список привязков, введенных пользователем (они не поддерживаются официально, поэтому они могут быть устаревшими):
NBNet не внедряет какой-либо низкоуровневый «транспортный» код и опирается на драйверы .
Драйвер - это набор определений функций, которые живут за пределами заголовка NBNet и обеспечивают реализацию транспортного уровня для NBNet, используемой для отправки и получения пакетов.
NBNet поставляется с тремя готовыми к использованию драйверов:
Именно в одном из ваших исходных файлов это:
#define NBNET_IMPL
#include "nbnet.h"
Предоставьте реализацию драйвера. Например, для драйвера UDP просто добавьте:
#include "net_drivers/udp.h"
После включения заголовка NBNet в тот же исходный файл, где вы определили NBNET_IMPL .
NBNet не предоставляет никаких возможностей для ведения журнала, поэтому вы должны предоставить свои собственные:
#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__)
Для управления памятью NBNet использует malloc , realloc и free . Вы можете переопределить их, если это необходимо:
#define NBN_Allocator malloc
#define NBN_Reallocator realloc
#define NBN_Deallocator free
Все установлено, отсюда я предлагаю вам запрыгнуть в примеры. Если вы заинтересованы в WEBRTC, иди сюда.
NBNet поставляется с примитивной системой сериализации на уровне битов; Но, если вы хотите использовать свое собственное решение для сериализации, NBNet позволяет отправлять и получать необработанные байтовые массивы.
Смотрите пример Echo_bytes.