Erlang中的分层状态机实现

时间:2010-07-19 18:02:31

标签: scripting erlang dsl fsm

我正计划一个基于回合制的游戏(一种棋盘游戏),而后端可能会在Erlang中完成。游戏逻辑部分似乎适合分层状态机,但我不确定如何在Erlang中实现它。

也许我可以为每个子fsm产生一个单独的进程,不确定这是否有用。

另一种选择是嵌入脚本语言或为此目的创建DSL。

您怎么看?

感谢。

3 个答案:

答案 0 :(得分:1)

作为一个起点,我建议你去看看OTP design principles。您可能希望更详细地了解supervisorsgeneric FSMs

答案 1 :(得分:1)

我是最初的问题作者(实际上我想将这个问题视为我的问题,但我不知道如何)。

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

想法是使用HIERARCHICAL状态机,gen_fsm是普通状态机。为了跟踪游戏的转变,阶段等,我不认为像gen_fsm这样的普通状态机就足够了。

无论如何,我一直在进一步调查,我认为我会使用erl-lua所以我可以使用Lua来处理所有的游戏逻辑。一旦它工作,我可以搜索瓶颈并将它们移动到C实现或其他任何东西。

答案 2 :(得分:1)

@codecaster你可以使用gen_fsm来跟踪状态,并在fsm状态内构建一个额外的状态级别......但是,erl-lua也可以工作。我建立了一个名为erlmon的监控工具 - 我们在erl-lua崩溃时遇到了一些麻烦,所以请记住它不是没有bug的。还有对Nifs的新支持,我正在等待有人为基于nif的lua编写一个新的驱动程序 - 你可能想要四处寻找 - 我还没有看到有人构建一个。