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


16

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


উত্তর:


12

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

আমি যা তৈরি করেছি তা এখানে: https://github.com/swganh/mmoserver/tree/master/src/ZoneServer/GameSystemManagers/States%20Manager বাস্তবায়ন বিশদের জন্য স্টেট ম্যানেজারের অধীনে তাকান, তবে মূলত আপনার বিভিন্ন 'বেস স্টেটস' রয়েছে যা আপনি পারেন ব্যবহার করুন। তারপরে সেখান থেকে আপনার নির্দিষ্ট অবস্থা রয়েছে যা আপনি একটি চরিত্র হিসাবে রূপান্তর করেছেন, তাই প্রতিটি রাজ্যই একটি শ্রেণি is তারপরে আপনি যাচাই করে নিতে পারেন যে এক রাজ্য থেকে অন্য রাজ্যে রূপান্তর করতে পারে এবং তারপরে আপনি 'সন্নিবেশ' করে নিজের সুইচটি তৈরি করতে পারেন, আপনি কোনও রাজ্যে যাওয়ার পরে ইভেন্টগুলিতে রাখার মতো জিনিসগুলি খুব সহজেই করতে পারেন। আমি এখনও পর্যন্ত গেমের জন্য এটি সত্যিই ভালভাবে কাজ করতে পেরেছি।

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


1
দেখে মনে হচ্ছে কোডটি সরানো হয়েছে: github.com/swganh/mmoserver/tree/master/src/ZoneServer/…
DK_


8

প্রোগ্রামিং গেম এআই উদাহরণ অনুসারে (http://www.ai-junkie.com/books/toc_pgaibe.html) এর একটি বাস্তবায়ন রয়েছে যা বেশ সহজবোধ্য এবং কেবলমাত্র বেসিকগুলি পরিচালনা করে। ট্রানজিশনগুলি একটি একক পদ্ধতিতে কল (প্রথম প্রবেশ () লিখুন, তারপরে প্রতিটি আপডেট এক্সিকিউট করুন), স্থানান্তরিত হওয়ার সময় প্রস্থান করুন)> এর বাইরে আপনার কী প্রয়োজন তা আমি জানি না। আমি তাদের নিজস্ব রাষ্ট্র হিসাবে আরও জটিল ট্রানজিশনগুলি বাস্তবায়িত করব যা কেবল একবার সম্পাদন করার জন্য এবং পরের ক্রমে পরবর্তী রাজ্যে চলে যাওয়ার জন্য ডিজাইন করা হয়েছে।

আমি ছুরিকাঘাত করব এবং ধরে নেব যে আপনি এআই এর জন্য এফএসএম দেখছেন, যদি তাই হয় তবে আমি পরামর্শ দিচ্ছি যে আপনি আচরণ গাছগুলি একবার দেখুন। এআইজিমেডেভের কয়েকটি দুর্দান্ত নিবন্ধ রয়েছে।


1
: তা উদাহরণ হিসাবে ভাল তার সাইটে পাওয়া যায় ai-junkie.com/architecture/state_driven/tut_state1.html
Zolomon

5

যদি সি ++ টেম্পলেট যাদু এবং সম্ভাব্য দীর্ঘ সংকলনের সময়গুলি আপনার পক্ষে সমস্যা না হয় এবং আপনি ইতিমধ্যে এর সাথে কাজ করার জন্য বুস্ট ইনস্টল করেছেন :

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

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

এটি অর্থোগোনাল রাজ্যগুলি (সমান্তরাল রাজ্য) এবং অন্যান্য দরকারী ইউএমএল-ভিত্তিক বৈশিষ্ট্যগুলিকে সমর্থন করে support

এটি রূপান্তর টেবিলটি প্রকাশের বিভিন্ন উপায়ও সরবরাহ করে, এটি পরীক্ষামূলক তবে আকর্ষণীয় দিক থেকে (যদিও বর্তমান সংকলক পারফরম্যান্স দ্বারা সীমাবদ্ধ - খুব খারাপ!)

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