Sobre o projeto

netcode é uma biblioteca em C que implementa um protocolo seguro cliente/servidor para jogos multiplayer em tempo real sobre UDP. Ele aborda o problema comum de que UDP não oferece conceito de conexão, então desenvolvedores precisam construir gerenciamento de conexão, segurança e confiabilidade por conta própria. Design e recursos: - Protocolo orientado a conexão sobre UDP, permitindo que jogos troquem pacotes não confiáveis e fora de ordem sem bloqueio head-of-line do TCP. - Conexões seguras de cliente usando tokens de conexão: apenas clientes autorizados por um backend podem conectar, adequado para fluxos de matchmaking onde um backend web emite tokens. - Sistema de slots de cliente: servidores definem n slots; clientes recebem um slot ao conectar e são negados rapidamente quando cheio. - Desconexões limpas e rápidas em ambos os lados para liberar slots, além de timeouts para desconexões forçadas. - Pacotes criptografados e assinados via biblioteca sodium, protegendo contra adulteração e espionagem. - Proteções de segurança contra pacotes maliciosos, ataques de replay e amplificação de pacotes. - Marcação opcional de pacotes para reduzir jitter em roteadores Wi-Fi. - Suporte a IPv4 e IPv6. Resumo de uso: gere uma chave privada aleatória de 32 bytes mantida em segredo no servidor; crie um servidor com configuração incluindo a chave privada e o tempo máximo de vida do token de conexão; inicie com um número de slots de cliente. Clientes obtêm um token de conexão de uma API REST de backend e chamam netcode_client_connect. Após conectar, o cliente recebe um índice e pode trocar pacotes criptografados e assinados com o servidor. Exemplos estão em client.c e server.c. O repositório contém a implementação em C. O README também lista implementações em C#, Go, Rust, Unity, UE4 e TypeScript, e aponta para o padrão netcode 1.02 e IMPLEMENTERS.md para quem escreve versões próprias. O projeto é licenciado sob BSD 3-Clause e pede créditos nos créditos do produto.