উপাদান-ভিত্তিক সত্তা আর্কিটেকচারে "সিস্টেমগুলি" এর ভূমিকা কী?


177

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

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

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

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

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

দীর্ঘ পোস্টের জন্য দুঃখিত (বা আমার ফোনের স্ক্রিন থেকে এটি অন্তত মনে হচ্ছে)!

উত্তর:


336

সত্তা উপাদান সিস্টেমগুলি উপস্থাপন এবং প্রয়োগ করার জন্য প্রচুর উপায় রয়েছে, তবে এখানে একটি উপায়ের ব্যাখ্যা। মনে রাখবেন সত্তা / উপাদান / সিস্টেম আর্কিটেকচারের কোনও দৃ concrete় সংজ্ঞা নেই, সুতরাং এটি কেবলমাত্র একটি বাস্তবায়ন।

আমি সত্তা / উপাদান / সিস্টেম আর্কিটেকচারগুলির জন্য উপমা প্রবর্তন করতে যা যা সহায়তা করতে পারে। আসুন কী হিসাবে একটি সত্তা মনে করি।

সত্তা

সত্তা কী

কীগুলির দাঁতও রয়েছে (গা dark় নীল)। আমাদের সত্তা কী এর দাঁতগুলি এটি তৈরি করে এমন উপাদানগুলি। সত্ত্বা তাদের আইডি দিয়ে আলাদা করে বলতে পারেন, এমনকি তাদের দাঁত একই থাকলেও। সুতরাং কী কী মাপসই করা হয়? লক। তালা আমাদের সিস্টেম। উদাহরণস্বরূপ, একটি আন্দোলন ব্যবস্থা।

পদ্ধতি

আন্দোলন সিস্টেম লক

লকটি কেবল তখনই কার্যকর হয় যদি আমাদের কীতে অবস্থান এবং গতি উভয়ের জন্য দাঁত থাকে। এই সিস্টেমটি কেবলমাত্র সত্ত্বাগুলির পদক্ষেপ করে যা একটি অবস্থান এবং বেগ রাখে। সেখানে কিভাবে এই সিস্টেমের চিনতে যা সত্ত্বা প্রক্রিয়া, কিন্তু এক উপায় ব্যবহার করা সেট আপ করার জন্য একাধিক উপায় আছে long। প্রতিটি বিট একটি উপাদান ধরনের জন্য সংরক্ষিত। আমাদের উদাহরণের জন্য একটি 64 বিট দীর্ঘের পরিবর্তে 4 বিট টাইপ ধরে নেওয়া যাক। আমাদের উদাহরণ সত্তা সমস্ত উপলব্ধ উপাদান থাকবে। সুতরাং এটি কী হবে 1111। তারপরে, সিস্টেমটি এমন কোনও সত্তার সন্ধান করছে যা ক 11--। ( -প্রতিনিধিত্বকারীদের কোনও যত্ন নেই, কারণ স্প্রিট বা স্বাস্থ্য আছে কিনা তা চলাচল করে না। এটি একটি সাধারণ ANDক্রিয়াকলাপ সহ কোনও সত্তা পরীক্ষা করতে পারে । সুতরাং আমাদের সত্তা মেলে যদি ((1111 & 1100) == 1100)। যদি আমি আপনাকে হারিয়ে ফেলেছি তবে বিটওয়াইজ অপারেশন সম্পর্কে আরও কিছু পরীক্ষা করে দেখুন ।

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

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

ধারণাটিকে আরও দৃify় করতে সহায়তা করার জন্য অন্য একটি সিস্টেমে একবার দেখে নেওয়া যাক:

অঙ্কন সিস্টেম লক

এটি আমাদের অঙ্কন ব্যবস্থা। এটি মেলে এমন উপাদানগুলির সন্ধান করে 1-1-। এই সত্তাটির সাথে মেলে কারণ: ((1111 & 1010) == 1010)অতিরিক্ত হিসাবে, আপনি দেখতে পাচ্ছেন যে এই সিস্টেমটি তার অবস্থানে সত্তা স্প্রিট আঁকিয়ে স্ক্রিনে তথ্য আউটপুট করে।

ঠিক আছে, আরও একটি। আসুন অন্য সত্তাটি দেখুন এবং দেখুন এখন পর্যন্ত এটি কীভাবে আমাদের উদাহরণে খাপ খায়।

অচলিত সত্তা কী

আপনি দেখতে পাচ্ছেন, এই সত্তার সাথে এর সাথে কম উপাদান সংযুক্ত রয়েছে। এটিতে থাকা উপাদানগুলি দেখে, দেখে মনে হচ্ছে এটি কোনও শৈলের মতো স্থির আইটেম হতে পারে। এটির একটি অবস্থান এবং একটি স্প্রাইট রয়েছে। এটি সরবে না এবং এটি কোনও স্বাস্থ্যগত পরিবর্তন দ্বারা প্রভাবিত হবে না। এই সত্তা 1010 এর কী তৈরি করবে So সুতরাং এই সত্তায় কোন সিস্টেমগুলি কাজ করে? চেক করুন:

আমাদের আন্দোলন ব্যবস্থার বিরুদ্ধে: ((1010 & 1100) != 1100)না। দেখে মনে হচ্ছে আন্দোলন ব্যবস্থা এই সত্তাটির বিষয়ে চিন্তা করে না, কারণ এতে প্রয়োজনীয় উপাদান নেই।

আমাদের অঙ্কন ব্যবস্থার বিরুদ্ধে: ((1010 & 1010) == 1010)আরে, এটি একটি মিল। এই সত্তাটি অঙ্কন সিস্টেম দ্বারা পরিচালিত হবে। অঙ্কন সিস্টেম সংজ্ঞায়িত অবস্থানে স্প্রিট আঁকবে।


আশা করি আপনি দেখতে পাচ্ছেন যে এখন এমন আরও একটি সিস্টেম যুক্ত করা কত সহজ হবে যা আমাদের উপাদানগুলি গ্রহণ করে এবং সেগুলি চালিত করে। আমি আপনার প্রশ্নগুলি সম্বোধন করেছি তা নিশ্চিত করুন:

যদি একাধিক সিস্টেমে একই উপাদানটিতে অ্যাক্সেসের প্রয়োজন হয়? কোথায় তথ্য থাকা উচিত?

সাধারণত, সিস্টেমগুলি একের পর এক কাজ করে। তারা তাদের প্রয়োজনীয়তার সাথে মেলে এমন সমস্ত সত্তা প্রক্রিয়াজাত করে, তারপরে পরবর্তী সিস্টেমটি একই কাজ করে। তথ্য সত্তার সাথে থাকে। সিস্টেমে কোনও জিনিস সংরক্ষণ করা উচিত নয়, এটি কেবলমাত্র একটি লক পরিণত হবে যা মূল তথ্যটি যেখানে থাকে এবং লক থেকে লক পর্যন্ত চলে moves

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

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

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

আমি মনে করি যে আমি একটি longকী এর ধারণার সাথে এটির উত্তর দিয়েছি যা কোনও সত্তায় থাকা উপাদানগুলির সংজ্ঞা দেয়। আপনি জানেন কারণ চাবিটি লকটি ফিট করে।

রাম রাম! সেটা ছিল দীর্ঘ পোস্ট! (বা কমপক্ষে এটি আমার বড় মনিটরের কাছ থেকে দেখে মনে হচ্ছে))


23
এই মূল উপমাটি এখন পুরো ধারণাটি বোঝার জন্য সত্যই সহায়ক। চমৎকার ধারনা! আপনার শেষ অনুচ্ছেদে
লস

16
+1 আমি দেখেছি এমন সত্তা-উপাদান সিস্টেমের বৃহত্তম এবং সর্বোত্তম ব্যাখ্যার জন্য। , হায় আফসোস!
নাইট 666

7
-1 আমার কাছ থেকে - কারণ এটি একটি খারাপ পদ্ধতির নয়, তবে এটি এপ্রোচ হিসাবে চিত্রিত করা হয়েছে বলে। তবুও অনেকগুলি সিস্টেম রয়েছে যেখানে উপাদান এবং পরিষেবাসমূহের পৃথকীকরণ নেই (উদাহরণস্বরূপ ityক্যে), এবং সিস্টেমগুলির পক্ষে কোন সত্তা প্রক্রিয়াজাত করতে হবে তা জানার সহজ উপায় রয়েছে (সত্তাটি তৈরি হওয়ার পরে কেবল তাদের যুক্ত করুন)।
কাইলোটন

37
@ কাইলোটান আমি বলি " এই সিস্টেমগুলি কীভাবে সত্তা প্রক্রিয়াজাতকরণের স্বীকৃতি দেয় তা স্থাপনের একাধিক উপায় রয়েছে তবে একটি উপায় হ'ল একটি ব্যবহার করা long " অতিরিক্তভাবে, আমি সাধারণত উত্তরগুলির জন্য ডাউন ভোট সংরক্ষণ করি যা দরকারী নয় (হোভার টেক্সট হিসাবে) বলেছেন)। আমি মনে করি আপনি ভোটদানের জন্য অনেক সময় ব্যয় করতেন যদি আপনি এমন সমস্ত উত্তরগুলির জন্য এটি করেন যা তারা সম্বোধন করছে তার 100% বিষয় অন্তর্ভুক্ত করে না।
মাইকেলহাউস

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