프로젝트 소개

netcode는 UDP 위에서 실시간 멀티플레이어 게임을 위한 보안 클라이언트/서버 프로토콜을 구현한 C 라이브러리입니다. UDP에는 연결 개념이 없어 개발자가 연결 관리, 보안, 신뢰성을 직접 구현해야 하는 일반적인 문제를 해결합니다. 설계 및 기능: - UDP 위의 연결 지향 프로토콜이므로 게임은 TCP의 헤드오브라인 블로킹 없이 비신뢰성·비순서 패킷을 교환할 수 있습니다. - 연결 토큰을 사용한 보안 클라이언트 연결: 백엔드에서 승인한 클라이언트만 연결할 수 있어, 웹 백엔드가 토큰을 발급하는 매치메이킹 흐름에 적합합니다. - 클라이언트 슬롯 시스템: 서버가 n개의 슬롯을 정의하고, 클라이언트는 연결 시 슬롯을 할당받으며 가득 차면 빠르게 거부됩니다. - 양쪽에서 빠르고 깔끔한 연결 해제로 슬롯을 해제하고, 강제 연결 해제를 위한 타임아웃도 제공합니다. - sodium 라이브러리를 통한 암호화 및 서명된 패킷으로 변조와 도청을 방지합니다. - 악의적으로 조작된 패킷, 재전송 공격, 패킷 증폭 공격에 대한 보안 보호. - Wi-Fi 라우터에서 지터를 줄이기 위한 선택적 패킷 태깅. - IPv4 및 IPv6 지원. 사용 개요: 서버에 비밀로 보관되는 무작위 32바이트 개인 키를 생성하고, 개인 키와 최대 연결 토큰 수명을 포함한 설정으로 서버를 생성합니다. 그런 다음 여러 클라이언트 슬롯으로 서버를 시작합니다. 클라이언트는 백엔드 REST API에서 연결 토큰을 받아 netcode_client_connect를 호출합니다. 연결 후 클라이언트는 클라이언트 인덱스를 받고 서버와 암호화·서명된 패킷을 교환할 수 있습니다. 예제 코드는 client.c와 server.c에 제공됩니다. 저장소에는 C 구현이 포함되어 있습니다. README에는 C#, Go, Rust, Unity, UE4, TypeScript 구현도 나열되어 있으며, 자체 버전을 작성하는 사람을 위해 netcode 1.02 표준과 IMPLEMENTERS.md를 안내합니다. 이 프로젝트는 BSD 3-Clause 라이선스이며 제품 크레딧에 표기를 요청합니다.