Erlang/OTP + Lua の可能性

Erlang/OTP はネットワークサーバを書くのには最高の言語だと思うのだけれど、何かしらのロジックを書くのにはとても不向きだ。

そこで luerl という Erlang VM 上で動く Lua ライブラリを使う事で、ネットワークなどを Erlang/OTP で、ロジックを Lua でという実装が可能になる。

実際この仕組みを使って作ったのがゲーム用の Bot サーバ だ。

時雨堂 BOT サーバーhttps://gist.github.com/voluntas/cae671638cd104d05719

簡単に言ってしまえばボスのロジックを Lua で書ける。採用したゲームのシステムとしては ボス vs ギルドなので、ギルド分だけボスが必要で、皆違う動きをしてほしい。

Erlang/OTP の軽量プロセス一つ一つをボスにしてみた。さらにその中で Lua が動いてボスの動作を司る。

大量のボスを生成してそれぞれ別に動作するわけだ。

これがとてもフィットした。さらに安定していた。去年の 10 月に導入して今までエラー0。一切落ちたことが無い。

調子に乗って個人で MOBA エンジンを作り始めた。MOBA はリアルタイムなアリーナで数人が陣地を取り合うゲームだ。

クエリー処理を Lua で書け、処理結果を PubSub で共有できるキュー付きオンメモリデータベース https://gist.github.com/voluntas/00fb5f5c13010232aea3

リアルタイムに処理が進むこともアリ、データベースに書いていたら遅い。これはオンメモリのデータベースを Lua でいじれるようにした仕組み。

ロジックを考えずに基盤だけ作れる。ロジックはあとでゆっくり作れるようになる。

Lua はシンプルな文法のためロジックを書くにはとても向いている。

今後も Erlang/OTP + Lua を使って何か作っていきたい。

今日 luerl の作者に IRC で日本でも使ってるよと報告できた。よかった。