এমএমওগুলিতে সার্ভারের পাশের প্রতিটি বস্তুর স্থানাঙ্ক সংরক্ষণ করা


12

একটি এমএমওআরপিজিতে:

সংঘর্ষ সনাক্তকরণের জন্য সার্ভারের পাশে প্রতিটি গাছ, গুল্ম রক .. ইত্যাদি এর স্থানাঙ্কগুলি সংরক্ষণ করা কি সাধারণ বা সম্ভব?

যদি তা হয় তবে এত বিশাল সংখ্যক স্থানাঙ্ক (ডেটা স্ট্রাকচার এবং এ জাতীয়, পারফরম্যান্স ইস্যু হ্যান্ডলিং) সঞ্চয় করার সম্ভাব্য উপায় কী হবে?

যদি তা না হয় তবে সার্ভারটি একেবারেই চেক করছে না, এই ধরণের সংঘর্ষ শনাক্তকরণটি ক্লায়েন্ট পক্ষেই সম্পূর্ণভাবে সম্পন্ন হয়?

বা ক্লায়েন্ট চেকিং সংঘর্ষ এবং সার্ভার যাচাইয়ের সাথে কোনও মাঝের মাঠ আছে? যদি তা হয় তবে সার্ভারে স্থানাঙ্কগুলি না রেখে সার্ভার কীভাবে এটি যাচাই করবে?


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

2
-1 "প্রশ্ন কোনও গবেষণা প্রচেষ্টা দেখায় না"।
ভায়ল্যানকোর্ট


প্রকৃতপক্ষে, সম্ভবত কোনও সদৃশ নয়, আমি স্পেসিয়াল পার্টিশন স্কিম এবং স্পেসিয়াল ডেটা স্ট্রাকচার সম্পর্কে শিখলাম যা অন্য প্রশ্নের ছিল না
সাজিত দিলশান জামাল

উত্তর:


15

সম্ভাব্যতার থেকে স্বতন্ত্র (হ্যাঁ, স্কেলের উপর নির্ভর করে) প্রায়শই আরও ভাল বা সহজ উপায় থাকে।

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

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

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


7

হ্যাঁ - এটি সম্ভব। এমএমওগুলি প্রায়শই গেমের জগতকে একাধিক অঞ্চলে বিভক্ত করে, কারণ এটি কাজটি সহজ করে তোলে, তবে আপনি এটি 1 টি বৃহত্তর অঞ্চল দিয়ে করতে পারেন - আপনার কেবল একটি ভাল স্থানিক পার্টিশন স্কিম ব্যবহার করা দরকার।

যেহেতু এমএমওগুলিতে বেশিরভাগ অবজেক্ট সরে না যায়, আপনি প্রিপ্রসেসিং পাসও করতে পারেন যেখানে সংঘর্ষের পরীক্ষার গাছগুলি তৈরি করতে অবজেক্টগুলি ব্যবহৃত হয়।

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

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

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

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


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