আমি একটি উচ্চ-স্তরের আলোচনা থেকে এটির কাছে যাচ্ছি এবং তারপরে আপনার প্রশ্নের দিকে কাজ করব। প্রকাশের খাতিরে, আমার সকেট.আইও ব্যবহার করার মতো ব্যক্তিগত অভিজ্ঞতা নেই তবে এমএমওআরপিজি সম্পর্কিত সমস্যার জায়গার জন্য অনেক এক্সপোজার।
এমএমওআরপিজি ইঞ্জিনের নেটওয়ার্ক আর্কিটেকচারের নকশা এবং / অথবা কার্যকারিতা সরবরাহ করার জন্য একটি মাঝারি ওয়্যার বা ওপেন সোর্স প্রকল্প নির্বাচন করা গেমের নকশা, বাজেট এবং দলের প্রযুক্তিগত দক্ষতার দ্বারা প্রভাবিত হওয়া আরও চ্যালেঞ্জিং সিদ্ধান্তগুলির মধ্যে একটি। চূড়ান্ত পছন্দটি অন্যান্য স্থাপত্য সংক্রান্ত সিদ্ধান্তগুলিকে প্রভাবিত করবে (এবং কখনও কখনও সিদ্ধান্তও ডিজাইন করে) design
এমএমওআরপিজিগুলির বিকাশকারী হিসাবে, আমরা দুর্দান্ত সাফল্যের জন্য পরিকল্পনা করি (প্রায়শই বিপর্যয়কর সাফল্য হিসাবেও পরিচিত) যেখানে বিপুলসংখ্যক সতর্কতা বাতি এবং সাইরেন ট্রিগার করে। যে ভয়ঙ্কর বিশাল সংখ্যক ফসল কাটছে তার মধ্যে একটি হ'ল এন-স্কোয়ারযুক্ত আলগোরিদিমগুলিতে (এরপরে N ^ 2), আপনার প্রশ্নে প্রথম যে বিষয়টি আমার কাছে পৌঁছেছিল তা হ'ল এটি কোনও ডিজাইনকে তথ্য সম্প্রচারের জন্য সত্তার জন্য আহ্বানের মতো বলেছিল that অন্যান্য সমস্ত সংযুক্ত সত্তা। এটি একটি এন ^ 2 সমস্যার সর্বোত্তম উদাহরণ।
এমএমওগুলি সাধারণত বিভিন্নভাবে বিভিন্নভাবে আক্রমণ করে এন ^ 2 ইস্যু মোকাবেলায় যোগাযোগ করে; সচেতনতা ব্যবস্থা (পরিস্থিতিগত, স্থানিক, ইত্যাদি) যেখানে কোনও সত্তা অন্যান্য সংস্থাগুলির কিছু উপসেট সম্পর্কে অবগত থাকে, খেলোয়াড়দের বিভিন্ন "শার্ডে" বিভক্ত করে, "জোনগুলিতে" খেলোয়াড়কে বিভক্ত করে এবং / অথবা ইনস্ট্যান্সিং করে, গেম মেকানিকগুলি প্রয়োগ করে যা অনেকগুলি নিরুৎসাহিত করে একসাথে জড়ো হওয়া খেলোয়াড়রা (আশেরোন কলের টেলিপোর্ট ঝড়) ইত্যাদি
বেশিরভাগ এমএমওআরপিজি এবং অনেকগুলি এফপিএস ইঞ্জিনের মোটামুটি পরিশীলিত নেটওয়ার্কিং আর্কিটেকচার রয়েছে যা বিভিন্ন বৈশিষ্ট্য সমর্থন করে যার মধ্যে রয়েছে:
- নির্ভরযোগ্য এবং অবিশ্বস্ত যোগাযোগের পথ (টিসিপি, নির্ভরযোগ্য ইউডিপি এবং ইউডিপি প্যাকেটের কাস্টম বাস্তবায়ন)
- ব্যান্ডউইথ শেপিং (অগ্রাধিকার, জীবনকাল, ইত্যাদি)
- ক্ষেত্র / ভায়ারযোগ্য ডেটা এবং ফাংশন কলগুলির স্বয়ংক্রিয় প্রতিলিপি
- তথ্য পরমাণু সেট (যেমন তথ্য যে একসাথে যোগাযোগ করা হয়)
- পৃথক আপডেট (যেমন প্রতিটি ট্রানজিশন গুরুত্বপূর্ণ যেখানে)
- বিলম্বিতা সংশোধন
- ক্লায়েন্টকে প্রতিক্রিয়াশীল মনে করার জন্য বিভিন্ন কৌশল ricks
আমি দেখতে পেয়েছি যে অবাস্তব নেটওয়ার্কিং ডকুমেন্টেশন এবং ভালভ নেটওয়ার্কিং ডকুমেন্টেশন বিভিন্ন ইস্যুতে ভাল প্রাইমার সরবরাহ করে।
সুতরাং, এখন প্রশ্নে আসা যাক।
এগুলি 'সংগ্রহ' করা এবং সেকেন্ডের 1/10-এ একবার বলার মতো প্রচার করা কি আরও ভাল ধারণা হবে?
এখানে একটি সাধারণ হ্যাঁ বা কোনও উত্তর সরবরাহ করা কঠিন ... কারণ এটি স্কেল (পর্যবেক্ষণকারী সংস্থার সংখ্যা), আপডেটের ফ্রিকোয়েন্সি এবং আপডেটের আকারের উপর নির্ভর করে। উদাহরণস্বরূপ, আপডেটগুলির আকারটি কোথাও কোনও বাফার বাধতে পারে তবে এগুলি সংগ্রহ করা ভয়াবহভাবে ভুল হতে পারে।
এমএমওআরপিজি এবং এফপিএস গেমের ক্লায়েন্টটি সাধারণত এমনভাবে তৈরি করা হয় যে তারা "কিছুটা" স্বাভাবিকের চেয়ে অনেক বেশি আপডেট ফ্রেমের আপডেট না পেলেও তারা এমন কিছু "চেহারা" দেখায় যা সঠিকভাবে দেখায়। অবিশ্বাস্য যোগাযোগের (ইউডিপি) ব্যবহার করার সময় আপনি শূন্যতার মধ্যে কয়েকটি আপডেট হারানোর আশা করতে পারেন, ক্লায়েন্টরা নির্ভরযোগ্য পরিবহণের সাথে ব্যবহার করা যেতে পারে তার চেয়ে বেশি ঘন ঘন আপডেট প্রেরণে এটি তৈরি করতে পারে।
সকেট.আইও ডকুমেন্টেশনের একটি অভিশপ্ত পর্যালোচনা থেকে, দেখে মনে হচ্ছে এটি নির্ভরযোগ্য এবং অবিশ্বাস্য (এর পরিভাষায় অস্থির) যোগাযোগের পথ উভয়কে সমর্থন করে।
আমি প্রথমে এর সাথে যোগাযোগ করতাম, আপডেটের জন্য কী ফ্রিকোয়েন্সি দরকার হয় ...
যদি কোনও খেলোয়াড় একটি ধ্রুবক হারে একটি সরলরেখায় চলতে থাকে তবে একটি নিম্ন আপডেটের ফ্রিকোয়েন্সি ঠিক থাকে কারণ পর্যবেক্ষক ক্লায়েন্টরা উচ্চ নির্ভুলতার সাথে ভবিষ্যদ্বাণী করতে পারে যেখানে প্লেয়ার যে কোনও সময়ে আসবে। যখন কোনও খেলোয়াড় একটি শক্ত বৃত্তে পরিণত হয় বা দ্রুত দিকনির্দেশ পরিবর্তন করে, তখন আরও অনেক বেশি ঘন ঘন আপডেটের প্রয়োজন হয়। বিপরীতে, যখন কোনও প্লেয়ার মোটেও চলতে না থাকে তখন আন্দোলনের আপডেটগুলি প্রেরণ করার কোনও কারণ নেই।
যাই হোক না কেন, ক্লায়েন্ট থেকে সার্ভারে প্রতিটি ফ্রেম আপডেট পাঠানোর জন্য সম্ভবত (সাধারণত) প্রয়োজনীয় নয়। সার্ভার নিজেই প্রতিটি ফ্রেম যেখানে থাকে সেখানে বার্তা প্রেরণ করতে বা তাদের বিলম্ব করতে (ব্যান্ডউইথ শেপিং, অগ্রাধিকার এবং আজীবন আপডেট দেখুন) বেছে নিতে পারে।
অন্যান্য ধরণের আপডেটগুলির বিভিন্ন বৈশিষ্ট্য রয়েছে ... উদাহরণস্বরূপ কোনও "স্বাস্থ্য" ক্ষেত্র বিবেচনা করুন যা কোনও খেলোয়াড় বা প্রাণী ক্ষতিগ্রস্থ হলে পরিবর্তিত হয়। এটি বাস্তবায়নের এক উপায় হ'ল প্রতিটি পরিবর্তন তাত্ক্ষণিকভাবে সম্প্রচারিত হয়, তবে এটি যদি নষ্ট হয়ে যায় প্রসেসিং এবং ব্যান্ডউইদথের মান যদি কোনও ফ্রেমে বা একটানা ফ্রেমে একাধিকবার পরিবর্তিত হয় (নেটওয়ার্কিং আর্কিটেকচার যা ব্যান্ডউইথ শেপিং বাস্তবায়ন করে তবে আপডেটগুলি সংঘবদ্ধ করে এই সমস্যাটি সমাধান করুন) কেবলমাত্র পর্যবেক্ষক ক্লায়েন্টের কাছে কেবলমাত্র ব্যান্ডউইথ উপলভ্য হলে প্রেরণ করা হয়)।
ক্লায়েন্টের উপস্থিত হওয়ার সাথে সাথেই কেবল বিভিন্ন সংগ্রহ করা (আইটেমটিতে ক্লিক করা) কী আলাদা হওয়া উচিত?
আবার কোনও সাধারণ হ্যাঁ বা কোনও উত্তর এখানে কাজ করবে না। সংগৃহীত দ্বারা আপনি ঠিক কী বোঝাতে চাইছেন তার উপর নির্ভর করে ... উভয়ই বিভিন্ন পরিস্থিতিতে সঠিক হতে পারে এবং নেটওয়ার্কিং স্তর প্রয়োগের উপরও নির্ভর করে।
কোনও নির্দিষ্ট সত্তার জন্য একটি বার্তা প্রেরণ হিসাবে একটি বার্তা প্রেরণ (বাস্তবায়নের উপর নির্ভর করে) একটি বার্তা প্রেরণের জন্য ব্যান্ডউইথ ওভারহেড হ্রাস করতে পারে (আপনার ব্যয় হ্রাস করা) বিপরীতভাবে (প্রয়োগের উপর নির্ভর করে যেমন স্ট্রিং দ্বারা প্রদত্ত ক্ষেত্র / মান ম্যাপিং) ব্যান্ডউইথ বৃদ্ধি করতে পারে একটি সহজ নির্দিষ্ট বার্তার প্রকারের তুলনায় প্রয়োজনীয়তা।
সকেট.আইও ডকুমেন্টেশন পর্যালোচনা করে, আমার কাছে মনে হবে যে বার্তা ওভারহেড বর্ণালীটির উচ্চতর প্রান্তে রয়েছে যা প্রচুর একক আপডেটের বিপরীতে সামগ্রিক বার্তা হিসাবে পাঠানোর জন্য আপডেটগুলি সংগ্রহের পক্ষে হবে।
আপনি যে সমস্ত আপডেটগুলি পুনরাবৃত্তি করছেন সেগুলি পর্যালোচনা করার সুপারিশ করব, উদাহরণস্বরূপ, বেশিরভাগ এমএমওরপিজি এবং এফপিএসগুলি এক্স ইভেন্টগুলিতে ক্লিক করা প্লেয়ারকে পর্যবেক্ষণ ক্লায়েন্টদের কাছে প্রেরণে বিরক্ত করবেন না যতক্ষণ না এর ফলে তারা যে বিষয়ে অবগত ছিল তার কোনও অবস্থার জন্য রাষ্ট্রীয় পরিবর্তন ঘটবে না would ।