মাল্টিপ্লেয়ার বাস্তবায়ন, আমি যদি এটি বেছে নিই তবে কি পরে তা প্রয়োগ করতে পারি?


15

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

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

উত্তর:


24

জয়েডকম নেটওয়ার্কিং লাইব্রেরি ম্যানুয়াল থেকে গৃহীত পরামর্শগুলি এখানে :

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

সবচেয়ে পরিষ্কার উপায়টি হ'ল পুরো গেমটি বাস্তবায়ন করা যেন এটি একটি খাঁটি নেটওয়ার্ক গেম। এটি হ'ল একটি ডেডিকেটেড সার্ভারের কোড প্রয়োগ করুন এবং কেবল সার্ভার কোড হওয়ার জন্য এই কোডটি প্রয়োগ করুন। একইভাবে গেমের ক্লায়েন্ট কোডটি প্রয়োগ করুন। সার্ভার এবং ক্লায়েন্ট একই প্রক্রিয়াতে চলতে পারে এবং এমনকি সত্যিকারের নেটওয়ার্ক সকেট ব্যবহার করার প্রয়োজন নেই, তবে সেগুলি পৃথক পৃথক সত্তা হওয়া উচিত এবং সমস্ত কোডটি সেভাবে কাজ করার জন্য ডিজাইন করা উচিত। যখন প্লেয়ার লাফ দেয়, প্লেয়ারের জাম্প ভেক্টরটিকে সরাসরি পরিবর্তন না করে সার্ভারে একটি 'জাম্প-কী-চাপানো' প্যাকেটটি প্রেরণ করুন এবং সার্ভারটি সেটি পরিচালনা করতে দিন।

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

সিঙ্গেল এবং মাল্টিপ্লেয়ারের জন্য কোনও পৃথক কোড পুরো কোড ক্লিন কোড চলাকালীন নেটওয়ার্ক কোড পরীক্ষা করা এবং বিকাশিত নয়

এই স্কিমটি ব্যবহার করে এমন প্রকল্পগুলি ভূমিকম্প ইঞ্জিন, সভ্যতা 4, নেভারউইন্টার নাইটস এবং আরও অনেকগুলি ব্যবহার করে প্রায় সমস্ত গেম।

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


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

8
@ অ্যাটাকিংহোবো: আপনি কেবল ক্লায়েন্টের ভবিষ্যদ্বাণী বর্ণনা করছেন। আপনার কাছে ক্লায়েন্টের ভবিষ্যদ্বাণী এবং সার্ভার কর্তৃপক্ষ একসাথে ঠিক থাকতে পারে এবং এটি জয়েডকম ম্যানুয়ালটিতে বর্ণিত আর্কিটেকচারটি মোটেও নিষ্ক্রিয় করে না।

@ অ্যাটাকিংহোব @ জো: এবং জোয়েডকম আসলে ক্লায়েন্ট-পার্শ্বের পূর্বাভাসকে সমর্থন করে ^^
লেফটিয়াম

2

আমি লেফিয়ামের উত্তরে উদ্ধৃত পরামর্শের সাথে একমত; এটি শুরু থেকে নেটওয়ার্কিংয়ের জন্য ডিজাইন করুন, কারণ আপনি এটি পরে যুক্ত করতে সক্ষম হবেন না

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

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

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

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