有限狀態機,(英語:Finite-state machine, FSM),又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。狀態存儲關于過去的信息,它反映從系統開始到現在時刻輸入的變化;轉移指示狀態變更,用必須滿足來確使轉移發生的條件來描述它;動作是在給定時刻要進行的活動描述。有多種類型的動作:
進入動作(entry action):在進入狀態時進行;
退出動作:在退出狀態時進行;
輸入動作:依賴于當前狀態和輸入條件進行;
轉移動作:在特定轉移時進行。
游戲引擎是有限狀態機最為成功的應用領域之一,由于設計良好的狀態機能夠被用來取代部分的人工智能算法,因此游戲中的每個角色或者器件都有可能內嵌一個狀態機??紤]RPG游戲中城門這樣一個簡單的對象,它具有打開(Opened)、關閉(Closed)、上鎖(Locked)、解鎖(Unlocked)四種狀態,如圖1所示。當玩家到達一個處于狀態Locked的門時,如果此時他已經找到了用來開門的鑰匙,那么他就可以利用它將門的當前狀態轉變為Unlocked,進一步還可以通過旋轉門上的把手將其狀態轉變為Opened,從而成功地進入城內。
狀態、事件、轉換和動作的幾個基本概念。
狀態(State)指的是對象在其生命周期中的一種狀況,處于某個特定狀態中的對象必然會滿足某些條件、執行某些動作或者是等待某些事件。
事件(Event)指的是在時間和空間上占有一定位置,并且對狀態機來講是有意義的那些事情。事件通常會引起狀態的變遷,促使狀態機從一種狀態切換到另一種狀態。
轉換(Transition)指的是兩個狀態之間的一種關系,表明對象將在第一個狀態中執行一定的動作,并將在某個事件發生同時某個特定條件滿足時進入第二個狀態。
動作(Action)指的是狀態機中可以執行的那些原子操作,所謂原子操作指的是它們在運行的過程中不能被其他消息所中斷,必須一直執行下去。