Squirrel その1

最近、Luaという単語を稀ながら耳にすることがある。
Luaは、いわゆるスクリプト言語と呼ばれる類の言語で、一般的には組み込み型軽量言語というのではないかと思う。
スクリプト言語はある程度以上の規模のゲームを作る上では欠かせない。
スクリプト言語で出来ることはC/C++にしろJAVAにしろ、ほとんどそちらでも対処可能だ。
しかし、それらを全てプログラムで書くのはいろいろな点で難しい。
まず、プログラムサイズが無駄に大きくなる。使う必要のないところでも読み込まれるからだ。
しかもちょっと変更しただけでメイクしなおすというのはかなり面倒。
スクリプト言語があれば、ある程度の処理をそちらで作ることが可能になる。
プログラムのメイクとは別にコンパイル可能なので、プログラマ以外でも弄ろうと思えば弄れる。
プログラムとは別のデータになるので、読み込まなければ無駄なメモリを消費せずに済む。
上手くすればユーザが何らかの処理を作成し、追加することも出来る。
そんなわけで、ある程度以上の規模のゲームになると何らかのスクリプト言語が使用されているのが普通だ。
もちろん、やりたいことが決まっているのなら、それ専用のスクリプト言語を作成するのが色々な意味で手っ取り早い。
特にプログラムサイズや速度の面ではそれ専用の方が有利だ。
が、色々な用途で使用したい場合は、それぞれで別々のスクリプト言語を用意するべきだろうか?
この方法だと覚えなければならないことが多くなるし、同じようなことをするにも別々の解決法が用意されるのはよろしくない。
そこで、ある程度汎用的に使用できる言語が求められる。しかも、軽くて速い事が重要だ。
そんな言語の一つとして、Luaが現在頭角をあらわしている。
軽量・高速でコルーチンやクロージャも使える。何よりライセンスがかなりクリアで、Cのみで作成されているため移植もしやすい。
最近のゲームで言うなら、『FarCry』やHL2のMODである『Garry’s Mod』でも使用されている。
日本人に馴染み深いものなら、『Ragnarok Online』のペットか何かの思考ルーチン作成でも使用できるとか何とか。
この辺はLuaのオフィシャルサイトで使われているソフトのリストがあるので見てみるといいだろう。
このLua、少し前から弄り始めていたのだが、どうにも不満が出てきてしまった。
C/C++っぽくない言語仕様も気に入らないし、組み込み側ではスタックを弄って色々やらなければいけないのも面倒。
他にも細々とあるのですが、それらのいくつかを解決する言語が某所で紹介されていた。
それがSquirrel。リスという意味の英単語で、”スクワラル”と読むのがいいのではないかと思う。
この言語を作成したのは『FarCry』にLuaを組み込んだプログラマらしい。そのため、Luaの不満点の一部を解決してくれている。
言語仕様はC/C++っぽくなってるし、クラスも使える。あと、配列も使える。
ただ、スタックを弄らなければならないのは変わってない。これがどうにもわかりにくい。
Luaに比べて情報が少ないのも厳しいところ。
流行るかどうかは不明だが、個人的にはLuaよりは使いやすい。
そんなわけで、これから数回に渡ってSquirrelの紹介とサンプルでもやってみようかと思う。