عن المشروع

GameNetworkingSockets هي طبقة نقل عبر المنصات مصممة للألعاب. توفر واجهة برمجة تطبيقات موجهة للاتصال وموجهة للرسائل بدلاً من التدفق. تدعم المكتبة أنواع الرسائل الموثوقة وغير الموثوقة، مع تجزئة تلقائية وإعادة تجميع وإعادة إرسال للرسائل الأكبر من وحدة النقل القصوى الأساسية. تستخدم طبقة الموثوقية نموذج ناقل إقرار مستوحى من DCCP (RFC 4340) وQUIC، مما يتيح تقارير حالة الحزم الفعالة من جهة الاستقبال وقرارات إعادة الإرسال من جهة الإرسال. يستخدم تشفير كل حزمة AES-256-GCM، مع تبادل مفاتيح Curve25519 وتوقيعات الشهادات وفقًا لمبادئ تصميم Google QUIC. تشمل الميزات الإضافية أدوات لمحاكاة زمن الوصول وفقدان الحزم، وقياس إحصائيات مفصلة، والتحكم في حجب الرأس مع مشاركة النطاق الترددي عبر تدفقات رسائل متعددة (مسارات) عبر أولوية أو طابور عادل مرجح. يتم تسهيل الاتصال من نظير إلى نظير عبر اختراق NAT باستخدام Google WebRTC ICE، مع دعم إشارات إضافية ووضع اتصال متماثل. تساعد واجهة تسمى SteamNetworkingMessages في نقل كود UDP إلى سيناريوهات نظير-لنظير مع تحديد عناوين المستلمين لكل إرسال. يتم دعم IPv6. تم إصدار المكتبة على وحدات التحكم والمنصات المحمولة ومتاجر غير Steam للاستخدام عبر المنصات. لا تتضمن تسلسل الكيانات عالي المستوى أو ترميز دلتا أو ضغط. توجد الرؤوس العامة في include/steam، مركزة على واجهة ISteamNetworkingSockets. توفر واجهة C بسيطة روابط لغوية، مع روابط خارجية متاحة لـ C# وGo وRust. يعكس اسم 'Steam' مجموعة فرعية من واجهة برمجة تطبيقات Steamworks SDK وليس مطلوبًا للاستخدام؛ يمكن استخدام الكود بشكل مستقل. يمكن الإبلاغ عن المشكلات الأمنية بمسؤولية عبر سياسة الأمان المنشورة. توجد تعليمات البناء في BUILDING.md.