Tôi đã viết một FSM dựa trên một chương trong "Phát triển trò chơi nhiều người chơi" do Thor Alexander biên soạn. Bên trong là một chương có nhãn "Máy song song cho các nhân vật đáng tin cậy". Điều này được viết bằng python, nhưng các khái niệm có thể dễ dàng dịch sang C ++. Tôi đặc biệt khuyên bạn nên kiểm tra điều này, mặc dù đây là về trạng thái nhân vật, không phải trạng thái trò chơi.
Những gì tôi đã tạo là ở đây: https://github.com/swganh/mmoserver/tree/master/src/ZoneServer/GameSystemManager/State%20Manager
xem trong StateManager để biết chi tiết triển khai, nhưng về cơ bản bạn có các 'trạng thái cơ bản' khác nhau mà bạn có thể sử dụng. Sau đó, từ đó bạn có các trạng thái cụ thể mà bạn chuyển sang làm nhân vật, vì vậy mỗi trạng thái là một lớp. Sau đó, bạn kiểm tra xem có thể chuyển từ trạng thái này sang trạng thái khác không và sau đó 'nhập' bạn thực hiện chuyển đổi, bạn cũng có thể dễ dàng thực hiện những việc như đưa vào các sự kiện sau khi chuyển sang trạng thái. Tôi thấy điều này làm việc thực sự tốt cho trò chơi cho đến nay.
Những gì tôi đã thực hiện là những gì cuốn sách gọi là một máy trạng thái song song, rất cần thiết cho nhiều fsm hoạt động cùng nhau, trong trường hợp này bạn có thể chuyển sang một trạng thái, chặn tất cả các trạng thái khác (ví dụ: CreatureState_Dead). Tôi sẽ không đi sâu vào chi tiết vì tôi không nghĩ nó sẽ thực sự giúp bạn, nhưng nếu bạn muốn tôi có thể giải thích.