ターンベースのゲーム (一種のボードゲーム) を計画していますが、バックエンドはおそらく Erlang で行われる予定です。ゲーム ロジックの部分は階層的なステート マシンに適しているようですが、Erlang でそれを実装する方法がわかりません。
子 fsm ごとに個別のプロセスを生成できるかもしれませんが、これが機能するかどうかはわかりません。
別のオプションは、スクリプト言語を埋め込むか、この目的のために DSL を作成することです。
どう思いますか?
ありがとう。
@codecaster gen_fsmを使用して状態を追跡し、fsm状態内に追加レベルの状態を組み込むことができます...ただし、erl-luaも同様に機能します。erlmonと呼ばれる監視ツールを作成しました。erl-luaがクラッシュする問題が発生したため、バグがないわけではないことに注意してください。また、Nifの新しいサポートにより、誰かがnifベースのlua用の新しいドライバーを作成するのを待っています-あなたはそれを探し回ることができます-私はまだ誰もそれを構築するのを見ていません。
私は元の質問の作成者です (実際、質問を自分のものとして主張したいのですが、方法がわかりません)。
gen_fsm を含め、OTP が提供するすべての機能については既に知っています。
アイデアは、HIERARCHICAL ステート マシンを使用することであり、gen_fsm は単純なステート マシンです。ゲームのターン、フェーズなどを追跡するには、gen_fsm のような単純なステート マシンでは十分ではないと思います。
とにかく、さらに調査を進めており、すべてのゲーム ロジックに Lua を使用できるように、erl-lua を使用すると考えています。機能するようになったら、ボトルネックを検索して、C 実装などに移動できます。
出発点として、 OTP 設計原則を確認することをお勧めします。おそらく、スーパーバイザーと汎用 FSMについてさらに詳しく調べたいと思うでしょう。