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 で日本でも使ってるよと報告できた。よかった。