সেরা পিয়ার-টু-পিয়ার গেমের আর্কিটেকচার


10

এমন একটি সেটআপ বিবেচনা করুন যেখানে গেমের ক্লায়েন্টরা:

  1. বেশ ছোট কম্পিউটারের সংস্থান আছে (মোবাইল ডিভাইস, স্মার্টফোন)
  2. সবগুলি একটি সাধারণ রাউটারের সাথে সংযুক্ত (ল্যান, হটস্পট ইত্যাদি)

বহিরাগত সার্ভার ছাড়াই ব্যবহারকারীরা একটি মাল্টিপ্লেয়ার গেম খেলতে চান।

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

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

এই জাতীয় স্থাপত্য নকশা করার সর্বোত্তম পদ্ধতির কী হবে? এই জাতীয় ল্যান-পর্যায়ের পিয়ার-টু-পিয়ার প্রোটোকলের কোনও পরিচিত উদাহরণ রয়েছে?

মন্তব্য:

কিছু সমস্যা এখানে সম্বোধন করা হয়েছে , তবে সেখানে তালিকাভুক্ত ধারণাগুলি আমার পক্ষে খুব উচ্চ-স্তরের।

নিরাপত্তা

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

সম্পাদনা:

আমি উল্লেখ করতে ভুলে গেছি: এটি একটি বরং দ্রুত গতির খেলা (একটি শ্যুটার) হবে।

এছাড়াও, আমি গ্যাফার অন গেমারে নেটওয়ার্কিং আর্কিটেকচার সম্পর্কে ইতিমধ্যে পড়েছি ।

উত্তর:


10

দ্বিতীয় বয়সের সাম্রাজ্যের নেটওয়ার্কিং আর্কিটেকচার সম্পর্কে এই নিবন্ধটি একবার দেখুন ।

তারা একটি মাল্টিপ্লেয়ার গেম তৈরি করতে পরিচালিত হয়েছে যা পেন্টিয়াম 90 এ 16 এমবি র‌্যাম এবং একটি 28.8 কেবি / এস মডেম সংযোগের সাথে দুর্দান্ত দৌড়েছিল। তারা প্রতিটি খেলোয়াড়কে তাদের নিজস্ব সিমুলেশন চালিয়ে এই কাজটি করেছে, তবে তাদের আদেশগুলি সিঙ্ক্রোনাইজ করে।

তাদের সেখানে কিছু চালাক কৌশল রয়েছে, আমি এটির সুপারিশ করছি।


5

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

দ্বিতীয় পয়েন্টের কারণে সিস্টেমটি অপ্টিমাইজেশনের ক্ষেত্রে জটিল হতে হবে না

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

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

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

যা বলেছিল, একাধিক ওয়্যারলেস ডিভাইসের মধ্যে নির্ভরযোগ্য একটি ক্লক সিঙ্ক স্থাপন (প্যাকেটের ক্ষয়ক্ষতির জন্য পিনের সময় অনেক বেশি) একটি বিশাল চ্যালেঞ্জ ছিল। আপনার আগ্রহ থাকলে সে সম্পর্কে আরও কথা বলতে পেরে আনন্দিত।

প্রতিটি ক্লায়েন্ট নিজেকে এবং তার আশেপাশের পরিবেশ সম্পর্কে উদাহরণস্বরূপ তথ্যের উত্স হতে পারে (উদাহরণস্বরূপ বুলেটগুলি))

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

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

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


1

আমি আপনাকে আর্কিটেকচার পিয়ারের জন্য লক স্টেপ পিয়ার ব্যবহার করার পরামর্শ দিচ্ছি।

গেমটি শুরু হওয়ার পরে আপনি আপনার গেমের ফ্রেমগুলি গণনা করে শুরু করুন। একটি ক্লায়েন্ট 1 ম ফ্রেম রেন্ডার করে তারপর অন্য ক্লায়েন্টদের কাছে প্রস্তুত বার্তাটি প্রেরণ করুন এবং অন্যান্য ক্লায়েন্টের কাছ থেকে প্রস্তুত বার্তা পাওয়ার জন্য অপেক্ষা করুন।

এখন সমস্ত ক্লায়েন্টরা ২ য় ফ্রেমের জন্য যেতে পারেন। ফ্রেমটি রেন্ডার করুন, কমান্ডগুলি প্রেরণ করুন এবং গ্রহণ করুন, ওয়ার্ল্ড আপডেট করুন, ফিজিক্স আপডেট করুন এবং এর পরে একে অপরের কাছে প্রস্তুত বার্তা প্রেরণ করুন।

এই সমাধানটি ল্যান গেমগুলির জন্য খুব ভাল এবং আপনার সমস্ত ক্লায়েন্ট সিঙ্কে থাকবে।

এই ধরণের নেটওয়ার্কিংয়ের সাথে আপনি নিশ্চিত হয়ে উঠতে পারেন যে আপনার সমস্ত ক্লায়েন্ট সিঙ্কে আছেন যাতে আপনি আপনার প্রয়োজন অনুসারে সেরা উপায়ে পরীক্ষা করতে পারেন।

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


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

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

সুতরাং দয়া করে আপনার উত্তরে রাখুন। এখনই আমি মনে করি না এটি প্রশ্নের উত্তর দেয়। এছাড়াও, দয়া করে প্রথম সদৃশ মন্তব্য মুছুন। ধন্যবাদ। ধারণাটি নিজেই, আপনার তালিকাভুক্ত প্রথম বিকল্পটির জন্য সিমুলেশনটি ডিটারমিনিস্টিক হওয়ার দরকার নেই?
ওয়্যাকিদেব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.