久しぶりにDXライブラリ触ってて、オブジェクトの制御をLuaでやろうと思って少し躓いたのでメモ。
以前Seleneでやったことだけど。
前提として、
・LuaJITを使う(ゲームのつもりなので速度優先のため)
・DLLじゃなくexeに組み込み(なのでstaticなlib)
・開発環境はVC++2010 Express
久しぶりにDXライブラリ触ってて、オブジェクトの制御をLuaでやろうと思って少し躓いたのでメモ。
以前Seleneでやったことだけど。
前提として、
・LuaJITを使う(ゲームのつもりなので速度優先のため)
・DLLじゃなくexeに組み込み(なのでstaticなlib)
・開発環境はVC++2010 Express
今週ちょっと暇になったから、久しぶりにSeleneでゲーム作りの続きでもしようと思ったら、なぜか動かなかった。
Luaの標準ライブラリ読込みのタイミングでプログラムが強制終了してしまう。
先月あたりまでは普通に動いてたのに。
このとき使ってたLuaはLuaJIT-2.0.0-beta3だったんだけど、試しに公式Lua5.1でビルドし直したら問題なく動いた。
Seleneを1.22kにしたのがまずかったかな・・・と思って、1.21dに戻して再ビルドしたけどやっぱりダメ。
なんとなくArtemisで試したら、元気に動いた。試してないけど多分DXライブラリでも動くんだろうなぁ。
うーん、どうしちゃったんだろう。
Selene公式で質問しようにも、公式LuaならともかくLuaJITだしなぁ。
いずれまた動くことを期待して、今は放置しておこう。
LuaJIT2.0もまだβだし。
Win版Luaは通常、本体であるDLLにLib経由でアクセスする形になってますが、DLLじゃなくLibのみでビルドして使うにはどうしたらいいんじゃろ?
と、色々探してたんですが(コンパイルとかビルドには詳しくないのです)
その途中でXtalっていうLuaっぽい感じのスクリプト言語を見つけた。
主にゲーム作成用途を目的として作成されたってことで、wktkしながら早速ビルドして使ってみた。
うん。面白い言語だと思う。
XtalはDLLじゃなくてLibのみでリンクするのがいいね。
あとLuaで色々煩わしいスタックの問題から開放されるらしい。
Luaみたくメタテーブル使って無理やりクラスっぽいもの作るんじゃなく、ちゃんとクラスが使えるのも好きな感じ。
コルーチンもある上に、ネイティブスレッドもあるのか。すげぇ。
そして日本人が作ってるってのがまたいいね。
ベンチマーク用にXtalスクリプトとluaスクリプトも用意されてたので、早速速度比較してみた。
色々あるので全部試してみよう。
・・・と、思ったんだけど・・・
Script | Xtal | Lua5.2 | LuaJIT2.0β3 |
---|---|---|---|
fib | 2.150 | 0.851 | 0.140 |
あー、うん。もうこれ以上測らなくていいかも。
バージョンは1.0以上になってるけど、まだ発展途上ってことでいいのかな。今後に期待大な。
Libのサイズが10M超えてたり、どんなに小さいexeでも4M超えたりするのも、Luaと比べちゃうとちょっと不利かな。
せめて速度がLuaに追いつかないと、Luaから乗り換えられないので、頑張って欲しいです。
久しぶりにこの形式でアフィ張ってみる。
技術関連書籍ってのは高いもんだから、この値段は安いほうなんだろうけど、でもやっぱり躊躇してしまう値段。
でもラノベ6冊分って考えたらそれほど高くもないか、とか思えてきたので購入することにした。