تحسين خادم ماين كرافت

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

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

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


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

أنواع الخوادم

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

الفانيليا

تقوم Mojang Studios بتوزيع جزء الخادم من اللعبة كتطبيق Java مجانًا على الموقع الرسمي. هذا يسمح لك بإنشاء الخاصة بك خادم مخصص والعالم الشخصي، مما يجعله متاحًا للاتصال من أي مكان على هذا الكوكب. بالنسبة لأولئك الذين يفعلون ذلك لأول مرة، هناك عظيم درس تعليمي، متاح على Wiki الألعاب المقابلة.

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

بوكيت

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

تثبيت Bukkit ليس بالأمر الصعب، والتعليمات المقابلة موجودة على المورد جيمبيديا. لكن هذا لا معنى له، لأنه منذ عام 2014 تم حل فريق Bukkit، وأصبح مطورو المشروع موظفين في Mojang Studios، و مخزن متروك. وبالتالي، فإن بوكيت قد مات بالفعل، ومن المنطقي الاهتمام بالمشروعين التاليين.

حنفيةMC

لجعل الحياة أسهل لمطوري المكونات الإضافية، كانت هناك حاجة إلى واجهة برمجة التطبيقات (API) للتفاعل مع عالم اللعبة. هذه هي بالضبط المشكلة التي حلها المبدعون. حنفية، أخذ جوهر Bukkit وإعادة صياغته لتحقيق موثوقية وأداء أفضل. مع ذلك، مستودع Git تم حظر المشروع بسبب قانون الألفية الجديدة لحقوق طبع ونشر المواد الرقمية (DMCA)، ومن المستحيل تنزيل الكود المصدري من هناك.

حاليا، يتم تطوير واستخدام SpigotMC بنشاط. وهو يدعم جميع المكونات الإضافية التي تم إنشاؤها لـ Bukkit، ولكنه غير متوافق معها. للتغلب على إزالة قانون الألفية الجديدة لحقوق طبع ونشر المواد الرقمية، تم اختراع طريقة أنيقة تسمى BuildTools. تلغي هذه الأداة الحاجة إلى توزيع تطبيق مجمع وتسمح للمستخدمين بتجميع Spigot وCraftBukkit وBukkit من كود المصدر. كل هذا يجعل الحظر بموجب قانون الألفية الجديدة لحقوق طبع ونشر المواد الرقمية عديم الفائدة.

الورق

بدا كل شيء رائعًا، وأصبح Spigot خيارًا رائعًا. ولكن هذا لم يكن كافيا لبعض المتحمسين، وقاموا بإنشاء شوكة خاصة بهم من Spigot “على المنشطات”. على صفحة المشروع الميزة الرئيسية هي أن "إنه سريع غبي". متطور مجتمع يسمح لك بحل المشكلات الناشئة بسرعة، وتتيح لك واجهة برمجة التطبيقات الموسعة إنشاء مكونات إضافية مثيرة للاهتمام. يمكنك تشغيل PaperMC باستخدام أمر واحد بسيط توثيق.

يتمتع PaperMC بتوافق ممتاز، لذلك يمكن للمكونات الإضافية المكتوبة لـ SpigotMC أن تعمل بسهولة على PaperMC، ولكن بدون دعم رسمي. التوافق مع الإصدارات السابقة مع SpigotMC موجود أيضًا. الآن بعد أن قمنا بإدراج الخيارات المتنوعة لإنشاء خادم، دعنا ننتقل إلى مشكلات الأداء التي قد تنشأ.

مشاكل وحلول

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

وفيما يتعلق بمسألة سعة ذاكرة الوصول العشوائي (RAM)، ينبغي أن ننطلق من المؤشرات التالية:

  • العدد المخطط للاعبين؛
  • العدد المخطط للعوالم على الخادم؛
  • حجم كل عالم.

يجب أن نتذكر أن تطبيق Java يحتاج دائمًا إلى احتياطي من ذاكرة الوصول العشوائي. إذا كنت تتوقع استهلاكًا للذاكرة يبلغ 8 غيغابايت، فأنت في الواقع تحتاج إلى 12 غيغابايت. الأرقام نسبية، لكن جوهرها لا يتغير.

لبدء جزء الخادم، نوصي باستخدام العلامات المحددة في المقالة ضبط أعلام JVM – G1GC Garbage Collector لـ Minecraft. يسمح هذا "السحر الأسود" للخادم بتكوين "أداة تجميع البيانات المهملة" بشكل صحيح وتحسين استخدام ذاكرة الوصول العشوائي. يجب ألا تخصص ذاكرة أكبر مما يستهلكه الخادم فعليًا أثناء ذروة تدفق اللاعبين.

إنشاء خريطة كتلة

"هل تعتقد حقًا أن القمر موجود فقط عندما تنظر إليه؟" (البرت اينشتاين)

خادم جديد تماما. بمجرد أن يتصل اللاعب بنجاح لأول مرة، تظهر شخصية اللعبة عند نقطة التجمع العامة (التفرخ). هذا هو المكان الوحيد الذي يتم فيه إنشاء عالم اللعبة مسبقًا بواسطة الخادم. في نفس اللحظة، ينظر جزء العميل إلى الإعدادات، والمعلمة الرئيسية هي مسافة الرسم. يتم قياسها بالأجزاء (مساحة الخريطة 16 × 16 وارتفاعها 256 قطعة).عدد القطع المشار إليها هو بالضبط عدد القطع التي سيتم طلبها من الخادم.

يقوم الخادم بتخزين خريطة عالمية للعالم، وإذا لم تكن هناك كتل تم إنشاؤها فيها حتى الآن عند ظهور شخصية اللعبة، فإن الخادم ينشئها ويخزنها ديناميكيًا. ولا يتطلب هذا موارد حاسوبية كبيرة فحسب، بل إنه يزيد أيضًا حجم خريطة العالم باستمرار. على أحد أقدم الخوادم الفوضوية 2b2t (2builders2tools) لقد تجاوز حجم الخريطة بالفعل 8 تيرابايت، وتبلغ حدود العالم حوالي 30 مليون قطعة. هناك آلاف القصص المرتبطة بهذا الخادم ويستحق مقالًا خاصًا به في السلسلة.

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

يوجد في برنامج الخادم قيمة مثل TPS (القراد لكل خادم - القراد في الثانية). عادة، دورة الساعة الواحدة تساوي 1 مللي ثانية. (ثانية واحدة من العالم الحقيقي تساوي 50 علامة من عالم اللعبة). إذا زادت معالجة علامة واحدة إلى 1 ثانية، فسيتم إغلاق تطبيق الخادم، مما يؤدي إلى طرد جميع اللاعبين.

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

أسهل طريقة هي تعيين حدود العالم على شكل دائرة بالنسبة إلى نقطة النشر (على الرغم من أنه يمكنك جعلها بأي شكل) باستخدام أمر واحد:

/wb set <радиус в блоках> spawn

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

/wb fill

نظرًا لأن هذا الإجراء قد يؤثر على اللاعبين الموجودين على الخادم، تأكد من التأكيد:

/wb confirm

في المجمل، استغرق الأمر حوالي ساعتين لإنشاء عالم يبلغ نصف قطره 5000 كتلة (حوالي 40 مليار كتلة) على معالج Intel® Xeon® Gold 2. لذلك، إذا كنت تريد إنشاء خريطة أكبر مسبقًا، فكن على علم بذلك ستستغرق هذه العملية قدرًا لا بأس به من الوقت، وسيتم تقليل TPS للخادم بشكل كبير. تذكر أيضًا أنه حتى نصف قطر يبلغ 6240 كتلة سيتطلب حوالي 5000 جيجابايت من مساحة القرص.

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

كتل المشكلة

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

إذا كان هناك عدة كتل من مادة TNT فإن تفجير كتلة واحدة يسبب تفجير وتفعيل الجاذبية في الكتل المجاورة وتشتتها في جميع الاتجاهات. كل هذه الآليات الجميلة على جانب الخادم تبدو وكأنها الكثير من العمليات لحساب مسار كل كتلة، وكذلك التفاعل مع الكتل المجاورة. المهمة كثيفة الاستخدام للموارد، ويمكن لأي شخص التحقق منها بسهولة. قم بإنشاء وتفجير مكعب من كتل TNT بحجم 30 × 30 × 30 على الأقل. وإذا كنت تعتقد أن لديك جهاز كمبيوتر ألعاب جيد وقوي، فأنت مخطئ جدًا 😉

/fill ~ ~ ~ ~30 ~30 ~30 minecraft:tnt

تحسين خادم ماين كرافت
أدت "تجربة" مماثلة على خادم مزود بمعالج Intel® Xeon® Gold 6240 إلى انخفاض خطير في عدد TPS وتحميل وحدة المعالجة المركزية بنسبة 80% أثناء وقت تفجير الكتلة بالكامل. لذلك، إذا تمكن أي لاعب من القيام بذلك، فستؤثر مشكلة الأداء على جميع اللاعبين الموجودين على الخادم.

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

لا يمكن تجنب هذا السيناريو إلا من خلال الحظر الكامل لاستخدام هذه الكتل في عالم اللعبة. على سبيل المثال، باستخدام البرنامج المساعد WorldGuard. يرجى ملاحظة أن هذا البرنامج المساعد في حد ذاته لا يعمل بدون مكون إضافي آخر تحرير العالم. لذا قم بتثبيت WorldEdit أولاً، ثم WorldGuard.

اختتام

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

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

للقيام بذلك، ندعو الجميع إلى خادمنا minecraft.selectel.ru (إصدار العميل 1.15.2)، حيث تم إعادة إنشاء مراكز البيانات Tsvetochnaya-1 وTsvetochnaya-2. لا تنس الموافقة على تنزيل موارد إضافية، فهي ضرورية للعرض الصحيح لبعض المواقع.

المهام والرموز الترويجية وبيض عيد الفصح والتواصل اللطيف في انتظارك.

المصدر: www.habr.com

إضافة تعليق