프로젝트 소개

GameNetworkingSockets는 게임을 위해 설계된 크로스 플랫폼 전송 계층입니다. 스트림 지향이 아닌 메시지 지향의 연결 지향 API를 제공합니다. 이 라이브러리는 신뢰성 및 비신뢰성 메시지 유형을 지원하며, 기본 MTU보다 큰 메시지에 대해 자동 분할, 재조립, 재전송을 수행합니다. 신뢰성 계층은 DCCP(RFC 4340)와 QUIC에서 영감을 받은 ack-vector 모델을 사용하여 수신자 보고 패킷 상태와 송신자 측 재전송 결정을 효율적으로 가능하게 합니다. 패킷별 암호화는 AES-256-GCM을 사용하며, Curve25519 키 교환 및 인증서 서명은 Google QUIC 설계 원칙을 따릅니다. 추가 기능으로 패킷 지연 및 손실 시뮬레이션 도구, 상세 통계 측정, 우선순위 또는 가중 공정 큐잉을 통한 여러 메시지 스트림(레인) 간 대역폭 공유 및 헤드오브라인 차단 제어가 포함됩니다. 피어 투 피어 연결은 Google WebRTC ICE를 사용한 NAT 트래버설을 통해 지원되며, 플러그인 신호 지원 및 대칭 연결 모드를 제공합니다. SteamNetworkingMessages라는 인터페이스는 UDP 기반 코드를 전송 시 수신자 주소를 지정하는 P2P 시나리오로 포팅하는 데 도움을 줍니다. IPv6가 지원됩니다. 이 라이브러리는 콘솔, 모바일 플랫폼 및 비 Steam 스토어에서 크로스 플랫폼 사용을 위해 출시되었습니다. 상위 수준의 엔티티 직렬화, 델타 인코딩 또는 압축은 포함하지 않습니다. 공개 헤더는 include/steam에 있으며, ISteamNetworkingSockets 인터페이스를 중심으로 합니다. 일반 C 인터페이스는 언어 바인딩을 가능하게 하며, C#, Go, Rust용 타사 바인딩이 있습니다. 'Steam' 명명은 Steamworks SDK API의 하위 집합을 반영하며 사용에 필수는 아닙니다. 코드는 독립적으로 사용할 수 있습니다. 보안 문제는 공개된 보안 정책을 통해 책임감 있게 신고할 수 있습니다. 빌드 지침은 BUILDING.md에 있습니다.