মাল্টিপ্লেয়ারে লাফানোর মতো ক্রিয়াকলাপগুলি কীভাবে সিঙ্ক্রোনাইজ করা যায়?


11

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

ধরা যাক, ক্লায়েন্ট এ চলছিল, তিনি 100 মি / সেকেন্ডের বেগের সাথে 10.2 সময় 100 মিটার ছিলেন এবং এই তথ্যটি প্রেরণ করেছিলেন। ক্লায়েন্ট বি এই তথ্যটি কিছুটা পরে পাবেন, এটি 10.4 হতে দিন। তাই ক্লায়েন্ট বিতে, আমি পূর্বাভাস ব্যবহার করতে পারি এবং ক্লায়েন্ট এ 120 মিটারে রাখতে পারি। তবে কী যদি, ক্লায়েন্টটি 10.3 এ 110 মিটারে একটি লাফ দেয়। আমি এটি ভবিষ্যদ্বাণী করতে পারি না এবং যেহেতু আমি পূর্বাভাসটি ব্যবহার করছি তখন থেকে আমি ক্লায়েন্টকে অতীতে লাফিয়ে দেখাতে পারি না।

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

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


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

@ ক্রিশ্চিয়ান হে! জবাবের জন্য ধন্যবাদ. আমি এই পদ্ধতির সম্পর্কে জানি তবে এটি গেমপ্লেটিকে ঝাঁকুনিযুক্ত করে তুলতে পারে যদি বিলম্বিতা বেশি হয় এবং তদুপরি আমি অ্যাপওয়ার্পের বাএএস রিয়েলটাইম সিস্টেম ব্যবহার করি, সুতরাং আমার সমস্ত যুক্তি কেবল ক্লায়েন্টের পক্ষেই রয়েছে।
সুয়াশ মোহন

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

লেটেন্সি পরিচালনার জন্য ভাল টিপস দেওয়ার জন্য আমি এই টিউটোরিয়াল সিরিজটি সম্প্রতি পেয়েছি, দেখে মনে হচ্ছে এটি আপনার আগ্রহের সাথে সম্পর্কিত: লিঙ্ক
ক্রিস ওয়েলশ

উত্তর:


8

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


4
আমার প্রথম নেটওয়ার্কযুক্ত মাল্টিপ্লেয়ার গেমটি লেখার সময় আমি এই পদ্ধতির ব্যবহার করেছি। প্রকৃতপক্ষে আমি @ ggambett এর রেফারেন্স হিসাবে ব্যবহার করেছি। এটা আমার জন্য ভাল কাজ করেছে।
NoobsArePeople2

1

উত্স ইঞ্জিন সম্পর্কিত একটি মোটামুটি বিস্তারিত লেখা আছে। এটি প্রদর্শিত হবে প্রাসঙ্গিক উত্স কোডের উত্স এসডিকে অংশ হিসাবেও উপলব্ধ is

https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

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

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