কোনও সত্তা আইডি সিস্টেম ব্যবহারের সুবিধা কী কী?


12

আমি বর্তমানে প্রোগ্রামিং গেম এআই বইয়ের উদাহরণটি পাঠ করছি।

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

কিছু সত্তার আইডি নম্বরও কিছু সংস্থার আইডি (প্রধান গেমের অক্ষর) সহ একটি ফাইল থেকে আনা যেতে পারে।

আমার প্রশ্ন: আমি কেন এটি করব? আমি কেন সরাসরি রেফারেন্স সহ কাজ করতে পারি না? কখনও কখনও সরাসরি রেফারেন্স পাওয়া কি কঠিন? আইডি সিস্টেম ব্যবহার করা কি একটি সাধারণ পদ্ধতি? এমন গেমস আছে যা আইডি ব্যবহার করে না?

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

উত্তর:


18

উল্লেখ অনেক পরিস্থিতিতে ভাল কাজ করে। তবে, তিনটি গুরুত্বপূর্ণ পরিস্থিতি রয়েছে যেখানে উল্লেখগুলি ভালভাবে কাজ করবে না:

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

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


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

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

বা সরাসরি রেফারেন্সটি পাওয়া কখনও কখনও ঠিক আছে? অন্য কথায়, কখন আমার সত্তা A সন্নিবেশিত রেফারেন্সটি সন্ধানের জন্য সত্তা ম্যানেজারটি ব্যবহার করা উচিত এবং যখন সত্তা এটি বি এর কাছে যে কোনও উপায়ে রেফারেন্স আনতে পারে?
আভিভ কোহন

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

আমি দেখি. আপনি কী বলতে চাইছেন তা আমি বুঝতে পেরেছি কিনা তা দেখতে আমাকে একটি উদাহরণ ব্যবহার করুন। ধরা যাক আমি সংঘর্ষ সনাক্তকরণ করতে ইউনিফর্ম গ্রিড ব্যবহার করছি। গ্রিডটি 2 ডি অ্যারে। প্রতিটি সত্তা কেবল গ্রিডে একই 'ঘর' সত্তার সাথে সংঘর্ষের জন্য পরীক্ষা করা হয়। "নিয়মিত" পদ্ধতির সাহায্যে প্রতিটি কক্ষ তার প্রতিনিধিত্ব করে এমন অঞ্চলে গেম ইনটিটি অবজেক্টের জন্য রেফারেন্স রাখবে। "আইডি সিস্টেম" পদ্ধতির ব্যবহার করে প্রতিটি কক্ষ সত্তার আইডি নম্বর ধারণ করে। এই নম্বরগুলি সংঘর্ষ সনাক্তকরণের জন্য কংক্রিটের রেফারেন্সগুলি পাওয়ার জন্য অ্যান্টিটি ম্যানেজারে প্রেরণ করা হবে। এটি কি ভাল বোঝাপড়া?
আভিভ কোহন

2

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

আইডি 5067 ঠিকানাতে 0x8765 প্রাণীটি মারা যায় এবং অন্য স্প্যানস নতুন প্রাণী আইডি 7073 এ পুনরায় সেট করা হয় কেউ 5067 আইডি পরীক্ষা করে দেখায় এটি 0x8765 এ নির্দেশ করে তবে সেই প্রাণীটি এখন আইডি 7073 দিয়ে নিবন্ধিত হয়েছে যাতে সত্তা আইডি ডাটাবেসটি জানতে পারে আপনি একটি অপ্রচলিত আইডি ব্যবহার করেছেন এবং আপনাকে অবহিত করে, আপনি যে প্রাণীর কাছে পৌঁছানোর চেষ্টা করেছেন তা আর সক্রিয় নেই।

যেগুলি এবং বাইট 5 দ্বারা উল্লিখিত সমস্ত বিস্ময়কর কারণগুলি হ'ল সরাসরি উল্লেখগুলি এড়াতে কেন এটি একটি ভাল নকশা।

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