トップページtech
981コメント297KB

【Lua】組み込み系言語総合 その4【Squirrel】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/03/30(水) 01:00:58.93
LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/

その他の参考URLは>2から

■前スレ
【Lua】組み込み系言語総合 その3【Squirrel】
http://hibari.2ch.net/test/read.cgi/tech/1272643397/

■過去スレ
その2 http://pc12.2ch.net/test/read.cgi/tech/1243210301/
その1 http://pc12.2ch.net/test/read.cgi/tech/1205208141/

プログラミング言語 Lua
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/
その2 http://pc8.2ch.net/test/read.cgi/tech/1063711237/
その1 http://pc5.2ch.net/tech/kako/1034/10341/1034182349.html
0175デフォルトの名無しさん2011/05/28(土) 21:12:21.58
メモリが足りなくなってるなら、自前のアロケータ使ってるならそいつに追加メモリを
割り当てられないか検討
もしデフォルトのmallocなら割と詰んでる。キャッシュ処理とか実装してるなら掃除するとか
0176デフォルトの名無しさん2011/05/29(日) 00:09:29.70
luaでprintの出力先変えるのってどうするのが正しいの?
0177デフォルトの名無しさん2011/05/29(日) 00:16:27.58
print = myprint
0178デフォルトの名無しさん2011/05/30(月) 17:34:20.92
luaとc++でオブジェクトを共有したいときはどうすればいいんだ?
ルアのガベコレとCPPの参照カウントで二重管理になってもったいない気がするんだが……
今はCPPの参照カウントをルアのガベコレでデクリメントさせてるけど
0179デフォルトの名無しさん2011/05/30(月) 17:36:49.75
C++側で管理するならluaにポインタだけ渡すとか。
逆もできる。
0180デフォルトの名無しさん2011/05/30(月) 17:37:46.17
あー

>CPPの参照カウントをルアのガベコレでデクリメントさせてる

ならほぼ最適解じゃない?
0181デフォルトの名無しさん2011/05/31(火) 21:36:48.46
>>179
Cで管理してluaにポインタだけ渡してたら型チェックめんどくさくね?
luaL_checkudataが使えないと自分で型チェック書かないといけない
0182デフォルトの名無しさん2011/06/01(水) 09:28:40.47
Lua の assert を全無視するような(リリース版コンパイルみたいな)
オプションってある?
0183デフォルトの名無しさん2011/06/01(水) 09:39:41.55
int main(void) {
lua_State *L = lua_open();
#ifdef NDEBUG
if(luaL_loadstring(L, "assert = function(...) return ... end") || lua_pcall(L, 0, 0, 0))
{
puts("err"); return 1;
}
#endif
//いつもの処理
lua_close(L);
return 0;
}
Cに合わせてデバッグ切り替えるならこんな感じかな
0184デフォルトの名無しさん2011/06/01(水) 09:50:00.87
なるほど、上書きしてしまうのか。

assert("ほげほげ")
コンパイル済みソースに "ほげほげ" の部分が現れないようにしたかったんだけど、
プリプロセッサでもつくらないと無理ぽいね

#define assert(x) true

みたいなのが一発でできればいいのに...
0185デフォルトの名無しさん2011/06/01(水) 21:44:06.76
AngelScript|Д`)ジー 
AngelScript|Д`)つboost::wave
AngelScript|`)      boost::wave
0186デフォルトの名無しさん2011/06/02(木) 02:42:57.43
>>184
assert(...)
assert(...)()
a,b,..=assert(...)
用法マチマチだから厳しいと思うよ
0187デフォルトの名無しさん2011/06/04(土) 17:01:23.98
lightuserdataの型を調べるにはどうすれば?
0188デフォルトの名無しさん2011/06/04(土) 18:50:35.21
そういう関数を自分でつくる

lighuserdata はよーするに lua はいっさい関与しませんよ、ってデータなので、
その管理の全責任は作った人にある
0189デフォルトの名無しさん2011/06/04(土) 20:55:35.61
struct MyData {
 int type;
 void *ptr;
};

てのをつくって、必ずこれを渡すようにすれば。

MyData data;
data.type = MyObject;
data.ptr = (void *)myObject;
lua_pushlightuserdata(ls, &data);


MyData *arg = (MyData*)lua_tolightuserdata(ls, -1);
switch (arg->type) {
case ...
};
0190デフォルトの名無しさん2011/06/04(土) 21:14:38.66
グローバルか、Luaレジストリに型定数をおいておけばいい
0191デフォルトの名無しさん2011/06/05(日) 10:37:54.80
LuaとC++一緒に使ってるとプログラミングの仕方に迷うわぁ。
Luaのほうにオブジェクト指向を意識してインスタンスのsetter/getterメソッド作ってるのがなんか馬鹿らしい。
0192デフォルトの名無しさん2011/06/05(日) 16:00:05.88
Luaで例外ってどうやって使うのか
インクルードヘッダみろって言われて見てもよくわからないし
0193デフォルトの名無しさん2011/06/05(日) 18:08:06.75
>>191
setgetのないクラス設計にすればいいよ
0194デフォルトの名無しさん2011/06/05(日) 21:04:53.23
AngelScript|Д`)ノ<OOPと聞いて飛んできました
0195デフォルトの名無しさん2011/06/05(日) 21:09:07.40
自分はluabindで
.property("x", &A::GetX, &A::SetX)
ってやって、C++からはget/setで、Luaからはpublic変数みたいにして
アクセスしちゃう感じで統一してる
0196デフォルトの名無しさん2011/06/05(日) 22:35:27.70
メソッドを作るのが馬鹿らしいっていうのは
(多重)継承しないでコンポジションをするのが馬鹿らしいっていうのと同じに見える
だからたぶん(多重)継承の問題と同じ結論になる
0197デフォルトの名無しさん2011/06/05(日) 22:41:55.59
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
0198デフォルトの名無しさん2011/06/06(月) 20:51:57.39
最初からC++に最適化されたLuaのような言語が在ればなぁ・・・
0199デフォルトの名無しさん2011/06/06(月) 22:05:52.90
メタテーブル使いまくるからswitch文とかパターンマッチ欲しいなぁ。
Rubyみたメソッド名に?使えると戻り値が真偽ってわかりやすいんだが。
とここで言ってもなんの意味もない!
0200デフォルトの名無しさん2011/06/06(月) 22:44:53.34
AngelScript|Д`)ジー
0201デフォルトの名無しさん2011/06/07(火) 14:21:59.35
スクリプト言語による効率的ゲーム開発のclass.luaで
attempt to index local 'self' (a number value)エラーが出るんだけど。。。
何が原因かわからん、、、
0202デフォルトの名無しさん2011/06/07(火) 19:14:43.09
>>201
t:func(...) と t.func(...) の違いが分かってないんじゃない?
0203デフォルトの名無しさん2011/06/07(火) 19:16:20.15
>>202
ありがとうございます。
なんかしらないけど動きました。。。失礼しました。
0204デフォルトの名無しさん2011/06/07(火) 19:18:19.39
ここをなんか知らないけどで済ませると死ぬよ
0205デフォルトの名無しさん2011/06/07(火) 20:01:02.49
>>204
ありがとうございます。もっと基礎を勉強します。
しかし読みにくいソースだなぁ。。。こんなもんなのかな
0206デフォルトの名無しさん2011/06/07(火) 23:45:57.72
AngelScript|Д`)ジー
0207デフォルトの名無しさん2011/06/08(水) 03:58:06.26
t:func()とt.func()の違いはC++分かってれば分かると思うぞ
C++が暗黙的にやってくれてるのをLuaはやってくれないだけで
どっちもthis(luaはself)を関数に渡してクラスという仕組みをやってる
0208デフォルトの名無しさん2011/06/08(水) 08:09:09.86
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

0209デフォルトの名無しさん2011/06/08(水) 13:19:37.47
June Headline: Lua enters the top 10 for the first time in history
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

うほっ
0210デフォルトの名無しさん2011/06/08(水) 20:45:30.63
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
0211デフォルトの名無しさん2011/06/09(木) 08:24:57.93
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
0212デフォルトの名無しさん2011/06/09(木) 21:40:59.90
すみません、luaスクリプトからc++のシングルトンクラスのメンバをコールしたいときはどうすれば良いですか?
Hoge::GetInstance()->load()こんなのを呼びたいです。

グローバル関数でラップして公開すればよいですか?
0213デフォルトの名無しさん2011/06/09(木) 21:50:20.71
あ、すみませんなんでもないです。。。スレ汚してしまい申しわけございません
0214デフォルトの名無しさん2011/06/10(金) 00:41:57.63
squirrel解説本
http://tatsu-zine.com/books/squirrel/pages/interview1
超オヌヌメ!!
0215デフォルトの名無しさん2011/06/10(金) 00:57:13.72
組み込み用途について書いてないのか
0216デフォルトの名無しさん2011/06/10(金) 01:52:48.68
3.0には対応してるの?
0217デフォルトの名無しさん2011/06/10(金) 19:54:15.85
すみません、Lua初心者なのですが、cからスクリプト関数を実行したくて、loadfileしたあと、getglobalしてpcallするとpcallでエラーになる。
loadfileしたあとにpcallしてからgetglobalしてpcallすると大丈夫。
なんでpcallを2回呼ぶ必要があるの?
0218デフォルトの名無しさん2011/06/10(金) 21:05:28.13
引数の数とかちゃんと指定した?
0219デフォルトの名無しさん2011/06/10(金) 21:49:46.65
>>217
loadfileしただけじゃLuaに書いた関数が
その名前でgetglobalできるわけじゃねーよ

function hoge() ... end

はhogeという大域変数に関数オブジェクトを突っ込むと解釈されるので
まずはこのコードをloadするだけじゃなくてpcallで実行する必要がある
0220デフォルトの名無しさん2011/06/10(金) 22:26:02.75
トン。
でもhoge()は例えば引数が2個なんだけど、1回目のpcallの時は引数0個で
で呼んでいいみたい(それか、引数0個で呼ばないとだめなのかも)。
それはいいのかな?
0221デフォルトの名無しさん2011/06/10(金) 22:44:18.90
>>220
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html#lua_call
リファレンスを読むといいよ
0222デフォルトの名無しさん2011/06/10(金) 23:10:58.54
このリファレンスはもちろん真っ先に読んでたんだけど、
pcallを2回呼ぶ解説とかは見つけられなかった。
どの辺りを読んだらいいか教えて欲しいです。
0223デフォルトの名無しさん2011/06/10(金) 23:13:31.19
>>222
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html#2.4.1
これも読むといいよ
0224デフォルトの名無しさん2011/06/10(金) 23:15:45.49
>>219がすべてに見えるけど違うのか?
0225デフォルトの名無しさん2011/06/10(金) 23:44:33.71
いや、リファレンス読むことを薦められたので、>>219の書いていることが
どこかで説明されてるのかなと思って。
>>223によると、1回目のpcallでチャンクをコンパイルしてるってことなのかな?
しかしloadfile後に必ず1回目のpcallが必要なんだったら、loadfileの中で
やってくれればいいのに。
0226デフォルトの名無しさん2011/06/11(土) 00:08:04.84
dofile使えばいいじゃん
0227デフォルトの名無しさん2011/06/11(土) 00:08:25.04
>>225
無名関数ってものが分かってないでしょ?
0228デフォルトの名無しさん2011/06/11(土) 00:29:31.85
>>215
対象読者
Squrrelに興味のある方(初心者、または初心者に教える方)。組み込み言語に興味のある方。

>>216
現在β版であり、正式公開版では対応しているといいなあ〜
0229デフォルトの名無しさん2011/06/11(土) 18:54:20.95
lua_topointerで関数を取得できても
呼び出したりすることは出来ないのですか?
0230デフォルトの名無しさん2011/06/11(土) 19:15:11.15
ドキュメントにこれはデバッグ用の情報専用ですと書かれてる
むしろなんでそういうことができるのかもと思ったのかに興味があるw
0231デフォルトの名無しさん2011/06/11(土) 19:18:18.40
>>230
いや、関数型を受け取りたいなと思いまして
0232デフォルトの名無しさん2011/06/11(土) 21:10:20.97
>>229
>>231
出来るよ。

int call_lua_function(lua_State *L) {
if( lua_gettop(L)>=1 && lua_type(L,-1) == LUA_TFUNCTION ) {
lua_pcall(L, 0, LUA_MULTRET, 0);
}
return 0;
}
int call_c_function(lua_State *L) {
void (*pCFunction)();
if( lua_gettop(L)>=1 && lua_type(L,-1) == LUA_TLIGHTUSERDATA ) {
pCFunction = (void(*)()) lua_topointer(L,-1);
pCFunction();
}
return 0;
}
void HelloWorld() { printf("Hello C Function!\n"); }
int get_c_function(lua_State *L) {
lua_pushlightuserdata(L, (void*)&HelloWorld);
return 1;
}

-- test.lua
call_lua_function( function() print("Hello Lua Function") end )
call_c_function(get_c_function())
0233デフォルトの名無しさん2011/06/11(土) 22:56:20.56
ちょっと興味を持って見てるんだけど、呼び出しとか引数渡しとかすんげーめんどくさいね。
普通に引数で呼び出すにはラップ関数書かないといけないのかな。

UWSCみたいなスクリプトの関数を呼び出す方法とかもちょっとまだ分からないし。
0234デフォルトの名無しさん2011/06/12(日) 00:03:33.30
AngelScript|Д`)ジー 

あー、でもC++側からスクリプトの関数呼び出す時はそんなに手間変わらんか。
0235デフォルトの名無しさん2011/06/12(日) 00:15:46.88
Easy things should be easy and hard things should be possible
という言葉があるが
可能であることの評価が低すぎる
効率が良いことしか評価されなくなってるのかな
0236デフォルトの名無しさん2011/06/12(日) 00:33:28.55
>>233
luabindというものがあってだな・・・
  lua_State *L = luaL_newstate();
  luaL_openlibs(L);
  open(L);
  {
    luaL_dostring(L,"function func1() print('hello') end" "\n");
    call_function<void>(L, "func1");

    luaL_dostring(L,"function func2(a,b) return a + b end" "\n");
    int a = 10, b = 20;
    cout << "a + b = " << call_function<int>(L, "func2", a, b) << endl;

    luaL_dostring(L,"function func3() return {1,2,3,['X']='XXX'} end" "\n");
    object tbl = call_function<object>(L, "func3");
    for( luabind::iterator i(tbl),end; i!=end; ++i ) {
      cout << i.key() << " is " << *i << endl;
    }
    luaL_dostring(L, "function dump_table(t) for k,v in pairs(t) do print(k .. ' is ' .. v) end end" "\n");
    call_function<void>(L, "dump_table", tbl);
  }
  lua_close(L);
0237デフォルトの名無しさん2011/06/12(日) 00:47:55.33
>>232
ありがとうございます
luaの関数を取っておいて後でpushfunctionみたいなことってできますでしょうか
0238デフォルトの名無しさん2011/06/12(日) 02:47:35.68
273です
topointerで取得したアドレスをlua_pushlightuserdataでスタックに積んで
LUA_TFUNCTIONに書き換えれば呼べたけど、たぶんまずいんだろうな
0239デフォルトの名無しさん2011/06/12(日) 02:55:39.46
それはスタックから消えてたらおだぶつやね

lua の場合はそういうときは関数をレジストリになげこんでおいて、
C側ではそれのキーを保持しておくのが定石

ただし、整数値のキーは lua が内部的に使っていて衝突の可能性が
あるので、普通は C側のポインタ値を lightuserdata としてキーにする。

静的変数のポインタか、lua の値を C側でとっておくための動的オブジェクトの
ポインタとかをキーにするのが一般的やね。



0240デフォルトの名無しさん2011/06/12(日) 03:21:18.85
>>239
LUA_REGISTRYINDEXですね!ありがとうございました
0241デフォルトの名無しさん2011/06/12(日) 17:49:02.77
Luaでクラスのインスタンスが連想テーブルだから変数名をtableってしたら
結構作ってから標準のtable関数が消えてることに気づいた…
なんでLuaの関数こんな簡単に死んでしまうん?…orz
0242デフォルトの名無しさん2011/06/12(日) 19:51:15.00
標準識別子の書き換えはLuaの便利なところでもありアホなところでもあるな
0243デフォルトの名無しさん2011/06/12(日) 21:43:09.59
pythonでも起こる、というか動的言語だとよくある
関数が変数に突っ込める以上仕方ないのかもしれん
0244デフォルトの名無しさん2011/06/12(日) 21:59:36.69
いや、予約語とすればいい

だけど、自由を制限しないためにチェックしてないんだろう。
0245デフォルトの名無しさん2011/06/12(日) 22:30:52.66
高級言語なのに単項、二項計算とかテーブル操作とかの演算子が少ないのがなぁ。

リスト操作をもっと簡単にしたいんだけど、metatableを全てのテーブルに強制的に束縛させる方法とかないかな?
0246デフォルトの名無しさん2011/06/12(日) 22:32:28.78
それつきつめていくとだいたい squirrel になるよw
0247デフォルトの名無しさん2011/06/13(月) 00:03:37.06
Luaからシェア奪えそうな組み込みスクリプト出てこないかな
0248デフォルトの名無しさん2011/06/13(月) 00:42:56.86
実績が大事よ
0249デフォルトの名無しさん2011/06/13(月) 02:16:42.39
squirrel最強!!
オヌヌメ解説本
http://tatsu-zine.com/books/squirrel/pages/interview1
squirrel関連の資料がほぼ皆無な現状で1,000円(税込)は安いと思いました
著者は5年くらい、都内のゲームデベロッパーにいてずっとゲームを作っておられた凄腕
わずか4、5歳の頃よりファミコンのマリオやドラクエを嗜んでおられたそうな
0250デフォルトの名無しさん2011/06/13(月) 02:28:21.51
目次みるとマニュアル以上のことがかかれてるように見えない件
0251デフォルトの名無しさん2011/06/13(月) 03:16:57.39
マニュアル読めない人向けなんだろ
0252デフォルトの名無しさん2011/06/13(月) 05:09:27.82
ページサンプルに「公式ドキュメントの翻訳ベースでわかりやすくした内容です」って書いてある
3.0非対応だし、確かに安いけど、ぶっちゃけいま買う理由はないんでないの
0253デフォルトの名無しさん2011/06/13(月) 07:08:32.27
>>247
LuaもSquirrelも数千行の短いプログラムでできてんだろ?
なら俺達でも作れるんじゃね?
0254デフォルトの名無しさん2011/06/13(月) 07:24:09.21
採用実績と速度を超えるのが至難
0255デフォルトの名無しさん2011/06/13(月) 07:25:55.86
このレベルか・・・
0256見習い中2011/06/13(月) 12:15:07.57
Luaの注意点

数値はDouble型。型指定は基本的にできない。ポインタ型を32ビット変数として使う方法がある。
Doubleのせいで計算速度が遅くなるだけでなく、キャストで化けることあり。
SciTEの読みはサイト(らしい)。ゼロの使い魔か?
エラーの際のlua_atpanicにはお世話になりそう。
日本語未対応。対応バージョンもなくもない。

C言語と相互運用が可能だが、なんかしょっぱなからめんどくさい。
Lua側はシンプルなので、間違ってはいないのかも。

squirrel との比較
クラスがなく、冗長な記述になる。
C++との親和性が低い
continue がない。やっぱり必要?
ビット演算 が弱い。あれ?ライブラリは・・

>>214
> Squirrelの前にはLuaとかもあって、海外とかだとわりと積極的に使われていたのではないでしょうか。
> 汎用的なものと組み込み言語というのはメジャーになってきた、というような雰囲気ですね。
>
> Squirrelの場合、クラスベースの考え方が通用する分、僕はやさしいなと感じます。
> Luaとかはわりとかけ離れているというか、かけ離れているとまでは言わないですが、単純に見た目としての問題って言うんですかね、
> ある程度プログラミングのたしなみのある人が見えればやってることは理解できるんですけども、
> ほんとにSquirrelの方が分かりやすいなっていう感じがします。
> PythonやRubyも文法とか文化が違う感じが若干しますね。

なるほど
0257デフォルトの名無しさん2011/06/13(月) 14:14:43.26
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

0258デフォルトの名無しさん2011/06/13(月) 16:59:30.65
最低でもCの組み込み型位は標準対応してほしいよね
0259デフォルトの名無しさん2011/06/13(月) 18:18:08.35
グルーコード作りたいだけなのにtolua++とか覚えて時間とられるのは本末転倒だな・・・
0260デフォルトの名無しさん2011/06/13(月) 22:31:47.51
ビット演算ならbitopで
http://bitop.luajit.org/

PerlのMoose(Coat)ぽいOOなら、lua-Coatで
http://lua-coat.luaforge.net/
lua-Coatは、MOP使ってて重いので
LuaJIT使える環境ならそっちがいいかも
0261デフォルトの名無しさん2011/06/13(月) 22:48:06.58
>>256

>数値はDouble型。型指定は基本的にできない。ポインタ型を32ビット変数として使う方法がある。
数値型はdouble以外にも割り当てられなかったっけ?

>Doubleのせいで計算速度が遅くなるだけでなく
そもそも計算速度が問題になるほど大量の四則演算を行う処理を
luaで書くの?そういう所はアルゴリズムを固定小数点化やSSEで
対応等するべきであってスクリプト言語でどうこうする所じゃないような。
0262デフォルトの名無しさん2011/06/13(月) 23:02:15.51
今時Doubleなんて、x86ならバカっ速いぞ。
下手にテーブル引いてキャッシュミスしてもたもたするより速い。
0263デフォルトの名無しさん2011/06/13(月) 23:02:38.60
数値型は、コンパイル時に選択だね。
http://www.lua.org/source/5.1/luaconf.h.html#LUA_NUMBER
@@ LUA_NUMBER is the type of numbers in Lua.
0264デフォルトの名無しさん2011/06/13(月) 23:12:55.06
x86ならdouble使った整数演算も速いね
http://attractivechaos.github.com/plb/
これ以上速度求めるなら、逆に型推論がある静的型評価の言語を組み込んだ方がいいかも?
0265デフォルトの名無しさん2011/06/13(月) 23:23:38.60
っていうか整数持ってるSquirrelさんより速いしなあ
0266デフォルトの名無しさん2011/06/13(月) 23:32:15.38
つーかIEEE754っていって?ってやつは浮動小数禁止
0267デフォルトの名無しさん2011/06/14(火) 09:11:12.44
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ

0268デフォルトの名無しさん2011/06/14(火) 22:38:55.38
AngelScript|Д`)ノ<きたわよ
0269デフォルトの名無しさん2011/06/15(水) 07:51:02.77
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
0270見習い中2011/06/15(水) 10:38:14.65
普段UWSC使ってるんだけどバイナリデータが弱かったからつなぎ言語もかねて探してたんです。
だから日本語扱えないのと整数値型がそろってないのはかなり痛い。

Luaも日本語化パッチがあったりするけど・・・
ビット演算があったりするけど・・・
セットアップがめんどくさいと配布がしにくいし

squirrel もいいなと思ったけどC++解説サイト見たら「なんか出来そうだな」と思ってみたり。
そうするとAngelScriptってC++にかなり近いから無駄にならないかも?

AngelScriptってGNUでソース配布?まさかプロジェクト全部に感染?


squirrel で日本語
ttp://monsho.blog63.fc2.com/blog-entry-49.html
squirrel はASCIIなので、日本語対応はUNICODE宣言が必要。
#define _UNICODE

それだけではwprintf() や vwprintf() で文字化けするので、ロケールを指定する。2007/05/19(土)
setlocale( LC_ALL, "Japanese" ); // 日本語にする
setlocale( LC_ALL, "" ); // 環境に合わせる


@__john_ 悟
Luaはダメだ。 AngelScriptを試してみよう…   これでダメだったら、機能を絞るしかないわな…
4月30日 webから

@__john_ 悟
AngelScriptではとりあえず実装可能っぽいけど… 呼び出しコストとかどうなんだろ? GC処理がLuaより管理しやすい分早いかな? 
試すしかないかなぁ… はぁ… 資料少ないなぁ。
5月1日 webから
0271デフォルトの名無しさん2011/06/15(水) 12:22:38.06
AS1.7.0以降はzlib互換ライセンスにchange!したyow
0272デフォルトの名無しさん2011/06/15(水) 14:43:23.05
   /ヽ /ヽ
  ':' ゙''"  `':,
  ミ   ・ω・ ;,
 :; . っ Lua!, つ
  `:;      ,;'
   `( /'"`∪
0273デフォルトの名無しさん2011/06/15(水) 22:32:32.50
AngelScriptはデフォでASCII、UTF8に対応。
有志のShiftJIS版も一応ある。
ただし、UTF16には対応してないので注意。
0274デフォルトの名無しさん2011/06/15(水) 23:02:22.61
Luaのメタテーブルの__callが微妙だなぁ…。
第一引数がテーブル自身で第二引数以降が呼び出しの時の引数だけど、
テーブル(引数)だけじゃなくてテーブル.メソッド(引数)で呼び出したときにも使えるようにならないものか…。
メソッドまでメタテーブル指定するのは面倒くさい。
■ このスレッドは過去ログ倉庫に格納されています