বামন কেল্লায় আপনি যে কোনও সময়ে শত শত বামন, প্রাণী, গাবলিন ইত্যাদি খেলতে পারবেন, যার প্রতিটি নিজস্ব জটিল এআই এবং পাথফাইন্ডিং রুটিন রয়েছে। আমার প্রশ্ন হ'ল এটি কীভাবে লক্ষণীয় মন্দা তৈরি করে না? প্রতিটি বামন কি তার নিজস্ব থ্রেডে চালাচ্ছে?
বামন কেল্লায় আপনি যে কোনও সময়ে শত শত বামন, প্রাণী, গাবলিন ইত্যাদি খেলতে পারবেন, যার প্রতিটি নিজস্ব জটিল এআই এবং পাথফাইন্ডিং রুটিন রয়েছে। আমার প্রশ্ন হ'ল এটি কীভাবে লক্ষণীয় মন্দা তৈরি করে না? প্রতিটি বামন কি তার নিজস্ব থ্রেডে চালাচ্ছে?
উত্তর:
যে কোনও সিস্টেমে এতগুলি অক্ষরের প্রত্যেকটির জন্য একটি থ্রেড ছিল খুব দ্রুত সংস্থান থেকে চলে যাবে। থ্রেডগুলি আপনাকে অতিরিক্ত প্রসেসরের কোরগুলিতে অ্যাক্সেস দিতে পারে তবে তারা অভ্যন্তরীণভাবে আরও দক্ষ করে তোলে না এবং এগুলি ওভারহেড নিয়ে আসে।
সহজ উত্তরটি হ'ল গেমের প্রতিটি সত্তা প্রক্রিয়াজাতকরণ সম্পর্কে দক্ষ।
বামন ফোর্ট্রেস ওপেন সোর্স নয় এবং প্রচুর অনুমান এবং বিপরীত প্রকৌশল রয়েছে যা সমস্তরকম কীভাবে কাজ করতে পারে তা দেখতে, আমি পরিবর্তে একটি থ্রিডি (থ্রিডি গ্রাফিক্স নয়, থ্রিডি ওয়ার্ল্ড নয়) রগুইলাইকটির অনুকূলকরণের জন্য কিছু প্রাথমিক কৌশলগুলিতে মনোনিবেশ করব একই রকম.
সমস্ত ভিডিও গেমের ক্ষেত্রে যেমন প্রচুর ধোঁয়াশা এবং আয়না রয়েছে যা সাধারণ নিয়ম এবং সিস্টেমগুলি থেকে জটিলতার মায়া তৈরি করছে। লক্ষ্যহীন আন্দোলনের জন্য সরল এলোমেলো সংখ্যার ব্যবহার থেকে শুরু করে পাথ ফাইন্ডিংয়ের জন্য নোডের একটি উচ্চ-স্তরের জাল প্রাক-বেকিং করা পর্যন্ত।
প্যাথফাইন্ডিংয়ের কথা বলতে গেলে, প্রায়শই বড় জায়গার জন্য এটি সমাধান করা খুব কঠিন সমস্যা হতে পারে যেমন কোনও ডিএফ মানচিত্র হতে পারে (যতটা 768x768x64 আইআইআরসি হতে পারে) তবে সমস্যাটি সহজতর করা যায় এবং এই উপায়ে এড়াতে পারেন:
আমি প্যাথফাইন্ডিংয়ের বেসিকগুলি কভার করব না। বেশিরভাগ রোগুলিকরা এ * ব্যবহার করে তবে বিড়ালের চামড়ার অন্যান্য পদ্ধতিও রয়েছে। এমএমএম বিড়ালের চামড়া ..
ডিএফ ইউনিটগুলিকে পপ এবং জীবিত বোধ করে এমন একটি প্রধান জিনিস হ'ল তাদের ব্যক্তিগত লক্ষ্য তালিকা। সত্যিকার অর্থে অনেক রগুয়ালাইক গেম এটি একটি বেসিক স্তরে থাকে। মূলত প্রতিটি ইউনিটের একটি ইচ্ছার তালিকা রয়েছে (এবং আপনার ডারফগুলির জন্য, তারা যে কাজগুলি করতে বলেছে তা বেছে নিতে পারে) এবং তারা তাদের ব্যক্তিত্বের ভিত্তিতে সেগুলি বেছে নেবে (পরিসংখ্যান।)
কিছু কাজের প্রয়োজনীয়তা রয়েছে। চামড়ার স্কার্ট তৈরির জন্য ডরফটি এমন আইটেমের এমন একটি দোকানে থাকতে হবে যাতে এক্স আইটেম রয়েছে। সুতরাং এগুলি সমস্ত চেক করা হয় এবং তাদের তালিকার কাজ হিসাবে যুক্ত করা হয়। যে হিসাবে সহজ।
যেহেতু বেশিরভাগ সময় ইউনিট ট্রানজিটে থাকবে, ইউনিট কী করছে তা যাচাই করা খুব দ্রুত হতে পারে, কেবলমাত্র কয়েকটি ইউনিট কোনও নির্দিষ্ট মুহুর্তে একটি পছন্দ করে নিবে, এবং সামগ্রিকভাবে এমনকি কয়েকশো বা এমনকি কোনও ধীরগতিও নেই হাজার ইউনিট এবং মনে রাখবেন, ডিএফ-তে মৌমাছি থেকে শুরু করে ট্রোগলোডিট পর্যন্ত গাছগুলি সবই একক।
কিছু অতিরিক্ত গবেষণা করার ক্ষেত্রে এটি স্পষ্ট যে, হাসিখুশিভাবে, ডিএফ সাধারণভাবে পাথ ফাইন্ডিংয়ের একটি ভয়ানক কাজ করছে। এটি মানচিত্রটিকে খণ্ডগুলিতে বিভক্ত করছে না, এটি মানচিত্রটিকে সেগমেন্টগুলি বা সংযুক্ত অঞ্চলে বিভক্ত করছে (যা নিশ্চিতরূপে কিছুই না বলে ভাল) সুতরাং আমার উপরের মূল্যায়নটি কীভাবে ভাবার চেয়ে ডিএফ কীভাবে কাজ করে তার উদাহরণ তার চেয়েও কম উদাহরণ। :) যা বলা যায় না যে লক্ষ লক্ষ অন্যান্য কারণে ডিএফ আশ্চর্য্যের চেয়ে কম কিছু নয়।
এটি দেখায় যে একটি গেমের মধ্যে গুরুত্বপূর্ণ যা গেম প্লে game গ্রাফিক্স নয়, দুর্দান্ত প্রোগ্রামিং নয়, দুর্দান্ত রচনা নয়, দুর্দান্ত সংগীত নয়, এমনকি ইন্টারফেসও নয়; আর কিছুই কিছুই গেমের মতোই গুরুত্বপূর্ণ নয়।
এই পৃষ্ঠা থেকে :
ওয়েল [পথচলা] আমার শেষ থেকে আশ্চর্যজনক দেখাচ্ছে, যেহেতু একটি মেট্রিক টন অক্ষর সমস্ত এটি একবারে করছে।
টিএ: বামনেরা নিজেরাই বেশিরভাগ নিয়মিত পুরানো রাস্তার-দূরত্বের heuristic সহ এ * নিয়ে ঘুরে বেড়ায়। জটিল অংশটি হ'ল এটি সত্যিই একটি * কল করতে পারে না যদি তারা না জানে যে তারা আগেই সেখানে যেতে পারে, বা এটি মানচিত্রে প্লাবিত হয়ে প্রসেসরটিকে হত্যা করবে।
আমি জানি না এটি কীভাবে তিনি "মানচিত্রে বন্যার" প্রতিরোধ করেছিলেন? , তবে গেমগুলিতে এটি করার স্বাভাবিক উপায় হায়ারার্কিকালিক পাথ-ফাইন্ডিং এ * , বা এইচপিএ * নামক একটি * এর পরিবর্তন ব্যবহার করে । ধারণাটি হ'ল গ্রিডটি অনেক কম তবে বৃহত্তর অংশে বিভক্ত করা উচিত, তারপরে প্রতিটি খণ্ড থেকে তার প্রতিবেশী অংশগুলিতে সেরা পথ খুঁজতে A * ব্যবহার করুন। আপনি প্রতিটি ইউনিট ওভারের জন্য এ * চালানোর জন্য আরও অনেক ছোট গ্রাফ তৈরি করতে এটি ব্যবহার করতে পারেন।
আপনি এই খণ্ডগুলিকে আরও বৃহত্তর অংশগুলিতেও গোষ্ঠী করতে পারেন, যা এখান থেকে "শ্রেণিবদ্ধ" আসে।
এই অ্যালগরিদমটি কেবল নিকট-অনুকূল পাথগুলি সন্ধান করে তবে বামন-ফোর্ট্রেসের মতো গেমগুলির জন্য যা সাধারণত ঠিক। এটি উপস্থিত থাকলে কোনও পথ খুঁজে পাওয়ার নিশ্চয়তা রয়েছে; এবং যখন কোনও পথ নেই, তখন এটি কেবলমাত্র ছোট গ্রাফকে বন্যায় পূর্ণ করবে, ফলে প্রচুর পরিমাণে সময় সাশ্রয় হবে।
এইচপিএ * এর একটি বিমূর্ততাও রয়েছে যা ইউনিটগুলির সাথে কাজ করে যা কিছু অঞ্চলে যেতে পারে তবে অন্য নয় (যেমন ক্লিফস, যা এয়ার ইউনিটগুলি পেরিয়ে যেতে পারে তবে গ্রাউন্ড-ইউনিটগুলি পারে না) । একে HAA * বলা হয় এবং এটির ব্যাখ্যা করার একটি খুব অ্যাক্সেসযোগ্য নিবন্ধ রয়েছে এখানে ।
আপনি এখানে বিভিন্ন প্যাথফাইন্ডিং অ্যালগরিদম সম্পর্কে আরও পড়তে পারেন ।
যদি কিছু হয় তবে এটি বিপরীত - পুরো জিনিসটি একটি থ্রেডে চলে এবং এটি এখন সেই পয়েন্টটিকে আঘাত করছে যেখানে এটি ব্লকিং ফ্যাক্টর হয়ে উঠছে (গতবার আমি যাচাই করেছিলাম!)
এটির দ্রুত কারণ হ'ল কোনও অভিনব গ্রাফিক্স নেই। এটি বিভ্রান্তিকর, তবে প্রধান জিনিস যা জিনিসকে ধীর করে দেয় তা হ'ল জিনিসগুলি আঁকা (এএএ শিরোনামগুলির ফ্রেমের দুই তৃতীয়াংশের উপরে ভাবেন)। যেহেতু বামন দুর্গটি বেশ মৌলিক তাই এটি বাকি সময়টি আকর্ষণীয় কাজ করতে ব্যয় করে।
আমি জানি না কীভাবে ডিএফ কোড করা হয় তবে এআই এর পরিমাণ আমাকে সত্যই প্রভাবিত করে না কারণ লোকেরা প্রায়শই এটির তত্ত্বাবধান করে যে এআই এর যথাযথতার প্রয়োজন নেই । শুধুমাত্র প্রতি কয়েক সেকেন্ডে বেশিরভাগ স্টাফ করা পুরোপুরি কার্যকর। এটি অনর্থক গণনা ব্যবহার করাও কার্যকর। অসম্পূর্ণতা অনেক কর্মক্ষমতা সংরক্ষণ করে । আপনি প্রতি 100 এমএসে 100 টি ইউনিট সিদ্ধান্ত গ্রহণের রুটিন চালাতে পারেন, বা আপনি প্রতি সেকেন্ডে 1000 ইউনিটের জন্য এটি চালাতে পারেন, এটি একই পরিমাণ সিপিইউ সময় নেবে তবে ভাল ... আপনার ইউনিট 10 গুণ বেশি হবে।
এখানে একটি সহজ উদাহরণ রয়েছে যে কীভাবে কেউ প্রচুর ইউনিট পরিচালনা করতে পারে:
int curUnit;
Array<Unit> units;
[...]
while([...]) // Game Loop
{
[...game logic...]
// process 10 AIs per Frame
for(int i=0; i++; i<10)
{
curUnit++
if(curUnit == units.length()) curUnit=0;
if(curUnit < units.length())
units[curUnit].processAI();
}
// Update the position of all units, this should be as optimized as possible
foreach(Unit& unit in units){ unit.move(); };
[...graphics...]
}
এআই যত বেশি আছে কম এবং কম প্রতিক্রিয়াশীল হয়ে উঠবে, তবে প্লেয়ার সম্ভবত চরম ক্ষেত্রে এটি লক্ষ্য করবে।