গভীর শ্রেণীর স্তরক্রম থেকে মুক্তি পেতে এবং কনফিগারযোগ্য উপাদানগুলির সাথে তাদের প্রতিস্থাপনের জন্য আমি সম্প্রতি আমার গেমের আর্কিটেকচারটি পুনর্নির্মাণ করার সিদ্ধান্ত নিয়েছি। আমি যে প্রথম শ্রেণিবিন্যাসটি প্রতিস্থাপন করছি তা হ'ল আইটেম শ্রেণিবিন্যাস এবং আমি সঠিক পথে রয়েছি কিনা তা জানতে কিছু পরামর্শ চাই।
পূর্বে, আমার একটি শ্রেণিবিন্যাস ছিল যা এরকম কিছু হয়েছিল:
Item -> Equipment -> Weapon
-> Armor
-> Accessory
-> SyntehsisItem
-> BattleUseItem -> HealingItem
-> ThrowingItem -> ThrowsAsAttackItem
বলার অপেক্ষা রাখে না যে এটি অগোছালো হওয়া শুরু হয়েছিল এবং এটি এমন আইটেমগুলির সহজ সমাধান ছিল না যা একাধিক ধরণের হওয়া দরকার (যেমন কিছু সরঞ্জাম আইটেম সংশ্লেষণে ব্যবহৃত হয়, কিছু সরঞ্জাম নিক্ষেপযোগ্য, ইত্যাদি)
আমি তখন বেস আইটেম ক্লাসে রিফ্যাক্টর এবং কার্যকারিতা স্থাপনের চেষ্টা করেছি। তবে আমি লক্ষ করছিলাম যে আইটেমটিতে প্রচুর অব্যবহৃত / অতিরিক্ত অতিরিক্ত তথ্য ছিল। এখন আমি আর্কিটেকচারের মতো কোনও উপাদান করার চেষ্টা করছি, আমার অন্যান্য গেমের ক্লাসে চেষ্টা করার আগে কমপক্ষে আমার আইটেমগুলির জন্য।
কম্পোনেন্ট সেটআপের জন্য আমি বর্তমানে যা ভাবছি তা এখানে:
আমার একটি বেস আইটেম ক্লাস রয়েছে যা বিভিন্ন উপাদানগুলির জন্য স্লট রয়েছে (যেমন একটি সরঞ্জাম উপাদান স্লট, একটি নিরাময় উপাদান স্লট, ইত্যাদি পাশাপাশি স্বেচ্ছাসেবী উপাদানগুলির জন্য একটি মানচিত্র) যাতে এরকম কিছু:
class Item
{
//Basic item properties (name, ID, etc.) excluded
EquipmentComponent* equipmentComponent;
HealingComponent* healingComponent;
SynthesisComponent* synthesisComponent;
ThrowComponent* throwComponent;
boost::unordered_map<std::string, std::pair<bool, ItemComponent*> > AdditionalComponents;
}
সমস্ত আইটেম উপাদান একটি বেস আইটেম কম্পোনেন্ট শ্রেণি থেকে উত্তরাধিকারী হবে, এবং প্রতিটি উপাদান উপাদান টাইপ কিভাবে কার্যকারিতা বাস্তবায়ন করতে ইঞ্জিন বলার জন্য দায়ী। অর্থাত্ হিলিংকম্পোনটেন্ট যুদ্ধের যান্ত্রিকদের কীভাবে আইটেমটিকে নিরাময়কারী আইটেম হিসাবে গ্রাস করতে পারে তা জানায়, অন্যদিকে থ্রো কম্পোনেন্ট যুদ্ধের ইঞ্জিনকে কীভাবে আইটেমটিকে নিক্ষেপযোগ্য আইটেম হিসাবে বিবেচনা করতে হবে তা জানায়।
মানচিত্রটি মূল আইটেম উপাদান নয় এমন যথেচ্ছ উপাদানগুলি সঞ্চয় করতে ব্যবহৃত হয়। আইটেম ধারকটি আইটেম কম্পোনেন্ট পরিচালনা করা উচিত কিনা বা এটি কোনও বাহ্যিক উত্স দ্বারা পরিচালিত হচ্ছে কিনা তা বোঝাতে আমি এটি একটি বুলের সাথে জুড়ি করছি।
আমার ধারণাটি এখানে ছিল যে আমি আমার গেম ইঞ্জিনের সম্মুখভাগে ব্যবহৃত মূল উপাদানগুলি সংজ্ঞায়িত করি এবং আমার আইটেম ফ্যাক্টরিটি আইটেমটির আসলে যে উপাদানগুলি দেয় তা নির্ধারণ করে দেবে, অন্যথায় তারা বাতিল হয়। মানচিত্রে স্বেচ্ছাসেবী উপাদান থাকবে যা সাধারণত স্ক্রিপ্টিং ফাইলগুলির মাধ্যমে যুক্ত / গ্রহণ করা হত।
আমার প্রশ্ন, এটি কি ভাল নকশা? তা না হলে কীভাবে উন্নতি করা যায়? আমি মানচিত্রে সমস্ত উপাদানকে গ্রুপিং হিসাবে বিবেচনা করেছি, তবে স্ট্রিং ইনডেক্সিংটি মূল আইটেম উপাদানগুলির জন্য অপ্রয়োজনীয় বলে মনে হয়েছিল