আমি এমএমও বাস্তবায়ন করছি যেখানে প্লেয়ার তারারশীপে এটিতে তীর কী দিয়ে নিয়ন্ত্রণ করে অন্য খেলোয়াড়দের সাথে সহযোগিতা করে মহাকাশে উড়ে যায়।
আমি এটি বাস্তবায়ন করতে চাই যাতে প্লেয়ার তার জাহাজটি রকেট বা অন্য কোনও কিছু থেকে ডজ করতে সক্ষম হয়, তাই আমি একই গ্লোবাল স্টেটের একই ক্লায়েন্টের সাথে পূর্বেই সার্ভারের ব্যবহার হিসাবে অ্যালগরিদমকে অনুকরণ করে ব্যবহার করতে পারি। সেই গেম ওয়ার্ল্ডটি সি # তে লেখা এবং এটি ক্লায়েন্টের মধ্যে সরাসরি ডাকা হবে (এটি ইউনিটি 3 ডি তে লেখা) এবং সিএলআর মাধ্যমে সি ++ সার্ভারে (লিনাক্সের অধীনে)। ইউডিপির মাধ্যমে সংযোগ
সমস্যাটি কীভাবে বজায় রাখা যায়, উদাহরণস্বরূপ, একক মানচিত্রের মধ্যে 1000 প্লেয়ার (অন্যান্য সমস্ত গেমের অবজেক্টগুলি, ভিড়গুলি বাদ দিয়ে ...): আসুন আমি বলি যে:
- প্রতি সেকেন্ডে 50 বার ক্লায়েন্টদের সাথে সার্ভার সিঙ্ক্রোনাইজ করুন
- প্রতিটি ক্লায়েন্টকে কেবল সেই গেমের অবজেক্টগুলিতে (এবং খেলোয়াড়দের) প্রেরণ করুন যা তিনি দেখতে সক্ষম (কিছু ব্যাসার্ধের মধ্যে)
- তার ভিউ ব্যাসার্ধের মধ্যে প্রতিটি খেলোয়াড়কে 100 টি বস্তু পাঠাতে হবে
- গেম অবজেক্ট প্রতি গড়ে 50 বাইট পাঠাতে হবে (এটি আইডি, এক্স, ওয়াই কর্ডস, রোটেশন, স্টেট ...)
সুতরাং, এর জন্য এই জাতীয় নেটওয়ার্ক ব্যান্ডউইথ থাকা প্রয়োজন: 1000 (ক্লায়েন্ট) * 50 (প্রতি সেকেন্ডে বার) * 100 (প্রতিটি খেলোয়াড়কে প্রেরণ করতে অবজেক্ট) * 50 (প্রতি বস্তু বাইট) = 250 000 000 বাইট প্রতি সেকেন্ড! এটা অসম্ভব!
এই মানটি কি কোনওভাবে হ্রাস করা সম্ভব? উদাহরণস্বরূপ, ক্লায়েন্টদের তাদের গেমের জগতগুলি সম্পূর্ণ সময়ের জন্য অনুকরণ করতে দিন (দীর্ঘ সময়ের জন্য) এবং তাদের কেবলমাত্র অন্য ক্লায়েন্টের ইনপুটগুলি প্রেরণ করুন এবং গেম ওয়ার্ল্ডগুলি সিঙ্ক্রোনাইজ করুন, আসুন বলি, প্রতি কয়েক সেকেন্ড পরে তবে এটি ভাসমান সংখ্যার কারণে অদ্ভুত বিচ্ছিন্নকরণ সমস্যার কারণ হতে পারে ।
যাইহোক, এই জাতীয় গেমগুলি কীভাবে সাধারণভাবে প্রোগ্রাম করা হয়? ধন্যবাদ.