Об этом проекте

GameNetworkingSockets — это кроссплатформенный транспортный уровень, предназначенный для игр. Он предоставляет API, ориентированный на соединения и сообщения, а не на потоки. Библиотека поддерживает надежные и ненадежные типы сообщений, с автоматической фрагментацией, сборкой и повторной передачей для сообщений, превышающих базовый MTU. Уровень надежности использует модель ack-vector, вдохновленную DCCP (RFC 4340) и QUIC, что обеспечивает эффективное получение статуса пакетов получателем и принятие решений о повторной передаче отправителем. Поштучное шифрование пакетов использует AES-256-GCM, с обменом ключами Curve25519 и подписями сертификатов, следуя принципам дизайна Google QUIC. Дополнительные функции включают инструменты для имитации задержки и потери пакетов, детальное измерение статистики и контроль блокировки головы очереди с разделением пропускной способности между несколькими потоками сообщений (полосами) через приоритет или взвешенную справедливую очередь. Одноранговая связь облегчается через NAT-траверс с использованием Google WebRTC ICE, с поддержкой плагинов сигнализации и симметричным режимом подключения. Интерфейс SteamNetworkingMessages помогает переносить UDP-код в сценарии P2P, указывая адреса получателей при каждой отправке. Поддерживается IPv6. Библиотека поставлялась на консолях, мобильных платформах и в не-Steam магазинах для кроссплатформенного использования. Она не включает высокоуровневую сериализацию сущностей, дельта-кодирование или сжатие. Публичные заголовки находятся в include/steam, сосредоточены на интерфейсе ISteamNetworkingSockets. Простой C-интерфейс позволяет создавать языковые привязки, с доступными сторонними привязками для C#, Go и Rust. Название 'Steam' отражает подмножество API Steamworks SDK и не требуется для использования; код можно применять независимо. О проблемах безопасности можно сообщать ответственно через опубликованную политику безопасности. Инструкции по сборке находятся в BUILDING.md.