netcode é um protocolo cliente/servidor seguro construído sobre UDP.
Ele é destinado ao uso em jogos multijogador em tempo real, que precisam de um protocolo orientado a conexão, mas sem o bloqueio de linha do TCP.
netcode possui os seguintes recursos:
O netcode está estável e pronto para produção.
Comece gerando uma chave privada aleatória de 32 bytes. Não compartilhe sua chave privada com ninguém .
Especialmente, não inclua sua chave privada no executável do cliente!
Aqui está uma chave privada de teste:
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 };
Crie um servidor com a chave privada:
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 ;
}
Em seguida, inicie o servidor com o número de slots de cliente desejado:
netcode_server_start ( server , 16 );
Para conectar um cliente, seu cliente deve acessar uma API REST em seu back-end que retorne um token de conexão .
O uso de um token de conexão protege seu servidor para que apenas clientes autorizados em seu back-end possam se conectar.
netcode_client_connect ( client , connect_token );
Depois que o cliente se conecta ao servidor, ele recebe um índice de cliente e pode trocar pacotes criptografados e assinados com o servidor.
Para mais detalhes, consulte client.c e server.c
Este repositório contém a implementação do netcode em C.
Outras implementações de netcode incluem:
Se você quiser criar sua própria implementação de netcode, leia o padrão netcode 1.02.
Essas pessoas são incríveis:
Obrigado por suas contribuições ao netcode!
O autor desta biblioteca é Glenn Fiedler.
Outras bibliotecas de código aberto do mesmo autor incluem: confiável, serialize e yojimbo.
Se você achar este software útil, considere patrociná-lo. Obrigado!
Licença BSD de 3 cláusulas.