मैंने थोर अलेक्जेंडर द्वारा संपादित "व्यापक रूप से मल्टीप्लेयर गेम डेवलपमेंट" में एक अध्याय के आधार पर एफएसएम लिखा। अंदर एक अध्याय है "लेबल-पैरेलल-स्टेट मशीन फॉर बिलीवोर कैरेक्टर"। यह अजगर में लिखा है, लेकिन अवधारणाओं को आसानी से C ++ में अनुवाद किया जा सकता है। मैं इसे अत्यधिक जाँचने की सलाह देता हूं, भले ही यह चरित्र राज्यों के बारे में हो, गेम स्टेट्स के बारे में नहीं।
मैंने यहां जो बनाया है: https://github.com/swganh/mmoserver/tree/master/src/ZoneServer/GameSystemManagers/State%20Manager
कार्यान्वयन विवरण के लिए StateManager के तहत देखते हैं, लेकिन मूल रूप से आपके पास अलग-अलग 'आधार स्टेट्स' हैं जिन्हें आप कर सकते हैं उपयोग। फिर वहां से आपके पास विशिष्ट राज्य हैं जिन्हें आप एक चरित्र के रूप में परिवर्तित करते हैं, इसलिए प्रत्येक राज्य एक वर्ग है। आप तब जांचते हैं कि क्या आप एक राज्य से दूसरे राज्य में संक्रमण कर सकते हैं और फिर 'एंटर' करने के बाद आप अपना स्विच बनाते हैं, तो आप किसी राज्य में जाने के बाद आसानी से काम कर सकते हैं। मैंने पाया कि यह अब तक के खेल के लिए बहुत अच्छा काम कर रहा है।
मैंने जो लागू किया है वह यह है कि पुस्तक एक समानांतर राज्य मशीन को कॉल करती है, जो आवश्यक रूप से कई fsm की एक साथ काम कर रही है, इस मामले में आप एक राज्य में संक्रमण कर सकते हैं, जो अन्य सभी राज्यों को ब्लॉक करता है (यानी: CreatureState_Dead)। मैं बहुत अधिक विस्तार में नहीं जा रहा हूं क्योंकि मुझे नहीं लगता कि यह वास्तव में आपकी मदद करेगा, लेकिन अगर आप चाहें तो मैं विस्तृत कर सकता हूं।