রিয়েল-টাইম মাল্টিপ্লেয়ার প্ল্যাটফর্মার গেম তৈরিতে কী জড়িত?


13

আমি একটি প্ল্যাটফর্মার গেম তৈরি করছি যার একটি "সমবায়" বৈশিষ্ট্য রয়েছে যা আমি নেটওয়ার্ক / ইন্টারনেটের মাধ্যমে কাজ করতে চাই।

এখন আমি গেম নেটওয়ার্কিং সম্পর্কে প্রতিটি প্রোগ্রামারকে যা জানা দরকার তার মতো নিবন্ধগুলি সহ নেটওয়ার্ক গেম প্রোগ্রামিং পড়তে পেরেছি এবং তাই আমি পিয়ার-টু-পিয়ার লকস্টেপ এবং সার্ভার-ক্লায়েন্টের পূর্বাভাস আর্কিটেকচারের মতো কৌশলগুলির মধ্যে পার্থক্য বুঝতে পারি:

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

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

মাল্টিপ্লেয়ার প্ল্যাটফর্মার গেমের জন্য আমি কীভাবে একটি ক্লায়েন্ট ভবিষ্যদ্বাণীপূর্ণ সিস্টেম তৈরি করতে যাব?


1
একটি সমবায় খেলায় আপনার চিন্তার খুব কম কারণ হ'ল প্রতারণা;)
জোনাথন কনেল

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

-1, "কত কাজ" বিষয়গত।
টেট্রাড

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

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

উত্তর:


5

আমি মনে করি না যে আপনি যদি এই জাতীয় কোনও বৈশিষ্ট্য বাস্তবায়নের সিদ্ধান্ত নেন তবে আপনার কোড বেসের অর্ধেকটি নেটওয়ার্ক কোডে পরিণত হবে।

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

ক্লায়েন্টের উপর, আপনি স্থানীয়ভাবে দু'জন খেলোয়াড়ের জন্য কো-অপ খেলা খেলছেন, যদি আপনি কীবোর্ড থেকে পি 1 এবং নেটওয়ার্ক থেকে পি 2 না পড়েন তবে আপনি এটিকে আলাদাভাবে প্রয়োগ করেন।

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


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

1
না, আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি মাঝে মাঝে পুরো গেমের রাজ্য প্রেরণ করেন, তাই ক্লায়েন্ট নিশ্চিত করতে পারেন যে এটি খুব বেশি দূরে নয়।
নট

2

আমার কাছে ক্লায়েন্টের পূর্বাভাসের সাথে একটি সম্পূর্ণ ক্রিয়ামূলক এমএমওআরপিজি শৈলীর খেলা রয়েছে (গেমটি সমাপ্তি থেকে অনেক দূরে তবে এটি 'ওকে' চালায়) এবং সার্ভারের জন্য কোডের ৪০.০০ লাইন এবং ক্লায়েন্টের জন্য ডাবল (সরঞ্জাম ইত্যাদির জন্য একই পরিমাণ যোগ করুন) ।)। ভবিষ্যদ্বাণীটি কয়েক শ 'রেখার বেশি নয় (এমনকি তা সত্ত্বেও) এবং পুরো নেটওয়ার্কটি কয়েক হাজার লাইনের একটি অংশ জুড়েছে তবে ৫,০০০ বলার চেয়ে বেশি নয় (আপনি লাইনটি কোথায় আঁকেন এটি কিছুটা নির্ভর করে)।

অস্পষ্ট প্রশ্নটির অস্পষ্ট উত্তর ;-)


2

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

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

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.