অনলাইন মাল্টিপ্লেয়ার গেম বেসিকস [বন্ধ]


9

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

মূল প্রশ্নটি হল আমার নেটওয়ার্কটি কীভাবে সংগঠিত করা উচিত?

ইউডিপি সংযোগহীন, কে কে বাঁচাব? আমি কি তালিকায় ক্লায়েন্টদের আইপি অ্যাড্রেসগুলি সংরক্ষণ করব?

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

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


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

এটি খুব বিস্তৃত। প্রশ্নটি সম্পাদনা করা উচিত (এটি নির্দ্বিধায় মনে করুন, এটি বেশ পুরানো) আরও বেশি অন-টপিক হতে হবে, তারপরে এটি আবার খোলা যেতে পারে।

উত্তর:


6

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

তবে ইউডিপি ব্যবহারের ক্ষেত্রে বড় সমস্যাটি হ'ল এমন অনেকগুলি সাইট রয়েছে যা সমস্ত ইউডিপি ট্র্যাফিক (ডিএনএস ব্যতীত) অবরুদ্ধ করে দেয় কারণ অনেক প্রশাসক বিশ্বাস করেন এটি একটি ভাল সুরক্ষা অনুশীলন।

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

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

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


1
মূল প্রশ্নটিতে একটি ক্লায়েন্ট-সার্ভারের মডেল উল্লেখ করা হয়েছে, সুতরাং এমন সমস্ত "সাইট" যা সমস্ত ইউডিপিকে অবরুদ্ধ করে; এটি ক্লায়েন্টের সমস্যা এবং আমি সন্দেহ করি অনেক ক্লায়েন্টের আসলে সমস্ত ইউডিপি আটকা পড়ে। "নেটওয়র্ক গেম ডেভেলপ করার সময় টিসিপি ব্যবহার করা সবচেয়ে খারাপতম ভুল আপনিই করতে পারেন! কেন বুঝতে হবে, সবকিছু এত সহজ দেখানোর জন্য টিসিপি আসলে আইপি-র উপরে আসলে কী করছে!" Gafferongames.com
নেটওয়ার্কিং-

@ প্রকৃতপক্ষে ৫০০: এর পক্ষে বিভিন্ন মতামত রয়েছে - ইউডিপি অবশ্যই কার্য সম্পাদনের সুবিধা সরবরাহ করে, তবে নির্ভরযোগ্যতার ব্যয়ে (যেখানে টিসিপির সুবিধা রয়েছে)। ইউডিপি ব্লক করার ক্ষেত্রে, আপনি ক্লায়েন্টের সমস্যা হওয়ার বিষয়ে একেবারেই সঠিক, তবে অনেকগুলি কর্পোরেট এবং শিক্ষামূলক পরিবেশে আমি ইউডিপির মুখোমুখি হয়েছি (পোর্ট 53 বাদে) ইউএসডি একটি সুরক্ষিত সমস্যা বলে মনে করে যে ক্লিলেস অ্যাডমিনদের দ্বারা অবরুদ্ধ হয়েছে, এবং সুতরাং ক্লায়েন্টের টিসিপিতে ফ্যালব্যাক করার বিকল্পটির অন্তত অর্থ এই হতে পারে যে প্লেয়ারটি গেমটি অনুভব করতে পারে (বিশেষত যদি নেটওয়ার্ক ব্যান্ডউইথ খুব দ্রুত হয়)।
র‌্যান্ডল্ফ রিচার্ডসন 1'11

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

3

এটি আপনার প্রশ্নের সরাসরি উত্তর নয়, তবে গ্যাফারনগামের নেটওয়ার্ক গেমগুলির জন্য কিছু দুর্দান্ত নিবন্ধ রয়েছে: http://gafferongames.com/networking-for-game-programmers/ কি-every-programmer-needs-to- জ্ঞান সম্পর্কে -game-নেটওয়ার্কিং /


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