আমি কীভাবে পি 2 পি মাল্টিপ্লেয়ার গেম তৈরি করতে পারি? আমি একটি সার্ভার-কম মাল্টিপ্লেয়ার গেম চাই। কিন্তু তারপরে, সমস্ত ক্লায়েন্টরা একে অপরকে কীভাবে জানবে?
মাল্টিপ্লেয়ার গেমগুলিতে পি 2 পি-প্রোটোকল ফাইল স্থানান্তরে এত বিখ্যাত কেন?
আমি কীভাবে পি 2 পি মাল্টিপ্লেয়ার গেম তৈরি করতে পারি? আমি একটি সার্ভার-কম মাল্টিপ্লেয়ার গেম চাই। কিন্তু তারপরে, সমস্ত ক্লায়েন্টরা একে অপরকে কীভাবে জানবে?
মাল্টিপ্লেয়ার গেমগুলিতে পি 2 পি-প্রোটোকল ফাইল স্থানান্তরে এত বিখ্যাত কেন?
উত্তর:
পিয়ার টু পিয়ার গেমসগুলিতে সাধারণত একটি গেম হোস্ট থাকে। এটি গেম হোস্ট যা মাস্টার গেমসের তালিকায় গেমটি পোস্ট করে এবং নতুন সংযোগ গ্রহণ করে। যখনই গেম হোস্ট কোনও নতুন ক্লায়েন্টকে গেমটিতে গ্রহণ করে এটি বিদ্যমান ক্লায়েন্টকে নতুন ক্লায়েন্ট সম্পর্কে অবহিত করে যাতে তারা নিশ্চিত করতে পারে যে তারা নতুন ক্লায়েন্টের সাথে সংযুক্ত রয়েছে।
পি 2 পি বাস্তবায়নের সহজ উপায় হ'ল লবি। সমস্ত ক্লায়েন্ট একটি লবিতে হোস্টের সাথে সংযুক্ত হন (বা চ্যাট রুম)। হোস্ট প্রস্তুত হয়ে গেলে প্লেয়ারের প্রেসগুলি শুরু হয় এবং তারা সবাই একই সময়ে গেমটিতে প্রবেশ করে (সাধারণত কৌশল কৌশলগুলিতে ব্যবহৃত হয়)। আরও জটিল পদ্ধতির মধ্যে রয়েছে "ড্রপ-ইন ড্রপ-আউট" ব্যবহার করা যেখানে খেলোয়াড়রা মিড গেমটিতে যোগ দিতে এবং ছেড়ে দিতে পারে, তবে এটি পি 2 পি গেমটিতে প্রয়োগ করা অনেক জটিল এবং এর জন্য হোস্ট-মাইগ্রেশন নামে একটি বৈশিষ্ট্য প্রয়োজন।
বেশিরভাগ গেমস বেশিরভাগ কৌশল, স্পোর্টস এবং ড্রাইভিংয়ের শিরোনাম সহ পিয়ার টু পিয়ার ব্যবহার করে use প্রায় সমস্ত এক্সবক্স 360 এবং পিএস 3 গেমগুলি পি 2 পি নেটওয়ার্কিং ব্যবহার করে। ক্লায়েন্ট-সার্ভার আর্কিটেকচার বেশিরভাগ প্রথম ব্যক্তি শুটার বা এমএমও গেমগুলিতে ব্যবহৃত হয়।
ক্লায়েন্ট-সার্ভার কার্যকরভাবে কার্যকর করা সহজ যেহেতু কেবলমাত্র 1 টি মেশিন পুরো গেমের অবস্থা জানে না, ক্লায়েন্টরা মূলত কিছু মসৃণ দেখানোর জন্য কিছুটা ভবিষ্যদ্বাণী সহ রেন্ডার করে।
আপনি যখন একটি পি 2 পি ইঞ্জিন তৈরি করেন, সমস্ত ক্লায়েন্টদের গেম ওয়ার্ল্ডের একটি সম্পূর্ণ রাজ্যের প্রয়োজন এবং তাদের সকলকে সিঙ্কে থাকা প্রয়োজন।
পি 2 পি এবং ক্লায়েন্ট-সার্ভার আর্কিটেকচার সম্পর্কে আরও তথ্যের জন্য আমি আপনাকে নীচের নিবন্ধটি পড়ার পরামর্শ দিচ্ছি: প্রতিটি প্রোগ্রামার গেম নেটওয়ার্কিং সম্পর্কে জানতে প্রয়োজনীয় ।
এবং আপনি যদি সাধারণভাবে নেটওয়ার্কিংয়ে নতুন হন তবে সেই সাইটের অন্যান্য দুর্দান্ত নিবন্ধগুলি চেকআউট করুন। গ্লেন একটি নেটওয়ার্কিং প্রতিভা।
পি 2 পি গেমগুলিতে জনপ্রিয় নয় এমন বেশিরভাগ কারণ রয়েছে বেশিরভাগ পিছনে। সবাই ধীর গতির খেলোয়াড়ের মতো ধীর। আমরা এখানে ব্যান্ডউইথের কথা বলছি না, তবে পিং টাইম করছি।
পি 2 পি প্রচুর পরিমাণে ডেটা স্থানান্তর করতে পারে তবে এটি বেশ উচ্চ পিংয়ের সাহায্যে গেমসকে খুব কম পরিমাণে ডেটা সঞ্চার করতে হবে, ন্যূনতম পিং সময় সহ।
পিয়ার-টু-পিয়ার সিস্টেম এবং অ্যাকশন গেম সম্পর্কে কিছু আকর্ষণীয় দিক রয়েছে। আমি তাদের গ্লেন ফিডারের ব্লগে একটি মন্তব্য হিসাবে পোস্ট করার চেষ্টা করেছি, তবে দৃশ্যত তিনি ভুল প্রমাণিত হতে পছন্দ করেন না এবং পরিবর্তে পুরো নিবন্ধটি টানেন। আপনি যদি এটি পড়তে চান তবে এটি ইন্টারনেট সংরক্ষণাগারে রয়েছে।
তিনি মন্তব্যটি অনলাইনে যেতে দেননি, তাই আমি এখানে এটাকে উদ্ধৃত করব:
প্রথম পোস্ট থেকে পিয়ার-টু-পিয়ার পরামর্শটি আসলে একটি আকর্ষণীয় সূচনার পয়েন্ট, যদিও এটি সময়ে কিছুটা নির্বোধ হলেও: প্রথম সম্ভাবনাটি হ'ল আপনার পোস্টে বর্ণিত রূপ হিসাবে ভবিষ্যদ্বাণী সহ একটি আদর্শ ক্লায়েন্ট / সার্ভার মডেলের সাথে সিস্টেমটি একত্রিত করা হবে possibility গেম নেটওয়ার্কিং সম্পর্কে নীচের পি 2 পি পিং নাটকীয়ভাবে তাদের অবস্থানের উপর নির্ভর করে খেলোয়াড়দের মধ্যে পূর্বাভাসের ব্যবধান হ্রাস করবে: প্রভাব সম্ভবত বেশিরভাগ মার্কিন গেমারদের জন্য দৃশ্যমান হবে না তবে এখানে ইউরোপের 200+ পিংস বেশিরভাগ সার্ভারে স্বাভাবিক এবং সরাসরি সংযোগটি হ্রাস করবে ভবিষ্যদ্বাণীটি কোনও ইউরোপীয় সার্ভারের সাথে পিছিয়ে আছে।
সার্ভার ব্যতীত সত্যিকারের পি 2 পি পদ্ধতিটি আরও জটিল: বিকেন্দ্রীভূত নেটওয়ার্কগুলির সাথে একটি মূল উদ্বেগটি ধারাবাহিকতা নিশ্চিত করছে, বিশেষত যদি সিমুলেশনটি প্রজাপতির প্রভাব থেকে ভুগতে পারে কারণ নেটওয়ার্কের উপর প্রেরিত কমান্ডের সামান্য ভিন্ন সময় বা ভাসমান পয়েন্ট সম্পর্কিত সমস্যার কারণে। অন্তত পর্যায়ক্রমে প্রতিটি বস্তুর (প্লেয়ার, এনপিসি, ...) স্থিতি নেটওয়ার্কিংয়ের মাধ্যমে এটি সম্ভব। এমনকি একবারে সমস্ত বস্তুর জন্য এটি করাও প্রয়োজন হবে না এবং প্রতিটি ক্লায়েন্ট নির্দিষ্ট কিছু বস্তুর দখল নিতে পারে। একটি নির্দিষ্ট সময়ে পর্যাপ্ত অবজেক্টকে নেটওয়ার্কিং করা এমন পার্থক্যকে স্যাঁতসেঁতে দেওয়া উচিত যা কোনও বস্তুর প্রতিটি সিঙ্ক্রোনাইজেশনের মধ্যে গড়ে তোলে যা যথেষ্ট পরিমাণে এমনকি দ্বিতীয় বা একাধিক সিঙ্ক-বিরতির জন্যও অপ্রাসঙ্গিক হয়ে উঠতে পারে।
পি 2 পি সিস্টেমগুলির সাথে দ্বিতীয় সমস্যাটি সুরক্ষা, তবে এ ক্ষেত্রে তুলনামূলকভাবে ছোট ফিক্সের মাধ্যমে সমাধান করা যেতে পারে: ক্লায়েন্টরা প্রতিটি পদার্থবিজ্ঞানের বস্তুর ত্রুটি স্তর সম্পর্কে তথ্য সংগ্রহ করতে তাদের পদার্থবিজ্ঞানের সিমুলেশনগুলি ব্যবহার করতে পারে। চালিত পদার্থবিজ্ঞান সর্বদা একটি বৃহত্তর ত্রুটির ফলস্বরূপ, তাই ক্লায়েন্টরা কোনও সন্দেহজনক বস্তু নিয়ন্ত্রণ করে পিয়ার থেকে সংযোগ বিচ্ছিন্ন করার জন্য কেবল "ভোট" দেয় " অতিরিক্তভাবে, অ-পদার্থবিজ্ঞানের অবজেক্টগুলির জন্য নিয়ন্ত্রণ বার্তাগুলি তাদের গুরুত্বের ভিত্তিতে ক্লায়েন্টদের মধ্যে ফরোয়ার্ড করা হয়: প্লেয়ার আপডেটগুলি এলোমেলোভাবে ফরওয়ার্ড করা যায়, গুরুত্বপূর্ণ এবং বিরল আপডেট সর্বদা প্রেরণ করা উচিত, তবে এখনও একটি এলোমেলো খেলোয়াড়ের কাছে পাঠানো উচিত। কোনও খেলোয়াড়কে কোনও লক্ষণীয় উপায়ে প্রতারণা করতে সক্ষম সংযুক্ত ক্লায়েন্টদের একটি বিশাল অংশকে নিয়ন্ত্রণ করতে হবে।
[...]
আমি যে থ্রেডটি উল্লেখ করছি তা আপনি http://www.devmaster.net/forums/showthread.php?t=14640 এ খুঁজে পেতে পারেন ।
আমি মনে করি কেউ কেউ পিয়ার-টু-পিয়ারের ফায়ারওয়াল সমস্যার উল্লেখ করেছেন যা নিবন্ধের একটি থ্রেডে রয়েছে। একটি সম্ভাব্য সমাধান হ'ল NAT-পাঞ্চথ্রু:
- NAT পাঞ্চথ্রু ওভারভিউ
- পিয়ার-টু-পিয়ার যোগাযোগ নেটওয়ার্ক অ্যাড্রেস অনুবাদকদের জুড়ে
সাফল্যের কোনও 100% হার নেই, সুতরাং খেলোয়াড়দের যেভাবেই কোনও পোর্ট খোলার কথা বলা উচিত।
'সত্য পিয়ার-টু-পিয়ার' গেমপ্লেয়ের একটি ভাল উদাহরণ স্টারক্রাফ্টের মতো একটি বাস্তব-সময়-কৌশল খেলা হবে।
কয়েক ইউনিট / প্রজেক্টিলে গতিযুক্ত গেমটিতে, বারবার নেটওয়ার্কের মাধ্যমে ইউনিট পজিশন / রাজ্যগুলি অন্য সমস্ত খেলোয়াড়ের কাছে প্রেরণ করা ব্যবহারিক নয়, সুতরাং এখানে একটি সমাধান হ'ল সমস্ত খেলোয়াড়ের সিঙ্কে (হুবহু একই) সিমুলেশন চালানো।
যখন কোনও খেলোয়াড় কোনও ক্রিয়া সম্পাদন করে, কমান্ড / অর্ডার ('এক্স, ওয়াই তে জার্গলিং') অন্য সমস্ত খেলোয়াড়কে প্রেরণ করা যেতে পারে, সিমুলেশনের সমস্ত উদাহরণগুলির পরে একটি সেকেন্ডের একটি ভগ্নাংশ সম্পাদন করতে পারেন।
এই পরিস্থিতিতে যদি কোনও প্লেয়ার সংযোগ বিচ্ছিন্ন করে দেয়, গেমটি চালিয়ে যেতে পারে - যেহেতু কোনও সার্ভার / হোস্টের গেমটি চালানোর দরকার নেই, বাকি খেলোয়াড়রা চালিয়ে যেতে পারে।
তবে, গেমগুলিকে সিঙ্কে রাখা অ-তুচ্ছ, আপনাকে গেম লজিক আপডেটের জন্য একটি নির্দিষ্ট টাইমস্টেপ ব্যবহার করতে হবে এবং এলোমেলো প্রবণতাগুলি বিভ্রান্ত হবে না তা নিশ্চিত করার জন্য অবশ্যই এলোমেলো সংখ্যার জেনারেটর ব্যবহার এবং বীজ সম্পর্কে খুব সতর্কতা অবলম্বন করতে হবে!
বেশিরভাগ রিয়েল টাইম স্ট্র্যাটেজি গেমস (স্টার ক্রাফ্ট সিরিজ, কমান্ড এবং কনকয়ের সিরিজ) এবং অনেকগুলি এফপিএস গেমস (ডিউটির কল: আধুনিক যুদ্ধযুদ্ধ 2) এটি ব্যবহার করার সময় এটি গেমগুলির জন্য বিখ্যাত নয় বলে দাবি করা কিছুটা বেআইনী হবে।
এটি বলেছিল যে কোনওটি কীভাবে গেমটি সম্পর্কে জানতে পারে তা আপনার ব্যবহার বা তৈরি করা ম্যাচমেকিং / লবিং পরিষেবা is এমনকি একবার খেলা সম্পর্কে জানার পরেও এমন এক বা একাধিক সমবয়সী হতে পারে যা অন্যদের চেয়ে বেশি সমান। খেলতে ইচ্ছুক ৩ জন ক্লায়েন্টের ক্ষেত্রে, একটি খোলা নেটের পিছনে একটি, কড়া (বন্ধ) নেটের পিছনে ২ টি বিবেচনা করুন। খোলা নাট পিয়ার অন্য দুটি থেকে সংযোগ নিতে পারে। তবে 2 কঠোর একে অপরের সাথে সরাসরি সংযোগ করতে পারে না, তাদের প্যাকেটগুলি রিলে করার জন্য খোলা নাট লাগবে। খোলা নাট পিয়ারটি যদি গেমটি থেকে বাদ দেয় তবে অন্য কোনও রিলে খুঁজে পাওয়া দরকার বা গেমটি ব্যাহত হবে।
আপনি সম্ভবত কোনও খেলোয়াড়ের সাথে দৌড়াতে চান (আমরা তাকে / তাকে "হোস্ট" বলব) অননুমোদিত সার্ভার হিসাবে। অন্য সমস্ত খেলোয়াড়েরা আমাদের হোস্টের সাথে তাদের শেষের দিকে কী করছে তা জানাতে হবে এবং হোস্টটি অন্য খেলোয়াড়দের কাছে বার্তাটি রিলে করবে will
হোস্টিং প্লেয়ারের সাথে কম্পিউটারগুলি কী সংযুক্ত রয়েছে তার একটি তালিকা সম্ভবত আপনি পাস করতে চান যাতে তারা কোনও নতুন হোস্টকে বাদ দিলে কোনওভাবে বেছে নেওয়া যায় এবং বাকী খেলোয়াড়দের সাথে যোগাযোগ শুরু করতে পারে।
স্মার্টফক্সসভারের জন্য ডকুমেন্টেশন আপনাকে সাহায্য করতে পারে এবং / অথবা আপনি এটি আপনার গেমের জন্যও ব্যবহার করতে চান। আপনি আলাদা ক্লায়েন্ট এবং সার্ভার প্রোগ্রাম না করে কেবল এটি আপনার ক্লায়েন্ট গেমটিতে এম্বেড করবেন।
আমি এই বিষয়ে কিছুটা আগ্রহী। আপনি বলছেন যে ক্লাসিক ক্লায়েন্ট-সার্ভার মডেলের পরিবর্তে গেম পি 2 পি তৈরিতে প্রচুর সমস্যা রয়েছে। তবে আমি নিশ্চিত যে পি 2 পি ক্লায়েন্ট-সার্ভারের মতো তবে প্রতিটি পিয়ার সার্ভারে পরিণত হওয়ার সুযোগ পান। ল্যাগ সম্পর্কে যদি আপনি সার্ভার হিসাবে আরও একটি মেশিন যুক্ত করেন তবে অনেক ক্লায়েন্ট সার্ভার থেকে আরও এগিয়ে আসার সম্ভাবনা রয়েছে তবে পি 2 পি ব্যবহার করে লবিতে কোনও অতিরিক্ত মেশিন নেই আপনি লটেন্সি পরীক্ষা পরিচালনা করতে পারবেন এবং ন্যূনতম পিংয়ের সাথে গোষ্ঠী তৈরি করতে পারবেন। ট্র্যাফিক উত্পন্ন সম্পর্কে, যেমন আমি শিখেছি আপনাকে অবশ্যই ক্লায়েন্টদের কম সংখ্যক প্রেরণ করতে বলতে হবে মানে ক্লায়েন্টরা অন্য সমস্ত ক্লায়েন্টকে বোঝাতে ইচ্ছুক তা বোঝাতে হবে।
আপনি যদি কম সিস্টেমের প্রয়োজনীয়তাগুলির সাথে তুলনামূলকভাবে সাদামাটা মিম্পোরপিজ তৈরি করে থাকেন তবে আমি একটি অভ্যন্তরীণ প্রোগ্রাম তৈরি করার পরামর্শ দেব যা গেমের ফোল্ডারের বিষয়বস্তু এবং ফাইলগুলি কী কী অন্তর্ভুক্ত তার উপর ভিত্তি করে "ফ্রিকোয়েন্সি" তৈরি করে। এটি একই চ্যানেলগুলিতে একই "ফ্রিকোয়েন্সি" সহ লোকেদের খেলতে সক্ষম করবে। মোডেড, হেরফের বা সাধারণ ক্লায়েন্ট পৃথক করা হবে। এটি কেবল নেটিভ হ্যাক বা মোডের জন্যই কাজ করবে তবে আমি নিশ্চিত যে এটি "বোবা" সকল প্রতারককে কভার করে। ত্রুটি যাচাইয়ের পদ্ধতির সাথে একত্রিত হওয়া যে একজন ব্যক্তি উল্লেখ করেছেন তার অর্থ সামান্য থেকে কোনও সংযম প্রয়োজন। যতদূর বন্দরগুলি যেতে পারে, কেবলমাত্র এটি 52225 পোর্টের ব্যাকগ্রাউন্ড প্রক্রিয়া সহ কভার করুন যা এটি ট্রিগার-পোর্ট ছাড়াই রাউটারগুলিতে প্লাগ করে রাখে।