গেম বিকাশে দরকারী কিছু প্রোগ্রামিং ডিজাইনের ধরণগুলি কী কী? [বন্ধ]


129

আমার ডিজাইন প্যাটার্নসের কয়েকটি বই রয়েছে এবং কয়েকটি নিবন্ধ পড়েছি তবে কোন প্রোগ্রামিং ডিজাইনের ধরণগুলি গেম বিকাশে কার্যকর হবে তা অনুজ্ঞাতভাবে অনুধাবন করতে পারি না।

উদাহরণস্বরূপ, আমার কাছে ডিজাইন প্যাটার্নসের সাথে অ্যাকশনস্ক্রিপ্ট 3 নামে একটি বই রয়েছে যা মডেল ভিউ কন্ট্রোলার, সিঙ্গেলটন, কারখানা, কমান্ড ইত্যাদির মতো বেশ কয়েকটি ডিজাইনের ধরণগুলির বিবরণ দেয় details

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

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

ধন্যবাদ!


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

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

যে কেউ চলে যাওয়ার এবং 1000 টি বিভিন্ন ডিজাইনের ধরণ
শিখার আগে

@ ব্লুরাজা-ড্যানিপ্লুঘুফুট সিকন লিঙ্কটি অবৈধ। আপনি কি এটি পুনরায় পাঠাতে পারবেন
এমাদাপ্রেস

উত্তর:


163

এখন কম পরামর্শের জন্য, কিছু পরামর্শ দিয়ে এগুলি বাস্তবায়নের সুপারিশ হিসাবে গ্রহণ করবেন না, আরও সম্ভাব্য ব্যবহারের উদাহরণ হিসাবে।

  • নির্মাতা: উপাত্তের উপর ভিত্তি করে একবারে উপাদান-ভিত্তিক সত্তা একটি উপাদান সেটআপ করুন
  • কারখানার পদ্ধতি: একটি ফাইল থেকে পড়া স্ট্রিংয়ের উপর ভিত্তি করে এনপিসি বা জিইউআই উইজেট তৈরি করুন
  • প্রোটোটাইপ: প্রাথমিক বৈশিষ্ট্যগুলির সাথে একটি জেনেরিক 'এল্ফ' অক্ষর সংরক্ষণ করুন এবং এটির ক্লোনিং করে एल्ফের উদাহরণ তৈরি করুন।
  • সিঙ্গলটন: এই স্থানটি ইচ্ছাকৃতভাবে ফাঁকা রেখে গেছে।
  • অ্যাডাপ্টার: existingচ্ছিক তৃতীয় পক্ষের লাইব্রেরিটিকে আপনার বিদ্যমান কোডের মতো দেখতে এমন একটি লেয়ারে আবদ্ধ করে অন্তর্ভুক্ত করুন। ডিএলএলগুলির সাথে খুব দরকারী।
  • সংমিশ্রণ: উপস্থাপনযোগ্য বস্তুর একটি দৃশ্যের গ্রাফ তৈরি করুন বা উইজেটসের গাছ থেকে একটি জিইউআই তৈরি করুন
  • মুখোমুখি: পরে আপনার জীবন আরও সহজ করার জন্য একটি সহজ ইন্টারফেস সরবরাহ করে জটিল তৃতীয় পক্ষের লাইব্রেরিগুলিকে সহজ করুন।
  • ফ্লাইওয়েট: একটি এনপিসির ভাগ অংশগুলি (যেমন মডেল, টেক্সচার, অ্যানিমেশন) পৃথক দিকগুলি থেকে (যেমন, অবস্থান, স্বাস্থ্য) আলাদাভাবে স্বচ্ছভাবে সংরক্ষণ করুন
  • প্রক্সি: কোনও ক্লায়েন্টে ছোট ক্লাস তৈরি করুন যা কোনও সার্ভারে আরও বৃহত্তর, আরও জটিল শ্রেণির প্রতিনিধিত্ব করে এবং নেটওয়ার্কের মাধ্যমে অনুরোধগুলি ফরোয়ার্ড করে।
  • দায়িত্বের চেইন: হ্যান্ডলারের শৃঙ্খলা হিসাবে ইনপুট হ্যান্ডেল করুন, যেমন। গ্লোবাল কী (উদাহরণস্বরূপ, স্ক্রিন শটগুলির জন্য), তারপরে জিইউআই (উদাহরণস্বরূপ, কোনও পাঠ্য বাক্স ফোকাস করা হয়েছে বা মেনু উপরে থাকলে), তারপরে গেমটি (উদাহরণস্বরূপ, কোনও চরিত্র সরিয়ে দেওয়ার জন্য)
  • কমান্ড: গেমের কার্যকারিতাটি কমান্ড হিসাবে এনক্যাপসুলেট করে যা কোন কনসোলে টাইপ করা যায়, সংরক্ষণ করা হয় এবং পুনরায় খেলতে পারা যায়, এমনকি গেমটি পরীক্ষা করতে সহায়তা করতে স্ক্রিপ্টও করা যায়
  • মধ্যস্থতা: গেম সংস্থাগুলি একটি ক্ষুদ্র মধ্যস্থতাকারী শ্রেণি হিসাবে প্রয়োগ করুন যা বিভিন্ন উপাদানগুলিতে চালিত হয় (উদাহরণস্বরূপ, এআই উপাদানটিতে ডেটা পাস করার জন্য স্বাস্থ্য উপাদান থেকে পড়া)
  • পর্যবেক্ষক: কোনও চরিত্রের রেন্ডারযোগ্য উপস্থাপনার সাথে যৌক্তিক উপস্থাপনা থেকে ইভেন্টগুলি শোনার জন্য, গেম লজিক ছাড়াই যখন প্রয়োজন রেন্ডারিং কোড সম্পর্কে কিছু জানা দরকার তখন ভিজ্যুয়াল উপস্থাপনা পরিবর্তন করতে পারেন
  • রাজ্য: এনপিসি এআইকে বিভিন্ন রাজ্যের একটি হিসাবে সঞ্চয় করুন, যেমন। আক্রমণ, বিচরণ, পালানো। প্রত্যেকের নিজস্ব আপডেট () পদ্ধতি এবং অন্য যে কোনও ডেটা প্রয়োজন তা থাকতে পারে (যেমন, এটি কোন চরিত্রটি আক্রমণ করছে বা সেখান থেকে পালাচ্ছে, যে অঞ্চলে এটি ঘুরে বেড়াচ্ছে ইত্যাদি ইত্যাদি)
  • কৌশল: আপনি কোন প্রান্তে রয়েছেন তার উপর নির্ভর করে আপনার এ * অনুসন্ধানের জন্য বিভিন্ন হিউরিস্টিকের মধ্যে স্যুইচ করুন, বা এমনকি পথনির্ধারণ এবং আরও জেনেরিক পরিকল্পনা উভয়ই একই এ * ফ্রেমওয়ার্কটি ব্যবহার করতে পারেন
  • টেমপ্লেট পদ্ধতি: প্রতিটি পদক্ষেপকে পরিচালনা করতে বিভিন্ন হুক ফাংশন সহ জেনেরিক 'লড়াই' রুটিন সেটআপ করুন, যেমন eg হ্রাস বারুদ, হিট সুযোগ গণনা, হিট সমাধান বা মিস, ক্ষতি গণনা এবং প্রতিটি ধরণের আক্রমণ দক্ষতা তাদের নিজস্ব পদ্ধতিতে পদ্ধতিগুলি প্রয়োগ করবে

অনুপ্রেরণার অভাবে কিছু নিদর্শন বাদ পড়েছে।


Singletons ওপর খুব জ্ঞানগর্ভ আলোচনা এখানে পাওয়া যেতে পারে: misko.hevery.com/2008/08/25/root-cause-of-singletons
অ্যান্ড্রু ওয়াং

কৌশল প্যাটার্নের জন্য +1। আমি এটি উপরে বর্ণিত সঠিক উদ্দেশ্যে (বিভিন্ন এ * হিউরিস্টিক্সে প্লাগিং করা) ব্যবহার করেছি।
মাইক স্ট্রোবল

1
এই উত্তরের জন্য ধন্যবাদ, এই শব্দগুলি আমি
যতই

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

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

59

ঠিক ঠিক সেই বিষয়ে আমি একটি বই লিখেছিলাম: গেম প্রোগ্রামিং প্যাটার্নস । অধ্যায়গুলি যা আপনার জন্য সহায়ক হতে পারে।


2
+1 আমি আশা করছিলাম যে কেউ এর সাথে লিঙ্ক করেছে এবং আমি দেখতে পাচ্ছি যে লেখক রয়েছে! সেখানে উপাদান প্যাটার্নের বর্ণনাটি বেশ সহায়ক ছিল এবং আমি পছন্দ করি যে আপনি প্রদর্শন করার জন্য সম্পূর্ণ কোড উদাহরণ ব্যবহার করার চেষ্টা করছেন।
কোডেক্সআর্কানিয়াম

2
হ্যাঁ - আমি মনে করি কয়েক বছর আগে আপনার লিঙ্কটি পড়েছি। আপনার এই নিবন্ধগুলি শেষ করা উচিত!
onedayitwillmake

2
এখন বইটি শেষ হয়েছে :)
দুশান

1
একটি আশ্চর্যজনক সংস্থান যা আমার বিদ্যমান প্রোগ্রামিং জ্ঞানকে গেমসের জন্য প্রোগ্রামিংয়ে অনুবাদ করতে সহায়তা করেছে। এটি লেখার জন্য ধন্যবাদ!

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

19

ব্র্যান্ডন আইচের একটি বিষয় কোডার এ ওয়ার্কে আনার জন্য ভাল ধারণা ছিল তা হ'ল নিদর্শনগুলি হ্যাক এবং কাজের ক্ষেত্রগুলি: [প্যাটার্নস] ভাষায় কিছু ধরণের ত্রুটি প্রদর্শন করে। এই নিদর্শনগুলি বিনামূল্যে নয়। ফ্রি লাঞ্চ নেই। সুতরাং আমাদের এমন ভাষাতে বিবর্তনের সন্ধান করা উচিত যা সঠিক বিট যুক্ত করে।

গেম প্রোগ্রামার হিসাবে সংকলক ডিজাইনারদের চেয়ে আমরা খুব কমই আমরা ব্যবহার করি এমন ভাষাগুলি বিকশিত করার বিকল্পটি পাই, তবে আমরা আমাদের ভাষা এবং প্রয়োজনীয়তার সাথে আরও ভালভাবে ফিট করার জন্য আমাদের নিজস্ব শৈলীর বিকাশ করতে শিখতে পারি। প্যাটার্নগুলি এর মধ্যে কয়েকটি, তবে নিদর্শনগুলি ব্যবহার না করা আরও একটি অংশ, বিশেষত যেহেতু ব্র্যান্ডন বলেছে, নিদর্শন খুব কম উল্লেখযোগ্য পারফরম্যান্স বা মেমরি বা কোড চটপটি ব্যয় ছাড়াই চলে। গেমসের অনেক কিছুর জন্য এমভিসি কেবল দুর্দান্ত প্যাটার্ন নয়। সিঙ্গেলটন হ'ল ল্যাম্প সি ++ স্ট্যাটিক ইনিশিয়ালাইজেশন বিধিগুলির জন্য একটি কাজ, এবং সম্ভবত আপনাকে সেগুলি করা উচিত নয়। কারখানা জটিল অবজেক্ট তৈরি সহজতর করে - সম্ভবত আপনার অবজেক্টগুলি সহজভাবে শুরু করা উচিত। আমাদের যখন প্রয়োজন হয় তখন জনপ্রিয় নিদর্শনগুলি অবলম্বন করার সরঞ্জাম tools জটিল কিছু পরিচালনা করতে, সরঞ্জামগুলি নয় আমাদের শুরুতে জটিল কিছু তৈরি করার জন্য ব্যবহার করার জন্য আকুল হওয়া উচিত।

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


4
হ্যাঁ, মূল বইটিতে একটি বিষয় পরিষ্কার করা হয়েছে (তবে প্রায়শই অবহেলা করা হয়) এটি যদি সি ++ / স্মার্টটাকের পরিবর্তে সি-র জন্য লেখা হয় তবে তারা সম্ভবত "উত্তরাধিকার" প্যাটার্নটি অন্তর্ভুক্ত করতে পারে এবং একই টোকেনের সাহায্যে কিছু ভাষা ইতিমধ্যে অন্তর্নির্মিত কিছু
জিওএফ

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

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

আমি সম্মত হচ্ছি যে পরিভাষাটি দুর্দান্ত, এবং কোনও প্যাটার্নের সংজ্ঞার অংশটি হ'ল এটি কোনও সমস্যার জন্য একটি ভাল পুনরাবৃত্তি সমাধান। দুর্ভাগ্যক্রমে কম দক্ষ শ্রমিকরা বেশিরভাগ সিঙ্গেলটন সন্ধান করেন এবং এখনও কোনও সমস্যা না হলেও এমনকি প্রতিটি সমস্যায় এটি প্রয়োগ করেন ।

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

7

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

প্রোগ্রামিং:

  • সিঙ্গলটন: অনেক লোকের মতো আমি এটিকে ঘৃণা করি না; এটি একক প্লেয়ার প্লেয়ার বা কীবোর্ড পাঠকের মতো জিনিসের জন্য ব্যবহার করা যেতে পারে।
  • কারখানা: আপনাকে দক্ষতার সাথে অবজেক্ট তৈরি করতে এবং ধ্বংস করতে দেয়।
  • কৌশল: আপনাকে এআই কৌশলগুলি মার্জিতভাবে পরিবর্তন করতে দেয়।
  • স্থানিক সূচক: স্থানিক ডেটা সেটগুলিতে ক্যোয়ারী সম্পাদন করতে সহায়তা করে।
  • সংমিশ্রণ: একটি দরকারী বস্তুর উত্তরাধিকার সেট আপ করুন।
  • ফ্লাইওয়েট: অভিন্ন শত্রুগুলির মতো জিনিসকে উদার করে মেমরিকে স্বাদ দেয়।

ব্যবহারযোগ্যতা:

  • ঝাল: নাটকীয় ক্রিয়াগুলির দুর্ঘটনাজনিত সক্রিয়করণ থেকে রক্ষা করে।
  • রাজ্য: বিশ্বের ভিজ্যুয়াল সংকেত / UI স্থিতি।
  • স্বয়ংক্রিয় মোড বাতিলকরণ: গেমটি আরও স্বজ্ঞাতভাবে কাজ করে।
  • চৌম্বকবাদ: স্বয়ংক্রিয়তা এবং সহজ ইউনিট নির্বাচন।
  • ফোকাস: বিক্ষিপ্ত ইউআই উপাদানগুলি নির্মূল করা।
  • অগ্রগতি: সর্বজনীনভাবে কার্যকর।

বইটি অবশ্যই এগুলির প্রতিটি সম্পর্কে আরও বিশদে যায়।


ইনপুট জন্য ধন্যবাদ! আমি সেই বই সম্পর্কে সচেতন ছিলাম না, তবে আপনার পোস্টের ফলাফল হিসাবে এটি এখনই সন্ধান করব। আবার ধন্যবাদ!
jcurrie33

2
কীবোর্ড রিডারের জন্য সিঙ্গলটন হ'ল ঠিক এমনই পরিস্থিতি যেখানে আমাকে জিজ্ঞাসা করতে হবে - আপনি কি সত্যই এটি আপনার মূল ফাংশনটির প্রথম দিকে সেটাকে বৈশ্বিক পয়েন্টার সেট করতে পারবেন না? আপনি কি কখনও দুর্ঘটনাক্রমে দুটি কীবোর্ড পাঠককে ইনস্ট্যান্ট করেছেন?

দয়া করে সিঙ্গলটনকে ঘৃণা করুন। এটি দু'টি কাজ খারাপভাবে করে। গ্লোবাল অ্যাক্সেস এবং শালীনতা। প্রায়শই বিকাশকারীরা বিশ্বব্যাপী অ্যাক্সেস == সিঙ্গলটন ভাবেন। একটা খুব চেয়ে কয়েক সমস্যার একটি সত্য Singleton প্রয়োজন, এবং সম্ভবত আরো বেশি মার্জিত যখন একটি Singleton সমাধান কয়েক।
deft_code

7

সত্তা সিস্টেমগুলি একটি দুর্দান্ত ধরণের প্যাটার্ন। এটি একেবারে নকশার ধরণ নয়, কারণ এটি কঠোরভাবে ওওপি নয়। তবে আপনি এটি ওওপি মিশ্রিত করতে পারেন।

কিছু ভাল লিঙ্ক (পরিচয়ের জন্য শীর্ষ থেকে শুরু):


3
"এটি হুবহু ডিজাইনের ধরণ নয়, কারণ এটি কঠোরভাবে [sic] ওওপি নয়।" নকশার নিদর্শনগুলির ওওপির সাথে কোনও সম্পর্ক নেই; যদি কিছু হয় তবে ওওপি নিজেই একটি ডিজাইনের ধরণ। নকশার নিদর্শনগুলি কেবল ওওপি-র বাইরে নয়, পুরোপুরি বাইরে সফ্টওয়্যার বিকাশ ঘটে।

এমন কিছু রয়েছে OOP design patternsযা সাধারণত শ্রেণি / অবজেক্টের মধ্যে সম্পর্ক এবং ইন্টারঅ্যাকশন দেখায়। এবং অন্যান্য অনেক নকশার নিদর্শন রয়েছে। ওওপি হ'ল ধারণার একটি সেট, সত্যিকারের কোনও প্যাটার্ন নয়। Design patternএকটি ধারণা।
শীর্ষস্থানীয়

6
শব্দার্থক সম্পর্কে কথা বলার পরিবর্তে, আপনি যে প্রতিক্রিয়াটি দিয়েছি তা কি আপনার কার্যকরভাবে মূল্যায়ন করা উচিত নয়?
ওয়ার্নাইট

6

তাদের সবাই. সিঙ্গলটন বাদে। [/ ডেঁপোমি]


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

5
"আপনি কোন ধরণের ব্যবহার করেছেন?" জিজ্ঞাসা করছেন? "আপনি কোন পরিবর্তনশীল নাম ব্যবহার করেছেন?" জিজ্ঞাসার মতো? এটি ব্যক্তিগত স্টাইল এবং প্রয়োজনীয়তা এবং ডোমেনে নেমে আসে। কিছু সময় আপনি সম্ভবত নামকরণ করা যে কোনও প্যাটার্ন ব্যবহার করবেন। আপনি সম্ভবত আরও অনেকগুলি ব্যবহার করবেন যা নাম প্রকাশিত হয়নি, এবং এমনকি কিছু নতুন আবিষ্কার করতে পারে।

@ জ্যাকুরি 33৩: দুঃখিত, আমি প্রথমে সিলেটলেটে খনন করতে পারিনি। ;)
কাইলোটন

6

আসলে নিদর্শন সম্পর্কে নয়, তবে তাদের পিছনে মূলনীতিগুলি সম্পর্কে। ইন "ডিজাইন প্যাটার্নস: পুনর্ব্যবহারযোগ্য অবজেক্ট ওরিয়েন্টেড সফটওয়্যার উপাদানসমূহ" (1995) ;: এর গ্যাং চার (গামা, এরিক রিচার্ড কর্ণ, রালফ জনসন, এবং জন Vlissides) অবজেক্ট ওরিয়েন্টেড নকশা জন্য মাত্র দুটি নীতির বিশেষ পরামর্শ দেওয়া হচ্ছে (1) প্রোগ্রাম একটি ইন্টারফেস এবং বাস্তবায়নের জন্য নয় এবং (2) শ্রেণীর উত্তরাধিকারের চেয়ে অবজেক্ট রচনাটিকে সমর্থন করে।

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


গেম ডিজাইনে ব্যবহৃত উপাদানগুলি রাষ্ট্রীয় কৌশল প্যাটার্নের মতো - যা স্বাভাবিকভাবে সি / সি ++ / জাভা / সি # এর বাইরের ক্লোজার হিসাবে প্রকাশিত হয় এবং এর ভিতরে উপাদান উপাদান হিসাবে প্রকাশিত হয়। সাজসজ্জার প্যাটার্ন আরও প্রক্সি মত; আমরা যখন গেমগুলিতে উপাদান উপাদানগুলির বিষয়ে কথা বলি তখন এর মালিকানা এবং ডেটা প্রবাহটি আমরা সাধারণত বোঝায় তার বিপরীত।

মধ্যস্থতাকারী, পর্যবেক্ষক এবং সুরকারের মতো নিদর্শন এনে উপাদানগুলি একে অপরের সাথে কথা বলারও প্রয়োজন। "কম্পোনেন্ট-ভিত্তিক গেম" হ'ল নিজেই একটি সমন্বিত নকশার প্যাটার্ন।
কোডেক্সআর্কানিয়াম

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

6

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

এটি যথাযথ প্যাটার্ন হতে পারে যখন আপনার বেজ বর্গ ধরণের একটি ধারক থাকতে হবে না যা আপনার পরে ইন্টারফেস রয়েছে তবে আপনি একই রকমের আচরণ এবং ইন্টারফেস রাখতে চান।

উদাহরণস্বরূপ আপনি একাধিক প্ল্যাটফর্ম বা ইঞ্জিনের জন্য ক্লাস সংকলন করার সময় এটি ব্যবহার করতে পারেন (dx বনাম ওপেনগল) যেখানে সংকলনের সময় প্রকারের বৈচিত্রটি জানা যায়।


আমি সর্বদা ঘৃণা করি যে ওস বিমূর্ত স্তরটি ভার্চুয়াল। এটির মতো নয় যে আপনার কখনও দুটি ওএস বিমোচন স্তরগুলির প্রয়োজন হবে। সিআরটিপি ব্যবহার করা আরও অনেক ভাল।
deft_code

হতে পারে আমি সবেমাত্র বৃদ্ধ, তবে আমি ডিএক্স / ওপেনজিএল বা প্ল্যাটফর্ম ইন্টারফেসের জন্য সিআরটিপি ব্যবহার করব না। এটি সংকলন করতে খুব ধীর - আমি কেবল টাইপডেফগুলি ব্যবহার করব। আপনি যখন ক্লাসগুলির মধ্যে ইন্টারফেস এবং বাস্তবায়ন ভাগ করতে চান তবে অন্য কোনও সম্পর্ক না থাকলে সিআরটিপি ভাল, যখন আপনি কেবল একটি কাঠামো বা অন্যটি বেছে নিতে চান না।

4

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

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


আমি দেখতে পাচ্ছি না এটি কীভাবে একেবারে সিঙ্গলটন এবং ফ্লাইওয়েট প্যাটার্নটি নিয়ে আলোচনা করার সময় "রেজিস্ট্রি" শব্দটি অপ্রয়োজনীয়। এটি কেবল ফ্লাইওয়েট।

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

-1, নিখুঁতভাবে দ্রুত যোগাযোগ করার পরিমাণে, এটি সম্ভবত আমি সবচেয়ে বড় ব্যর্থতা। আমি এই বিবরণটিকে সত্যই গুরুত্ব সহকারে নিতে পারি না।

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

1
কিছু পরিমাণ "কুকি-কাটার" বা কমপক্ষে শব্দার্থক স্পষ্টতা হ'ল নিদর্শনগুলি কার্যকর হতে হবে। "ফ্লাইওয়েট" এবং "সিঙ্গেলটন" এর মতো শর্তাদি যেমন সাধারণত বোঝা যায় তবে পারস্পরিক একচেটিয়া। প্রথমটি হ'ল একাধিক উদাহরণের মধ্যে স্বয়ংক্রিয়ভাবে ডেটা ভাগ করা; দ্বিতীয়টি হ'ল এক উদাহরণ থাকা। আমি বলছি না যে আপনার নকশার পছন্দটি অকেজো বা এমনকি খারাপ, তবে "পর্যাপ্ত কাছাকাছি" প্যাটার্নের নামগুলি একসাথে খালি সবাইকে আরও বিভ্রান্ত করছে। (দয়া করে downvotes ব্যক্তিগতভাবে গ্রহণ না করেন না, বিশেষ করে সি ডব্লিউ উপর।)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.