গেম ডেভলপমেন্টে ক্লাস ডিজাইনের সঠিক অবজেক্ট-ভিত্তিক দৃষ্টিভঙ্গি কী?


31

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

উদাহরণস্বরূপ, আমি একটি বেস পরী বর্গ হতে পারে BaseSpriteজানে যে কিভাবে নিজেই আঁকা, দুর্ঘটনায় জন্য চেক ইত্যাদি আমি তখন একটি হতে পারে AnimatedSpriteশ্রেণী যে জানতে চাই তার পরী শীট, একটি নেভিগেট করতে কিভাবে ExplodingSpriteবর্গ, ইত্যাদি। এই কৌশলটি উইন্ডোজ 7 ফোন জম্পস্টার্ট সেশন 2 উপকরণগুলিতে স্পেস আক্রমণকারীদের উদাহরণে প্রদর্শিত হয় ।

বিকল্পভাবে, আমি পরিবর্তে একটি GameScreenক্লাসে গেমের দায়বদ্ধতা এবং চালনার প্রচুর পরিমাণে স্থান দিতে পারি ; এই শ্রেণি এবং এর উত্পন্ন ক্লাসগুলি তাদের দায়িত্বের ক্ষেত্রে ফর্ম বা ওয়েব পৃষ্ঠাগুলির মতো আচরণ করে। স্প্রাইট ক্লাসগুলি আরও কম যুক্তিযুক্ত আরও সাধারণ পাত্রে।

এটি উইন্ডোজ Training ফোন প্রশিক্ষণ কিটের এলিয়েন স্প্রাইট গেম এবং অন্যান্য গেমের স্টেট ম্যানেজারের উদাহরণগুলিতে ব্যবহৃত কৌশল।

গেম ডেভলপমেন্টে ক্লাস ডিজাইনের সঠিক অবজেক্ট-ভিত্তিক দৃষ্টিভঙ্গি কী?

উত্তর:


26

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

কম্পোনেন্ট ওরিয়েন্টেড ডিজাইনের কিছু তথ্যের জন্য এখানে দেখুন


2
আপনি নিবন্ধটি লিঙ্ক করেছেন +1 চমত্কার ছিল। আমি খাঁটি ওও ডিজাইনের প্রতি এতটা মনোযোগী ছিলাম, আমি উপাদান / সাজসজ্জার ধরণের মডেলটিকে সম্পূর্ণ উপেক্ষা করেছি।
জোশ ই

1
উপাদান প্যাটার্নটি সত্যই "কম খাঁটি" ওও নয় :)
শ্রেলেল

2
প্রকৃতপক্ষে. ওও প্রায়শই উত্তরাধিকার হিসাবে সমান হয়। তবে উত্তরাধিকার ও ও অফারগুলির একটিমাত্র সরঞ্জাম, রচনাটি অন্য একটি another
হাফ্যাক্স

ঠিক তাই। আমার কথাগুলিতে আরও সুনির্দিষ্ট হওয়া উচিত ছিল; আমার অভিপ্রায়টি হ'ল আমি ও ও ডিজাইনের ধরণগুলি / অন্যান্য OO দিকগুলি চিন্তা না করে ওওর উত্তরাধিকারের দিকে বেশি মনোনিবেশ করেছি যা আমাকে যা চেয়েছিল তা অর্জনে সহায়তা করতে পারে।
জোশ ই

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


6

কঠিন মূলনীতি অন্য কোন পেশা হিসেবে খেলা কোড নকশা যতটা প্রযোজ্য - অন্তত যতক্ষণ না আপনি, নিখুত আসা তাই আমি আদ্যস্থল হিসাবে আপনার প্রথম উদাহরণ ব্যবহার চাই।

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


5

শেষ কয়েকটি প্রকল্পের জন্য আমি এমভিসি স্টাইলের পদ্ধতির দিকে আরো ঝুঁকিতে পড়েছি।

এটি কাজ করবে কিনা তা প্রথমে আমরা নিশ্চিত ছিলাম না, তবে এটি পুরোপুরি কার্যকর হয়েছিল।

মডেল

ডেটা অবজেক্টস। খাঁটি তথ্য। কোন আচরণ, কোনও প্রতিদান।

ডেটা ম্যানেজার। ডেটা অবজেক্টের কেবল "তালিকা" পরিচালনা করছে। (পুলিং সমর্থন করার জন্যও উন্নত করা যেতে পারে))

দৃশ্য

আমরা তাদের উপস্থাপক বলি। প্রতিটি ডেটা অবজেক্ট টাইপের জন্য একটি রেন্ডারার থাকে। পরিচালকের সাথে ডাকলে এটি তালিকার সমস্ত বস্তু রেন্ডার করে।

নিয়ামক

উপস্থাপক হিসাবে একই, কিন্তু আচরণ নিয়ন্ত্রণ করে।

উদাহরণ

শিপ ম্যানেজারে শিপসের একটি তালিকা রয়েছে। শিপকন্ট্রোলার জাহাজগুলিকে তাদের রাজ্য অনুযায়ী সরিয়ে দেবে। শিপরেেন্ডার শিপকে তাদের রাষ্ট্র অনুযায়ী রেন্ডার করবে will

কেন

এই মতামত এবং যুক্তি কঠোরভাবে বিচ্ছিন্ন করা হয়। এটি একটি নতুন প্ল্যাটফর্মের পোর্টিংকে বেশ সহজ করে তোলে। এক্সএক্সএক্সম্যানেজারের অভ্যন্তরে ডেটা বিন্যাসকে অপ্টিমাইজ করা খুব সহজ।


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

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