গেম সাবসিস্টেমগুলিতে গেম অবজেক্টের উপাদানগুলি নিবন্ধন করুন? (উপাদান-ভিত্তিক গেম অবজেক্ট ডিজাইন)


11

আমি একটি উপাদান-ভিত্তিক গেম অবজেক্ট সিস্টেম তৈরি করছি । কিছু টিপস:

  1. GameObjectকেবল একটি তালিকা Components
  2. আছে GameSubsystems। উদাহরণস্বরূপ, রেন্ডারিং, পদার্থবিজ্ঞান ইত্যাদি প্রত্যেকটিতে GameSubsystemকিছু কিছুতে পয়েন্টার রয়েছে ComponentsGameSubsystemএটি একটি খুব শক্তিশালী এবং নমনীয় বিমূর্ততা: এটি গেম বিশ্বের যে কোনও স্লাইস (বা দিক) উপস্থাপন করে।

নিবন্ধনের একটি প্রক্রিয়া একটি প্রয়োজন নেই ComponentsGameSubsystems(যখন GameObjectতৈরি করেছেন এবং গঠিত হয়)। আছে 4 পন্থা :


  • 1: দায়িত্ব প্যাটার্নের চেইন । প্রত্যেককে প্রত্যেককে Componentদেওয়া হয় GameSubsystemGameSubsystemকোন সিদ্ধান্ত Componentsনিবন্ধিত করতে হবে (এবং কীভাবে তাদের সংগঠিত করবেন) makes উদাহরণস্বরূপ, গেমসউসসিস্টেমরেন্ডার রেন্ডারেবল উপাদানগুলি নিবন্ধন করতে পারে।

প্রো। Componentsসেগুলি কীভাবে ব্যবহৃত হয় সে সম্পর্কে কিছুই জানেন না। কম মিলন। উ: আমরা নতুন যুক্ত করতে পারি GameSubsystem। উদাহরণস্বরূপ, আসুন গেমসবুটিস্টিটম্যাটেলগুলি যুক্ত করুন যা সমস্ত কম্পোনেন্টটাইল নিবন্ধভুক্ত করে এবং গ্যারান্টি দেয় যে প্রতিটি শিরোনামটি অনন্য এবং শিরোনাম অনুসারে প্রশ্নগুলির اعتراضগুলিকে ইন্টারফেস সরবরাহ করে। অবশ্যই, এক্ষেত্রে কম্পোনেন্টটাইটল পুনরায় লেখা বা উত্তরাধিকারসূত্রে প্রাপ্ত হওয়া উচিত নয়। বি। আমরা বিদ্যমান পুনর্গঠন করতে পারেন GameSubsystems। উদাহরণস্বরূপ, গেমসুবসিস্টেমউডিও, গেমসবুটিস্টেমরেন্ডার, গেমসুস্টিস্টম পার্টিক্যাল এমমিটারকে গেমসুবসিস্টেমস্পটিয়ালে একীভূত করা যেতে পারে (সমস্ত অডিও, এমমিটার স্থাপনের জন্য, Componentsএকই শ্রেণিবিন্যাসে রেন্ডার করতে এবং প্যারেন্ট-আপেক্ষিক ট্রান্সফর্ম ব্যবহার করতে পারেন)।

বিরূদ্ধে। প্রতি-প্রতিটি চেক। খুব অদক্ষ।

বিরূদ্ধে। Subsystemsসম্পর্কে জানুন Components


  • 2: প্রতিটি নির্দিষ্ট ধরণের Subsystemজন্য অনুসন্ধান করে Components

প্রো। চেয়ে ভাল পারফরম্যান্স Approach 1

বিরূদ্ধে। Subsystemsএখনও সম্পর্কে জানি Components


  • 3: Componentনিজেকে নিবন্ধন করে GameSubsystem(s)। আমরা সংকলন সময়ে জানি যে একটি গেমসবুটিস্টেমেন্ডেন্ডার রয়েছে, সুতরাং আসুন কমপোনেন্টআইমেজ রেন্ডার গেমসউসসিস্টেমেন্ডারার :: রেজিস্টার (কম্পোনেন্টরেন্ডারবেস *) এর মতো কিছু কল করবে।

প্রো। কর্মক্ষমতা. হিসাবে অপ্রয়োজনীয় চেক নেই Approach 1

বিরূদ্ধে। Componentsখারাপভাবে মিলিত হয় GameSubsystems


  • 4: মধ্যস্থতা প্যাটার্ন। GameState(এতে রয়েছে GameSubsystems) নিবন্ধক সংস্থার (উপাদান *) প্রয়োগ করতে পারে।

প্রো। Componentsএবং GameSubystemsএকে অপরের সম্পর্কে কিছুই জানে না।

বিরূদ্ধে। সি ++ এ এটি দেখতে কুৎসিত এবং ধীর টাইপাইড-স্যুইচের মতো হবে।


প্রশ্ন: কোন পদ্ধতিটি আরও ভাল এবং বেশিরভাগই উপাদান-ভিত্তিক ডিজাইনে ব্যবহৃত হয়? অনুশীলন কি বলে? বাস্তবায়ন সম্পর্কে কোন পরামর্শ Approach 4?

ধন্যবাদ.


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

@ গেমিং হরর, রেজিস্ট্রেশন Componentsকরা GameObjectsআমার প্রশ্নের অবকাশ। উপাদান-ভিত্তিক পদ্ধতির সম্পর্কে নিবন্ধগুলি পড়ুন বা আপনি যদি আগ্রহী হন তবে এই সাইটে আপনার নিজের প্রশ্ন জিজ্ঞাসা করুন। আপনি যা ভাবছেন GameSubsystemতা সম্পূর্ণ ভুল।
শীর্ষস্থানীয়

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

হ্যাঁ, "উপাদান-ভিত্তিক গেম অবজেক্টস" এবং "উপাদান-ভিত্তিক প্রোগ্রামিং" আলাদা পদ, এটি বিভ্রান্তিকর হতে পারে। পক্ষপাতদুষ্ট হবেন না, আরও ভাল "বিলেসড" হন: স্কটবিলাস.ফাইলস
জিডিসি_সান_জোজ

উত্তর:


3

দরজা 3 নম্বর ... উপাদান গেমসবুটিস্টেমগুলিতে নিজেকে নিবন্ধিত করে

গেমবজেক্ট থেকে নিজেই জুটি বিমূর্ত রাখার জন্য উপাদানটি রয়েছে। একরকম, কোথাও কোথাও কিছুর জন্য সাবসিস্টেমগুলির সাথে ইন্টারঅ্যাক্ট করা দরকার এবং এটি উপাদান এবং এর উদ্দেশ্য।

এই ক্ষেত্রে মিলনটি আসলে কোনও খারাপ জিনিস নয়।

এই ক্ষেত্রে পারফরম্যান্সটি প্রয়োজনীয়ভাবে আবশ্যক যদি আপনি আপনার সিস্টেমে কোনও জটিলতা আশা করেন, আপনি কেবল অন্য বিকল্পগুলির অনুসন্ধান শৈলীর পদ্ধতির সামর্থ রাখতে পারবেন না।

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


1
এটা ভালো. কিন্তু উপাদানগুলি গেমসবুটি সিস্টেমগুলি সম্পর্কে কীভাবে জানে? সব সাবসিস্টেম একক আছে? এটি কুৎসিত নয়? ... আমি নির্ভরতা ইনজেকশনের মতো আরও একটি সমাধান সম্পর্কে ভাবছি ... তবে কখন এবং কারা প্রতিটি উপাদানটিতে সাবসিস্টেম উদাহরণটি পাস করে?
দানি

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

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