কোন উপাদান-ভিত্তিক আর্কিটেকচারের সাথে আমি কীভাবে কার্যকর গেম অবজেক্ট ইন্টারঅ্যাকশন স্কিম ডিজাইন করতে পারি?


14

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

বলুন প্লেয়ার একটি স্তর মাধ্যমে অগ্রগতির চেষ্টা করছে। অনেকগুলি আলোক রয়েছে যা বিভিন্ন দিকে নির্দেশ করা যেতে পারে। এই হালকা বস্তুগুলি কীভাবে যোগাযোগ করতে পারে তার একটি উদাহরণ এখানে ...

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

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

এছাড়াও, এই মিথস্ক্রিয়ায় অডিও সংযুক্ত করছেন? দেখে মনে হচ্ছে সিস্টেমে অডিওকে সংযুক্ত করা যেমন দৃশ্যমানতা বা প্লেয়ার মুভমেন্ট / সংঘর্ষের মতো অন্য কোনও সম্পত্তি সংযুক্ত করার মতোই।

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

অন্যান্য তথ্য: আমি যে ইঞ্জিনটি ব্যবহার করছি তা হ'ল আইসক্রিম নামের একটি এক্সএনএ ইঞ্জিন ।



2
এখানে একটি আসল প্রশ্ন রয়েছে, যদিও জো যে লিঙ্কটি দিয়েছে তাতে "প্রশ্নের" বিপরীতে রয়েছে।
ড্যাশ-টম-ব্যাং

2
দুপকে দেখবেন না, একটি উপাদান উপাদান ব্যবহার করে কোডটিতে কোনও নির্দিষ্ট গেমের প্রয়োজনীয়তাগুলি কীভাবে ডিজাইন করা যায় সে সম্পর্কে প্রশ্নটি রয়েছে (@ ক্রিসটফার: কোনটি আপনাকে সাহায্য করবে তা উল্লেখ করে আপনি কি ইউনিটি ব্যবহার করছেন? টর্ক? মালিকানাধীন?)
শিখুন কোকোস 2 ডি

2
আমি আপনার গেমপ্লে আইডিয়াটি পছন্দ করি =)
নাইলার

উত্তর:


5

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

  1. প্রকল্প প্ল্যাটফর্মগুলিতে হালকা উপাদানটিতে কোড যুক্ত করুন। (এটি কাজ করুন।)
  2. নতুন উপাদানটিতে সেই উপাদানটি অনুলিপি করুন, প্ল্যাটফর্মের স্টাফগুলি সরান এবং উপযুক্ত বস্তুর ঘর্ষণ হ্রাস করতে কোড যুক্ত করুন। (এটি কাজ করুন, যাচাই করুন যে # 1 এখনও কাজ করে))
  3. "নতুন" কোডটি সরিয়ে সেই উপাদানটিকে একটি নতুন উপাদানগুলিতে অনুলিপি করুন এবং অন্যান্য উপাদানগুলির প্রভাবগুলি অক্ষম করতে স্টাফ যুক্ত করুন। (এটি কাজ করুন, তারপরে যাচাই করুন যে # 1 এবং # 2 এখনও কাজ করে))

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


আমি এটিকে উত্তর হিসাবে চিহ্নিত করছি কারণ এটি সত্যই "আমার কীভাবে ডিজাইন করা উচিত ..." উত্তর দেয়। এর জন্য ধন্যবাদ, এটি অবশ্যই আমাকে সঠিক পথে চালিত করেছে।
ক্রিস্টোফার হরেেনস্টেইন

2

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

কার্যকর তবে কঠোরভাবে রক্ষণাবেক্ষণের উপায়টি আপনার বস্তুর প্রকারের উপর নির্ভর করে কেবল একটি স্যুইচ এবং যদি বিবৃতি হয়। আপনি এটি লেখার নোংরা অনুভব করবেন তবে এটি কাজটি সম্পন্ন করবে।

ভিজিটর প্যাটার্ন আরো একটি শক্তসমর্থ সমাধান চামড়া কদর্য টাইপ স্যুইচিং, কিন্তু clumbersome সেট আপ করার জন্য হতে পারে।

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


2

আমাকে দেখতে দাও. এটি লেখার সময় আমি নিজের মাথায় রান্না করেছি, তাই দুঃখিত যদি আমি কিছু মিস করছি।

আপনার ছেলের চারপাশে যুক্তিসঙ্গত দূরত্বে সমস্ত হালকা নোড পান।

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

চতুর বর্ণের মিশ্রণের কৌশলগুলি তখন আকর্ষণীয় প্রভাব তৈরি করতে পারে। প্রতিটি স্তরের নিজস্ব মিশ্রণ সংক্রান্ত বিধি থাকতে পারে You আপনি সাইকেডেলিক গতিশীল প্রভাব যেমন পালসেটিং গ্র্যাভিটি ইত্যাদির জন্য ফ্র্যাগমেন্ট শেড যুক্ত করতে পারেন etc.

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

আমার ধারণাকে চিত্রিত করার মতো 2 মিনিটের মধ্যে রাফ সিনচ্যাচ:

চিত্রণ

সম্পাদনা করুন: অনুশীলনে এটির অর্থ কেবলমাত্র একটি হালকা উপাদান যা নির্দিষ্ট রঙ নির্গত করে is কোন রঙের সাথে সংযুক্ত নিয়মগুলি পুরোপুরি অন্য কোথাও হতে পারে does আপনার কাছে প্রিন্স পিক্সেল 32 টি বিটগুলিতে আপনি প্রচুর ডেটা এনকোড করতে পারেন। বিকল্পভাবে আপনি একাধিক FBO এর বিভিন্ন বৈশিষ্ট্যযুক্ত থাকতে পারে যা একে অপরকে প্রভাবিত করে না। আপনার একটি মাধ্যাকর্ষণ / ঘর্ষণ এফবিও এবং একটি 1 বিটের সংঘর্ষ এফবিও হতে পারে। আপনি যদি এটি চয়ন করেন তবে অবশ্যই আপনার পতাকাটি কোন এফবিওতে আপনার আলোকে দেওয়া উচিত flag


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

হেই, কোন প্রব আমি জানি এটি আপনার সঠিক প্রশ্নের উত্তর দেয়নি, তবে কিছু সমস্যার জন্য বিশেষ সমাধান প্রয়োজন। শুভকামনা!
নাইলার

0

পর্যবেক্ষক প্যাটার্ন সেরা সমাধানগুলির মধ্যে একটি। বার্তাগুলি কেবল সেই বিষয়গুলিতে (উপাদানগুলি) প্রেরণ করা হবে যা এতে সত্যই আগ্রহী। রিসিভারকে অবশ্যই এই বার্তা / ইভেন্টের ধরণের সাবস্ক্রাইব করতে হবে।

অনেকগুলি সংকেত / স্লট বাস্তবায়ন রয়েছে। উদাহরণস্বরূপ, সি ++ এ সিগ্লস্ট লাইব্রেরি রয়েছে

আরও তথ্যের জন্য কিউটি সংকেত এবং স্লট সম্পর্কে পড়ুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.