1

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

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

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

你怎么看?

谢谢。

4

3 回答 3

1

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

于 2010-07-21T22:08:29.287 回答
1

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

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

这个想法是使用 HIERARCHICAL 状态机,而 gen_fsm 是一个普通的状态机。为了跟踪游戏回合、阶段等,我认为像 gen_fsm 这样的普通状态机是不够的。

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

于 2010-07-21T10:51:12.950 回答
1

作为起点,我建议您看一下OTP 设计原则。您可能希望更详细地了解主管通用 FSM

于 2010-07-19T19:58:48.503 回答