আধুনিক মাল্টিপ্লেয়ার গেমগুলিতে পরিবেশের মতো বিশাল, স্থির অবজেক্টগুলি কি সার্ভার থেকে ক্লায়েন্টে স্থানান্তরিত হয়?


18

আমার কাছে একটি প্রামাণিক সিস্টেম রয়েছে, যেখানে প্লেয়ার ম্যাচটিতে যোগদান করে, এটি ইতিমধ্যে সমস্ত স্প্যাঙ্কযুক্ত বস্তুগুলি পেয়ে যায় - নিজেই তৈরি হয়েছিল (ক্লায়েন্ট)।

দেখে মনে হচ্ছে:

  1. Client অ্যাক্সেস টোকেন প্রেরণ করে Server
  2. Client এর কাছ থেকে গ্রহণযোগ্যতা গ্রহণ করে Server
  3. Client গেমের দৃশ্যে দৃশ্যগুলি স্যুইচ করে
  4. Serverপ্লেয়ারগুলি, ক্রেটগুলি, আপনার সাথে যোগাযোগ করতে পারে এমন বস্তু প্রেরণ করে যাতে clientক্যানগুলি স্প্যান করতে পারে এবং তাদের প্রদর্শন করতে পারে।

তবে গ্রাউন্ড অবজেক্টের কী হবে? আপাতত, আমার কাছে সার্ভার এবং ক্লায়েন্টে হুবহু একই দৃশ্য রয়েছে - একটি স্থির বিমান সমেত ফ্লোর হিসাবে অভিনয় করে। বর্তমানে আমি নতুন জিনিস, গাছ, সিঁড়ি যুক্ত করছি এবং একসাথে জিনিসগুলি তৈরি করছি।

আমি ভেবেছিলাম - আমরা ভাল। কিন্তু পরিবেশটিও কি খুব বেশি সুসংগত করা উচিত নয়? একরকম নেটওয়ার্ক করা? সার্ভারের মালিকানাধীন?

চলুন League of Legends:

এখানে চিত্র বর্ণনা লিখুন

এটি একটি স্থির পরিবেশ, সম্ভবত একটি সংযুক্ত জাল (সিঁড়ি, ঘাস, দেয়াল, দোকান)। তবে এটি কি সত্যই ক্লায়েন্টের উপরে রাখা হয়েছে বা লোডিং স্ক্রিনের সময় এটি সার্ভার দ্বারা প্রেরণ করা হয়েছে?


1
এমনকি আপনি এটিকে নিয়ে ভাবতে পারেন যে আপনি লীগ অক্ষর এবং পরিবেশে কাস্টম স্কিন যুক্ত করতে পারেন। আপনি তাদের বিচ্ছিন্ন করার জন্য প্রেরণ করবেন না, সেগুলি স্থানীয়ভাবে প্রদর্শিত হয়, তাই তারা স্থানীয়ভাবে সংরক্ষণ এবং রেন্ডার করা হয় তা এই সিদ্ধান্তে পৌঁছাতে বোধ হয়। তবুও, তারা গেমপ্লে প্রভাবিত করে না, যদি আপনি সংঘর্ষের বিষয়ে জিজ্ঞাসা করেন তবে তারা সার্ভার এবং ক্লায়েন্টের মিশ্রণ, যাতে খেলোয়াড় প্রতারণা করতে পারে না এবং দেয়ালের মধ্য দিয়ে যেতে পারে না।
প্রার্থী মুন _ম্যাক্স_

উত্তর:


41

বেশিরভাগ অংশে, না, কোনও ধরণের শিল্প সম্পদগুলি নিয়মিতভাবে নেটওয়ার্ক জুড়ে প্রেরণ করা হয় না। সাধারণত সমস্ত ক্লায়েন্টদের স্থানীয়ভাবে একই সামগ্রীর সম্পদ থাকবে। বিষয়বস্তু চেকসামিং বা অনুরূপ ক্ষেত্রে এটি নিশ্চিত করার কোড থাকতে পারে। আপনি যদি ব্যবহারকারীদের কিছু বিষয়বস্তু ক্লায়েন্ট-সাইডের সাথে টেম্পারিং সম্পর্কে উদ্বিগ্ন হন তবে আপনি একটি অনুরূপ সিস্টেম প্রয়োগ করতে পারেন।

সার্ভার ক্লায়েন্টকে নির্দেশ পাঠাতে পারে যেটি নির্দেশ করে যে এটি নির্দিষ্ট সম্পদ প্রদর্শন করবে বা লুকিয়ে রাখবে, তবে এটি সম্পদের আসল ডেটা প্রেরণ করবে না। এটি বাস্তবে, খুব অপব্যয় এবং ধীর এবং সীমিত ডেটা উপলব্ধ ব্যক্তিদের সাথে প্রকৃত সমস্যা তৈরি করতে পারে।

কিছু ক্ষেত্রে, সম্পদটিকে কোনওভাবে "স্পোলার" বা যে কোনও হিসাবে বিবেচনা করা হয় তবে ছোট সম্পদগুলি তাদের সম্পূর্ণরূপে প্রবাহিত হতে পারে। তবে তা অস্বাভাবিক। সাধারণত আপনি যা দেখেন তা হ'ল কোনও গেমটি কোনও প্যাচ থেকে নতুন সামগ্রী বা অন্য যে কোনও কিছু ডাউনলোড করতে পারে তবে এটি শুরু হওয়ার পরে প্যাচিং প্রক্রিয়া চলাকালীন একবারই ঘটবে। গেমপ্লে চলাকালীন নয়।


21
মনে রাখবেন যে এই উত্তরটি কেবল স্থিতিশীল সম্পদগুলিকে সম্বোধন করে। গতিশীল / প্লেয়ার দ্বারা উত্পাদিত সম্পদ (যেমন মাইনক্রাফ্ট ওয়ার্ল্ড খণ্ডস, বা এমএমআরপিজি গিল্ড লোগো যা খেলোয়াড়গণ আপলোড করতে পারে) প্রেরণ করতে হবে। তবুও একজন সাধারণত প্রয়োজনীয় তথ্যের পরিমাণ হ্রাস করতে চেষ্টা করে (মাইনক্রাফ্ট উদাহরণটি চালিয়ে যেতে: পুরো খণ্ডগুলির পরিবর্তে ব্লক আপডেটগুলি প্রেরণ, কেবলমাত্র ব্লকের ধরণ / রাজ্যকে নির্দেশ করে এবং পরিবর্তিত স্থিতি সমন্বিত করে) এবং / অথবা ক্লায়েন্টের পক্ষের ডেটা ক্যাশে করে ।
হফমলে

@ হফমলে হ্যাঁ, ভাল কথা; প্রশ্নটি উল্লেখ করা হয়েছে যে ল্যান্ডস্কেপটি শেষের দিকে স্থির ছিল, তাই আমি এই বিন্দুটি বাড়ানোর কথা ভাবিনি, তবে এটি একটি ভাল।

3
যদি কোনও সম্পদ কোনও স্পোলার হয় তবে সাধারণত সম্পদটি ক্লায়েন্টের কাছে থাকে, এনক্রিপ্ট করা হয় এবং যখন সম্পদ প্রয়োজন হয় তখন সার্ভার থেকে ক্লায়েন্টে ডিক্রিপশন কী প্রেরণ করা হয়।
অনুদান ডেভিস

4
এবং উদাহরণস্বরূপ, যদি আপনাকে কোনও মানচিত্রে এলোমেলোভাবে গাছ রাখার দরকার হয়, ক্লায়েন্টকে গাছের স্থানাঙ্ক প্রেরণের পরিবর্তে, এটি ক্লায়েন্টকে বীজ (এলোমেলো নম্বর জেনারেটরের) প্রেরণ করে।
অনুদান ডেভিস

5

ধরণের গেম সহ বেশ কয়েকটি কারণের উপর নির্ভর করে (আমি এখানে আরটিএস গ্রহণ করব, যদিও ওপেন ওয়ার্ল্ড এমএমও মাথায় আসে)। একটি বেস, স্থানীয়-থেকে-খেলোয়াড় অঞ্চলটি হয় হয় সংযোগে প্রেরণ করা হয়, বা ক্লায়েন্টের সম্পদের অংশ - একটি আরটিএস গেমের কথা ভাবুন যেখানে মানচিত্রটি ক্লায়েন্টের সাথে প্রেরণ করা হয়, বা গেম শুরু হওয়ার আগে ডাউনলোড করা হয়।

প্রকৃতপক্ষে, জালটি সাধারণত পাঠানো হত না, কারণ এটি বেশিরভাগ আরটিএস ক্ষেত্রে ইতিমধ্যে ক্লায়েন্টের উপরে থাকবে। থাকুক বা না থাকুক সংঘর্ষের মানচিত্র, যা কি সুসংগত দুই রাখার জন্য সত্যিই গুরুত্বপূর্ণ হয় পাঠানো হয়, আরেক প্রশ্ন। তবে বেশিরভাগ আরটিএসে এটি আবার ক্লায়েন্টের মধ্যে পূর্ব-সঞ্চিত থাকবে।

সুতরাং সত্যই, এটি আপনার আরটিএস জাহাজগুলি কী দিয়ে নিয়ে যায়, আপনি খেলার সময় আগে মানচিত্র ডাউনলোড করেন বা খেলা শুরু হওয়ার সময় নির্ভর করে when

এর পরে, সিঙ্ক থাকার কয়েকটি সাধারণ উপায় রয়েছে:

  • ডেল্টাস ক্লায়েন্টের কাছে প্রেরণ করা হয় - স্থানীয় / ক্লায়েন্ট বিশ্বকে সার্ভারের সাথে আপডেট রাখার সবচেয়ে সাধারণ এবং দক্ষ উপায়;
  • চেকসামগুলি মাঝেমধ্যে সার্ভার থেকে ক্লায়েন্ট বা ক্লায়েন্টের কাছে সার্ভারে প্রেরণ করা হয় যাতে বিশ্ব রাষ্ট্রটি সত্যই মেলে না তা নিশ্চিত করার জন্য;
  • মাঝেমধ্যে ক্লায়েন্টকে পুনরায় সংযুক্ত করতে পুরো রাজ্যটি অসন্তুষ্ট হয় - প্রায়শই ভাসমান পয়েন্ট ড্রিফ্টের মতো প্রযুক্তিগত উদ্বেগগুলির ফলাফল হিসাবে।

4

আপনার যথাযথ প্রশ্ন হিসাবে জিজ্ঞাসা করা হয়েছে, আমি জানি না কীভাবে লীগ অফ লেজেন্ডস এটি পরিচালনা করে। আমি কখনই সেই খেলাটি খেলিনি, সুতরাং এটির প্রয়োজন আছে কিনা তা আমি সুপারিশ করতে পারি না।

তবে আপনার প্রশ্নের উত্তর, সাধারণভাবে, মোটামুটি সহজ এবং সোজা:

যদি ডেটা স্থিতিশীল থাকে এবং আপনি নিশ্চিতভাবেই জানেন যে এটি কখনই পরিবর্তিত হবে না (পর্যায়ক্রমিক পূর্ণ গেম-আপডেটের সংক্ষিপ্ততা, তবে এটি পৃথক পৃথক), তবে কেন আপনি কখনই সেই অতিরিক্ত ডেটা প্রেরণ করতে চান? সাধারণত আপনি যা এড়ানো যায় তা প্রেরণ এড়াতে চেষ্টা করুন। যোগাযোগের প্রয়োজন হলে কেবল ডেটা প্রেরণ করুন ।

অন্যদিকে, সময়ের সাথে সাথে যদি ডেটা পরিবর্তন হয়ে যায় , বা আপনি যদি কেবল সেই বিকল্পটি খোলা রাখতে চান, তবে আপনি কি সত্যিই এই বিষয়ে পছন্দ করেন? এই ক্ষেত্রে, আপনাকে অবশ্যই ডেটা প্রেরণ করতে হবে । অন্যথায় ক্লায়েন্টের যা প্রয়োজন তা তা নেই।

এটি কেবলমাত্র ভূখণ্ডের ডেটা নয়, সমস্ত নেটওয়ার্ক যোগাযোগের ক্ষেত্রে প্রযোজ্য। সব


2

না।

আমি লিগ অফ লেজেন্ডসের উত্স সম্পর্কে খনন সম্পর্কে একটি মেলা করেছি, এবং চ্যাম্পিয়ন মডেল, শপকিপার, সাধারণ মানচিত্রের পটভূমি এবং ফ্লাফ প্রাণীদের সহ সমস্ত কিছু সত্যের পরে যুক্ত হয়েছে (কিছু শৈলীতে ছোট কাঠবিড়ালি এবং একটি শামুকের মতো) নদী) ক্লায়েন্ট পাশে রাখা হয়। ক্লায়েন্টের কাছে এই সমস্ত মডেল রয়েছে এমন একটি কারণ এলওএল অনেকগুলি গিগাবাইট বড়।

এই সমস্ত ডেটা সার্ভার থেকে ক্লায়েন্টে স্থানান্তর করা নরককর হবে, ব্যান্ডউইদথ ব্যবহারের মাধ্যমে চিবানো উল্লেখ না করে কেবল পরবর্তী সমস্ত খেলায় এটি করা।

তাহলে এর সমাধান কীভাবে হয়? প্রতিটি প্লেয়ার সার্ভারে কেবল গেমের অন্যান্য খেলোয়াড়ের কাছে গুরুত্বপূর্ণ ডেটা প্রেরণ করে। কিউ কোলডাউনে আপনার 5 সেকেন্ড বাকি আছে বা ডিপ টেরর থার্স স্কিন আপনার জন্য বুদবুদ তৈরি করে কিনা তা কারওই জানা দরকার। খেলাতে যে জিনিসগুলি পাস হয় সেগুলি হ'ল ভেলকোজ কাস্টেড কিউ, ভিক্টর বাম দিকে সরানো ইত্যাদি ...

আরও স্পষ্টভাবে, স্ক্রিন লোড করার ক্ষেত্রে, আপনি যে বিষয়টি সামনে এনেছেন, সেখানে মাঝের প্যাচ প্যাচগুলির মতো জিনিস রয়েছে যা প্রতিটি খেলোয়াড়কে খেলা শুরুর আগে দাঙ্গার সার্ভারের সাথে কথা বলা, সুরক্ষার সংযোগ হ্যান্ডশেক এবং এন্টি প্রতারক প্রোটোকলগুলির প্রয়োজন হয়।

বিঃদ্রঃ:

আপনি যদি ক্লায়েন্টের কী স্টাফ রয়েছে তার চারপাশে দেখতে চান এবং তাই সার্ভারটি আপনাকে পাস করে না, সি: \ দাঙ্গা গেমস AD র‌্যাডস \ লল_গেম_স্লায়েন্ট \ প্রজেক্ট ফোল্ডারটি (এটি কিছুটা বন্ধ হতে পারে, আমাকে ক্ষমা করুন আমি ') সন্ধান করুন' আমি এখনই স্মৃতি বন্ধ করে দিচ্ছি) এবং একটি .আরএফ ফাইল আনপ্যাকার অনলাইনে সন্ধান করুন। তারপরে আপনি স্থানীয়ভাবে আটকানো সমস্ত সামগ্রী স্ক্রিন স্প্ল্যাশ এবং ত্বকের টেক্সচার এমনকি চ্যাম্পিয়ন কঙ্কালের মতো দেখতে পাচ্ছেন।


1
দেখে মনে হচ্ছে এটি বাস্তবায়নের সুস্পষ্ট উপায়টি হ'ল ক্লায়েন্টের অনুরোধটি (কোনও উত্সর্গীকৃত সম্পদ-সার্ভারের কাছ থেকে) এটি ইতিমধ্যে স্থানীয়ভাবে সংরক্ষণ করা হয়নি এমন কোনও সম্পদ রয়েছে এবং এটি যখন এগুলি গ্রহণ করে, তখন এটি (আধা) স্থায়ীভাবে এর সাথে যুক্ত করে its স্থানীয় ডিস্কে অবিরাম স্টোর। এইভাবে সম্পদগুলি কেবল একবার ডাউনলোড করা হয় এবং কেবল যখন সেগুলি প্রকৃত প্রয়োজন হয়। (একবার এটি কাজ হয়ে গেলে, একটি অনুকূলকরণ হ'ল ক্লায়েন্টের স্থানীয় স্টোরটিকে পূর্বের জনসম্পদ হিসাবে প্রয়োজনীয় যা খুব সম্ভবত প্রয়োজন হয় with এটি গেমের ইনস্টলার প্যাকেজটিকে আরও বড় করার ব্যয়ে প্রথম সংযোগের সময় গেমের শুরু হওয়ার সময়কে হ্রাস করবে)
জেরেমি ফ্রাইজনার

1
পুনঃটুইট করেছেন এটি এই পোস্টে বর্ণিত বর্তমান বাস্তবায়নগুলির চেয়ে খারাপ বলে মনে হচ্ছে, যা আপনি সময়ের আগে সমস্ত সম্পদ ইনস্টল করেছেন যাতে আপনার যখন প্রয়োজন হয় তখনই তা তাৎক্ষণিকভাবে উপলব্ধ হয়ে যায়। এটি একটি একক প্লেয়ার গেমের জন্য ঠিক কাজ করতে পারে, যদিও আমি মনে করি যে খেলার প্রচুর পরিমাণে নতুন সম্পদ ডাউনলোড হওয়ার জন্য অবিচ্ছিন্নভাবে অপেক্ষা করার চেয়ে অনেক লোক দীর্ঘতর ইনস্টলেশন সময়ের (এবং আরও বেশি ডিস্ক স্পেস ব্যবহার) পছন্দ করবে।
অ্যান্থনি গ্রিস্ট

2
একটি মাল্টিপ্লেয়ার গেমের জন্য? সম্পূর্ণ বিপর্যয়। আপনি গেমটি শুরু করার অপেক্ষায় প্রতিটি অন্যান্য খেলোয়াড়কে রাখতে চান না কারণ একজন ব্যক্তির এমন কিছু সম্পদ ডাউনলোড করতে হবে যা তাদের এখন পর্যন্ত প্রয়োজন নেই।
অ্যান্টনি গ্রিস্ট

1
@ অ্যান্টনিগ্রিস্ট এজন্য কিংবদন্তীর লিগের মতো অনেক গেমের জন্য কোনও খেলোয়াড়কে ম্যাচ সন্ধানের জন্য কাতারে যোগ দেওয়ার আগে সমস্ত গেমের সম্পদ ডাউনলোড করা প্রয়োজন। গেমের পিছনে থাকার চেয়ে এটি আরও ভাল কাজ করে যখন আপনি বড় সম্পত্তির জন্য অপেক্ষা করেন। মনে রাখবেন যে গেমের এই জেনারায়, খেলোয়াড়রা পিংয়ের মধ্যে 10 এমএস হ্রাসকে কেন্দ্র করে উত্তেজিত হয় এবং প্রায়শই <50 এমএস পিংয়ের সাথে খেলতে থাকে এবং যদি তা 100 থেকে 150 রেঞ্জে যায় তবে তা বলতে পারে। গেমের সময় কোনও সম্পদ আনার জন্য অপেক্ষা করা কোনও মোবা বা এফপিএস-এ বিপর্যয় ঘটবে এবং যদি এটি ভুল সময়ে ঘটে থাকে তবে এটি গেমের ফলাফলকেও পরিবর্তন করতে পারে।
JustWannaFly

@ অ্যান্টনিগ্রিস্ট (অবিরত) আমার ধারণা আপনি এটি সম্পর্কে এইভাবে ভাবতে পারেন। কিছু মাল্টিপ্লেয়ার / প্রতিযোগিতামূলক গেমগুলিতে, খেলোয়াড়রা আরও বেশি রিয়েল টাইম গেম-প্লে অভিজ্ঞতার জন্য আরও বেশি লোডিং / প্যাচিং / ইনস্টলেশন সময়ের জন্য ক্লায়েন্টকে সমস্ত আপডেটিং এবং সারি প্রবেশের যত্ন নেয় trade এটি কেবলমাত্র সম্পদের প্রয়োজনীয় নির্দিষ্ট খেলোয়াড়কে অপেক্ষা করতে হবে যতক্ষণ না তিনি প্রিমড পার্টিতে যোগ দিতে চান, তবে দলের সকল খেলোয়াড়কে প্রতিপক্ষ খুঁজে পেতে কাতারে প্রবেশের জন্য অপেক্ষা করতে হবে
JustWannaFly

1

এটি যেখানে করা হয়নি তার একটি উদাহরণ হ'ল এল্ডার স্ক্রোলস অনলাইন, যেখানে এটি ক্লায়েন্টকে স্থল স্তরের উচ্চতা সম্পর্কে বিশ্বাস করেছিল ।

সোনার খননকারীরা বেশ কয়েক ফুট নীচে স্থল স্তরে নেমেছে। এরপরে তারা পিসি দ্বারা দেখা বা এনপিসি দ্বারা আক্রমণ না করে নীচ থেকে ভূখণ্ডের "নীচে" এবং খনিজ সংস্থাগুলির কাছাকাছি চলতে পারে।

অনুরূপ সম্পাদনাগুলি এগুলিকে সহজেই ক্লিফসের অনুমতি দেয় যাতে তারা এগুলি চলাফেরা করতে পারে, স্থির প্রাচীরের নীচে সরাতে বা রুট করতে পারে, সমস্ত স্থিতিশীল বস্তুর মাধ্যমে দেখতে পারে ইত্যাদি could

মূলত, প্লেয়ারটির অবস্থান সম্পর্কে সার্ভার ক্লায়েন্টকে বিশ্বাস করে, সমস্ত স্ট্যাটিক্সের বিরুদ্ধে প্রতিটি খেলোয়াড়ের জন্য সার্ভারের পাশে সংঘর্ষের গণনা করা বেশ ভারী হবে।

ফুরকাডিয়ার মতো টাইল-ভিত্তিক গেমগুলিতে এটি আলাদা: ক্লায়েন্টটি কেবল তখন কর্মটি প্রদর্শন করে যখন সার্ভার এটি ফলাফল বলে।


1
টিএল; ডিআর: সর্বদা অনুমান করুন যে ক্লায়েন্টটি মিথ্যা, প্রতারণা, জারজ । তবে সমস্ত কিছুর সার্ভার বৈধতা আপনার ক্ষমতা হ্রাস করে।
ড্রাকো 18
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.