عندما يطير اللاعبون بأجنحة الإليترا إلى ركن من الخريطة لم يذهب إليه أحد من قبل، يتباطأ السيرفر فجأة، وتتأخر الكتل في الظهور، وتتعثر حركة الوحوش. والسبب بسيط: ماينكرافت يولّد تلك التضاريس من الصفر في تلك اللحظة بالذات. وتوليد التضاريس من أثقل المهام التي يؤديها السيرفر، وإذا ذهب عدة لاعبين إلى مناطق جديدة في وقت واحد ينخفض عدد دورات التحديث في الثانية (معدل التحديث). والحل هو توليد التضاريس قبل وصول اللاعبين، وتحديد أين ينتهي العالم.
ضع حدود العالم أولًا
التوليد المسبق لا معنى له إلا في عالم له نهاية محددة؛ فلا يمكنك أن تولّد مسبقًا عالمًا لا حدود له. وأوامر حدود العالم المدمجة في ماينكرافت تتيح ذلك دون الحاجة إلى أي إضافة:
worldborder center 0 0: ينقل مركز الحدود إلى منتصف الخريطة. وإذا كانت نقطة الظهور لديك في مكان آخر فاكتب إحداثياتها.worldborder set 10000: يجعل الحدود مربعًا طول ضلعه ١٠٬٠٠٠ كتلة.
الرقم هنا ليس نصف قطر، بل هو العرض من حافة إلى الحافة المقابلة. فعندما تكتب ١٠٬٠٠٠ يمكن التنقل ٥٬٠٠٠ كتلة في كل اتجاه انطلاقًا من المركز. وهذا الفرق مهم في الخطوة التالية.
أي حجم تختار؟
لمجموعة صغيرة من الأصدقاء يكفي غالبًا عرض يتراوح بين ٥٬٠٠٠ و٦٬٠٠٠ كتلة. أما لمجتمع كبير يحب الاستكشاف فيمكن التفكير في عرض بين ١٠٬٠٠٠ و٢٠٬٠٠٠. وكلما كبرت الحدود طالت مدة التوليد وكبرت المساحة التي يشغلها العالم على القرص: فالعالم المولَّد مسبقًا بعرض ١٠٬٠٠٠ كتلة قد يصل إلى عدة غيغابايتات. ولكل سيرفر مساحة قرص مجانية قدرها ٥ جيجابايت، وكل جيجابايت يزيد عليها يُحتسب بأجرة شهرية؛ لذا فإن اختيار الحجم بحسب عدد لاعبيك أسرع وأوفر معًا.
توليد التضاريس مسبقًا باستخدام Chunky
Chunky إضافة تولّد التضاريس في الخلفية قبل أن يصل اللاعبون إلى المنطقة؛ ولها أيضًا نسخة مود لـ Fabric وForge. بعد تثبيتها من متجر لوحة التحكم وإعادة تشغيل السيرفر، نفّذ الأوامر التالية بالترتيب في وحدة التحكم:
chunky world world: يختار العالم الذي سيُولَّد. واسم العالم الرئيسي في معظم السيرفرات هوworld.chunky worldborder: يأخذ المركز ونصف القطر من حدود العالم التي وضعتها للتو. وإن لم تضع حدودًا فيمكنك تحديدهما بنفسك باستخدامchunky center 0 0وchunky radius 5000؛ والرقم الذي تكتبه هنا هو نصف القطر.chunky start: يبدأ التوليد.
يظهر التقدم في وحدة التحكم كنسبة مئوية مع الوقت المتبقي المقدَّر. الأمر chunky pause يوقف المهمة مؤقتًا، وchunky continue يستأنفها من حيث توقفت. وإذا أُعيد تشغيل السيرفر لأي سبب فلن يضيع ما أُنجز؛ يكفي أن تكتب chunky continue بعد أن يعمل. ولإلغاء المهمة نهائيًا استخدم chunky cancel.
ويمكنك تكرار الخطوات نفسها لعالم النذر وعالم النهاية؛ ففي السيرفرات المبنية على Paper يكون اسما هذين العالمين عادةً world_nether وworld_the_end.
يجب أن يبقى السيرفر مشغّلًا أثناء التوليد
قد يستغرق التوليد المسبق ساعات، ويجب أن يبقى السيرفر يعمل طوال ذلك الوقت. ولدينا يأتي التنويم عند الخمول مفعّلًا افتراضيًا في السيرفرات الجديدة: فإذا بقي السيرفر ١٥ دقيقة دون أي لاعب يدخل في السكون، ويتوقف التوليد معه. وفي الباقة المدفوعة يمكنك تعطيل هذا الإعداد من «الإعدادات» طوال مدة التوليد، ثم تفعيله من جديد بعد انتهاء المهمة. أما في السيرفرات المجانية فهذا المفتاح مقفل؛ فقسّم التوليد على الأوقات التي يكون فيها اللاعبون متصلين، أو اجعل الحدود صغيرة.
ولأن التوليد يستهلك المعالج بكثافة، فمن الأفضل أن تبدأه في وقت يقل فيه اللاعبون. وإذا كان سيرفرك يُحتسب بالساعة فضع في حسابك أن المهمة قد تستغرق عدة ساعات.
كيف تعرف أن الأمر نجح؟
بعد انتهاء التوليد، أينما ذهب اللاعبون داخل الحدود تُقرأ التضاريس من القرص ولا تُولَّد من جديد. وفي Paper وPurpur يعرض الأمر tps متوسط دورات التحديث في آخر ١ و٥ و١٥ دقيقة؛ ويُتوقع أن تبقى هذه القيمة قريبة من ٢٠ أثناء الطيران إلى مناطق جديدة. وقد شرحنا الأسباب الأخرى لمشكلات الأداء على حدة في دليل معدل التحديث والتقطيع.
أخطاء شائعة
- الخلط بين نصف القطر والعرض. حدود العالم تطلب العرض، وChunky يطلب نصف القطر. فالأمران
worldborder set 10000وchunky radius 5000يصفان المساحة نفسها. - التوليد دون وضع حدود. ما دام اللاعبون يستطيعون الخروج من المساحة المولَّدة، فسيعود البطء نفسه فيما وراءها.
- نسيان وضع السكون. التوليد الذي يبدأ في ليلة خالية من اللاعبين يتوقف بعد ١٥ دقيقة، حين يدخل السيرفر في السكون.
- عدم أخذ نسخة احتياطية قبل توليد كبير. التوليد لا يفعل سوى الإضافة إلى العالم، لكن اختيار العالم الخطأ أو امتلاء القرص قد يسبب مشكلات. وأخذ نسخة احتياطية يدوية من لوحة التحكم قبل البدء لا يستغرق سوى ثوانٍ.