কীভাবে উপাদান-ভিত্তিক আর্কিটেকচারে সসীম রাষ্ট্রের মেশিনটি তারে রাখবেন? [বন্ধ]


23

রাষ্ট্রীয় মেশিনগুলি উপাদান-ভিত্তিক আর্কিটেকচারগুলিতে ক্ষতিকারক নির্ভরতা সৃষ্টি করে বলে মনে হচ্ছে।

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

আমি যেখানে আছি:

  • আমি উপাদান-ভিত্তিক আর্কিটেকচারে নতুন।
  • আমি মারামারি খেলা করছি, যদিও আমার মনে হয় না যে বিষয়টি গুরুত্বপূর্ণ হওয়া উচিত। আমি আমার রাষ্ট্র মেশিনটিকে "ক্রাউচিং", "ড্যাশিং", "ব্লকিং" ইত্যাদির মতো রাষ্ট্রগুলিতে টগল করতে ব্যবহার করা হচ্ছে তা কল্পনা করি
  • আমি এই রাষ্ট্র পরিচালনার কৌশলটি একটি উপাদান-ভিত্তিক আর্কিটেকচারের জন্য সর্বাধিক প্রাকৃতিক সিস্টেম হিসাবে পেয়েছি তবে এটি যে কৌশলগুলি সম্পর্কে পড়েছি তার সাথে দ্বন্দ্ব রয়েছে: পরিবর্তনশীল আচরণের চরিত্রগুলির জন্য ডায়নামিক গেম অবজেক্ট উপাদান উপাদানটি এটি প্রস্তাব দেয় যে সমস্ত উপাদান সক্রিয় / নিষ্ক্রিয় করবে It ক্রমাগত সক্রিয়করণের জন্য একটি শর্ত পরীক্ষা করে নিজেরাই।
  • আমি মনে করি যে "দৌড়" বা "হাঁটা" এর মতো পদক্ষেপগুলি রাষ্ট্র হিসাবে বোধ করে, যা এখানে গৃহীত প্রতিক্রিয়ার সাথে একমত নয়: /gamedev//a/7934
  • আমি এটি দরকারী, কিন্তু অস্পষ্ট খুঁজে পেয়েছি: একটি উপাদান-ভিত্তিক গেম আর্কিটেকচারে আচরণ কীভাবে প্রয়োগ করা যায়? এটিতে একটি পৃথক উপাদান থাকার পরামর্শ দেয় যা রাজ্য মেশিন ব্যতীত আর কিছুই না করে। তবে, এটি স্টেট মেশিন উপাদান এবং অন্যান্য সমস্ত উপাদানগুলির মধ্যে এক ধরণের সংযোগের প্রয়োজন। কীভাবে এই দম্পতিটি পরিচালনা করা উচিত তা আমি বুঝতে পারি না। এগুলি কিছু অনুমান:

    :
    উপাদানগুলি রাষ্ট্র মেশিনের উপর নির্ভর করে: উপাদানগুলি রাষ্ট্রীয় মেশিনের উপাদানগুলির জন্য রেফারেন্স গ্রহণ করে getState(), যা একটি অঙ্কের ধ্রুবক দেয় returns উপাদানগুলি নিয়মিত নিজেকে আপডেট করে এবং প্রয়োজনীয় হিসাবে এটি পরীক্ষা করে।

    বি। স্টেট মেশিন উপাদানগুলির উপর নির্ভর করে:
    রাজ্য মেশিন উপাদানটি তার নিরীক্ষণ করা সমস্ত উপাদানগুলির রেফারেন্স গ্রহণ করে। getState()তারা কোথায় রয়েছে তা দেখার জন্য এটি তাদের পদ্ধতিগুলি জিজ্ঞাসা করে।

    গ। তাদের মধ্যে কিছু বিমূর্তি
    একটি ইভেন্ট হাব ব্যবহার করবেন ? কমান্ড প্যাটার্ন?

    D. স্টেট প্যাটার্ন ব্যবহার করা হয় এমন উপাদানগুলির পৃথক পৃথক
    পদার্থ। পৃথক রাষ্ট্রীয় অবজেক্ট তৈরি করা হয়, যা উপাদানগুলির সেটকে সক্রিয় / নিষ্ক্রিয় করে। স্টেট মেশিন স্টেটের অবজেক্টের মধ্যে স্যুইচ করে।

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

উত্তর:


7

ওভারভিউ মোটামুটি হালকা, তবে গত বছর নিউ গেম কনফের জন্য আমি যে উপস্থাপনা করেছি তা থেকে এই স্লাইডগুলি পরীক্ষা করে দেখুন:

https://docs.google.com/presentation/d/110MxOqut_y7KOW1pNwIdcccisIA3ooJwVR-xm-ecuc4/view

(নীচে প্রাসঙ্গিক চিত্র দেখুন)

কৌশলটির সংক্ষিপ্তসারটি হ'ল একটি উপাদান-ভিত্তিক গেম সত্তার উপর আচরণ করে এমন আচরণমূলক রাষ্ট্র মেশিনগুলির সাথে ক্রিয়া তালিকার প্যাটার্নটি (ব্যাখ্যা করা হয়েছে - কিছুটা খারাপভাবে - স্লাইডগুলিতে) একত্রিত করা।

এটি মূলত এআই আচরণের জন্য একটি বিশেষ রচনা ব্যবস্থা তৈরির মতোই, সহজ এআই সিস্টেমগুলির জন্য আপনার প্রয়োজন আন্তঃ-আচরণমূলক একীকরণের ধরণের দিকে।

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

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

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

স্লাইড 10 স্লাইড 25 স্লাইড 26


"আচরণ" এবং "ক্রিয়াগুলি" এর মধ্যে মৌলিক পার্থক্য কী?
পুতুল

1
@ পপ: একটি কোড দৃষ্টিকোণ থেকে, যেমন আমি এটি তৈরি করেছি, আচরণ একটি ক্রিয়া। ধারণাগত বিন্দু থেকে, ক্রিয়াগুলি সাধারণত ট্রানজিটরি হয় - এগুলি কেবলমাত্র "সম্পূর্ণ" হওয়া পর্যন্ত বিদ্যমান - যদিও আচরণগুলি চিরকাল থাকে এবং কখনই তালিকা থেকে সরানো হয় না। আমি অন্য দলকে একই সিস্টেম তৈরি করতে দেখেছি তবে দুটি তালিকাসমূহের সাথে একটি রয়েছে অ্যাকশনের জন্য এবং একটি বেহভিয়ার্সের জন্য, যা যথেষ্ট ভাল কাজ করে। বিটমাস্ক এবং গ্রুপিং (লেন, আমি বিশ্বাস করি যে আমি তাদের স্লাইডগুলিতে ডেকেছি) ব্যবহার করে কিছু আচরণ অবরুদ্ধ করার মতো অ্যাকশনে দক্ষতা অর্জন করতে চাই। দুঃখিত যে মিডল স্লাইডের গ্রাফিকটি খুব খারাপ। :)
শান মিডলডিচ

3

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

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


সুতরাং, এআই উপ-উপাদানগুলি আসলে কাজটি করছে? এআই উপাদান হিসাবে একই স্তরে কি সত্তা উপাদান হিসাবে উপস্থিত ছিল?
পুতুল

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

1

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

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