squirrel

CEDEC2008 小さな王様と約束の国

CEDEC2008でのSquirrelの講演を見ました。 スクリプタだけではなく、プログラマもSquirrelで一緒に開発。 3割がC++コードで7割りがスクリプト。プログラマも後半はほとんどSquirrelで作業しつつたまにC++実装してバインディング。途中で面倒になってきたの…

squirrelとc++の速度比較

#pragma optimize("",off) static void dummyfunc(){}//最適化抑制のための関数 #pragma optimize("",on) struct Foo { int num; Foo() { num = 0; } void inc() { ++num; dummyfunc(); } }; Foo foo; for(int Li=0;Li<1000*1000;++Li){ foo.inc(); } O2でビ…

squirrelのデータをC++から簡単にアクセスする

モデルのポリゴンデータを.nutで記述するつもりなので、手始めにsquirrelのデータへのアクセスを容易にするためのオブジェクト&イテレータを実装してみた。 return { NAME="カイン" JOB="竜騎士" EQUIP=["グングニルの槍","クリスタルアーマー","リボン"] }…

squirrelへのクラス登録、仮想関数テーブルがあるとNG

ベクトル組み込みはできた。コンストラクタによくあるオーバーライドに関してはメソッド名を変えることでスルー。他のクラスを登録しようとしたら、キャストにミスってるらしくvfptrがあるとうまくメソッドが呼ばれない。あとちょっと。。。 2008.09.16 追記…

squirrelへのクラス登録、引数と戻り値にC++型を使えるように

忘れてた。 class model { void setvisible(bool flag); bool isvisible() const; }; class loader { public: model& loadmodel(const char* path); }; vm.creg<model>("Model") .variable("visible",&model::isvisible,&model::setvisible); vm.creg<loader>("Loader") .fu</loader></model>…

consttable

consttableの存在がよくわからんかったのでここにメモしておきます。 enum hoge { one=1, two=2, san=3, }; const uuu=11; このenumとconstはroottableやregistrytableと並列に存在するconsttableへスクリプトコンパイル時に蓄えられます。ここでわからない…

続squirrelへclassバインディング

http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?rev=52&root=shive&view=rev だいぶできた。 //クラスを登録 creg<aaa>(hvm,"aaa") .function("getstatic",&aaa::getstatic) .function("somemsg",&aaa::somemsg) .function("getname",&aaa::getname) .function("</aaa>…

squirrelへclassバインディング

http://svn.sourceforge.jp/svnroot/shive/junk/diary/2008/20080906-test001.cpp 簡単なclassバインディング書いてみた。関数のオーバーロードとかちゃんとやるべきだろうか。必要になってから考えよう。メンバ変数へのアクセスも対応したいなぁ。

squirrelの構文習得

http://svn.sourceforge.jp/svnroot/shive/junk/diary/2008/20080906-test100.nut 構文習得がてらつらつら書いてみた。luaもC++も好きなので気持ちがいいです。早くゲームに使ってみたい。 以前luaを使っていたときにもすでにcoroutine(fiber)の仕様はあった…

squirrelのsjis対応

http://svn.sourceforge.jp/svnroot/shive/junk/diary/20080904/sqlexer.cpp ReadStringで文字列をパースしているようなので、leadbyteが来たらもう1文字を連続して読むように変更しました。ちゃんとエラーチェックしないとごみデータを渡したときにおかし…

dostring

昔luaにあったdostring。あれなんでなくなったんだろう?squirrelで書くとしたらこんな感じ。 //printハンドラ static void print( HSQUIRRELVM hvm, const SQChar* format, ... ) { va_list args; va_start( args, format ); vprintf_s( format, args ); va…

squirrelを使ってみた

http://svn.sourceforge.jp/svnroot/shive/sandbox/sqtest/test000.cpp以前luaを使っていたのですんなり入れそう。 APIセットはluaを踏襲して完全に+αした感じになってます。配列、クラスなどが増えているのと、スロットの初回代入の違いなどを覚えればOK…