netcode — это безопасный протокол клиент/сервер, построенный на основе UDP.
Он предназначен для использования в многопользовательских играх в реальном времени, которым требуется протокол, ориентированный на соединение, но без блокировки заголовка TCP.
Netcode имеет следующие особенности:
сетевой код стабилен и готов к работе.
Начните с генерации случайного 32-байтового закрытого ключа. Не сообщайте никому свой закрытый ключ.
Особенно не включайте свой закрытый ключ в исполняемый файл клиента!
Вот тестовый закрытый ключ:
static uint8_t private_key [ NETCODE_KEY_BYTES ] = { 0x60 , 0x6a , 0xbe , 0x6e , 0xc9 , 0x19 , 0x10 , 0xea ,
0x9a , 0x65 , 0x62 , 0xf6 , 0x6f , 0x2b , 0x30 , 0xe4 ,
0x43 , 0x71 , 0xd6 , 0x2c , 0xd1 , 0x99 , 0x27 , 0x26 ,
0x6b , 0x3c , 0x60 , 0xf4 , 0xb7 , 0x15 , 0xab , 0xa1 };
Создайте сервер с закрытым ключом:
char * server_address = "127.0.0.1:40000" ;
struct netcode_server_config_t server_config ;
netcode_default_server_config ( & server_config );
memcpy ( & server_config . private_key , private_key , NETCODE_KEY_BYTES );
struct netcode_server_t * server = netcode_server_create ( server_address , & server_config , time );
if ( ! server )
{
printf ( "error: failed to create servern" );
return 1 ;
}
Затем запустите сервер с нужным количеством клиентских слотов:
netcode_server_start ( server , 16 );
Чтобы подключить клиента, ваш клиент должен обратиться к REST API к вашему серверу, который возвращает токен подключения .
Использование токена подключения защищает ваш сервер, поэтому к нему могут подключаться только клиенты, авторизованные с помощью вашего бэкэнда.
netcode_client_connect ( client , connect_token );
Как только клиент подключается к серверу, ему присваивается индекс клиента, и он может обмениваться зашифрованными и подписанными пакетами с сервером.
Для получения более подробной информации см. client.c и server.c.
В этом репозитории хранится реализация сетевого кода на C.
Другие реализации сетевого кода включают:
Если вы хотите создать свою собственную реализацию сетевого кода, прочтите стандарт сетевого кода 1.02.
Эти люди замечательные:
Спасибо за ваш вклад в netcode!
Автором этой библиотеки является Гленн Фидлер.
Среди других библиотек с открытым исходным кодом того же автора: Reliable, Serialize и yojimbo.
Если вы считаете это программное обеспечение полезным, рассмотрите возможность его спонсирования. Спасибо!
Лицензия BSD с 3 пунктами.