2015-11-27 52 views
1

我正在研究RTS遊戲,我希望能夠構建結構,這意味着構建者將步行到目標位置,並且一旦開始構建, 我想在每個可以添加狀態的單元中實現一個狀態機,因爲這可能會在用戶提供輸入時派上用場,因爲這可能稍後派上用場。 我的問題是:爲每個用戶擁有的單位創建一個狀態機是否有用,或者這是一個陷阱?RTS遊戲中的Statemachine

回答

1

狀態機在遊戲中常見的。

狀態機是對象的NPC等遊戲的行爲,通常的做法。

他們是如此常用的,他們往往是由遊戲引擎的支持:例如爲:Unity

狀態機缺陷可能是由一個天真的實現是資源消耗,例如一個使用State Pattern,只有在沒有相對較少的狀態機同時運行的情況下才可以,否則狀態模式的資源消耗對於數千個併發狀態機而言將會過高。如果你確實打算讓數千個單獨的狀態機同時運行,或者需要極高的效率,你將不得不用一種更簡單的方法來實現它們:例如:嵌套switch語句或基於表的實現examples in C

理由使用狀態機,一般來說,不僅是在遊戲。

的主要原因是使用狀態機與清晰度建模您的問題:你可以直觀地想想邊界條件,通過繪製出了狀態機,例如通過使用GraphViz或手工工具。 很容易看出在哪種情況下會發生什麼情況。

有時候你的問題「只是稱之爲」一個國家機器表示:它有「國家」,和複雜的行爲,這依賴於過去的事件。

國家機器有幾十年在他們身後計算機科學的研究和算法有關分析他們,簡化他們,等是已知的。

如果試圖「通過添加和刪除IF語句」,由專人,you will end up with messier code,你將無法進行改造,模型等

在「利弊」的一面的狀態機模型如果你使用基於表的狀態機,調試它們會有些困難。

+0

謝謝你的解釋:) – GeekPeek