প্রকল্প সম্পর্কে
bareiron হল একটি ন্যূনতম Minecraft সার্ভার বাস্তবায়ন যা সীমিত মেমরির এমবেডেড সিস্টেমের জন্য তৈরি। এর ঘোষিত লক্ষ্য হল ESP32-এর মতো খুব দুর্বল ডিভাইসে Minecraft সার্ভার হোস্ট করা সম্ভব করা। প্রকল্পটি স্পষ্টভাবে তার অগ্রাধিকার নির্ধারণ করেছে: প্রথমে মেমরি ব্যবহার, দ্বিতীয়ে কর্মক্ষমতা, এবং তৃতীয়ে ফিচার; এটি উল্লেখ করে যে ভ্যানিলা Minecraft-এর সাথে সামঞ্জস্য নিশ্চিত করা হয় না এবং এটি একটি লক্ষ্যও নয়।
লক্ষ্য সামঞ্জস্য হল Minecraft সংস্করণ 1.21.8 প্রোটোকল সংস্করণ 772 সহ। README সতর্ক করে যে শুধুমাত্র ভ্যানিলা ক্লায়েন্ট আনুষ্ঠানিকভাবে সমর্থিত, এবং Fabric বা অনুরূপ ক্লায়েন্ট ব্যবহার করার সময় সমস্যা রিপোর্ট করা হয়েছে।
PC x86_64 প্ল্যাটফর্মে শুরু করার জন্য সর্বশেষ বিল্ড বাইনারি ডাউনলোড করে চালানো হয়। ফাইলটি একটি Cosmopolitan পলিগ্লট হিসাবে বর্ণনা করা হয়েছে, অর্থাৎ এটি ফাইল এক্সটেনশন সত্ত্বেও Windows, Linux এবং সম্ভবত Mac-এ চলতে পারে। README উল্লেখ করে যে সার্ভারের ডিফল্ট সেটিংস উৎস থেকে কম্পাইল না করে পুনরায় কনফিগার করা যায় না।
মাইক্রোকন্ট্রোলারের জন্য কম্পাইলেশন প্রয়োজন। কম্পাইল করার আগে, একটি ভ্যানিলা Minecraft সার্ভার থেকে রেজিস্ট্রি ডেটা ডাম্প করতে হবে। Linux-এ এটি অন্তর্ভুক্ত extract_registries.sh স্ক্রিপ্ট দিয়ে স্বয়ংক্রিয় করা যেতে পারে; অন্যথায় প্রক্রিয়াটিতে একটি Minecraft সার্ভার JAR-কে notchian ফোল্ডারে রাখা, Minecraft Wiki ডেটা জেনারেটর গাইড অনুসরণ করে সমস্ত রেজিস্ট্রি ডাম্প করা এবং তারপর bun, node বা deno দিয়ে build_registries.js চালানো জড়িত।
কম্পাইলেশন নির্দেশাবলী বেশ কয়েকটি পরিবেশ কভার করে: gcc এবং ./build.sh সহ Linux; MSYS2 MINGW64-এর মাধ্যমে Windows একটি নেটিভ বাইনারির জন্য, একটি --9x ফ্ল্যাগ সহ Windows 95/98-এর সাথে সামঞ্জস্যপূর্ণ একটি 32-বিট ভেরিয়েন্ট, একটি MSYS2-লিঙ্কড বাইনারি, অথবা Linux বাইনারি তৈরি ও চালানোর জন্য WSL। ESP ভেরিয়েন্টের জন্য, README ESP-IDF ফ্রেমওয়ার্ক (স্পষ্টভাবে Arduino নয়) ব্যবহার করে একটি PlatformIO প্রকল্প সেট আপ করার এবং এর উপরে রিপোজিটরি ক্লোন করার নির্দেশ দেয়, আরও ভাল কর্মক্ষমতার জন্য ক্লক স্পিড সামঞ্জস্য এবং কম্পাইলার অপ্টিমাইজেশন সক্ষম করার পরামর্শ সহ।
কনফিগারেশনেও উৎস থেকে কম্পাইল করা প্রয়োজন। সবচেয়ে ব্যবহারকারী-বান্ধব বিকল্পগুলি 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 বৃদ্ধি ঘন ঘন পুনরাবৃত্ত চাঙ্ক জেনারেশনে সাহায্য করতে পারে, 64-এ বাড়ানো হলে প্রতি বরাদ্দকৃত প্লেয়ারের জন্য প্রায় 240 অতিরিক্ত বাইট মেমরি খরচ হয় বলে উল্লেখ করা হয়েছে।
একটি ঐচ্ছিক বিভাগ শাটডাউনের পরে বিশ্ব ডেটা সংরক্ষণ করতে চায় এমন ESP লক্ষ্যগুলির জন্য অ-উদ্বায়ী স্টোরেজ কভার করে। PC প্ল্যাটফর্মে এটি অপ্রয়োজনীয় কারণ বিশ্ব এবং প্লেয়ার ডেটা ডিফল্টভাবে world.bin-এ লেখা হয়। সবচেয়ে সহজ পদ্ধতি হল PlatformIO-তে LittleFS সেট আপ করা এবং globals.h-এ SYNC_WORLD_TO_DISK-এর চারপাশের #ifndef কমেন্ট করা; যেহেতু ফ্ল্যাশ লেখা সাধারণত ধীর এবং ব্লকিং, DISK_SYNC_BLOCKS_ON_INTERVAL আনকমেন্ট করার পরামর্শ দেওয়া হয়, এবং LittleFS পার্টিশনে ফিট করার জন্য MAX_BLOCK_CHANGES কমাতে হতে পারে। SD কার্ড মডিউল বা অন্যান্য ভার্চুয়াল ফাইল সিস্টেমের জন্য, ফাইল সিস্টেম সেটআপ রুটিন ব্যবহারকারীকে বাস্তবায়ন করতে হবে, যদিও অন্তর্নির্মিত সিরিয়ালাইজার এখনও কাজ করা উচিত কারণ এটি POSIX ফাইল সিস্টেম কল ব্যবহার করে। বিকল্প হিসাবে, DEV_ENABLE_BEEF_DUMPS আনকমেন্ট করে বিশ্ব ডেটা TCP-এর উপর ডাম্প এবং আপলোড করা যেতে পারে, স্পষ্ট নোট সহ যে এই সিস্টেমটি কোনও নিরাপত্তা বা প্রমাণীকরণ প্রয়োগ করে না এবং সার্ভার অ্যাক্সেস আছে এমন যে কেউ নির্বিচারে বিশ্ব ডেটা আপলোড করতে পারে।
অবদান নির্দেশিকা অবদানকারীদের পুল রিকোয়েস্টের আগে, এমনকি ছোট পরিবর্তনের জন্যও, ইস্যু তৈরি করতে এবং রক্ষণাবেক্ষণকারীদের সাথে আলোচনা করতে বলে; বিদ্যমান কোড শৈলী অনুসরণ করতে; পর্যালোচনা চাওয়ার আগে কোড পরীক্ষা করতে; এবং তারা বলে যে উন্নয়ন টুলিং এবং কম্পাইলেশন উন্নতি স্বাগত নয় যদি না অবদানকারী কোডবেসের সাথে যথেষ্ট দীর্ঘ কাজ করে ব্যবহারিক ত্রুটিগুলি লক্ষ্য করে। README প্রোটোকল তথ্যের জন্য Minecraft Wiki-তে নির্দেশ করে এবং বাকি সবকিছুর জন্য একটি সার্চ ইঞ্জিনের পরামর্শ দেয়।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.