2010-07-19 110 views
1

我正計劃一個基於回合的遊戲(一種棋盤遊戲),後端可能會在Erlang中完成。遊戲邏輯部分似乎適合分層狀態機,但我不確定如何在Erlang中實現它。Erlang中分層狀態機的實現

也許我可以產生一個單獨的過程與每個孩子fsm,不知道這是否會工作。

另一種選擇是嵌入腳本語言或爲此創建DSL。

您認爲如何?

謝謝。

回答

1

我是最初的問題作者(實際上我想主張我的問題,但我不知道如何)。

我已經知道OTP提供的所有東西,包括gen_fsm。

這個想法是使用一個HIERARCHICAL狀態機,而gen_fsm是一個普通狀態機。爲了跟蹤遊戲的轉向,階段等,我不認爲普通狀態機是gen_fsm就足夠了。

無論如何,我一直在進一步調查,我認爲我會使用erl-lua,因此我可以將Lua用於所有的遊戲邏輯。一旦它正在工作,我可以搜索瓶頸並將它們移到C實現或其他任何地方。

+0

我會在這裏發表評論,因爲我無法在其他地方發表評論。 AFAIK,基於NIF的方法不能解決問題,似乎NIF崩潰與鏈接的驅動程序具有相同的後果。 請看這裏:http://groups.google.com/group/erlang-programming/browse_thread/thread/896f6269d874da10/07b09a0770d47491 – Papipo 2010-07-22 10:37:11

1

@codecaster你可以使用gen_fsm來跟蹤狀態,並在fsm狀態下建立一個額外的狀態級別......但是,erl-lua也可以。我建立了一個名爲erlmon的監控工具 - 我們在erl-lua崩潰時遇到了一些麻煩,所以請記住它不是無bug的。還有對Nifs的新支持,我在等待有人爲lua寫一個基於nif的新驅動程序 - 你可能想環顧一下 - 我還沒有看到任何人創建它。