কিছু নেটওয়ার্ক গেম কেন ইন্টারপোলেশন এবং কিছু রিমোট চলাচলের জন্য পাথফাইন্ডিং ব্যবহার করে?


21

এটি কিছুটা উন্মুক্ত প্রশ্ন তবে আমি দেখতে চাই যে কেউ উভয়ের পক্ষে একটি ভাল যুক্তির অবদান রাখতে পারে।

উভয়ের দ্রুত উদাহরণের জন্য:

ইন্টারপোলেশন মডেল

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

রাস্তা খোঁজা

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

কোন ধরণের গেমগুলির জন্য প্রতিটি উপযুক্ত এবং কখন একটি ব্যবহার করা উচিত?


2
এটি জিডিএসইর পক্ষে কি খুব বেশি বিস্তৃত নয়?
ক্রোমস্টার বলেছেন মনিকা

@ ক্রমস্টার্ন আমি এটির সাথে লড়াই করেছি, সুতরাং "উন্মুক্ত প্রশ্ন", যদিও আমি মনে করি এটি যথেষ্ট এবং লক্ষ্যমাত্রায় যথেষ্ট যে উভয়কেই করার অভিজ্ঞতার সাথে এটির একটি উদ্দেশ্যমূলক উত্তর দিতে সক্ষম হতে পারে। আপনার upvotes / downvotes এর সাথে ভোট দিন :)
ভাগান

সম্ভবত আপনি যদি এই অংশটি যুক্ত করেন তবে এটি আরও ভাল হয়ে উঠবে: "বিসিডির সীমাবদ্ধতায় আমার একটি সমস্যা আছে"। এই মুহুর্তে এটি খুব বিস্তৃত এবং প্রসঙ্গের অভাব রয়েছে, যেন "আমি কী নির্বাচন করব, ই বা এফ?" কখনও এবিসিডি সম্পর্কে না বলে।
ক্রমস্টার বলেছেন 5-10 মিনিটে মনিকা

1
নিয়ন্ত্রণগুলি একটি বড় অংশ। আপনি কি চারপাশে ঘোরাতে WASD বা জয়স্টিক ব্যবহার করছেন? ইন্টারপোলেশন ভাল ফিট করে। মাউস দিয়ে লক্ষ্য গন্তব্য ক্লিক? পাথ সন্ধান অনেক ভাল বলে মনে হচ্ছে।
লুয়ান

উত্তর:


43

আমি নেটওয়ার্কিং কোডে দুটি রিয়েল টাইম এএএ নেটওয়ার্ক গেমস, একটি স্মার্টফোনের জন্য এবং একটি হ্যান্ডহেল্ড কনসোলের জন্য কাজ করেছি।

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

আমি জেনারেলাইজ করতে চাই এবং কেবলমাত্র অবস্থানিক ডেটাই বিবেচনা করতে চাই না তবে আপনি কোনও নেটওয়ার্কওয়ালা ক্লায়েন্টের মধ্যে যে কোনও ধরণের ডেটা সিঙ্ক্রোনাইজ করতে পারবেন।

দুটি সম্ভাবনার পরিবর্তে, আমি শক্ত এবং নরম আপডেটগুলির মধ্যে একটি বর্ণালী প্রস্তাব করতে চাই।

  • খুবই কঠিন আপডেটগুলি হ'ল বিযুক্ত ঘটনা যা তাত্ক্ষণিকভাবে অন্য ক্লায়েন্টের সাথে কোনও প্রকার বিরক্তি ছাড়াই রাষ্ট্র পরিবর্তন করে, হয় কারণ ডেটা সমালোচনামূলক প্রকৃতির (কোনও খেলোয়াড় মারা গিয়েছিল), কারণ এটি এমন এক ধরণের ডেটা নয় যার জন্য দ্রবণের প্রয়োগ হয় (একটি অনলাইন দাবা খেলা, চ্যাট বার্তাগুলি ইত্যাদি) বা আপনার নেটওয়ার্ক আপনাকে এটি করার অনুমতি দেয় কারণ (লিঙ্কিত আর্কেড ক্যাবিনেটগুলি মনে করুন যেখানে পুরো গেমের প্রতি সেকেন্ডে 60 বার বার পাঠানো সম্ভাবনার ক্ষেত্রের মধ্যে রয়েছে)।

    এই পদ্ধতির সাহায্যে নেটওয়ার্ক বিলম্বগুলি সর্বদা বিলম্বিত আপডেট হিসাবে দেখাবে এবং চারপাশে ঝাঁপিয়ে পড়া অক্ষর হিসাবে প্রকাশিত হবে।

  • আন্ত / এক্সট্রাপোলেশন আপডেট সহ হার্ড খুব শক্ত আপডেটের মতো, তবে ক্রমাগত ডেটা পরিবর্তনের জন্য, যার জন্য প্রতিবার পরিবর্তিতভাবে এটি নির্ভরযোগ্যভাবে ডেটা প্রেরণ করা কার্যতভাবে সম্ভব নয়। একটি অবস্থান এবং একটি বেগ ভেক্টর প্রেরণ সম্পর্কে চিন্তা করুন; আপনার দুটি পয়েন্টের মধ্যে ডেটা বিভক্ত করতে সক্ষম হওয়া উচিত এবং এগুলি পরে তাদের এক্সট্রোপোলেটেড করা উচিত। যদি আগত তথ্যগুলি আপনার বহির্মুখের সাথে একমত না হয় তবে আপনার একটি आकस्मिक পরিকল্পনা করা উচিত। আমি বলব বেশিরভাগ গেমগুলির জন্য যা পজিশন আপডেটের প্রয়োজন এই পদ্ধতিটি ব্যবহার করে।

  • সিঙ্ক্রোনাইজেশন আপডেট সহ হার্ড ইন্টার / এক্সট্রোপোলেশন সহ একইরকম, তবে কেবলমাত্র খুব কমই সিঙ্ক্রোনাইজেশন প্রয়োজন। আন্তঃবাহ / বহির্মুখের জন্য সত্যই তুচ্ছ হিসাবে এমন ডেটার জন্য আপনার এটি ব্যবহার করা উচিত, যেমন মারামারি গেমের ঘড়ি (উভয় পক্ষের একবার সেট হয়ে যাওয়ার পরে, পরে এটি পুনরায় সংলগ্ন করা প্রয়োজন নয়)

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

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

    নিজেরাই ডেটা আপডেটের পরিকল্পনা করা অবশ্যই আপনার ইচ্ছা মতো শক্ত / নরম হতে পারে।

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

    এর আর একটি নন-নেটওয়ার্ক উদাহরণটি হবে সভ্যতা 4-এ যুদ্ধ অ্যানিমেশন সক্ষম করা হবে। আপনি যখন কাউকে আক্রমণ করেন তখন যুদ্ধের ফলাফলটি অবিলম্বে গণনা করা হয় তবে আপনি এটির একটি অ্যানিমেশন ফিরে খেলতে দেখবেন। আমি আপনাকে নিশ্চিত করে দিতে পারি যে যুদ্ধটি অ্যানিমেটেড হচ্ছে বলে গণনা করা হচ্ছে না।

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


1
এটি কিছু মানের অন্তর্দৃষ্টি। সংরক্ষিত এবং স্ট্যাশেড।
জিতসু

বিজয়ীর কাছে লুণ্ঠন হয়, তথ্যমূলক উত্তরের জন্য ধন্যবাদ!
ভান হিলেট

3

ভালভের উন্নয়ন প্রক্রিয়া সম্পর্কে আমার কোনও অন্তর্দৃষ্টি নেই, সুতরাং এটি নিখুঁতভাবে আমার মতামত, তবে:

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

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

আবার কখনও, আমি কখনও কোনও নেটওয়ার্ক গেম বা বড় গেমের স্টুডিওতে কাজ করি নি, তবে যা আমি মাঝে মাঝে পড়েছি তা থেকে আমি এভাবেই চলে যাব :)


0

পান্ডার পাইজামার উত্তর বেশ ভাল।

মূলত প্রশ্নটি নেমে আসে যে আপনি ন্যূনতম পরিমাণ ডেটা কী পাঠাতে পারবেন যা একাধিক ক্লায়েন্টকে একে অপরের রাষ্ট্রের একই সচেতনতায় ফেলবে এবং সেই ল্যাগ ক্লায়েন্টগুলির সময় আপনি কীভাবে আলাদা অবস্থায় থাকতে পারেন তা আপনি কীভাবে পরিচালনা করবেন।

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

তবে তিনি একটি পদ্ধতি উল্লেখ করেননি। জোরপূর্বক ফলাফল।

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

সঠিক ক্ষতিপূরণটি আমাকে পাঠানো হয়েছে তা নিশ্চিত করার জন্য একটি আসল বিশ্বের উদাহরণ হোল্ডিং প্যাটার্নের অন্যান্য সমস্ত সত্ত্বা।

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