Dynmap: مراجعة إضافة الخريطة ثلاثية الأبعاد على الإنترنت للعبة Minecraft
مراجعة مفصلة لإضافة Dynmap لخوادم Minecraft. تصيير خرائط ثلاثية الأبعاد متساوية القياس، تكوين خادم الويب المدمج، التوافق والتكامل مع Nginx.
مراجعة مفصلة لإضافة Dynmap لخوادم Minecraft. تصيير خرائط ثلاثية الأبعاد متساوية القياس، تكوين خادم الويب المدمج، التوافق والتكامل مع Nginx.
التبعيات:
المشغل: Paper / Spigot / Fabric / Forge
إصدار Minecraft: 1.20.x – 1.21.x
في لعبة Minecraft متعددة اللاعبين، غالبًا ما يمثل التنسيق بين اللاعبين، والبحث عن مناطق خالية للبناء، وتتبع النشاط عبر مساحات شاسعة تحديًا. توفر الأدوات الأساسية فقط خرائط ورقية محلية لا تغطي العالم بأسره ولا يتم تحديثها في الوقت الفعلي. تحل أداة Dynmap هذه المشكلة عن طريق إنشاء خريطة تفاعلية لعالم اللعبة يمكن الوصول إليها عبر متصفح ويب عادي. وهي تعمل على نفس مبدأ خدمات المعلومات الجغرافية مثل خرائط Google، حيث تعرض مناظر طبيعية مفصلة، ومواقع اللاعبين، وحدود المناطق الخاصة، ورسائل دردشة اللعبة.
كيف يعمل محرك التصيير وحفظ المربعات
في صميم عمل Dynmap يوجد مسار تصيير خاص يحول بيانات قطع (chunks) Minecraft ثلاثية الأبعاد إلى مجموعة من ملفات الرسوميات ثنائية الأبعاد (المربعات أو البلاط).
أنواع التصيير والإسقاطات
تدعم الإضافة ثلاثة خيارات رئيسية لعرض العالم:
العرض المسطح (Flat): خريطة ثنائية الأبعاد كلاسيكية مع عرض من أعلى لأسفل. تستهلك أقل مساحة على القرص وموارد المعالج أثناء التوليد.
العرض ثلاثي الأبعاد متساوي القياس (Surface): إسقاط ثلاثي الأبعاد حجمي بزاوية يسمح لك بتقييم اختلافات الارتفاع في المناظر الطبيعية، وهندسة المباني، وعمق المسطحات المائية.
عرض الكهوف (Cave): يُصيّر التجاويف والمناجم تحت الأرض، مظهرًا بنية الكهوف تحت السطح.
حفظ الملفات وحمل القرص
يتم حفظ جميع مربعات الخريطة المُولدة كصور قياسية بصيغة PNG أو JPG في مجلد plugins/dynmap/web/tiles/. عند كل تغيير للكتل بواسطة اللاعبين (بناء، تدمير، انفجارات)، تبدأ Dynmap عملية تحديث تزايدي — يتم إعادة رسم المربعات التي تقع مباشرة في منطقة القطعة المُحدّثة فقط.
يتعرض النظام الفرعي للقرص في الخادم لحمل كبير (عمليات الإدخال/الإخراج) أثناء التصيير الأولي للعالم. عند الدقة العالية، قد يصل مجلد المربعات لخريطة كبيرة إلى عشرات أو حتى مئات الجيجابايت، مما يتطلب استخدام محركات أقراص SSD سريعة والحد من حدود العالم (WorldBorder).
alt: [واجهة خريطة ويب Dynmap في المتصفح تعرض عرضًا ثلاثي الأبعاد متساوي القياس لنقطة البداية]
البنية التحتية لخادم الويب: Jetty مقابل Nginx
تقدم Dynmap مخططين لنشر واجهة الويب، اعتمادًا على حجم الخادم والحمل المتوقع.
خادم الويب المدمج Jetty
بشكل افتراضي بعد التثبيت، تقوم الإضافة تلقائيًا بتشغيل خادم الويب المدمج Jetty على المنفذ 8123. لا يتطلب هذا الخيار أي تكوينات إضافية: يحتاج المسؤول فقط إلى فتح المنفذ 8123 على الاستضافة، وبعد ذلك تصبح الخريطة متاحة على http://Server_IP:8123/.

التكامل مع خادم خارجي (Nginx أو Apache)
بالنسبة للخوادم العامة التي تضم عددًا كبيرًا من اللاعبين، يُنشئ Jetty المدمج حملًا إضافيًا على عملية لعبة Java، نظرًا لأن كل مستخدم ويب يستهلك حركة المرور مباشرة عبر خادم اللعبة. من أجل التحسين، يوصى بتكوين تقديم المربعات من خلال خادم ويب Nginx أو Apache مستقل.
في هذا الإعداد، يتم تكوين Nginx للعمل مباشرة مع مجلد web/tiles/، متجاوزًا نواة عملية لعبة Minecraft. هذا له عدة مزايا هامة:
حماية سلسلة اللعبة: تتم معالجة طلبات المتصفح بواسطة خادم ويب منفصل، مما يقضي على التجمدات الدقيقة (انخفاض TPS) في اللعبة.
تشفير HTTPS: القدرة على تكوين شهادات SSL مجانية من Let's Encrypt بسهولة لاتصال آمن.
توفر دون اتصال بالإنترنت: تظل خريطة الويب للمناظر الطبيعية متاحة للعرض حتى أثناء إعادة تشغيل خادم لعبة Minecraft أو إيقاف تشغيله.
إعدادات التكوين وإدارة التصيير
يتم تحرير المعلمات الرئيسية للإضافة في ملف plugins/dynmap/configuration.txt.

إعدادات التصيير والحفظ العامة
المعلمة | القيمة الافتراضية | الوصف |
|---|---|---|
|
| يحدد جودة قوالب التصيير افتراضيًا ( |
|
| اختيار التخزين لمربعات الخريطة. الخيارات المتاحة: |
|
| الفاصل الزمني (بالثواني) للتحقق من المربعات وتصييرها من طابور التحديث. |
|
| عدد المربعات في طابور التحديث الذي بعده يتسارع الفاصل الزمني للتصيير. |
|
| الفاصل الزمني المُسرّع للتصيير (بالثواني) عندما يتجاوز الطابور العتبة. |
|
| عدد المربعات المصيرة في وقت واحد (يُنصح بتعيينه لنصف عدد أنوية المعالج). |
|
| أولوية خيوط التصيير. إذا كان |
|
| حفظ طابور مهام التصيير المعلقة عند إيقاف تشغيل الخادم أو إعادة تشغيله. |
|
| التأخير (بالثواني) قبل بدء تصيير الكتل المتغيرة. يمنع إعادة الرسم المستمر للمربعات بسبب الأتمتة (ريدستون، مكابس، إلخ). |
|
| تمكين تجزئة المربعات. إذا لم تتغير صورة المربع بعد التصيير، فلا يتم الكتابة فوق الملف على القرص، مما يوفر موارد القرص. |
|
| حساب الإضاءة السلسة (كما هو الحال في اللعبة) أثناء توليد الخريطة. |
|
| صيغة وجودة صور المربعات (افتراضيًا JPG بجودة 90%). يمكن تغييره إلى |
|
| استخدام الأنسجة المُولدة باللعبة (مطابقة لحزمة موارد العميل) بدلاً من الثابتة. |
|
| دعم الأنسجة المتصلة (Connected Texture Mod) من حزم الموارد. |
|
| دعم ألوان المناطق الإحيائية وأوراق الشجر المخصصة من حزم الموارد. |
|
| قائمة بأحداث اللعبة (وضع/تدمير الكتل، نمو الأشجار، الانفجارات) التي تبدأ طابور تصيير المربعات. |
البنية التحتية للويب ومسارات الملفات
المعلمة | القيمة الافتراضية | الوصف |
|---|---|---|
|
| المسار في دليل الإضافة حيث سيتم حفظ ملفات رسوميات الخريطة (المربعات). |
|
| المسار إلى ملفات ويب الخريطة الثابتة (HTML، JS، CSS). |
|
| تحديث الملفات الثابتة تلقائيًا عند بدء تشغيل الإضافة (قم بتعيينه إلى |
|
| منفذ TCP الذي سيعمل عليه خادم ويب Jetty المدمج. |
|
| تعطيل خادم الويب المدمج (مفيد عند إعداد تقديم المربعات عبر خادم ويب Nginx أو Apache خارجي). |
|
| الحد الأقصى لعدد الجلسات المتزامنة على خادم الويب المدمج لتوفير الموارد. |
|
| السماح لخادم الويب باتباع الروابط الرمزية (symlinks). |
|
| تمكين نظام مصادقة المستخدمين لعرض الخريطة أو الدردشة. |
|
| طلب تسجيل الدخول للحساب لعرض خريطة الويب. |
|
| قائمة بخوادم البروكسي الموثوقة للكشف الصحيح عن عناوين IP الحقيقية للمستخدمين عبر ترويسة |
إعدادات مكونات واجهة الويب (دردشة الويب، العلامات، اللاعبين)
المعلمة / الفئة | القيمة الافتراضية | الوصف |
|---|---|---|
| فئة المكون | مسؤول عن نقل بيانات حول حالات اللاعبين، والدردشة، وتحديثات الخريطة. ملاحظة: عند استخدام خادم ويب خارجي (Nginx)، يجب تغيير هذه الفئة إلى |
|
| عرض مؤشرات صحة اللاعبين على الخريطة. |
|
| عرض الموقع الدقيق للاعبين على الخريطة. |
|
| السماح بإرسال رسائل من واجهة الويب إلى دردشة اللعبة. |
|
| التأخير (بالثواني) بين الرسائل في دردشة الويب (حماية من البريد المزعج). |
|
| إخفاء اللاعبين من الخريطة إذا كانوا يتسللون (sneaking). |
|
| إخفاء اللاعبين من الخريطة إذا كانوا في وضع المراقب (spectator mode). |
|
| إخفاء اللاعبين من الخريطة إذا كانوا تحت تأثير جرعة التخفي. |
| فئة المكون | إدارة طبقات العلامات على الخريطة. يسمح بعرض نقطة البداية ( |
|
| عرض وجوه اللاعبين (الجلود) على علامات الخريطة. |
|
| عرض شريط الصحة مباشرة أعلى أيقونة اللاعب على الخريطة. |
التحسين وحدود أداء المعالج (TPS/MSPT)
المعلمة | القيمة الافتراضية | الوصف |
|---|---|---|
|
| الفاصل الزمني (بالثواني) للتوقفات المؤقتة أثناء تنفيذ التصيير الكامل ( |
|
| الحد الأقصى لعدد القطع التي يمكن لـ Dynmap تحميلها في الذاكرة لكل نبضة لعبة (1/20 من الثانية). تقليل هذه المعلمة يقلل من التأخير في الخادم. |
|
| الحد الزمني المستهدف لكل نبضة لخيط التصيير (بالمللي ثانية). |
|
| إذا انخفض TPS للخادم عن هذه القيمة، ستقوم Dynmap تلقائيًا بإيقاف تصيير تحديثات المربعات مؤقتًا. |
|
| إذا انخفض TPS للخادم عن هذه القيمة، توقف Dynmap تنفيذ التصيير الكامل للعالم ( |
|
| الحد الأدنى لـ TPS الذي يُسمح عنده بإجراء حسابات مستويات الخريطة المُصغرة (zoom-out). |
|
| عدد القطع في ذاكرة التخزين المؤقت للقطات المناظر الطبيعية. |
|
| استخدام المراجع اللينة (Soft References) لذاكرة التخزين المؤقت للقطع. يسمح لـ JVM بمسح ذاكرة التخزين المؤقت للخريطة إذا كان هناك خطر حدوث خطأ OutOfMemory. |
معلمات التحسين في configuration.txt
للحفاظ على أداء الخادم، يجدر الانتباه إلى متغيرات ملف التكوين التالية:
deftemplatesuffix— لاحقة جودة التصيير. القيمvlowres(جودة منخفضة جدًا) أوlowres(منخفضة) تسمح لك بتسريع توليد الخريطة بشكل كبير وتقليل حجم الملف بمقدار 4-8 مرات مقارنة بـhiresالقياسي.tilespath— يسمح لك بإعادة توجيه حفظ الخريطة إلى قرص صلب آخر للخادم لحماية المحرك الرئيسي من الامتلاء.webserver-port— منفذ للاتصال بالخريطة (بدلاً من الافتراضي8123).
أوامر إدارة التصيير
يتم التحكم في توليد الخريطة عبر وحدة تحكم الخادم بواسطة مشغل بمستوى 4:
/dynmap fullrender <عالم>— يبدأ التصيير الكامل للعالم المحدد. يُنصح بإجرائه فقط بعد التوليد المسبق الكامل للقطع (chunk pre-generation) وخلال فترات انخفاض عدد اللاعبين./dynmap radiusrender <نصف_القطر>— يقوم بتحديث الخريطة فقط ضمن نصف قطر معين حول اللاعب، وهو أمر مناسب بعد بناء مدن كبيرة./dynmap cancelrender— يوقف عمليات التصيير الحالية في حالة زيادة حمل المعالج./dynmap pause all— يوقف جميع حسابات الخرائط مؤقتًا، مما يحرر الموارد لاستقرار TPS.
الخلاصة
تُعد إضافة Dynmap أداة قوية لتصور العالم وتحسين تفاعل اللاعبين على خوادم Minecraft الكبيرة. بفضل تصييرها ثلاثي الأبعاد متساوي القياس وتكاملها مع واجهة الويب، فإنها تحول الخريطة إلى بوابة معلومات كاملة للمشروع.
مقارنةً بالبدائل مثل BlueMap (الذي يستخدم WebGL الثقيل لعرض ثلاثي الأبعاد كامل) أو Squaremap (الذي يقدم خريطة ثنائية الأبعاد سريعة حصريًا بدون نماذج ثلاثية الأبعاد)، تقدم Dynmap توازنًا مثاليًا من الميزات. ومع ذلك، فإن متطلبات مساحة القرص العالية والعبء المستمر على نظام الإدخال/الإخراج يتطلبان من المسؤولين إيلاء اهتمام وثيق لحدود العالم والاختيار الصحيح للدقة. الإضافة هي خيار ممتاز لخوادم البقاء الكبيرة، أو الفوضى، أو عوالم لعب الأدوار (RP).
التثبيت
التثبيت النموذجي يستغرق حوالي 5 دقائق. الخطوات نفسها؛ يختلف فقط المُحمّل والبناء المطابق.
- 1Stop your Minecraft server.
- 2Drop the plugin .jar into the server /plugins folder.
- 3Start the server once so the plugin generates its config files.
- 4Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.











