منصة ألعاب الحرب: التوزيع

مرحبا!



منذ حوالي عامين ، زميلي مكسيم (max_posedon) نشر مقالاً Wargaming Platform: Hello World ، حيث "حاول" (كما عين هو نفسه) شرح ماهية منصة ألعاب Wargaming. نرغب أنا وزملائي في الاستمرار في مشاركة المعلومات وهذه المرة سنبحث بشكل أعمق قليلاً - كما يوحي عنوان المقالة ، في التوزيع.



الجميع على دراية بالتوزيع الرقمي ، ونحن نستخدمه بانتظام ، وقد رأينا كل شيء على مدار 20 عامًا من وجوده ، لذلك سأتجاوز نظرية وأمثلة السوق ، وسأتحدث أكثر عن التنفيذ المحدد والخبرة.



مخطط توزيع معمم لألعاب الحرب



لنبدأ على الفور بالصورة: فهي تعرض المكونات الرئيسية لنظام توزيع ألعاب الحرب (WDS) وتدفق البيانات للمحتوى.





الشكل 1



يمكن وصف العملية بإيجاز على النحو التالي: يقوم استوديو اللعبة (Game Studio) بتحميل الإصدار التالي من اللعبة إلى خادم WDS ، والذي يوزعها على العميل بعد المعالجة الضرورية (المزيد حول هذا في قسم "Under the hood") من خلال قنوات التوزيع (المكونات المميزة باللون الأزرق) تطبيقات WGC.



WGC (Wargaming Game Center) هو تطبيق عميل لسطح المكتب ، ووسيلة لتفاعل المستخدم مع منصة Wargaming ، ولا سيما مع نظام التوزيع. يقوم WGC بتنزيل التحديثات إلى جهاز المستخدم من المصادر المتاحة حاليًا.



WDS لديها ثلاث قنوات توزيع رئيسية :





نعم ، تقع تقنية BitTorrent في قلب عملية تسليم التحديثات. يجب أن أقول على الفور أن تبادل بيانات p2p بين العملاء هو ، من حيث القيمة المطلقة ، الحد الأدنى للقناة من حيث حجم حركة المرور. وتتمثل مهمتها الرئيسية في تسريع التحميل في الشبكات المحلية مع عدد كبير من عملاء WGC (على سبيل المثال ، مقاهي الإنترنت) وتقليل الحمل على واجهة الشبكة الخارجية. كما أن استخدام BitTorrent يجعل من السهل تنظيم نقطة تواجد في أي مكان مرغوب فيه.



تعتبر قناة التوزيع Static Seeds مثيرة للاهتمام في سياق تاريخي. ألق نظرة على المخطط الشريطي أدناه: فهو يوضح ديناميكيات الحد الأدنى لتكلفة حركة مرور شبكة CDN لأكبر المستهلكين (أي البيع بالجملة ، أقل سعر).





الشكل 2



في عام 2010 ، في فجر World of Tanks ، كانت تكلفة حركة مرور الجيجابايت حوالي 0.2 دولار للطلبات التي تزيد عن 10 بيتات. مع التحديثات المنتظمة لألعاب AAA مع الملايين من الجماهير ، فإن تكلفة حركة المرور رائعة للغاية. تتيح لك القدرة على إضافة عقدة بسهولة إلى أي نقطة (من وجهة نظر الجغرافيا / الموفرين) سحب كميات ملموسة من حركة المرور إليها. اعتمادًا على وجود CDN في وقت أو آخر ، فإن الحمل على النظام أثناء الإصدارات ، وحجم إصدارات لعبة معينة ، مثل هذه الأداة لها تأثير اقتصادي جيد حتى اليوم.



لجعل مخطط التوزيع الأساسي مفهومًا تمامًا ، يجدر قول بضع كلمات حول المكون ، والذي تم تعيينه في الشكل 1 على أنه الواجهة الخلفية لنظام توزيع Wargaming. المهام الرئيسية للمكون:



  • إعداد التحديثات ، وضمان الحد الأدنى من المحتوى الذي تم تنزيله وتثبيته بواسطة العميل ؛
  • توزيع التحديثات من خلال قنوات التوزيع ؛
  • تزويد العميل بالمعلومات الخاصة بالتحديثات.


الآن دعونا نلقي نظرة سريعة على خيارات التوزيع.



وظائف



تتيح لك تقنية BitTorrent ، ولا سيما تنفيذ libtorrent (بفضل Arvid Norberg) ، "من خارج الصندوق" التنفيذ بأقل تكلفة:



  • retracker والبذور المحلية - ذات الصلة لكل من مجموعات المستخدمين واستوديوهات الألعاب ؛
  • توصيل شبكات CDN متعددة - قابلية التوسع الأفقي ؛
  • عوامل الترجيح لشبكات CDN المختلفة - الموازنة ، شبكات CDN "الاحتياطية" ؛
  • التحقق من النزاهة واستعادتها - يمكن أن تتلف ملفات اللعبة بسبب الإهمال أو تنظيف التطبيقات أو برامج مكافحة الفيروسات أو مشاكل في برامج التشغيل أو الوسائط المادية.


بغض النظر عن libtorrent ، ولكن أيضًا عن التنزيلات:



  • تحديثات التحميل المسبق. يمكن لاستوديو اللعبة نشر التحديثات للتنزيل فقط (بدون تثبيت): في وقت إصدار الإصدار الجديد ، سيتم تطبيقها ، وسيبدأ المستخدمون في تشغيل الإصدار الجديد مسبقًا.
  • موازنة التحميل المسبق. مع وجود كميات كبيرة من التحديثات ، يمكنك "تشويه" الاستلام الأولي للتحديثات بشكل متساوٍ لتقليل الحمل على عقد التوزيع وتنعيم الذروة.


تثبيت / تحديث الألعاب:



  • بقع. يقوم المستخدم بتنزيل الأجزاء المفقودة من اللعبة فقط ، مضغوطة جيدًا.
  • DLC. يمكن تنزيل بعض المحتويات اختياريًا بناءً على اختيار المستخدم أو اعتمادًا على منطق اللعبة.
  • أنواع العملاء. يمكن أن تمنح اللعبة المستخدم خيارًا من "نوع العميل" لتنزيله (على سبيل المثال ، World of Tanks: هناك خيار بين القوام القياسي (SD) والأنسجة عالية الدقة (HD) ، والتي تتيح للمستخدمين الذين ليس لديهم نظام لا يدعم إعدادات الرسومات القصوى. ).
  • عميل صغير. القدرة على اللعب حتى التثبيت الكامل ، استوديو اللعبة لديه القدرة على تحديد الحد الأدنى من مجموعة الملفات المطلوبة لبدء اللعبة.


آخر:



  • تثبيت المواد القابلة لإعادة التوزيع.
  • تشغيل المثبتات العشوائية أثناء عمليات التثبيت / إلغاء التثبيت.




تحت الغطاء



قطع غيار وبقع



يمكن تقسيم اللعبة إلى أجزاء (أجزاء) تحدد تسلسل معين للتثبيت. يتيح ذلك لاستوديو اللعبة:



  • تقديم المحتوى للمستخدم فقط للغة اللعبة المحددة ؛
  • تنفيذ الحد الأدنى من الجزء الضروري من اللعبة لبدء اللعبة وتقديمها أولاً ؛
  • قم بتعيين بعض الأجزاء على أنها DLC والسماح للعبة / المستخدم بطلبها بشكل منفصل.


لتثبيت جزء ، يجب تسليم وتطبيق تصحيح واحد أو أكثر. في جوهره ، التصحيح عبارة عن أرشيف 7z مع برنامج الترميز LZMA2. يمكن تغيير مستوى الضغط حسب نوع محتوى اللعبة. لتثبيت لعبة من البداية ، يجب أن يحتوي التصحيح على كل المحتوى الخاص بجزء معين من اللعبة. إذا كان هذا تحديثًا ، فسيحتوي التصحيح على الاختلاف المطلوب فقط. يتم حساب هذا الاختلاف ملفًا بملف باستخدام الخوارزميات التالية:





الأول من الخوارزميات قائم على الكتلة ، والثاني يوفر القدرة على نسخ أجزاء ذات طول عشوائي وتكرارها. اعتمادًا على طبيعة التغييرات (الإدراج ، الحذف ، الاستبدال) ، المكان الذي تم إجراؤه في الملف (البداية ، النهاية ، الوسط) ، حجمها ، تكرار الملف ، يمكن لإحدى الخوارزميات أن تتفوق بشكل كبير على الأخرى ، أو من حيث حجم ملف الفرق الناتج ، أو حسب سرعة تطبيقه على جهاز المستخدم. يختار WDS خوارزمية الفرق الثنائي المثلى لحالة معينة.



سيل



لتنزيل التصحيحات ، يتم إعداد ملفات التورنت حسب الإصدار ، يتلقى عميل WGC المعلومات الضرورية من الواجهة الخلفية لـ WDS ويبدأ جلسة تورنت بالسيول الضرورية.



البذور ، كما سبق ذكره بشكل غير مباشر ، هي CDNs (webseeds) ، Static Seeds (آلات معدة خصيصًا مع عملاء قائم على libtorrent) ، عملاء WGC أنفسهم ، وأي عملاء تورنت لديهم السيول اللازمة. يستقبل هذه البذور جلسة سيل من المصادر التالية:



  • WDS الخلفية ؛
  • تعقب سيل
  • دهت .
  • LPD .
  • PEX .


يحظر بعض الموفرين إما بروتوكول BitTorrent نفسه أو تنزيل ملف * .torrent. نظرًا لأن التنزيل من webseeds يحدث عبر HTTP ، ويتم تنزيل ملف * .torrent نفسه عبر HTTPS ، فإن مثل هذا الحظر ليس بالغ الأهمية بالنسبة لنا ، فسيستمر تسليم اللعبة. في أسوأ الأحوال ، ستختفي حركة المرور من Static Seeds و p2p. كانت هناك حالات في الولايات المتحدة عندما طالب مزود ما بتثبيت شهاداته وتصفيتها ، بما في ذلك حركة مرور HTTPS (ليست لطيفة جدًا) ، ووجد ملف تورنت هناك وحظره. لكن تغيير امتداد ملف التورنت فجأة سمح بتنزيله ، أي أن المرشحات كانت فقط على مستوى اسم المحتوى.



يقوم WGC حاليًا بإنشاء ما يصل إلى 50 وصلة قناة توزيع. يمكن إنشاء عدة اتصالات على نفس شبكة CDN ، مما يسمح باستخدام أكثر كفاءة للقناة بين العقدة والعميل. بالإضافة إلى ذلك ، تستخدم شبكة CDN الرئيسية خوارزمية التحكم في الازدحام BBR ، والتي تعتبر جشعة وتستخدم القناة جيدًا. يوفر هذا التكوين أعلى استخدام للنطاق الترددي لتسليم الألعاب بسرعة ، ولكن بالطبع قد تتأثر راحة استخدام اتصال الإنترنت للتطبيقات الأخرى أثناء التحديثات. تجري حاليًا سلسلة من اختبارات التكوينات البديلة ، ويمكننا أن نتوقع في المستقبل القريب انخفاضًا في عدد الاتصالات بشكل مستمر مع زيادة الراحة ، ولكن دون تأثير ملموس على سرعة التوصيل.



فقط في حالة ، أود هنا التأكيد مرة أخرى على أن أي نشاط للشبكة يمكن أن يؤثر على جودة حركة المرور لعميل اللعبة الذي يعتبر أمرًا بالغ الأهمية بالنسبة له. لهذا السبب ، أثناء تشغيل اللعبة ، لا يقوم WGC بإجراء أي عمليات على الشبكة دون حاجة صريحة من عميل اللعبة (على سبيل المثال ، عملية تفويض).



تثبيت التحديثات



يتم تنظيم عمليات تنزيل التصحيحات وتفريغها بشكل متوازٍ ، ويبدو الأمر كما يلي:



  • ابدأ في تنزيل التصحيح ، وتغيير أولوية التنزيل إلى الجزء الذي يحتوي على رأس الأرشيف.
  • بعد استلام العنوان الكامل للأرشيف ، تبدأ عملية التفريغ ويتم تفريغ البيانات الواردة من الشبكة على الفور.
  • يتم حفظ البيانات التي تم فك حزمها على القرص.
  • يتم أيضًا حفظ التصحيح الذي تم تنزيله على القرص ، حيث لا تكون هناك حاجة إلى جميع الأجزاء لتفريغ محتوياتها في وقت الاستلام ، بالإضافة إلى توزيعها على الآخرين.
  • بعد المعالجة ، يمكن ترك ملف التصحيح على القرص أو حذفه على الفور ، اعتمادًا على التكوين الذي تم تعيينه بواسطة استوديو اللعبة.


تحدث عمليات تفريغ الاختلافات الثنائية وتطبيقها في عملية منفصلة ، مما يسمح لك بالتحكم في نظامها وأولوية الإدخال / الإخراج عن طريق نظام التشغيل. علاوة على هذه الوظيفة ، هناك إعداد مخصص "توربو" من شأنه تسريع عملية التثبيت ولكنه يتنافس بقوة مع التطبيقات الأخرى للحصول على الموارد. بشكل افتراضي ، يعمل WGC في وضع الموارد المنخفضة ، بالاعتماد على الراحة ، ولكن عند التثبيت الأول ، يشرح WGC للمستخدم أن لديه خيارًا.



أداء



حجم التحديثات



يعد تقليل كمية البيانات التي يتم تنزيلها إحدى المهام الرئيسية لنظامنا. على عكس نهج Steam ، حيث يكون تقدير البيانات المعالجة لعميل اللعبة 1 ميغابايت ، فإننا غالبًا ما نعمل بالبايت عند إنشاء اختلافات ثنائية. بالإضافة إلى ذلك ، يمكن إضافة كتل من هذه البايتات إلى أي جزء من الملف أو إزالتها منه. نتيجة لذلك ، عادةً ما يكون حجم تحديثات الإصدار المجدول من World of Tanks و World of Warships 1 إلى 2 غيغابايت ، بينما تتطلب الإصدارات نفسها من الألعاب التي يتم تنزيلها على Steam حوالي 5 غيغابايت لتنزيلها. يتم توزيع World of Warships عبر Steam ، لذلك يتم الحصول على هذه البيانات بانتظام ، وبالنسبة إلى World of Tanks ، يتم أخذ البيانات من تنزيلات اختبار خاصة.



مساحة قرص المستخدم المطلوبة



للحصول على الحد الأدنى من البيانات التي تم تنزيلها و p2p ، يتعين عليك الدفع باستخدام مساحة القرص اللازمة لعمليات تثبيت العميل وتحديثه. في الوقت الحالي ، يحتاج المستخدم إلى مساحة أكبر مما يحتاجه عميل اللعبة: مثل هذا المخزن المؤقت يمكن أن يصل إلى نصف حجم العميل. نحن نعمل على تقليل هذه القيمة ، ومن الممكن في المستقبل القريب أن نجعلها ثابتة ولا تتعدى 2 جيجا بايت ، الأمر الذي يصبح مقبولًا تمامًا نظرًا لحجم الألعاب الحديثة. ولكن هناك ميزة أخرى مهمة: لتحديث اللعبة (التي تعتبر نشاطًا منتظمًا في العالم الحديث) ، يكفي أيضًا وجود مخزن مؤقت صغير نسبيًا ، والذي يبلغ بالفعل حوالي 4 جيجا بايت لمعظم تصحيحات اللعبة. في الوقت نفسه ، تتطلب بعض هذه الحلول ضعف مساحة القرص التي يشغلها عميل اللعبة.





لقد أجرينا سلسلة من القياسات لمقارنة سرعة تثبيت عميل World of Warships في WGC و Steam بسرعات قناة شبكة متساوية. عند استخدام وضع التثبيت القياسي لـ WGC ، يُظهر كلا النظامين نتائج متطابقة تقريبًا (بقدر الإمكان للتسجيل في مثل هذه التجارب ، حتى مع مراعاة أنظف الأنظمة وعمليات إعادة التشغيل المنتظمة وما إلى ذلك). عند استخدام "turbo" ، يكون متوسط ​​ربح WGC في حدود 5-7 بالمائة من وقت التثبيت الكامل. يجب أيضًا أن نأخذ في الاعتبار حقيقة أنه يجب التقليل من عرض النطاق الترددي لواجهة الشبكة لكلا النظامين من أجل الحصول على نفس الظروف وعرض النطاق الترددي المستقر إلى حد ما. مع الأخذ في الاعتبار حقيقة أن WGC يستخدم قناة الشبكة بقوة أكبر (انظر قسم Torrent) ،بدون قيود إضافية على الجهاز المخصص ، تصبح سرعة التثبيت الأولي للعبة أعلى بشكل ملحوظ.



كلمة أخيرة ، أو ما لم يكن هنا



منصة Wargaming ، ولا سيما نظام توزيع Wargaming ، هي أنظمة برمجية كبيرة لها تاريخ يمتد إلى عشر سنوات وعشرات التقنيات ولغات البرمجة المختلفة. في المقالة ، تعرفنا فقط على مخطط التوزيع عالي المستوى وخصائصه الرئيسية. تم ترك بنية النظام ، ومعظم التقنيات ، وعمليات التطوير ، والإصدارات ، والعمليات ، والفروق الجغرافية الدقيقة للتوزيع ، وتطبيق WGC نفسه بكل وظائفه غير المتعلقة بالتوزيع ، وغير ذلك الكثير من بين الأقواس بسبب المحتوى غير المطاطي للمقال. هذا يعني فقط أنني أنتظر أسئلة حول المقال وخاصة حول ما لم يتم تضمينه في التعليقات. كود جيد ، حظا سعيدا للجميع!



All Articles