মাল্টিপ্লেয়ার স্পেস পার্টিশনের কার্যকর সমাধান?


10

এই প্রশ্নটি কিছুটা জটিল, তবে আমি এটি পরিষ্কার করার চেষ্টা করব।

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

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

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

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


আপনি কি কেবল একটি শারীরিক সার্ভারে সীমাবদ্ধ?
প্যাট্রিক হিউজেস

শেষ পর্যন্ত, না। তবে সরলতা এবং অর্জন উভয়ের জন্যই, আমি এই প্রকল্পটিকে আরও জটিল করতে পারি না :)
গ্রিমশা

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

আমি আপনার দৃষ্টিভঙ্গির সাথে পুরোপুরি একমত এবং সম্ভবত আমার প্রশ্নে আমি কিছু মিস করেছি। বক্সের ঘরের একেবারে ডানদিকে একজন খেলোয়াড় এবং ডান প্রতিবেশী ঘরের একেবারে বামে যদি একজন খেলোয়াড় থাকে? তারা একে অপরকে দেখতে হবে! ওউ-র মতো গেমটির জন্য দুনিয়া অব্যাহত দেখায় .. এটি আমি বুঝতে পারি না, কীভাবে একটি অবিচ্ছিন্ন ওয়ার্ল্ড গ্রিড তৈরি করা যায়, কীভাবে এটি দক্ষ রাখা যায়? অবশ্যই এমন পরিস্থিতি রয়েছে যখন দুটি "সার্ভার" থেকে প্লেয়ারদের একে অপরকে দেখা উচিত :)
গ্রিমাশা

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

উত্তর:


5

আমি যা বুঝি সে থেকে আপনার সার্ভারে কোনও ধরণের পদার্থবিজ্ঞান চলবে।

যদি এটি হয় তবে এআই / পদার্থবিজ্ঞানের জন্য স্পেস বিভাজন ছাড়াও অন্যান্য কৌশল রয়েছে। সর্বাধিক থেকে কম সুস্পষ্ট:

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

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

অবশ্যই আনুমানিক সংঘর্ষ শনাক্তকরণ কিছু বিঘ্ন তৈরি করবে, তবে আপনি সময়ে সময়ে আরও নির্ভুলতা যুক্ত করে এগুলি সমাধান করতে সক্ষম হবেন।

পদার্থবিজ্ঞানের বিষয়ে আপনার লিবিসের দিকে নজর দেওয়া উচিত যা ওপেনসিএল বা সিইউডিএর মতো কিছু জিপিজিপি সিস্টেমকে সমর্থন করে যদি আপনার কোনও সার্ভারেও অ্যাক্সেস থাকে যা সমর্থন করে।


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

@ ডেভিলউইথিন এটির সহায়তা করা উচিত এবং এটির ক্লায়েন্টের পক্ষে কোনও পরিবর্তন প্রয়োজন। আমি উত্তরে আরও কয়েকটি বিশদ যুক্ত করেছি।
কোয়েট

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