যদি আমি কোনও সার্ভার / ক্লায়েন্ট আর্কিটেকচার ব্যবহার করি (প্লেয়ারগুলির মধ্যে একটির সাথে একটি সার্ভার এবং ক্লায়েন্ট উভয়ের চরিত্রে অভিনয় করে), এবং ক্লায়েন্টগুলির মধ্যে একটির ক্রিয়াকলাপের একটি গ্রুপ তৈরি হয়েছে তবে সে কি সেগুলি সরাসরি ম্যানেজারের সাথে যুক্ত করা উচিত, বা কেবল একটি অনুরোধ প্রেরণ করা উচিত সার্ভারে, যা প্রতিটি ক্লায়েন্টকে সেই গোষ্ঠীটি যুক্ত করতে আদেশ করবে?
এই ক্ষেত্রে আপনার কাছে তিনটি বিকল্প রয়েছে যার মধ্যে দুটি ইতিমধ্যে আপনি উল্লেখ করেছেন have আপনি যে বিকল্পটি গ্রহণ করছেন তা নির্বাচন বিভিন্ন কারণের উপর নির্ভর করে যে কেবলমাত্র আপনিই সেরা বিচারক হতে পারেন:
1: ক্লায়েন্ট স্প্যানস গোষ্ঠী ক্রিয়াকলাপগুলি তাদের সরাসরি যুক্ত করে এবং তারপরে সার্ভারে প্রেরণ করে। সার্ভার এটি কোনও চেক ছাড়াই গ্রহণ করে
* এই পদ্ধতির সুবিধাগুলি হ'ল ক্লায়েন্টের সাথে সম্পর্কিত, তাদের নিজস্ব ক্রিয়াকলাপগুলি তাদের নেটওয়ার্ক বিলম্বের চেয়ে তাত্ক্ষণিক প্রতিক্রিয়া জানায়। অসুবিধাটি হ'ল ক্লায়েন্টের বার্তাগুলি সার্ভারের দ্বারা সত্য হিসাবে গৃহীত হয় (যা তারা নাও হতে পারে) *
2: ক্লায়েন্ট সার্ভারে একটি অনুরোধ প্রেরণ করে, যার ফলে অনুরোধটি উত্পন্ন ক্লায়েন্ট সহ সকলের কাছে অনুরোধটি সম্প্রচারিত করে।
এই পদ্ধতির সুবিধাগুলি হ'ল সার্ভারটি এখন গেমটিতে ঘটে যাওয়া সমস্ত কিছুর নিয়ন্ত্রণে থাকে যা বেশিরভাগ বিষয়কে অবৈধ ক্রিয়াকলাপ থেকে দূরে সরিয়ে দেয় (এখানে অবৈধ ক্লায়েন্ট থেকে দেওয়াল ক্লিপিং থেকে শুরু করে চলন চালানো অবধি হতে পারে যা এখন অবৈধ কারণ সার্ভারটি আছে ক্লায়েন্ট যখন নির্দিষ্ট পদক্ষেপ নিয়েছিল তখন ক্লায়েন্টের কাছে আরও তথ্য নেই)
3: ক্লায়েন্ট ক্রিয়াগুলির গোষ্ঠী তৈরি করে, তাদের সরাসরি যুক্ত করে এবং তারপরে সার্ভারে প্রেরণ করে। সার্ভারটি অনুরোধটি প্রক্রিয়া করে, তারা অবৈধ নয় তা নিশ্চিত করার জন্য ক্রিয়াগুলিতে তার নিজের চেকগুলি চালায় এবং ক্লায়েন্ট সহ সমস্ত খেলোয়াড়ের মধ্যে স্থানান্তর সম্প্রচার করে।
এটি সামান্য বেশি ব্যান্ডউইথের প্রয়োজনে 1 এবং 2 উভয়ের মধ্যে সেরা নেয়। সুবিধাগুলি তাদের নিজের পদক্ষেপের জন্য ক্লায়েন্টের তাত্ক্ষণিক প্রতিক্রিয়া এবং ক্লায়েন্টের চালগুলি যদি অবৈধ হয় তবে সার্ভার যথাযথ পদক্ষেপ নেয় (জোর করে ক্লায়েন্টকে সংশোধন করে)।
প্যাকেটের ক্ষতি এবং এর মতো কী? গেমটি নির্বিচারবাদী, তবে আমি ভাবছি যে কোনও ক্লায়েন্টের মধ্যে মৃত্যুদন্ড কার্যকর করা ক্রমের ক্রমগুলির মধ্যে যে কোনও তাত্পর্য রয়েছে তা বিশ্বের অসামঞ্জস্যপূর্ণ অবস্থার দিকে পরিচালিত করতে পারে। এই ধরণের সমস্যার বিরুদ্ধে আমি কীভাবে সুরক্ষা করব?
প্যাকেটের ক্ষয়ক্ষতি এবং চরম ল্যাগ হয় একটি হার্ড সমস্যাটি সমাধানের জন্য । গেমের ধরণের উপর নির্ভর করে সমস্যাটি সমাধান করার জন্য বিভিন্ন সমাধান (তাদের কোনওটিই নিখুঁত নয়) নিযুক্ত করা হয় (যেমন মৃত-গণনা)। আমি ধরে নেব আপনার গেমটি পদার্থবিজ্ঞানের সমন্বয় করতে হবে না।
আপনার প্রথম যে কাজটি করা উচিত তা হ'ল আপনার সমস্ত চালকে সময় স্ট্যাম্পিং করা। আপনার সিস্টেম তারপর একাউন্টে এই গ্রহণ করা এবং উচিত খেলতে তদনুসারে প্যাচসমূহ (সম্ভবত সার্ভার এই দায়িত্ব আছে এবং তারপর অবৈধ প্যাচসমূহ অস্বীকার)। এই সিস্টেমটি প্রয়োগ করার সময় 0 টি বিলম্বিততা (স্থানীয়ভাবে পরীক্ষা) ধরে নিন।
0 বিলম্বিতা অবশ্যই স্থানীয় নেটওয়ার্কগুলিতেও একটি ভাল অনুমান নয়, এখন যে সমস্ত পদক্ষেপ সময়কে সম্মান করে, আপনি কোন সময়কে বিশ্বাস করেন? সেই সাথে সময় সমন্বয়ের বিষয়টি কার্যকর হয়। অনলাইনে অনেক নিবন্ধ / কাগজপত্র এই প্রব্লেমটি সমাধান করার জন্য আপনাকে গাইড করবে।
যদি আমি একবারে অনেকগুলি ক্রিয়া যুক্ত করি তবে কী সংযোগের জন্য সমস্যা সৃষ্টি করবে না? কোন উপায়ে তা দূর করতে?
প্রথম সুস্পষ্ট স্টাফ। স্ট্রিং বা সিরিয়ালযুক্ত বস্তুগুলি কখনই প্রেরণ করবেন না। গেমটি আপডেট হওয়ার সাথে সাথে ম্যাসেজগুলি তত দ্রুত প্রেরণ করবেন না। এগুলি খণ্ডগুলিতে প্রেরণ করুন (উদাহরণস্বরূপ সেকেন্ডে 10 বার)। ত্রুটি থাকবে (বিশেষত গোলাকৃতি ত্রুটি) যা সার্ভার / ক্লায়েন্টকে একবারের মধ্যে একবারে ত্রুটিগুলি সমাধান করতে হবে (সুতরাং প্রতি সেকেন্ডে, সার্ভারটি সমস্ত কিছু প্রেরণ করে (সমস্ত কিছু = সমস্ত ডেটা যা আপনার গেমের জিনিসগুলি সঠিক রাখতে গুরুত্বপূর্ণ state] যা ক্লায়েন্ট তারপরে স্ন্যাপ দেয় এবং / অথবা তার অবস্থার সংশোধন করতে অ্যাকাউন্টে নেয়)।সম্পাদনা: আমার একজন সহকর্মী উল্লেখ করেছেন যে আপনি যদি ইউডিপি ব্যবহার করছেন [যা আপনার উচিত, যদি আপনার প্রচুর ডেটা থাকে] তবে কোনও নেটওয়ার্ক অর্ডার নেই। সেকেন্ডে 10 টিরও বেশি প্যাকেট পাঠানো প্যাকেটগুলি অর্ডার থেকে বাইরে আসার পরিবর্তনগুলি বাড়িয়ে তোলে। আমি দাবিটি উদ্ধৃত করতে পারি কিনা তা আমি দেখতে পাব। নিজেরাই অর্ডার প্যাকেটগুলির বাইরে, আপনি সেগুলি ফেলে দিতে পারেন বা এটি আপনার সিস্টেমের বার্তা / সরানো সারিটিতে যোগ করতে পারেন যা বর্তমান অবস্থাটি সংশোধন করার জন্য অতীতে পরিবর্তনগুলি পরিচালনা করতে ডিজাইন করা হয়েছে
আপনার একটি মেসেজিং সিস্টেম থাকা উচিত যা এমন কোনও কিছুর উপর নির্ভর করে যা খুব অল্প জায়গা নেয়। যদি আপনাকে এমন কিছু পাঠাতে হয় যা কেবলমাত্র দুটি মান থাকতে পারে তবে কেবল একটি বিট প্রেরণ করুন। আপনি যদি জানেন যে আপনার কেবল 256 টি চাল চলতে পারে তবে একটি স্বাক্ষরবিহীন চার্ট প্রেরণ করুন। যতটা সম্ভব শক্তভাবে বার্তা প্যাক করার জন্য বিভিন্ন বিট টুইডলিং ট্রিকস রয়েছে।
আপনার বার্তাপ্রেরণ সিস্টেমটি সম্ভবত আপনাকে আগত বার্তাগুলি থেকে সহজেই পদক্ষেপগুলি সরিয়ে নেওয়ার জন্য প্রচুর এনাম ব্যবহার করবে (আমি রাকনেট এবং এর উদাহরণগুলি একবার দেখার পরামর্শ দিচ্ছি যদি আপনি এখানে কী বোঝাতে চেয়ে থাকেন তবে)।
আমি নিশ্চিত যে আপনি ইতিমধ্যে জানেন যে আপনি যে সমস্যাগুলি হাইট লেটেন্সি এবং প্যাকেট ক্ষতির সাথে উত্থাপিত হয় তা ঠিক করতে পারবেন না তবে আপনি এর প্রভাব কম উচ্চারণ করতে পারবেন। শুভকামনা!
সম্পাদনা: লিঙ্কটির সাথে উপরের প্যাট্রিক হিউজের মন্তব্য এই উত্তরটি অসম্পূর্ণ এবং সর্বোত্তমভাবে ওপি-র প্রশ্নের সুনির্দিষ্টভাবে রেন্ডার করে। আমি পরিবর্তে লিঙ্কযুক্ত বিষয়গুলি পড়ার পরামর্শ দেব