इस प्रोजेक्ट के बारे में

GameNetworkingSockets गेम्स के लिए डिज़ाइन किया गया एक क्रॉस-प्लेटफ़ॉर्म ट्रांसपोर्ट परत है। यह स्ट्रीम-ओरिएंटेड होने के बजाय मैसेज-ओरिएंटेड कनेक्शन-ओरिएंटेड API प्रदान करता है। लाइब्रेरी विश्वसनीय और अविश्वसनीय मैसेज प्रकारों का समर्थन करती है, जिसमें आधारभूत MTU से बड़े मैसेज के लिए स्वचालित फ्रैगमेंटेशन, रीअसेंबली और रीट्रांसमिशन शामिल है। एक विश्वसनीता परत DCCP (RFC 4340) और QUIC से प्रेरित ack-वेक्टर मॉडल का उपयोग करती है, जो दक्षतापूर्वक प्राप्तकर्ता-रिपोर्ट किए गए पैकेट स्थिति और सेंडर-साइड रीट्रांसमिशन निर्णयों को सक्षम बनाती है। प्रति-पैकेट एन्क्रिप्शन 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 में दिए गए हैं।