عن المشروع

bareiron هو تنفيذ خادم ماينكرافت بسيط يهدف إلى الأنظمة المدمجة محدودة الذاكرة. هدفه المعلن هو جعل استضافة خوادم ماينكرافت ممكنة على أجهزة ضعيفة جدًا، مثل ESP32. يحدد المشروع أولوياته بوضوح على النحو التالي: استخدام الذاكرة أولاً، الأداء ثانيًا، والميزات ثالثًا، ويشير إلى أن الامتثال لماينكرافت الأصلي ليس مضمونًا ولا هدفًا. التوافق المستهدف هو إصدار ماينكرافت 1.21.8 مع إصدار البروتوكول 772. يحذر ملف README من أن عميل ماينكرافت الأصلي فقط هو المدعوم رسميًا، وأنه تم الإبلاغ عن مشكلات عند استخدام Fabric أو عملاء مشابهين. البدء على منصات PC x86_64 يتم عن طريق تنزيل أحدث بناء ثنائي وتشغيله. يُوصف الملف بأنه متعدد اللغات Cosmopolitan، مما يعني أنه يمكن تشغيله على Windows وLinux وربما Mac على الرغم من امتداد الملف. يلاحظ ملف README أن الإعدادات الافتراضية للخادم لا يمكن إعادة تكوينها دون الترجمة من المصدر. بالنسبة لوحدات التحكم الدقيقة، الترجمة مطلوبة. قبل الترجمة، يجب تفريغ بيانات السجلات من خادم ماينكرافت الأصلي. على Linux يمكن أتمتة ذلك باستخدام سكربت extract_registries.sh المرفق؛ وإلا تتضمن العملية وضع ملف JAR لخادم ماينكرافت في مجلد notchian، واتباع دليل مولّد البيانات في Minecraft Wiki لتفريغ جميع السجلات، ثم تشغيل build_registries.js باستخدام bun أو node أو deno. تغطي تعليمات الترجمة عدة بيئات: Linux مع gcc و ./build.sh؛ Windows عبر MSYS2 MINGW64 لبناء ثنائي أصلي، أو متغير 32 بت متوافق مع Windows 95/98 عبر علامة --9x، أو ثنائي مرتبط بـ MSYS2، أو WSL لبناء وتشغيل ثنائي Linux. بالنسبة لمتغيرات ESP، يوجه README إلى إعداد مشروع PlatformIO باستخدام إطار عمل ESP-IDF (وليس Arduino صراحةً) واستنساخ المستودع فوقه، مع اقتراحات لضبط سرعة الساعة وتمكين تحسينات المترجم لأداء أفضل. التكوين يتطلب أيضًا الترجمة من المصدر. توجد معظم الخيارات سهلة الاستخدام في include/globals.h، بما في ذلك بيانات اعتماد WiFi للإعدادات المدمجة، بينما توجد التفاصيل مثل MOTD أو وقت البدء من اليوم في src/globals.c. يسلط README الضوء على عدة خيارات ذات صلة بنشر وحدات التحكم الدقيقة الفعلي: يمكن لبث الحركة تقييد الاتصالات اعتمادًا على عدد اللاعبين وأداء MCU وعرض النطاق الترددي للشبكة، ويمكن ضبطه عن طريق التعليق على BROADCAST_ALL_MOVEMENT و SCALE_MOVEMENT_UPDATES_TO_PLAYER_COUNT، أو خفض TIME_BETWEEN_TICKS على حساب المزيد من الحوسبة. يمكن تعطيل الصناديق وتدفق السوائل عبر ALLOW_CHESTS و DO_FLUID_FLOW إذا تسببت في أعطال أو عدم استقرار. قد تساعد زيادة VISITED_HISTORY في توليد القطع المتكرر المتكرر، مع تكلفة ذاكرة معلنة تبلغ حوالي 240 بايت إضافي لكل لاعب مخصص عند رفعها إلى 64. يغطي قسم اختياري التخزين غير المتطاير لأهداف ESP التي تريد الاحتفاظ ببيانات العالم بعد إيقاف التشغيل. على منصات PC هذا غير ضروري لأن بيانات العالم واللاعب تُكتب إلى world.bin افتراضيًا. أبسط نهج هو إعداد LittleFS في PlatformIO والتعليق على #ifndef المحيط بـ SYNC_WORLD_TO_DISK في globals.h؛ نظرًا لأن كتابات الفلاش عادة ما تكون بطيئة وحاجبة، يُقترح إلغاء تعليق DISK_SYNC_BLOCKS_ON_INTERVAL، وقد يلزم تقليل MAX_BLOCK_CHANGES لتناسب قسم LittleFS. بالنسبة لوحدات بطاقات SD أو أنظمة الملفات الافتراضية الأخرى، يجب على المستخدم تنفيذ روتين إعداد نظام الملفات، على الرغم من أن المُسلسِل المدمج يجب أن يعمل لأنه يستخدم استدعاءات نظام ملفات POSIX. كبديل، يمكن تفريغ بيانات العالم وتحميلها عبر TCP عن طريق إلغاء تعليق DEV_ENABLE_BEEF_DUMPS، مع ملاحظة صريحة أن هذا النظام لا ينفذ أي أمان أو مصادقة وأن أي شخص لديه وصول إلى الخادم يمكنه تحميل بيانات عالم عشوائية. تطلب إرشادات المساهمة من المساهمين إنشاء مشكلات ومناقشتها مع المشرفين قبل طلبات السحب، حتى للتغييرات الصغيرة؛ واتباع نمط الكود الموجود؛ واختبار الكود قبل طلب المراجعة؛ وتنص على أن تحسينات أدوات التطوير والترجمة غير مرحب بها ما لم يعمل المساهم مع قاعدة الكود لفترة كافية لملاحظة أوجه قصور عملية. يشير README إلى Minecraft Wiki للحصول على معلومات البروتوكول ويقترح محرك بحث لكل شيء آخر.