কোনও উপাদান-ভিত্তিক গেম আর্কিটেকচারে আচরণ কীভাবে বাস্তবায়ন করবেন?


21

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

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

আমি এটি দেখতে পাচ্ছি, আমার দুটি বাস্তবায়ন পদ্ধতি রয়েছে:

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

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

সর্বোপরি সংক্ষেপে: কী সৃজনী রূপগুলি আরও সহজে তৈরি করতে আমি কি সমস্ত এআই যুক্তিকে একটি উপাদান হিসাবে লব করব বা প্রতিটি যুক্তিযুক্ত স্থিতিকে পৃথক উপাদানগুলিতে বিভক্ত করব?

সম্পাদনা : আমি সন্দেহ করি যে প্রথম এবং দ্বিতীয় পরিস্থিতিটি সম্পর্কে আমি কী বোঝাতে চাইছি সে সম্পর্কে কিছু বিভ্রান্তি রয়েছে। আমি এটি নীচের চিত্রটিতে ব্যাখ্যা করার চেষ্টা করেছি।

উপাদান ডায়াগ্রাম

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

প্রশ্নটি হল, একটি উপাদান-ভিত্তিক সত্তায় এআই গঠনের জন্য এগুলিই কি দুটি বিকল্প এবং যদি তা হয় তবে সর্বাধিক নমনীয়তাটি কী দেবে?


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

2 একটি কার্যকর বিকল্প নয়।
কো

উত্তর:


6

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

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

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

সম্পাদনা: প্রকৃতপক্ষে, আপনার স্থির শত্রুদের জন্য, চলাচলের উপাদানকে সীমাবদ্ধ না করে কেবল তাদের একটি স্থিতিশীল এআই উপাদান দিন যা তাদের স্থানান্তরিত করতে পছন্দ করে না।


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

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

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

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

2

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

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


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

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

2

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

সীমাবদ্ধ স্টেট মেশিন সি ++

উপরের সি -++ তে থাকা একটি স্টেট মেশিনের একটি দৃ concrete় উদাহরণ রয়েছে যা খেলোয়াড় এবং এআই একইভাবে ব্যবহার করতে পারে।


1

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


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