【Lua】組み込み系言語総合【Squirrel】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/03/11(火) 13:02:21使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/
その他の参考URLは>2から
■過去スレ
その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
0002デフォルトの名無しさん
2008/03/11(火) 13:02:49Io Language
http://pc11.2ch.net/test/read.cgi/tech/1201100624/
2 part forth
http://pc11.2ch.net/test/read.cgi/tech/1073673931/
●●●●TCL/TKなら俺に聞け 2●●●●
http://pc11.2ch.net/test/read.cgi/tech/1177998764/
ECMAScript デス 3
http://pc11.2ch.net/test/read.cgi/tech/1190160481/
各種ライブラリ紹介スレ2(ゲ制作)
http://pc11.2ch.net/test/read.cgi/gamedev/1177886529/
【Perl,PHP】LLバトルロワイヤル【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1188997302/
「コンパイラ・スクリプトエンジン」相談室12
http://pc11.2ch.net/test/read.cgi/tech/1188688416/
Garbage Collection (GC)について語るスレ
http://pc11.2ch.net/test/read.cgi/tech/1141646850/
0003デフォルトの名無しさん
2008/03/11(火) 13:03:54■Lua
ttp://www.lua.org/ (本家)
ttp://lua-users.org/ (lua-users)
ttp://luaforge.net/ (LuaForge)
ttp://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html(5.1マニュアル和訳)
Lua言語の紹介
ttp://staff.aist.go.jp/yutaka.ueno/lua/docsjp.html
入門Luaプログラミング
ttp://www.amazon.co.jp/dp/4797342722/
■Squirrel
ttp://www.squirrel-lang.org/ (本家)
ttp://sourceforge.net/projects/squirrel/
ttp://sourceforge.net/projects/sqplus/ (SqPlus)
ttp://sourceforge.net/projects/squirrelsh/ (Squirrel Shell)
ttp://wikiwiki.jp/lua/?Squirrel_Lang%2Ftoc(wiki内2.1マニュアル和訳)
0004デフォルトの名無しさん
2008/03/11(火) 13:05:27The Pawn language(だれも使ってなさそうな、組み込み言語)
ttp://www.compuphase.com/pawn/pawn.htm
NullLogic Embedded Scripting Language
ttp://sourceforge.net/projects/nesla/
Xtal(ゲーム向け。スタックを意識しなくていい?)
ttp://d.hatena.ne.jp/xtalco/
ttp://code.google.com/p/xtal-language/
ttp://blog.livedoor.jp/dankogai/archives/50836939.html
※テンプレ以上※
0005デフォルトの名無しさん
2008/03/11(火) 15:59:210006デフォルトの名無しさん
2008/03/11(火) 16:07:260007デフォルトの名無しさん
2008/03/11(火) 16:40:28return t[1] and (c and "■" or " ")
:rep(table.remove(t,1))..L(t,not c) or "\n"
end
io.write(L{0,1,2,1,4,1,2,4,1})
io.write(L{1,1,2,1,2,2,5,1,1})
io.write(L{2,1,2,1,2,1,3,2,2})
io.write(L{1,1,2,1,3,1,2,1,3,1})
io.write(L{0,1,2,1,3,3,1,5})
0008デフォルトの名無しさん
2008/03/11(火) 17:10:27なんでTCLなの?
組み込みのIDEとかでよく使われてるけど
0009デフォルトの名無しさん
2008/03/11(火) 18:47:390010デフォルトの名無しさん
2008/03/11(火) 21:17:18Perlはさすがにやったことないが、できないこともないだろう。
0011デフォルトの名無しさん
2008/03/11(火) 22:39:02組込みに向いてるってのはコードサイズまたは外部への依存の少なさと
言語機能のバランスが取れてるって意味にではないのかと。
0012デフォルトの名無しさん
2008/03/12(水) 01:23:20そういう比較的大きな言語の組みこみの話も
多少は許容することが前スレで同意されていたはず。
でも一応Luaスレの続きだからその辺は空気読んでねと。
0013デフォルトの名無しさん
2008/03/12(水) 01:25:10>>1 乙curry
0014デフォルトの名無しさん
2008/03/12(水) 06:04:560015デフォルトの名無しさん
2008/03/12(水) 11:24:25二年前からのスレだから当然かwww
0016デフォルトの名無しさん
2008/03/12(水) 11:48:00LuaのGCはマーク&スィープ方式を組み込み言語向けに改良したインクリメンタル方式。
SquirrelのGCは参照カウント方式。
マーク&スィープ方式の欠点:
GCの処理に時間がかかるとハングアップした感じになる。その欠点を克服すべく、
少しづつ分割してGCの処理を行う(インクリメンタル方式)、
マルチスレッドで平行してGCの処理を行う、などの進化型が現在の主流。
参照カウント方式の欠点:
参照カウンタの更新処理によるオーベーヘッドにより処理速度が低下する。
循環参照への対処が必要になる。
過去の方式である感は否めない。
0017デフォルトの名無しさん
2008/03/12(水) 12:41:27GCの比較は余計なお世話というのが前スレの結論じゃなかったか?
0018デフォルトの名無しさん
2008/03/12(水) 12:50:09[名](複 〜s, 1で((集合的))〜)
1 《動》リス:肉は食用になる.
2 [U]リス類の肉[毛皮].
3 ((米俗))変なやつ. ━━[動](〜ed, 〜・ing;((英))〜
0019デフォルトの名無しさん
2008/03/12(水) 13:34:15/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \ <過去の方式である感は否めない。
| |r┬-| |
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ だっておwwwwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー'´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バ
ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、 ン
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) バ
ン
0020デフォルトの名無しさん
2008/03/12(水) 14:28:03欧米じゃリスを食うのか…
0021デフォルトの名無しさん
2008/03/12(水) 15:27:030022デフォルトの名無しさん
2008/03/14(金) 19:35:260023デフォルトの名無しさん
2008/03/19(水) 07:50:550024デフォルトの名無しさん
2008/03/20(木) 12:59:11local text = "ab abcd ab";
re <- regexp("a.*b");
local ret = re.search(text);
print("begin, end = " + ret.begin + ", " + ret.end + "\n");
print("ret = " + text.slice(ret.begin,ret.end) + "\n");
> begin, end = 0, 5
> ret = ab ab
こうなっちゃうのうちだけでしょうか?
0025デフォルトの名無しさん
2008/03/20(木) 16:05:190026デフォルトの名無しさん
2008/03/20(木) 17:56:02Squirrel書いたことないので見当違いしてたらごめん
0027デフォルトの名無しさん
2008/03/20(木) 19:55:260028デフォルトの名無しさん
2008/03/20(木) 20:55:19>>26さんの言うように最後までマッチするはずなんですよ
秀丸と、Luaで試してみましたが最後までマッチします。
>>25さんのところでも同じ結果がでますか?
うちで何か失敗してるのかなぁ?
0029デフォルトの名無しさん
2008/03/21(金) 13:54:40不満なら直すか、他から持ってくるしかないんじゃなかろうか。
0030デフォルトの名無しさん
2008/03/21(金) 14:28:25ab
で終了だろw
0031デフォルトの名無しさん
2008/03/21(金) 14:35:24* は 0 個もありだよな
ってことで、バグ認定でいいんでね?
0032デフォルトの名無しさん
2008/03/21(金) 22:11:460033デフォルトの名無しさん
2008/03/21(金) 22:33:32ありがとうございます
どうもバグみたいですね
英語苦手だけど、なんとかレポート送っときます
0034デフォルトの名無しさん
2008/03/22(土) 17:43:400035デフォルトの名無しさん
2008/03/31(月) 20:28:400036デフォルトの名無しさん
2008/04/02(水) 00:55:25swig + lua の組み合わせを最近多用している。
luaからswigで公開する型や関数のメタ情報を取得ってできる?
例えば関数の引数や戻り値の型名とか。
構造体のメンバ変数の一覧ならメタテーブル経由で取得できるけど。
0037デフォルトの名無しさん
2008/04/06(日) 18:28:21luaは動的言語だから、戻り値や引数の型の分からんでしょう。
型は変数じゃなくて、値にくっついてる。
0038デフォルトの名無しさん
2008/04/07(月) 02:55:50辺りだけ組み込んで、最小構成にするとどれだけ小さくなりますか?
100kByte以下とかできる?(linuxのELFで)
0039デフォルトの名無しさん
2008/04/07(月) 10:05:330040デフォルトの名無しさん
2008/04/07(月) 17:48:010041デフォルトの名無しさん
2008/04/08(火) 01:21:25ICEとかじゃだめなの?言語に依存する内容じゃないように思うけど・・・
0042デフォルトの名無しさん
2008/04/08(火) 01:41:170043デフォルトの名無しさん
2008/04/08(火) 02:00:170044デフォルトの名無しさん
2008/04/08(火) 08:50:27004540
2008/04/08(火) 20:26:03ヴィジュアルデバッグは造語かもしれません。
GDBじゃないVisualStudioのような環境のことを指しています。
あと、「組み込み」は小型機器への組み込みではなく、
C++プログラムに対する組み込みの意味です。
いろいろ、すみません。
>>43
その組み合わせは非常に使えそうなので、ちょっと試してみます。
ありがとうございました。
0046デフォルトの名無しさん
2008/04/08(火) 23:53:240048デフォルトの名無しさん
2008/04/12(土) 22:34:43は作れますか?
0049デフォルトの名無しさん
2008/04/13(日) 02:03:48char script[] = " \
add: fun(a,b) \
{ \
println(a+b); \
} \
sub: fun(a,b) \
{ \
println(a-b); \
} \
";
AnyPtr compiled = compile(script);
compiled();
こうやってコードをコンパイルする。
そのあと任意のタイミングで
add(a,b)やsub(a,b)をCから呼ぶ方法がわかんない。
0050デフォルトの名無しさん
2008/04/14(月) 01:20:39scite-debugを使えば、C/Luaプログラムを同じ環境でデバッグできるはず
使ったこと無いけど
0051デフォルトの名無しさん
2008/04/15(火) 23:22:53luaから乗り換えた。
つか作者はドキュメント整備してくれんかのぉ。
0052デフォルトの名無しさん
2008/04/15(火) 23:24:02マニュアル嫁
0053デフォルトの名無しさん
2008/04/16(水) 09:57:040054デフォルトの名無しさん
2008/04/16(水) 12:28:27ゲーム重視だからパフォーマンス重視なんだろうけれども。
Xtalはお手軽に制御構文が書けてかつパフォーマンス重視ってところがいいのかな?
0055デフォルトの名無しさん
2008/04/16(水) 21:36:25ちょまて Xtalってバーチャルマシンがスレッドセーフでできてんのか?
0056デフォルトの名無しさん
2008/04/18(金) 09:32:440057デフォルトの名無しさん
2008/04/18(金) 10:52:19005856
2008/04/18(金) 11:05:190059デフォルトの名無しさん
2008/04/18(金) 20:29:27たしか、naughty dogがlispなんだよね
0060デフォルトの名無しさん
2008/04/21(月) 03:11:15現在C++とSquirrelでSTGを作っています。
Sqruirrelスクリプト側からC++の関数を呼ぶためには、
SQInteger func(HSQUIRRELVM v)
という形のグローバル関数でなくてはいけないんですが、スクリプト側から特定のオブジェクトを操作したいと考えています。
しかし、上の形だと動的メソッドでもないし、引数にオブジェクトへのポインタが含まれていないため、どうやって呼び出そうか困っています。
HSQUIRRELVMはスタックになっているので、スクリプト側に操作したいオブジェクトのポインタをあらかじめ渡しておいて
必要なときにスタックにぶち込んで引数として利用しようと考え、
/*Squirrelスクリプト*/
function ExeScript(p) /*引数はポインタ*/
{
SetVelocity(p, 0, 5, 0); /*引数は操作するオブジェクトのポインタ、x方向の速度、y方向の速度、z方向の速度*/
return 0;
}
/* HSQUIRRELVMのスタックには 1(top):roottable, 2:p, 3:0 4:5 5:0)となっているはず*/
というようなスクリプト側の関数を作り、ExeScriptをC++側から呼び出す時に
引数に呼び出し側のポインタをぶち込んであげようと思ったんですが上手くいきません。
ちなみにpはスクリプト側ではint型で扱っていて、ExeScriptが呼ばれたときにintにキャストし、
SetVelocityが呼び出されたときにポインタにキャストするようになっています。
何かいい方法はないでしょうか? もしくはセオリーなどを教えていただけませんか?
0061デフォルトの名無しさん
2008/04/21(月) 03:12:370062デフォルトの名無しさん
2008/04/21(月) 03:13:140063デフォルトの名無しさん
2008/04/21(月) 03:19:010064デフォルトの名無しさん
2008/04/21(月) 08:12:31スタック操作で単純にミスしてるだけな気がするよう。
0065デフォルトの名無しさん
2008/04/21(月) 11:04:50オブジェクトをIDで管理すればポインタを持たなくても
IDでやり取りできるんじゃない?
0066デフォルトの名無しさん
2008/04/21(月) 19:30:36そのC++オブジェクトをSquirrelのオブジェクトとして登録してみるのは?
0067デフォルトの名無しさん
2008/04/22(火) 08:12:100068デフォルトの名無しさん
2008/04/22(火) 11:19:04まあ正直聞いててスクリプトでやるようなことじゃないと思ったわ
0069デフォルトの名無しさん
2008/04/22(火) 22:55:42スタック操作確認して怪しいところ修正したら動きました。
本当にありがとうございました…。
>>65
次改造するときに試してみます。
>66
そんなこと出来るのでしょうか? Squirrelのクラスについてもう少し学んでみようと思います。
>68
たしかにそうかもしれません…。
0070デフォルトの名無しさん
2008/04/22(火) 22:57:50こんなんはどう?
SqPlusを使うけど。
/*c++*/
/* c++クラスをsquirrelにexport */
SqPlus::SQClassDefNoConstructor<SomeClass> def(_T("SomeClass"));
/* メソッド定義 */
def.func(&SomeClass::SetVelocity, _T("SetVelocity"));
SomeClass* object = new SomeClass();
/* Squirrelの関数呼び出し用オブジェクトの取得 */
SqPlus::SquirrelFunction exeScript = SqPlus::SquirrelFunction<int>("ExeScript");
/* 関数実行。型がsquirrel用に変換可能であれば、
内部で変換されSquirrelに渡される。
*/
exeScript(object);
---
/*squirrel*/
function ExeScript(object)
{
object.SetVelocity(0,5,0);
return 0;
}
0071デフォルトの名無しさん
2008/04/23(水) 19:09:00ホストのポインタをvm内に格納するばあい
userpointer型を使うとかsqclassのインスタンスにsq_setinstanceupするのが適当
0072デフォルトの名無しさん
2008/04/24(木) 02:39:32luaスクリプトからコールバックを登録して、Cから適宜呼び出す、ということをしたいのですが。
0073デフォルトの名無しさん
2008/04/24(木) 08:27:31LuaのC APIを使って、Lua VM内のグローバルにある関数を(値として)スタックに積むことはできる
スタックに積まれた関数をLuaのC APIから実行することはできる
でOK?
この手の話題ってC側なのかLua側なのか、表現が難しいな。
上のSquirrelのやつもそうだが
007472
2008/04/24(木) 16:15:42ありがとうございます。Cの値として保持しておくことはできないんですよね。
それだと、Luaから渡された関数を適当なタイミングで呼びだすには、
関数を一旦スタックの深いところに置いておいて、必要な時にインデックスを使って呼び出す、という形になるのかな…。
0075デフォルトの名無しさん
2008/04/24(木) 17:42:07LuaからCに関数名を渡せばあとでCのほうから探索できる。
関数を保持しとくのは無理かな、たぶん。
0076デフォルトの名無しさん
2008/04/24(木) 20:17:040077デフォルトの名無しさん
2008/04/24(木) 22:39:23それが一番質問者の期待しているものに近そう。
75に似た方法で呼び出す関数名を決め撃ちするのもあり。
0079デフォルトの名無しさん
2008/04/28(月) 09:10:05リファレンスなどを読んだ感じだとsq_readclosure()辺りを使うのかと思ったのですが資料をあまり見つけることができませんでした。
0080デフォルトの名無しさん
2008/04/29(火) 15:57:18ソースを読めばいいじゃない。
そこらのライブラリとかスクリプトのような聞き方をされると違和感をおぼえてしまう。
0081デフォルトの名無しさん
2008/04/30(水) 08:25:130082デフォルトの名無しさん
2008/04/30(水) 09:27:07ソース読むのが妥当な場面だもの
0083デフォルトの名無しさん
2008/04/30(水) 11:59:05ある意味最狂
0084デフォルトの名無しさん
2008/04/30(水) 12:31:55というのは、容易に推察できることではある。
アホくさいけど。
0085デフォルトの名無しさん
2008/04/30(水) 13:30:40最近は面倒になりそうなのは全部自分で調べろって投げ捨てるよな
0086デフォルトの名無しさん
2008/04/30(水) 13:44:350087デフォルトの名無しさん
2008/04/30(水) 13:45:520088デフォルトの名無しさん
2008/04/30(水) 14:14:23無理矢理三つ巴と思い込む暇があったら
ソースでも読んでた方がいいと思うよ。
0089デフォルトの名無しさん
2008/04/30(水) 16:55:550090デフォルトの名無しさん
2008/04/30(水) 17:32:110091デフォルトの名無しさん
2008/04/30(水) 17:39:41アホなレス繰り返してる馬鹿のレベルが低いんだもの。
まぁ、読めないから回答者に喰いついてるんだろうね。
質問者は社会常識を身につけてから出直しておいで。
自分の立場を弁える常識は必要だよ?学生君。
0092デフォルトの名無しさん
2008/04/30(水) 18:16:200093デフォルトの名無しさん
2008/04/30(水) 18:24:36【このスレは”質問スレ”ではありません】
ソースを読めば素晴らしい回答があります。
何時間掛かるかも分りませんが、まずはすべてのソースを読み理解する頃には質問の内容も解決している事でしょう。
また質問者は立場をわきまえ、回答者を崇めること。
このスレは雑談スレか
0094デフォルトの名無しさん
2008/04/30(水) 19:35:46あらかじめ変数に読み込んでおいてというのは、
ファイル開いてファイルサイズ分メモリを確保して、そこにreadするということか?
それでそのバッファのポインタを渡して読み込ませたいってこと?
009579
2008/05/01(木) 02:06:38>>80
とりあえずソース読んで分からなかったらまた尋ねるかもしれません。
>>94
94さんの言うとおりファイルサイズ分メモリを確保しておいて、そこにファイルを読み込ませ、そのメモリからオブジェクトにデータをロードさせようと
思っています(do_fileやload_fileなどを使うといちいちファイルにアクセスして負荷がかかるため)。
現在はchar*にスクリプトを読み込ませておいて、オブジェクト生成時にコンパイルしていたのですが、
コンパイルにかかる負荷がバカに出来ないと考え「コンパイル済」のスクリプトをメモリに保存しておいて運用したかったのでその方法を質問させていただきました。
0096デフォルトの名無しさん
2008/05/01(木) 03:37:06ttp://wikiwiki.jp/lua/?Squirrel か もんしょの巣穴っていう個人さんのサイトに解説あった気がする。
違ったらヘッダをcompで検索すれば出てくると思う。
眠いからこれ以上は書けないZzzz
0097デフォルトの名無しさん
2008/05/01(木) 03:41:20役に立てないZzzz
0098デフォルトの名無しさん
2008/05/01(木) 11:25:290099デフォルトの名無しさん
2008/05/01(木) 12:14:36sq_readclosureでよさそうだけど解説があまりないから
断片的な情報とソースから推測するしかないって感じかな。
ソースはsqstdio.cppにあるsqstd_loadfileの実装が参考になりそう。
ところでsqstd_loadfileは関数を評価せずにスタックに
積むだけみたいだから、その参照を保持しておくだけで
用が足りたりしないのかな。
0100デフォルトの名無しさん
2008/05/02(金) 01:18:42Lua側の関数に引き渡した0xFFFFFFFFってリテラルが、C側からlua_tonumberで取ってくると0で返却されるのは既知?
さらに、0xFF00FFFF -> 0xFF010000なんて取れてきたりする。
どうもVC8だと起こるらしくて、gcc系だと引き渡したリテラルが正しく取れるんだけどなぁ。
010179
2008/05/02(金) 02:27:06sqstd_loadfileの中には外部から読み込んだファイルがバイナリであるかテキストであるかを判定する文があり、
バイナリの場合はコンパイルせずにそのままsq_readclosureによってスタックに読み込んでいることが分かりました。
そこで、sqstd_loadfile冒頭のsqstd_fopen(fopenと同じ働き)を削除し、loadfileの引数のファイル名の変わりに(FILE*)型のポインタを
渡してやるようにし、また、(テキストファイルは扱わないため)テキストであった場合の分岐を削除してみました。
これは成功すると思ったのですが(おそらく)こちらのコーディングミスでメモリ関係のエラーが出てしまいました。
こちらを直して正常に動作するようならまた報告したいと思います。
>>99
スタックトップに積むようなので、sq_move(dest, src, -1)といったように設定してやればいいんですかね? 試してみます。
ただ今回の件でSquirrelのスタック周りの操作についてほぼ無知であることが分かったため、もう少し勉強してからトライすることになると思います。
0102デフォルトの名無しさん
2008/05/02(金) 14:13:56Luaは整数を小数として扱ってるからその辺りが関係あるのかなぁ。
あと、高速化のためか整数←→小数の変換には
単なるキャストを使っていたり、アセンブラ命令を直で使っていたりする。
0103デフォルトの名無しさん
2008/05/02(金) 17:37:50luaconf.hの中のlua_number2intの定義の所ね。
_MSC_VERでifdefしてる個所もある@5.1.3
LUA_ANSIをdefineして直ったらここが原因だろう。
0104デフォルトの名無しさん
2008/05/02(金) 20:16:36Direct3D使ってたら浮動小数点演算の精度が24bitになってる可能性あるんで
D3DCREATE_FPU_PRESERVE
を調べるといい。
ただ値の受け渡しだけはできるはずの気がするが。
0105デフォルトの名無しさん
2008/05/03(土) 16:16:35これってどういう事なんですか?
同じlua_Stateから派生したスレッド同士なら良いということですか?
0106デフォルトの名無しさん
2008/05/03(土) 17:37:37それを使ったことはないけども・・・
coroutine作ると新しいlua_Stateが作られるけど、それは元のlua_Stateとグローバル情報を共有してる。
だからxmoveが使えるのは、元のVMから作られたcoroutineを示すlua_State(および元のVM)間だけ、ということかと。
「スレッド」って言うとOSスレッドのように聞こえるから、混乱を招くので敢えて使いたくないんだよね・・・。
0107デフォルトの名無しさん
2008/05/06(火) 03:48:30FILE*つかってんなら load_file を忌避する理由がさっぱりわからんわけだが……。
バイトコード判定は残しておくほうがいいよ。作業中はテキストにしておいて、
リリース時に sq.exe つかって全部バイナリにしてしまえばおk
// データ保持用クラス。ポインタだけだと終端がわからんので必要
static class DataBuffer {
const u_char *data; u_int size; u_int pos;
public:
DataBuffer(const u_char *data, u_int size) : data(data), size(size), pos(0) {};
u_int getLeftSize() {return size - pos;}
void copy(void *buf, u_int size) {memcpy(buf, data+pos, size); pos += size;}
};
// sq_readclosure 用 SQREADFUNC
static SQInteger buffer_read(SQUserPointer file,SQUserPointer buf,SQInteger size) {
DataBuffer *data = (DataBuffer*)file;
u_int dsize = data->getLeftSize();
if (size > dsize) {size = dsize;}
if (size > 0) { data->copy(buf, size); return size; }
return -1;
}
// スクリプトのメモリからの読み込み
SQRESULT readscript(HSQUIRRELVM *v, const u_char *data, u_int size, SQBool printerror) {
unsigned short us = *(unsigned short *)data;
if (us == SQ_BYTECODE_STREAM_TAG) {
DataBuffer buf(data, size);
return sq_readclosure(v, buffer_read, &buf);
} else {
return sq_compilebuffer(v, (const SQChar*)data, size, "memory", printerror);
}
}
0108デフォルトの名無しさん
2008/05/06(火) 11:17:07Lua 5.1.3 @ VS2005Proです。
#include <stdio.h>
#include <lua.hpp>
int main(int argc, char* argv[]){
lua_State* Lbase = lua_open();
lua_State* L[10];
for(int count = 0; count < 10; count++){
for(int i = 0; i < 10; i++){
L[i] = lua_newthread(Lbase);
// 何か実行
if(luaL_dostring(L[i], "a = 0;")){
printf("err : %s\n", lua_tostring(L[i], -1));
}
}
}
return 0;
}
これを実行すると、i = 1の時のlua_newthreadで落ちるんですが
これはどう対処すればいいんでしょうか・・・
0109デフォルトの名無しさん
2008/05/06(火) 12:06:07lua_newthreadはあくまでコルーチンを作る関数だから、
それで作られたlua_Stateはコルーチンの流儀でしか使えないんじゃないかな?
つまり、lua_resumeを使えと。
あとlua_newthreadはスタックにスレッド(コルーチン)オブジェクトを積むので、
使い終わったらpopするとか、グローバルに置くとか、なんとかしてやる必要がありそう。
思うに、Lua側からcoroutine使ったほうが余計なことを考えずに済むような気がするけど。
0110デフォルトの名無しさん
2008/05/06(火) 16:24:33ありがとうございます。
そもそもこんな使い方をするものじゃない、ということですかね。
どうやら根本的に考え方がおかしかったようですね・・・
>>105も私の書き込みです。遅れましたが、>>106さんありがとうございます。
0111デフォルトの名無しさん
2008/05/09(金) 17:29:29lua_tofunctionでググれば出てくるよ
0112デフォルトの名無しさん
2008/05/13(火) 22:54:29こちらで質問させてもらいます。
The Implementation of Lua
(ttp://www.jucs.org/jucs_11_7/the_implementation_of_lua/jucs_11_7_1159_1176_defigueiredo.html)
の5章第3パラグラフの最初に
"Most procedural languages avoid this problem by restricting lexical
scoping (e.g., Python)"
と書いてあるのですが、Python のレキシカル・スコープはどのような点が
制限されているのでしょうか?ご教授いただければと思います。
0113デフォルトの名無しさん
2008/05/14(水) 12:01:15なんか今そのLuaのドキュメントのあるサイトが落ちてるみたいなので
覚えてたらまた見てみますね。
0114デフォルトの名無しさん
2008/05/14(水) 16:40:29言ってるような制限は無いように思うんだな。昔のバージョンではそういう制限が
あったのかもしれないけど。
実際、Figure 3. が意味しているコードはPythonで問題なく書ける。
def add(x):
def tmp(y):
return x + y
return tmp
add2 = add(2)
print add2(5)
その Most procedural ... の前の 2 パラグラフが言いたいことはわかってるよね?
0115デフォルトの名無しさん
2008/05/14(水) 17:45:250116デフォルトの名無しさん
2008/05/15(木) 01:46:315章の最初のパラグラフは、add によって返される関数はその内側のスコープにない変数
(レキシカル変数?でいいんですよね)x を参照しているから、add の処理から抜けて
スタックから x の情報がなくなってもその情報も保持してないとまずくて、そのために
必要なのがクロージャですよ、って話ですよね。
僕も >>114 さんのいうように、Python にここでいうような問題点はないように思い、
質問させてもらいました。
今日も少し調べてみました。まず、以下の議論からもわかるのですが
ttp://groups.google.co.jp/group/comp.lang.python/browse_thread/thread/dc4a74fd67f99614/fd1ad89d9b36c633
Python はレキシカル変数は immutable である、という制限(仕様)があるようです。
ひょっとすると、たしかに Python には制限があるものの、Figure 3 で例示されているの
は飽くまでクロージャの必要性を示すためのコードで、Python の制限を示すためのものでは
ない、ということではないでしょうか?
0117デフォルトの名無しさん
2008/05/15(木) 09:51:37def init(x):
def chg(y):
x = y
def get():
return x
return (chg, get)
chg, get = init(0)
print get()
chg(1)
print get()
実行すると
0
0
になりますね。そういうことでいいと思います。
0118デフォルトの名無しさん
2008/05/15(木) 11:26:01やはりそういう理解でいいんですかね。
お付き合いいただきありがとうございました。
0119デフォルトの名無しさん
2008/05/17(土) 02:34:290120デフォルトの名無しさん
2008/05/17(土) 06:39:160121デフォルトの名無しさん
2008/05/19(月) 23:52:06同様なことやって、lua_newthread関数を連続で呼び出したら。
60前後スレッドを作った時点でエラーが発生してしまった。
これの対策として、109さんのようにLUA_GLOBALSINDEXに突っ込むのも良いと思うけども
luaL_refでLUA_GLOBALSINDEXに突っ込んでも良いのではと一意見を言ってみます。
ちなみに、この関数でリファレンス化したものを消そうとする場合。
luaL_unref(L,LUA_GLOBALSINDEX,(luaL_refの返り値));
って感じで良いのでしょうか?
使っている人が居ましたらご教授お願いいたします。
0122デフォルトの名無しさん
2008/05/20(火) 04:29:05ttp://www.jaist.ac.jp/satellite/sate/tokyocampus.htm
東海大学専門職大学院組込み技術研究科組込み技術専攻(専門職学位課程)
ttp://www.u-tokai.ac.jp/kumikomi/
信州大学大学院工学研究科情報工学専攻組込み技術者育成コース(博士前期課程)
ttp://www.cs.shinshu-u.ac.jp/embedded/index.html
0123デフォルトの名無しさん
2008/05/20(火) 05:43:41組み込みの意味違うし
0124デフォルトの名無しさん
2008/05/20(火) 11:39:43出てこないんだけど、なんでかな?
0125デフォルトの名無しさん
2008/05/20(火) 16:39:11騙されたと思って -l 2つつけてみ・・・
バグっぽいけど。
0126デフォルトの名無しさん
2008/05/20(火) 18:21:46ホントだ。man見てもさっぱり理由が分からなかったから
結構まいんってたんだけど・・・。
とにかくありがとう。
0128デフォルトの名無しさん
2008/05/23(金) 13:37:46WSHの組み込みってありなんでしょうか?
webページを検索してみてもサンプルみたいなものが全然ないのですが、
どこかにないかな・・・
0129デフォルトの名無しさん
2008/05/23(金) 14:01:07Windows Script
https://www.microsoft.com/japan/msdn/scripting/default.aspx
0130デフォルトの名無しさん
2008/05/24(土) 02:38:46C++で記述されてるclass AをSqPlusでSquirrel側に公開
↓
Squirrel側でAをextendsしてclass Bを定義
↓
Class BのインスタンスをSquirrelで作成。
結果としてSquirrelでBのインスタンス、C++でAのインスタンスが出来上がっていて
C++でAのポインタを掴んでるとします。
この状態でC++から呼べるのは、まぁ当然Aのメンバ関数だけなんですが、
Bのメンバを呼ぶ方法って、なんかないでしょうか?
0131デフォルトの名無しさん
2008/05/24(土) 14:12:17SquirrelFunction<void>(SquirrelVM::GetRootTable().GetValue("instance_of_B"), "member_function_of_B")("argument1", "argument2");
0132デフォルトの名無しさん
2008/05/24(土) 19:40:34これだと、RootTable上にinstance_of_Bという名前で生成されているという情報を
C++側がつかんでないと実行できないですよね?
現状の設計だと、
ClassAのコンストラクタでstaticなClassA*のListへ突っ込むという処理を入れとく。
↓
あとでそのリストをぐるっと回してClassAの派生Classのメンバーを呼んでいく
という処理をしたいので、
C++側ではそのインスタンスの名前とか生成されたスコープとかは掴んでないんですよね……。
と、今思いついたんだけど。
GetRootTable().GetValue()が返すのはHSQOBJECTだから、
PostConstructが動いた時点でそいつを掴んどけばいいのか?
0133デフォルトの名無しさん
2008/05/24(土) 20:24:400134132
2008/05/25(日) 00:39:57A *pA = new A(p);
int nRes = SqPlus::PostConstruct<A>(
v, pA,
SqPlus::ReleaseClassPtr<A>::release
);
StackHandler sa(v);
pA->SetHSQOBJECT( sa.GetObjectHandle(1) );
return nRes;
}
こんな感じのconstructorをStaticFuncでぶち込んでやれば
Squirrelで生成したHSQOBJECTをC++のClassAで保持することは可能っぽい。
で、constructorに渡してるlist<A*>経由でBのメンバーを呼ぶことも可能だった。
HSQOBJECTがGCタイミングとかで変化したりとかしなければこれでいけっかな?
0135デフォルトの名無しさん
2008/05/29(木) 18:06:06これもうなくなったの?
0136デフォルトの名無しさん
2008/05/29(木) 19:55:440137デフォルトの名無しさん
2008/05/29(木) 20:10:180138デフォルトの名無しさん
2008/05/29(木) 23:14:470139デフォルトの名無しさん
2008/05/30(金) 11:10:06URLplz
0140デフォルトの名無しさん
2008/05/30(金) 18:20:10起動できなかったorz..
0141デフォルトの名無しさん
2008/05/30(金) 20:09:59>NDS用のテキストエディタがあれば、NDSだけでプログラミングも可能です
とい文章に質問。NDS用のテキストエディタってどこにあるの?
0142デフォルトの名無しさん
2008/05/30(金) 20:13:510143デフォルトの名無しさん
2008/05/31(土) 03:52:480144デフォルトの名無しさん
2008/06/04(水) 16:12:35Squirrelの方がまだ多い気がする
0145デフォルトの名無しさん
2008/06/04(水) 18:08:36本家のテキストの和訳が出てないんだからまだこれからじゃないの?
Erlangだって和訳が出てから急激に増えたんだしさ。
0146デフォルトの名無しさん
2008/06/05(木) 17:27:33luaL_loadfileでスクリプト読み込んで
lua_dumpで出力でいいんでしょうか?
lua_dumpの解説で関数をバイナリ出力すると書いてあるので、
ファイル丸ごと出力するのはまた別にあるのかと思ったのですが、見当たりませんでした
0147デフォルトの名無しさん
2008/06/05(木) 19:57:19luac.c調べればいいんじゃないかな
0148デフォルトの名無しさん
2008/06/06(金) 17:02:47SquirrelはVM内のデータのひとつひとつの役割とか挙動とかもわりと簡単に追えたけど
Luaのステートはメンバ変数の意味もよくわからんし、ソースも追いにくい
どうしようこれ。突破口が見えん
0149デフォルトの名無しさん
2008/06/06(金) 20:30:150150デフォルトの名無しさん
2008/06/13(金) 13:15:11SqPlus::CreateConstructNativeClassInstanceでインスタンス作ったんだけど
戻り値のSquirrelObjectからどうやってそのメンバにアクセスすりゃいいんだろう?
SquirrelObject obj
obj = SqPlus::CreateConstructNativeClassInstance(SquirrelVM::GetVMPtr(), _T("hoge") )
ClassA * p = (ClassA *)(obj.GetInstanceUP());
とかでいけるのかと思ったら、そんなメンバねーよ、とVCに言われてしまった。
0151150
2008/06/13(金) 14:47:05なんでこれでビルド通ったんだ???
0152デフォルトの名無しさん
2008/06/13(金) 18:36:000153デフォルトの名無しさん
2008/06/14(土) 21:19:14例えば自分で作成したテーブルにスクリプトを読み込ませて、それを削除する、とか。
0154デフォルトの名無しさん
2008/06/15(日) 18:03:55方法としては、ロード前にグローバルテーブル入れ替えちゃう方法もいいかも。
0155デフォルトの名無しさん
2008/06/19(木) 21:43:38sqstd_fopen、sqstd_fread、sqstd_fwrite、sqstd_fseek、sqstd_fclose、
sqstd_feof、sqstd_ftell、sqstd_fflush
これ全部書き換えればなんとかなるかな?
誰か実証した人いない?
0156デフォルトの名無しさん
2008/06/20(金) 08:08:00うちは2.2.1でそれで一応動いてるよ。squirrelの全機能の検証まではしてないけど。
0157デフォルトの名無しさん
2008/06/23(月) 01:17:20それをやる方法がAPIで見つからなかったんですが…
ひょっとしてlua_Stateのl_gtメンバを
直接書き替えるんですか?
0158デフォルトの名無しさん
2008/06/23(月) 07:49:48>ひょっとしてlua_Stateのl_gtメンバを
>直接書き替えるんですか?
さすがにそんなことを推奨しないよw
setfenv()使えばいいかと。
CでやるならluaB_setfenv()あたり参考に。
ただグローバルそのまま置き換えると元のグローバルにあったAPIとか全部使えなくなるわけだけど、
新しいグローバルのメタテーブルの__indexに元のグローバルでも入れとけば
なんとかなるんじゃないかなぁ。
0159デフォルトの名無しさん
2008/06/26(木) 23:40:50職務質問で勝手に手を突っ込んだポシェットの中の、ツールナイフの剥き身の刃を触ったら切れて公務執行妨害だとか
もう警察も秋葉原で事件さえ起これば何でも良いみたいだな
0160デフォルトの名無しさん
2008/06/26(木) 23:52:370161デフォルトの名無しさん
2008/06/27(金) 15:24:10サイトにアクセスできないけど…
0162デフォルトの名無しさん
2008/06/27(金) 16:13:16プロキシを使うと接続できるという報告例あり。
0163デフォルトの名無しさん
2008/06/27(金) 16:29:250164デフォルトの名無しさん
2008/06/28(土) 03:29:45うちも基本繋がらないんだけど、串とか携帯とかhtmllintゲートウェイとか経由すれば大抵いけるんだよね。
調べた限りではその付近のIP一帯につながらない。どっかでルーティングが狂ってそう。
0165デフォルトの名無しさん
2008/06/30(月) 12:46:37チュートリアルは知りたかったこと扱ってるし簡単そう!
0166デフォルトの名無しさん
2008/06/30(月) 12:49:280167デフォルトの名無しさん
2008/06/30(月) 13:21:170168デフォルトの名無しさん
2008/06/30(月) 14:13:000169デフォルトの名無しさん
2008/07/05(土) 17:30:37CRI Script - Trac
http://criscript.com/trac
・ゲームへの組み込みを念頭に作られた ECMAScript の処理系
・PC と Xbox360 で動作確認
・BSD ライセンスに近い独自ライセンス
・バイトコードにコンパイルして実行 (=実行時オーバーヘッドが少ない)
・マルチスレッドサポート; resume() という言語拡張も。
・C++ との相互利用が簡単
・PowerPC, ARM に向けた最適化
・Eclipse によるデバッガ
・コンポーネントをカスタマイズ可能で、メモリ使用量が小さい
・GC のタイミングをコントロールできる
・Vector とか Matrix とか
参考URL ※箇条書きは書きサイトより引用
ゲーム組み込み用の ECMAScript 処理系 CriScript - Game Scripting Memo
http://d.hatena.ne.jp/epics/20080506/p2
0170デフォルトの名無しさん
2008/07/05(土) 18:23:120171デフォルトの名無しさん
2008/07/05(土) 20:44:47リリースとデバッグのライブラリで合計400MBもある。
0172デフォルトの名無しさん
2008/07/05(土) 23:03:550173デフォルトの名無しさん
2008/07/06(日) 00:34:150174デフォルトの名無しさん
2008/07/06(日) 01:05:39spidermonkeyはどうなんだ
yieldも使えるし
0175デフォルトの名無しさん
2008/07/06(日) 16:52:05なんで? 使いたいの使えばいいじゃん。
0176デフォルトの名無しさん
2008/07/06(日) 17:06:100177デフォルトの名無しさん
2008/07/06(日) 22:34:180178デフォルトの名無しさん
2008/07/10(木) 13:03:110179デフォルトの名無しさん
2008/07/10(木) 13:47:56ttp://www.gnu.org/licenses/gpl-faq.ja.html#TOCCanIUseGPLToolsForNF
0180デフォルトの名無しさん
2008/07/10(木) 16:50:300181デフォルトの名無しさん
2008/07/10(木) 22:32:01使うほど大きな規模のゲームがそもそも作られない
・・・んじゃないかと思う
あと組み込み言語自体がいまいち一般的じゃないよね
0182デフォルトの名無しさん
2008/07/11(金) 00:30:14一方、日本は海外のようなMOD文化が弱い。あっても、バイナリ解析によるデータ変更や画像差し替えが主。
日本のゲームは書き換えを許容する文化でないから、汎用言語を使って間口を広げる必然がないのかも。
0183デフォルトの名無しさん
2008/07/11(金) 00:50:190184デフォルトの名無しさん
2008/07/11(金) 03:56:17あえて公表する理由がない
0185デフォルトの名無しさん
2008/07/11(金) 15:15:50luaはライセンス表記しないとダメだろ
0186デフォルトの名無しさん
2008/07/11(金) 19:17:010187デフォルトの名無しさん
2008/07/11(金) 20:53:24ttp://sourceforge.jp/projects/opensource/wiki/licenses%2FMIT_license
ttp://ja.wikipedia.org/wiki/MIT_License
0188デフォルトの名無しさん
2008/07/11(金) 21:57:26DSluaおもしろそうだと思ったんだがな・・・
0189デフォルトの名無しさん
2008/07/11(金) 23:46:37アクションゲームの敵の動きや敵の配置とかをスクリプトで記述するのには向いてるけど。
0190デフォルトの名無しさん
2008/07/12(土) 00:20:11XMLってまじっすか
0191デフォルトの名無しさん
2008/07/12(土) 01:13:13Rise of Nationsとか思いっきりXMLだったな。
改造し放題。
AoE3も確かそうだった気がする
0192デフォルトの名無しさん
2008/07/12(土) 01:15:06embeddedの言語はあくまでDSLだからねえ
Pythonとかのレベルになるとそうでもないんだろうけど
0193デフォルトの名無しさん
2008/07/12(土) 02:17:260194デフォルトの名無しさん
2008/07/12(土) 02:37:33そう?
言っていることは同じで、Wikipediaは要約しているだけのように見えるけど。
ところで、このライセンスだと、ソースコードを配布しない場合も
ライセンス文を書く必要があるってことだよね?
商用ゲームだと、マニュアルの半ページくらいうはめになりそうだ…
0195デフォルトの名無しさん
2008/07/12(土) 05:08:02著作権表示および本許諾表示を記載しなければならない、というのはソースコード等の話です(消すな、ということ)。
マニュアル等への表示義務はないです(旧BSDライセンスには宣伝条項があった)。
あとサブライセンスが許可されているから、より権利を制限する方向へのライセンス
(例えばGPLや商用ライセンス)を上からかぶせて適用することには問題がない。
ライセンス表記が必要だと思われてるとはなあ
業界でなかなかオープンソースが使われないわけだ
0196デフォルトの名無しさん
2008/07/12(土) 05:32:37zlibと間違ってたみたい
0197デフォルトの名無しさん
2008/07/12(土) 16:14:21オンラインのCREDIT表記あたりが適切か。
0198デフォルトの名無しさん
2008/07/12(土) 23:11:24それはデータやら何やらの記述だな。
0199デフォルトの名無しさん
2008/07/13(日) 02:48:50まさか、CDATAでスクリプトでも埋め込むのか?w
0200デフォルトの名無しさん
2008/07/13(日) 23:38:11あんま書きたくないが。
0201デフォルトの名無しさん
2008/07/13(日) 23:49:03XMLで書かれた同人ゲームを一つだけ知ってるが、
解析がえらい面倒だったな
0202デフォルトの名無しさん
2008/07/14(月) 04:31:50BulletMLもXMLのDSLだな
0203デフォルトの名無しさん
2008/07/14(月) 11:28:11解析が楽だったりするのがメリットか。
ドキュメンテーションも楽だろう。
0204デフォルトの名無しさん
2008/07/14(月) 12:34:150205デフォルトの名無しさん
2008/07/14(月) 12:40:290206デフォルトの名無しさん
2008/07/14(月) 21:17:26@ワシントン州で
0207デフォルトの名無しさん
2008/07/18(金) 18:15:340208デフォルトの名無しさん
2008/07/20(日) 00:54:26C++では行き詰まるという現実に気がついたのでは
0209デフォルトの名無しさん
2008/07/20(日) 01:00:17アレ?
0210デフォルトの名無しさん
2008/07/20(日) 16:41:450211デフォルトの名無しさん
2008/07/20(日) 19:15:160212デフォルトの名無しさん
2008/07/20(日) 19:41:13みたいなこと言ってたな
0213デフォルトの名無しさん
2008/07/20(日) 23:37:57なんで?やっぱり速度?
0214デフォルトの名無しさん
2008/07/21(月) 01:53:26Matz日記の過去ログにあったかもしれん。ちょっと行ってくる
0215デフォルトの名無しさん
2008/07/21(月) 02:06:29オブジェクト指向言語でオブジェクト指向言語を実装するというのに、脳がついていけないんだけど。
それって、僕だけ? (笑) C++ で言語作ってる人がいるけど、よくやるなぁ、とか思う。
ベース言語のクラスとか継承とかと、実装言語のクラスや継承がごっちゃになて、訳わかんなくなっちゃう。
設計して、どういう風に作ろうかなと思った時点で、もう、わかんなくなって「もういい、やめた」って。
ttp://jp.rubyist.net/magazine/?0001-Hotlinks
0216デフォルトの名無しさん
2008/07/21(月) 05:44:250217デフォルトの名無しさん
2008/07/21(月) 16:17:080218デフォルトの名無しさん
2008/07/21(月) 16:53:35書き直したと聞いたことがある。具体的に何がやばかったのかは知らない。
0219デフォルトの名無しさん
2008/07/21(月) 17:24:10CでいいならそのままC++でもいいじゃんと思うんだが…
0220デフォルトの名無しさん
2008/07/21(月) 17:36:48OO捨ててもCより享受できるものが多いはず。
まあ、でもポータビリティ犠牲にするほどのものでもないかなあ。
0221デフォルトの名無しさん
2008/07/21(月) 18:47:24C++ は、効率重視で、バイナリ互換とるのが極端に難しい実装ばっかりなので、
独立アプリならいいんだけど、ライブラリとして広く長期的に共有されるような
ものの記述には残念ながらあまりむいてない。
Windows はこれを COM という形で一応解決したんだけど、UNIX 系OSではその手のものが
統一的につくられることは結局なかったからね。php のような、他と組み合わせた
運用が求められるものだとこの点はわりと致命的なので、Cでかかざるをえ
なくなったんじゃないかな。
一応 Objective-C という選択はあるけど、こっちは実装が限られてるからねぇ
0222デフォルトの名無しさん
2008/07/21(月) 19:14:470223デフォルトの名無しさん
2008/07/21(月) 21:55:19C++のライブラリをextern "C"してDLLやsoにしたものを、
Cとかで呼ぶとなんかまずそうなのは想像できるな。
グローバルなコンストラクタとかあったらそれはいつ呼ばれるんだろうって。
0224デフォルトの名無しさん
2008/07/21(月) 23:31:590225デフォルトの名無しさん
2008/07/22(火) 00:54:53もう一度良く考えてみろ。どうにもならないことはない。単にリンカがどうするかというだけのことだ。
しかし、万人が納得する解法は無いという事も、ここからわかる。
0226デフォルトの名無しさん
2008/07/24(木) 20:18:470227デフォルトの名無しさん
2008/07/25(金) 08:35:190228デフォルトの名無しさん
2008/08/02(土) 19:26:370229デフォルトの名無しさん
2008/08/03(日) 06:02:10このプロシージャは何を表しているのでしょうか?
たえば、コンパイル元のファイルが、
function foo()
{
print("foo");
}
function bar()
{
print("bar");
}
の場合、sq_compile()が返すプロシージャはこの2つの内の一つなんでしょうか?
0230デフォルトの名無しさん
2008/08/03(日) 09:02:27戻ってくるのは、元のソースを頭から終わりまで実行するクロージャになります。
その例でいくなら、「foo() と bar() をグローバル空間に登録するクロージャ」ということになります。
sq_compile → sq_call してはじめてスクリプトで記述したことが意味を持ちます。
sq_compile したものを sq_writeclosure すると、コンパイルされてバイナリ状態に
なったスクリプトを保存できます。これを sq_readclosure → sq_call するようにすると、
実行時にコンパイルしなくてすみます。
ちなみに sqstdio にふくまれる sqstd_loadfile, sqstd_dofile は、テキスト/バイナリいずれのスクリプトも
同様に扱ってくれるので便利です(ファイルのヘッダをみて、sq_readclosure / sq_compile を切り換えてくれる
0231229
2008/08/03(日) 13:22:55解説ありがとうございました。おかげで理解できたような気がします。
説明をふまえて、マニュアルにあらためて目を通すと、
function ciao(a, b, c)
{
}
は
this.ciao <- function(a, b, c)
{
}
と等価であるという説明から、「sq_call()が返すのはグローバル空間に登録するクロージャ」ということがより直感的に理解できました。
#コンパイル済みのバイナリについても悩みどころだったので説明感謝です。
0232デフォルトの名無しさん
2008/08/05(火) 01:40:07引数の数チェックってどうしてます?
実行時にはエラーになりますが、さすがに関数の引数の数間違いで
実行が止まるのは面倒ですし、
エラーが起きるコードが普段はなかなか実行されないところに
あるものだったりするとかなり面倒ですよね。。。
0233デフォルトの名無しさん
2008/08/05(火) 02:22:21ユーザーにいじらせるようなものでなければ落とした方が間違いに気付きやすくていいと思うけど
0234デフォルトの名無しさん
2008/08/05(火) 05:15:110235デフォルトの名無しさん
2008/08/05(火) 12:04:09型チェックさえしていれば引数の数チェックは必要ない。
Luaは引数の数が違っても変数が未定義でも実行は止まらない。
存在しない変数の値はnilとして続行。
実行が止まるのは、nil以外の型が必要なところにnilが来るのが原因。
0236デフォルトの名無しさん
2008/08/05(火) 23:42:07そうですね、僕は自分しかいじらないので、エラーの時は落とすようにしてます。
ただそうしてると、Cなどであればコンパイル時にわかる型のミスなどが、
Luaだと実行してしばらくしてからでないとわからないので面倒で…
>>235
nilが入ってたまたま動作し、エラーが発見できなかった場合に
デバッグするのが大変ではありませんか?
公開する時には実行が止まらない挙動でないとまずいですが、
作っているときは「想定外の挙動」を検出するために、
型チェックと引数の数チェックは必須だと思っています。
>>234
そ・れ・だ!
0237デフォルトの名無しさん
2008/08/06(水) 02:19:38個人的には厳格な静的チェックが欲しいならCで書けばいいし、
気楽にかけて初心者に教えやすく関数がファーストクラスだったりするのが
スクリプトのメリットだと思ってる
でもまー、スクリプトの用途によって違うかもね
0238デフォルトの名無しさん
2008/08/06(水) 02:27:31ひっかかるけど実はデバッグのための膨大な時間の浪費を回避できてたのかな
0239デフォルトの名無しさん
2008/08/06(水) 07:07:490240デフォルトの名無しさん
2008/08/06(水) 08:30:080241デフォルトの名無しさん
2008/08/07(木) 09:57:22今のところc++で使いやすそうなのでSqPlusが候補なんですが、
どんな感じにやるものなのかってのいうが全然想像できないです。
例えば下のような感じでc++と行ったり来たりってのはできるんでしょうか?
//////////////////////////////////////////////////////
game::SetMsg("買い物する?");
if(game::ShowWndYesNo())//ゲーム側で選択画面を出し、何らかの方法で入力を待ち結果を取得…
{
if(game::GetMoney() == 0)
{
game::SetMsg("お客さん金持ってないね!")
}
else
{
game::SetMsg("何にする?")
game::ShopOpen();//買い物画面出して買い物が終わるのを待つ…
}
}
game::SetMsg("またきてね!");
///////////////////////////////////////////////////////
0242241
2008/08/07(木) 10:06:290243241
2008/08/07(木) 11:20:04>>241みたいな例でいうと、
c++側でgameクラスのインスタンスを生成して、
そのポインタをsqplusに渡して、
sqplus側でSetMsg()だのGetMoney()だのの関数を使う
っていう、そういうことはできないんでしょうか?
なんか根本的に用途間違ってますか?
0244241
2008/08/07(木) 11:28:49sqplus側で受け取ったポインタを通して
そのインスタンスのSetMsg()だのGetMoney()等のメンバ関数を使ったり
メンバ変数の操作をしたり、ということをしたい、、、
ということです。
0245デフォルトの名無しさん
2008/08/07(木) 12:06:33概念的にはもちろんそういうことができるが、C++ のインスタンスの情報は
squirrel 側は当然知らないので、ポインタを渡しただけでは何もできない。
呼び出し用のラッパーを squirrel の流儀で構築する必要がある。
具体的には、C++ のインスタンスは、ユーザデータ型をつかって保持し、
メソッド呼び出しは、そのインスタンスを使ってメンバ呼び出しをする
Cのラッパー関数を、ネイティブクロージャとして、そのユーザデータ型の
オブジェクトの委譲テーブルに登録することで実現する。
sqplus はこれの記述を簡易化するためのテンプレートライブラリ。
メンバメソッドの引数から自動的にラッパーを組み上げて登録してくれる。
基本的には、登録したクラスを、squirrel 側からインスタンス化して使うのが想定されてて、
C++ 側で生成したインスタンスをはめこむのは原理的にはできるはずだけど、sqplusが
それをサポートしてたかどうかは知らない。
0246デフォルトの名無しさん
2008/08/07(木) 12:30:150247デフォルトの名無しさん
2008/08/07(木) 13:29:25SqPlus の testSqPlus2unit/test_PassByReference.cpp
にその例があるよ
0248デフォルトの名無しさん
2008/08/07(木) 22:22:37class CGame {
int GetMoney() { return 100; }
void ShowWndYesNo() { printf("yes no\n"); }
void SetMsg(const SQChar* msg) { printf(msg); }
};
DECLARE_INSTANCE_TYPE_NAME(CGame, Game)
void reg_my_class() {
SQClassDef<CGame> game_class_def(_T("Game)"));
game_class_def.func(&CGame::GetMoney, _T("GetMoney"));
game_class_def.func(&CGame::ShowWndYesNo, _T("ShowWndYesNo"));
game_class_def.func(&CGame::SetMsg, _T("SetMsg"));
}
0249デフォルトの名無しさん
2008/08/08(金) 01:38:24動的言語はその辺は実行しろでFAだったと思いますよ。
動的言語を使用するなら、せめて全経路を走査する単体テストくらいは書けということなのでしょう。
>>245
>基本的には、登録したクラスを、squirrel 側からインスタンス化して使うのが想定されてて、
>C++ 側で生成したインスタンスをはめこむのは原理的にはできるはずだけど、sqplusが
>それをサポートしてたかどうかは知らない。
Squirrelを直に叩いていいならば、
・sq_createinstanceでコンストラクト前のオブジェクトを得る。
・sq_setinstanceupでオブジェクトのポインタをセット
・sq_setreleasehookで後始末関数を設定
で実現できると思いますが、SqPlusには相当する機能は無いんでしょうか。
この機能、無いとFactoryMethodがあるとき困るので、無い事は無いと思うんですが…
0250デフォルトの名無しさん
2008/08/08(金) 02:42:190251デフォルトの名無しさん
2008/08/08(金) 03:56:36これじゃダメなのん?
CreateConstructNativeClassInstance(SquirrelVM::GetVMPtr(), "Game");
SquirrelObject obj = Get(TypeWrapper<SquirrelObject>(), SquirrelVM::GetVMPtr(), -1);
SquirrelVM::Pop(1);
CGame* game = (CGame*)obj.GetInstanceUP(ClassType<CGame>::type());
printf("money = %d\n", game->GetMoney());
obj.Reset();
0252デフォルトの名無しさん
2008/08/12(火) 18:06:52class Foo
{
val = [];
}
ってプロパティを空配列で初期化したんだけどさ、これ、インスタンス毎に
空配列を作成するんじゃなくて、インスタンス間で同じ空配列を参照するんだね。
わかんなくて3時間くらいはまったよ。なんだよもうOTL
0253デフォルトの名無しさん
2008/08/12(火) 18:41:53毎回実行されるわけじゃなくて、単にコピーされるんでそういう挙動になるようだ。
ってことで、配列と辞書はコンストラクタで初期化するのが基本。
ちなみに全部同じ空配列を参照するから、クラス変数的に使えたりする。
0254デフォルトの名無しさん
2008/08/17(日) 10:46:090255デフォルトの名無しさん
2008/08/17(日) 15:43:020256デフォルトの名無しさん
2008/08/17(日) 17:40:24>
> for var_1, ・・・, var_n in explist do block end
>
>is equivalent to the code:
>
> do
> local f, s, var = explist
> while true do
> local var_1, ・・・, var_n = f(s, var)
> var = var_1
> if var == nil then break end
> block
> end
> end
io.lines 等を使うときは s や var は考えないわけだが、
f() の代わりに f(s, var) としても間違いじゃないから上のコードで統一できる。
0257デフォルトの名無しさん
2008/08/17(日) 20:18:21なんかやたら抽象的なコードが出てきたと思ったら、
リファレンスマニュアルから引用してるのか。
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html#2.4.5
0258デフォルトの名無しさん
2008/08/17(日) 22:02:49http://www.lua.org/pil/7.2.html
0259デフォルトの名無しさん
2008/08/21(木) 23:59:39・Cからluaにグローバル変数を登録する の項だけ絶賛放置プレイされてるけどまあこのスレ見てるなら過去ログに書いてあるし
ttp://www2s.biglobe.ne.jp/~nunokawa/wiki.cgi?page=Lua
0260デフォルトの名無しさん
2008/08/22(金) 22:49:59いつも通り、バグ修正のみ
0261デフォルトの名無しさん
2008/08/25(月) 00:18:07Luaの関数の戻り値をC言語で受け取りたいのですが,どうもうまくいきません.
http://ameblo.jp/coffeex/theme-10002528966.html
このサイトの Luaのり付け講座2 - C++からLuaの関数を呼ぶ という部分のコードを丸写しして
実行したのですが,実行結果が
可算結果: 5 (5.000000)
減算結果: 1 (1.000000)
ではなく
可算結果: 1 (1.000000)
減算結果: 5 (5.000000)
とひっくり返ってしまってます.もしかして環境によって戻り値の返し方は違うのでしょうか?
0262デフォルトの名無しさん
2008/08/25(月) 03:08:58-2のほうが下にあるんだから1個めでは。
double result1 = lua_tonumber(L, -1); //1つめの戻り値(注意:Luaの数値はdouble型!)
double result2 = lua_tonumber(L, -2); //2つめの戻り値
その前に「可算」が気になる・・・
0263デフォルトの名無しさん
2008/08/30(土) 14:26:16仕様?
例えば、
local coro = ::newthread(
function()
{
0264デフォルトの名無しさん
2008/08/30(土) 14:28:530265デフォルトの名無しさん
2008/08/30(土) 14:36:09Squirrelの話なんだけどさ、スレッド内でエラーが発生すると有用なメッセージ出力しないのは
仕様?
例えば、
local coro = ::newthread(
function()
{
noindex = "";
}
);
coro.call();
ってコードを書くと、[the index doesn't exist]とだけメッセージが出力されて、スタック
トレースもcoro.call()の部分までしか表示してくれない。
実際のコードだと、noindex = "";の部分が原因だって特定するのが時間かかる。
ただのtypoの特定に時間かかってしまうと、コーディングのテンポが悪くて非常に困る。
Luaはそのあたりどうなのかな。コルーチンの内部にまで踏み込んでスタックトレース
表示してくれる?
0266デフォルトの名無しさん
2008/08/30(土) 15:50:15これ実際にコーディングする上では結構致命的だと思うんだが…
フォーラムに載ってた。
http://squirrel-lang.org/forums/thread/2269.aspx
2行書き換えるだけで、ちゃんとコールスタック表示してくれる。
0267デフォルトの名無しさん
2008/08/30(土) 15:57:350268デフォルトの名無しさん
2008/08/30(土) 16:30:21お、ほんとだ出るね。サンクス。
でもこれ指定するとtry/catchでくるんでるのにエラーハンドラ呼ばれるんだよね?
状況によっては困る気もする。
0269デフォルトの名無しさん
2008/08/30(土) 19:22:28と思うから、あんま困ったことはなかったような記憶、だけどどうだっけか
0270デフォルトの名無しさん
2008/08/30(土) 20:02:35例えばエラーハンドラが呼ばれたときはキャッチ失敗したということだから、深刻なエラーとして
ログ出力して終了する、という運用スタイルの時困る気がする。
運用方法変えたら良いだけかもしれないけど…
本当は小細工しなくても、コールスタックちゃんと表示してくれるのが一番
なんだけどね。
0271デフォルトの名無しさん
2008/09/01(月) 10:05:48VM内で初期化してないアドレスを参照してたから、最初はSquirrelのがおかしいのかと思って
必死こいてソース読んでたけど、どうもトレースしているとSqPlusがおかしいみたいで。
SqPlusでバインディングした変数を参照するとgetInstanceVarFuncが起動するわけ
だけど、これが内部でSquirrelVM::Init(v)を呼び出してる。
普段は渡されるVMは変化しないから問題ないんだけど、これがスレッド内で呼び出されると話が
変わる。
スレッドごとにフレンドVMで実行されるから、getInstanceVarFuncの引数として渡されるVMは、メインVM
じゃなくてフレンドVMなわけで。
だからSquirrelVM::Init(v)でSquirrelVMがフレンドVMで初期化されてしまう。
その後SquirrelVM::RunScript()なり何なりVMを対象にするメソッドを呼び出すと、フレンドVMを対象に
行われるから、おかしなことになってしまう。
自分の場合、SquirrelVM::RunScript()の内部でthread.resume()を呼び出してたから、本来サスペンドされていた
はずのフレンドVMをsq_call()で不正にたたき起こした挙句、さらにthread.resume()で起こそうとしたから、
問題が発生したみたい(クラッシュした)。
でも他の状況だと問題は発生しないかもしれない。よくわからん。
とりあえずworkaroundとして、getInstanceVarFuncを使わない(__getメタメソッドを使わない)ことにした。
レポート送ったほうがいいのかな。
でもこれ英語で書く自信ないよ…OTL
0272デフォルトの名無しさん
2008/09/01(月) 20:55:020273sage
2008/09/01(月) 23:43:31自分でVM切替えしてるの?
0274デフォルトの名無しさん
2008/09/02(火) 07:20:43公式フォーラムでいいのかな?暇ができたらレポートすることにする。
>>273
自分が何を指すのかわからないけど、フレンドVMを使っていることを普通意識する必要はないよ。
0275デフォルトの名無しさん
2008/09/03(水) 15:08:48フォーラムに報告もたまにしてたけど、最近のリリースがけっこう前のものならとりこまれていないのかも。
0276デフォルトの名無しさん
2008/09/10(水) 01:33:040277デフォルトの名無しさん
2008/09/10(水) 21:12:07これ?
Wiiウェアで始まった、スクエニの“小規模開発への挑戦”。「小さな王様と約束の国 FFCC」の開発事例
http://www.watch.impress.co.jp/game/docs/20080224/ffcc.htm
0278デフォルトの名無しさん
2008/09/10(水) 22:51:52LuaからSquirrelに移行しようかと、いろいろ試しているのですが
SquirrelにはLuaでいう require/module のような機能はないのでしょうか?
自前で用意すればできるのはわかるのですが、
Squirrelの作法として、
スクリプトファイルを機能ごとに複数に分けて管理したい場合は
通常どうするのが正しいのでしょうか?
よろしくお願いします。
0279デフォルトの名無しさん
2008/09/11(木) 00:50:24squirrelってsqstd_dofileとかでファイル読み込む直前でルートテーブルをプッシュしてるけど、
それをルートテーブルではなく、任意のテーブルを指定する
そうするとその任意のテーブルにデータが読み込まれる
ただし、使うときはtable.func();みたいな使い方をしなければならなくなる…のかな?
他にもデリゲートテーブルを使う方法もあるけど、これはファイルごとと言うわけにはいかないかな
というかLuaってrequire/moduleで機能ごとに分けて管理できるんだ…
そっち知らなかった…
0280デフォルトの名無しさん
2008/09/11(木) 21:52:26返答ありがとうございます。
やはり、自前で用意する必要があるようですね。
とりあえず Lua と同じような形で
ルートテーブルに登録する形で実装してみようかと思います。
ありがとうございました。
0281デフォルトの名無しさん
2008/09/11(木) 22:27:49>SquirrelにはLuaでいう require/module のような機能はないのでしょうか?
>スクリプトファイルを機能ごとに複数に分けて管理したい場合は
個別に管理、ということは
requireを使えば、いらなくなったスクリプトファイルとかを個別に解放できたりするんですか?
0283デフォルトの名無しさん
2008/09/12(金) 13:33:06解放ですか…
Lua の require/module は結局グローバルにテーブルとして追加しているだけなので
_G.xxx.foo = nil
みたいにしてしまえば解放もできそうな気はしますが…。
(require("xxx.foo"),module("xxx.foo")と仮定)
やったことはないです。
私が言っていたのは単純にファイルの管理についてです。
Character.lua : キャラクタークラス定義
Stage1.lua : ステージ1
Stage2.lua : ステージ2
とした場合、
Stage1.lua, Stage2.lua それぞれの先頭で
require("Character.lua");
とするような。
すべて1ファイルに記述するわけにはいきませんから。
0284デフォルトの名無しさん
2008/09/12(金) 15:05:58例としてはたとえば以下のような関数をつくっておいて、
function require(name, cond)
{
if (!cond in ::getroottable()) {
dofile(name);
}
}
Character.nut の冒頭
CHARACTER_DEFINE <- true;
Stage1.nut や Stage2.nut の冒頭
require("Character.nut", "CHARACTER_DEFINE");
判定に使うのはグローバルに定義するものなら
なんでもいいですが、ルールきめておけばあとでみたときわかりやすいと思います。
0285デフォルトの名無しさん
2008/09/14(日) 12:10:26ってのがでるらしい。
出版社のページみつかんなかったのであまぞん
ttp://www.amazon.co.jp/dp/4797348550
0286デフォルトの名無しさん
2008/09/14(日) 12:44:58発売日になったらとりあえず買ってこようと思う。
0287デフォルトの名無しさん
2008/09/14(日) 13:06:020288デフォルトの名無しさん
2008/09/14(日) 13:17:530289デフォルトの名無しさん
2008/09/14(日) 15:54:56Amazon.co.jp: スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践: 浜中 誠: 本
http://www.amazon.co.jp/dp/4797348550
http://images-jp.amazon.com/images/P/4797348550.09.MZZZZZZZZZ.jpg
0290デフォルトの名無しさん
2008/09/14(日) 23:06:460291デフォルトの名無しさん
2008/09/15(月) 03:33:58kwsk
どっかに資料とかあがってないの?
0292デフォルトの名無しさん
2008/09/15(月) 06:01:400293デフォルトの名無しさん
2008/09/19(金) 23:15:440294デフォルトの名無しさん
2008/09/20(土) 01:08:360295デフォルトの名無しさん
2008/09/20(土) 01:38:03悟空とべジータくらい違う。
0296デフォルトの名無しさん
2008/09/20(土) 01:48:54自力で直せる環境にいないと使えない
0297デフォルトの名無しさん
2008/09/20(土) 02:09:42Squirrelのほうがやわらかい
0298デフォルトの名無しさん
2008/09/20(土) 02:25:07基本的な演算とsuspendを行う処理を一億回ループさせたらLuaはSquirrelの1/3の時間ですんだ
0299デフォルトの名無しさん
2008/09/20(土) 02:26:59散々過疎ってたのに燃料来たとたんこれかよ
0300デフォルトの名無しさん
2008/09/20(土) 09:58:580301デフォルトの名無しさん
2008/09/20(土) 10:11:15この辺がなんか不安、サンプルやらソースやら見れば解ることが山ほど載ってそう
>〜人気スクリプト言語Lua(ルア)とC/C++のバインディング実例を詳細に解説。
0302デフォルトの名無しさん
2008/09/20(土) 10:30:390303デフォルトの名無しさん
2008/09/20(土) 10:46:060304デフォルトの名無しさん
2008/09/20(土) 14:11:140305デフォルトの名無しさん
2008/09/21(日) 00:53:52Lua本体に入ってない
LuaがC/C++との連携を単なるオプション扱いすることはない
ゆえに、Swigはあまり使わない
0306デフォルトの名無しさん
2008/09/21(日) 02:11:53一応、CEDECのサイトで講演に使ったパワポがpdfでアップされてたんだけど、
これ会員以外に流すとなんかやばそうな・・・
まぁいろいろ言ってたよ。
コード全体の7割はSquirrelとかallocが多いのでメモリまわりの工夫をしたとか。
実際このゲームプレイしたけど、Wii環境であれだけ動いていれば、まぁ実践レベルには十分達しているといえるだろうね
0307デフォルトの名無しさん
2008/09/21(日) 02:15:412chにここしかSquirrelのスレないんだもん。
クレっていったら資料くれそうな気もする
0308304
2008/09/21(日) 22:00:07なるほど、サンクスです。「入門Luaプログラミング」を読んだんですが、
C++との連携方法がいまいち良く分からなかったので(SquirrelだとSqPlus?)、
>>285の本を見て勉強することにしてみます。
0309デフォルトの名無しさん
2008/09/21(日) 22:29:120310デフォルトの名無しさん
2008/09/21(日) 23:13:07CからLua関数をコールするときは、関数名、引数をスタックに積んで行うと思います。
これを以下のようにコールするのって、副作用とか問題点って何かありますか?
(実行速度とか)
sprintf( strCmd, "return add( %f, %f )", a, b );
luaL_dostring( L, strCmd );
0311デフォルトの名無しさん
2008/09/21(日) 23:34:490312デフォルトの名無しさん
2008/09/23(火) 14:16:38スタック積むのめんどくさい時はたまにやってしまう。
0313デフォルトの名無しさん
2008/09/23(火) 20:28:26速度低下と実数が桁落ちするデメリットはすぐに分かるのですが、
マニュアルにある"tail call"形式にする影響が少々心配でした。
アドバイスありがとうございました。
0314デフォルトの名無しさん
2008/09/24(水) 15:53:01皆なに使ってる?自作してるのかな?
0315デフォルトの名無しさん
2008/09/24(水) 22:18:38-fixed some behaviour inconsistencies in thread.call() and thread.wakeup() (thx Mr.Accident)
-fixed coroutine error propagation
-fixed lingering return value from native function (thx Tom Leonard)
-fixed a bug if array.sort() is given a bad sort function (thx Tom Leonard)
-fixed some minor api bug
-added sq_arrayremove() and sq_arrayinsert()
0316デフォルトの名無しさん
2008/09/27(土) 08:49:30漏れはバインダなんてイラン派
0317デフォルトの名無しさん
2008/09/30(火) 09:20:05どっかで見てから買いたかったんだけど売ってない。
よさげor誰も買ってないならamazonで買おうかと。誰か買ってたら感想よろ
0318デフォルトの名無しさん
2008/09/30(火) 10:06:28>ご注文いただいた商品の配送予定日がまだ確定しておりません。
<中略>
>継続して商品の調達に努めてまいりますが、調達不能な場合または入荷数の関係上キャンセルをさせていただくこともございます。
報告するようじゃないけど、初めてkonozamaメール貰った。\(^o^)/
0319317
2008/09/30(火) 15:07:52結構いろいろ書いてあるっぽいんで楽しみ。
0320デフォルトの名無しさん
2008/09/30(火) 15:48:15大学の書店に普通においてあったよ
0321デフォルトの名無しさん
2008/09/30(火) 17:11:380322デフォルトの名無しさん
2008/09/30(火) 17:23:42オール・ハイル・ぅあ!
0323デフォルトの名無しさん
2008/09/30(火) 19:18:240324デフォルトの名無しさん
2008/09/30(火) 23:25:37bccについてるimplibでdllからlibファイル吐かせてリンクすればいけんじゃね?
何がわからんのだかわからんから適当言ってるが、的外れなこと言ってたらスマン
0325デフォルトの名無しさん
2008/10/01(水) 02:25:520326デフォルトの名無しさん
2008/10/01(水) 09:14:480327デフォルトの名無しさん
2008/10/01(水) 16:14:35無料で使えるってことで以前は定番だったけども。
0328デフォルトの名無しさん
2008/10/02(木) 09:11:38C/C++とのバインディングは、パッと見でtolua++とかいうのを使っているみたい。
0329デフォルトの名無しさん
2008/10/03(金) 23:03:560330デフォルトの名無しさん
2008/10/04(土) 11:09:33RubyのDelphiバインディングに使われていた
0331デフォルトの名無しさん
2008/10/04(土) 11:36:59使うと勝ち組になれるような気がするぜ
0332デフォルトの名無しさん
2008/10/04(土) 14:04:24tolua++便利だな
まだ使っても無いけど
0333デフォルトの名無しさん
2008/10/04(土) 18:27:26http://www.amazon.co.jp/dp/4797342722
0334デフォルトの名無しさん
2008/10/04(土) 22:41:430335デフォルトの名無しさん
2008/10/05(日) 01:25:060336デフォルトの名無しさん
2008/10/06(月) 08:29:450337デフォルトの名無しさん
2008/10/06(月) 11:28:58tolua++のソースとかSDLとかSConsとかダウンロードしたいやつが結構ある。
できればCD-ROM付きの方が良かったかも…。
0338デフォルトの名無しさん
2008/10/06(月) 14:05:06まあCD-ROMは邪魔だわ更新されないわで嫌いだから気長に待つが。
0339デフォルトの名無しさん
2008/10/06(月) 20:23:0081ページ付近で少し困るような気がする。
ついでに59ページ。counry
0340337
2008/10/06(月) 22:52:204章まで読んだところでは、4.10のLuaの文法:クラスのところが、Lua入門の方で
よく分からなかったとこなんで役に立ったかも。
5章から手動かしながら読んでくべ。
0341デフォルトの名無しさん
2008/10/08(水) 23:26:540342デフォルトの名無しさん
2008/10/10(金) 02:24:170343デフォルトの名無しさん
2008/10/11(土) 09:13:45〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0344デフォルトの名無しさん
2008/10/11(土) 18:21:280345デフォルトの名無しさん
2008/10/11(土) 19:09:260346デフォルトの名無しさん
2008/10/11(土) 19:20:070347デフォルトの名無しさん
2008/10/11(土) 20:00:240348デフォルトの名無しさん
2008/10/11(土) 20:52:59io.open(arg[1]):read("*a"):gsub(([[
∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ KUMA
彡、 |∪| /
/ __ ヽノ /
(___)]]):gsub("[^%a]","%%%1"):gsub("KUMA","(.-)"),
function(s)io.write("(_●_)",s,"\n")end)
0349デフォルトの名無しさん
2008/10/12(日) 08:47:37〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0350デフォルトの名無しさん
2008/10/12(日) 11:17:470351デフォルトの名無しさん
2008/10/12(日) 14:08:31〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ _ヽ ヽノ ノ/
(___)\/
Urso de lua 「和名: ゥアノワグマ」
0352デフォルトの名無しさん
2008/10/12(日) 15:11:200353デフォルトの名無しさん
2008/10/12(日) 15:53:210354デフォルトの名無しさん
2008/10/12(日) 18:57:560355デフォルトの名無しさん
2008/10/13(月) 19:16:01〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0356デフォルトの名無しさん
2008/10/13(月) 20:58:57ttp://lua-users.org/wiki/LuaFiveTwo
ttp://lua-users.org/wiki/FeatureProposals
個人的にはHash計算しない文字列(バッファ目的)とか
標準にほしいような。LuaSocketとかでそれなりのサイズの
通信行うと、ゴミがたまるので精神衛生上良くない。
0357デフォルトの名無しさん
2008/10/13(月) 21:50:07CとLuaの比率をなめらかに変化させるのが理想的だと思う
0358デフォルトの名無しさん
2008/10/14(火) 23:07:140359デフォルトの名無しさん
2008/10/14(火) 23:24:210360デフォルトの名無しさん
2008/10/15(水) 00:36:470361デフォルトの名無しさん
2008/10/15(水) 01:44:37結構良さそうなんだけど
0362デフォルトの名無しさん
2008/10/15(水) 01:53:26(´\r-、 ┼ + /`/`) +
┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ (⌒ヽ. ∨ ● ●レ /⌒) 、)ヽ)
* (/'\ \| ( _●_) ミ' /、)、)´ +
+ `ヽ彡、 |∪| ノ / Lua!!
+ 〉 ヽノ / * +
┼ / / +
+ / /\ \ * +
+ * / / ┼ ) ) +
/ / + ( \ *
* + (_/ * \_丿 ┼
0363デフォルトの名無しさん
2008/10/15(水) 02:56:46ゲーム系で問題になるluaのreallocの問題って
1) OSのreallocは排他等高コスト
2) 拡張時のコピーが高くつく
3) メモリ断片化
のどれだろう。また、その代替案として以下は正しい?
1) 2)
=>インタフェース変えずにカスタムlua_Alloc作成だけでOK?
3)
=>stl::vector ->stl::dequeみたいに配列サイズ追加しても
allocが呼ばれない配列管理に変更
0364デフォルトの名無しさん
2008/10/15(水) 03:07:13あー、おれも興味あるんだ
文体C++風味で型の扱いが静的というところに魅かれる
0365363
2008/10/15(水) 03:08:371)
=>インタフェース変えずにカスタムlua_Alloc作成だけでOK?
2) 3)
=> 配列サイズ増加時にallocは呼ぶが、stl::deque
のような再配置をなくした配列管理にし、また、追加される
メモリブロックは固定長に出来るので固定長メモリアロケーター
で済む。故にメモリ断片化が防げる。
0366デフォルトの名無しさん
2008/10/15(水) 05:05:38ここで聞くほど問題が見当たらないなら
4) そもそも実は問題ない
という結論にならないかね?
malloc/free が OK で realloc がダメとかおかしいだろ、普通に考えて。
0367デフォルトの名無しさん
2008/10/15(水) 18:05:36まぁちょろいテストアプリを作っただけなんで作り込んだらいい線いくかもしれないが。
0368デフォルトの名無しさん
2008/10/15(水) 18:48:39PythonとかRubyとかちょっと組み込んでみたいんだけども。
0369363
2008/10/15(水) 20:32:14本当にリサイズが発生するのって配列サイズの増加と
テーブルのハッシュ再計算時と文字列結合ぐらい?
lua自身の配列サイズの増加も倍々方式だし、realloc自体も
同様の最適化されてるので、コピーはそんなに発生しない。
ある程度の大きさのランダムアクセス配列が必要なら、
配列サイズの事前割り当ても可能だし、配列自体の
使いまわしも出来る。
ガベコレはだめだ、参照カウンタがいいってんなら理解できるが。
0370デフォルトの名無しさん
2008/10/15(水) 21:22:060371デフォルトの名無しさん
2008/10/16(木) 02:28:440372デフォルトの名無しさん
2008/10/16(木) 02:34:170373デフォルトの名無しさん
2008/10/16(木) 20:54:50〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0374デフォルトの名無しさん
2008/10/18(土) 10:50:51どなたか教えてください。
struct X {
int x;
};
void B(struct X *x) {
printf("%d\n", x->x);
}
void A() {
struct X x;
B(&x);
}
こんな感じで関数Aから関数Bを呼ぶコードがあるとして、
関数BをLuaに書き換えたいのだが、
どうやったらC言語側でメモリ管理している構造体データをLuaの関数に渡せるの?
0375デフォルトの名無しさん
2008/10/18(土) 11:33:42lua_pushlightuserdata()
メンバ変数をLua側に公開するなら他にも色々必要だろうけど
0376デフォルトの名無しさん
2008/10/18(土) 15:46:17ありがとうございます
色々って、たとえばアクセス用の関数を準備するとかですか?
ほかになにか手はありますかね。
0377デフォルトの名無しさん
2008/10/18(土) 22:31:06その関数とデータを一つのテーブルにまとめるとか
メタテーブルを使うとか
メタテーブルの説明はマニュアルにある
何に使うかは自由
0378デフォルトの名無しさん
2008/10/21(火) 10:50:36SquirrelスクリプトにSJISの文字列リテラルを書いてたら
Eclipseで毎回コンパイルエラーがでるのは俺だけ?
Eclipseの起動前にスクリプトを一時的に削除したりして面倒。
デバッグ用に動かす分には問題ないっぽいんだが。
\
0379デフォルトの名無しさん
2008/10/21(火) 15:56:120380378
2008/10/21(火) 18:22:22今確認したが、UTF-8でスクリプトを用意して
bin/squでシンタクスチェックをさせるようにしても、
やはり日本語のリテラル部分でEclipseのエラーメッセージが表示される。
(もちろんsqu -c では問題なし)
0381デフォルトの名無しさん
2008/10/22(水) 07:47:340382デフォルトの名無しさん
2008/10/22(水) 12:58:160383デフォルトの名無しさん
2008/10/22(水) 21:17:490384378
2008/10/25(土) 14:22:02UTF-16LE/BEに変えてみたがやはり変わらず。
それからSquirrelインタプリタsqu.exeはコンパイル時にエラーを吐かないことが結構あることに気づいた。
コンパイルチェックはあまり信用できないんだな。
>>382
説明が悪かった。Eclipseのウィンドウに、「Squirrelスクリプトのコンパイルエラー」と表示されるわけだ。
表示させてるのはSQDEVなので一応まだSquirrelの範囲内。まあしつこいと思われるようだったら黙る。
>>383
俺もつい先週入れたばかりなのでまだ使える情報だと思うが、
1.まずSun Java SEの最新版を入れる。
2.EclipseはC++用じゃなくてJava開発用をインストールすること(CDTは後から入れられる)
3.あとはSQDEVのWikiページの通りでよい
0385デフォルトの名無しさん
2008/10/25(土) 17:03:250386デフォルトの名無しさん
2008/10/25(土) 19:14:16本体のコンパイル時にUNICODE対応させるオプションがある。
内部のUNICODE=UTF-16
だけど確か、読み込み時に標準ライブラリを使ってロードする時はいくつかのUNICODEに対応していたはず、
(UTF-8N,UTF-16のLE,BEあたりだったような)
この辺はソース読んでみて、確かめてみて簡単だから
0387378
2008/10/25(土) 20:10:22Squirrelソース本体はまさにその通りですね。どうもありがとう。
ところがSQDEVに関しては、どうやらSQDEV自体でSquirrelスクリプトの構文解析をやってるっぽいんだ。
(pluginのJavaソースコードを入手して眺めてみた)
このJavaで独自に実装された構文解析器で文法チェックしてるのか、
SQDEVのオプションで指定するインタプリタで文法チェックさせてるのかはまだ調べてない。
残念ながら俺はJava界隈はあまり詳しくないので、どう直したらSJIS対応の構文解析器に改造できるのかがわからん。
0388デフォルトの名無しさん
2008/10/25(土) 21:21:47syntax checkingもできてないし
デバックできなかった。
suspend
ready
connected
SQDBG error : cannot open the file
0389デフォルトの名無しさん
2008/10/26(日) 01:12:460390デフォルトの名無しさん
2008/10/27(月) 14:34:30EclipseでSquirrelパースペクティブを開いているかどうか。
SQDEVの設定は完了しているのかどうか。
プロジェクトのファイルパスがスペースを含まない半角英数字のみで構成されているかどうか。
sqdbglibを含んだインタプリタかどうか。(sqdbg.exe)
0391390
2008/10/27(月) 15:17:09リモートデバッグというのは動いている外部プログラムをSocket越しにモニターするだけのことだから、
デバッグ対象のプログラムが正常に動作するようにする必要がある。
「SQDBG error : cannot open the file」
という言葉通り考えるなら、sqdbg.exe の場合だと
「Default Working Directory」と「Default command line options」の組み合わせが正しくないとか。
0392デフォルトの名無しさん
2008/10/27(月) 15:28:22SqPlusの初期化において、VMをSQSharedStateNodeに渡してアプリケーション終了時にまで
VMの解放を後回しにするコードは丸めてゴミ箱に捨てたほうがいい。回避させたほうが無難。
0393デフォルトの名無しさん
2008/10/27(月) 18:53:29「Default command line options」がわかんないよ。
「test.nut」じゃないの
ほかは全部あってると思う。
0394393
2008/10/27(月) 18:54:05>>391
0395デフォルトの名無しさん
2008/10/28(火) 11:16:46まあ分からないというなら、ファイル・ディレクトリ構成まで含めてWikiと全く同じにしてごらんよ。
connectedと出ているようだから、sqdbg.exeへのSocket接続は成功しているようだ。
0396デフォルトの名無しさん
2008/10/28(火) 23:02:00( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0397デフォルトの名無しさん
2008/11/03(月) 15:03:400398デフォルトの名無しさん
2008/11/03(月) 18:31:08〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0399デフォルトの名無しさん
2008/11/04(火) 18:05:01また、文字列処理に関して、pythonやrubyと
比べるとどうですか?かなり劣ってますか?
0400デフォルトの名無しさん
2008/11/04(火) 19:13:11使えます
ある程度は劣っていると思います
0401デフォルトの名無しさん
2008/11/04(火) 19:27:44文字列の簡単なパターンマッチは標準ライブラリでできますが、
例えばバックトラックを必要とするような複雑なパターンは使えません。
マルチバイト文字のサポートもありません。
あえて言うなら、文字列とbyte列を区別するのが嫌いな人向け。
ちなみにLPegというライブラリでparsing expression grammarが使えるそうです。
ttp://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html
0402デフォルトの名無しさん
2008/11/04(火) 22:30:15>>401
レスありがとう。
rubyかpythonの拡張で行こうかと思ってたけど、
組み込みで行くわ。
俄然やる気出てきた。
0403デフォルトの名無しさん
2008/11/04(火) 23:29:28文体の変化にやる気というか、テンションの上がりっぷりが伺えて面白いんだがw
0404デフォルトの名無しさん
2008/11/05(水) 10:49:20配列にぶち込んでくれるAPIが欲しいところだな。
0405デフォルトの名無しさん
2008/11/06(木) 02:33:13自分でネイティブ関数作ればいいじゃないかw
0406デフォルトの名無しさん
2008/11/07(金) 20:21:05って本に関して、Luaの入門書を先に読んだほうが良いですか?
それともこの本だけで完結しますか?
0407デフォルトの名無しさん
2008/11/07(金) 21:05:26読むのにLua自体の知識はあまり必要ない
0408デフォルトの名無しさん
2008/11/07(金) 21:41:36Luaの構文規則については第4章をまるまる使って解説してる
本に載っている内容だけならこれで十分
自分でなんか作ってみて
わからないところが出てきたら
Webのリファレンスみればいいんじゃない?
0409デフォルトの名無しさん
2008/11/08(土) 04:24:49大変参考になりました。
0410デフォルトの名無しさん
2008/11/09(日) 03:47:40文字列処理をアプリ側でやれば問題はないんだが、スクリプトコードのデバッグに日本語が使えないな。
0411デフォルトの名無しさん
2008/11/12(水) 01:04:170412デフォルトの名無しさん
2008/11/12(水) 01:27:300413デフォルトの名無しさん
2008/11/12(水) 06:25:360414デフォルトの名無しさん
2008/11/12(水) 07:39:32http://sugarpot.sakura.ne.jp/yuno/html/lua5_manual_ja.html#2.5.1
5.1にはあるけど。
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html#2.5.1
5.0でもmath.modはあるみたいだからそれを使えば。
http://sugarpot.sakura.ne.jp/yuno/html/lua5_manual_ja.html#5.5
0415デフォルトの名無しさん
2008/11/12(水) 19:49:36粘菌に計算してもらえばええよ。
ttp://www.chunichi.co.jp/article/technology/science/CK2008110402000183.html
0416デフォルトの名無しさん
2008/11/12(水) 23:54:16つ math.mod
0417デフォルトの名無しさん
2008/11/13(木) 00:01:26>>414
0418デフォルトの名無しさん
2008/11/13(木) 00:03:58すまね、携帯で見てて下切れてたorz
0419デフォルトの名無しさん
2008/11/13(木) 01:39:500421デフォルトの名無しさん
2008/11/15(土) 10:58:34〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0422デフォルトの名無しさん
2008/11/16(日) 10:17:41( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0423デフォルトの名無しさん
2008/11/16(日) 13:06:010424デフォルトの名無しさん
2008/11/16(日) 13:06:520425デフォルトの名無しさん
2008/11/16(日) 18:36:160426デフォルトの名無しさん
2008/11/16(日) 20:12:460427デフォルトの名無しさん
2008/11/16(日) 21:31:570428デフォルトの名無しさん
2008/11/16(日) 23:07:10文法がC++なんで慣れてるってのもあるが。
ただ、AngelScriptとC++プログラムを結びつけるのを簡単に行うツールとかないのが残念。
LuaBindとかみたいなやつね。
0429デフォルトの名無しさん
2008/11/17(月) 15:01:43〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0430デフォルトの名無しさん
2008/11/17(月) 15:32:49http://d.hatena.ne.jp/SumiTomohiko/20081114/1226668855
0431デフォルトの名無しさん
2008/11/17(月) 20:00:00バインダがなくてもシームレスに利用できるのがAngelScriptの良いところだと思うのだが。
0432デフォルトの名無しさん
2008/11/17(月) 23:47:04確かに。
Luaはいまいち使いこなせなかったが、AngelScriptはその辺楽でよかった。
ただ、例えば
ASFunc<int(int,int)> f;
f.SetContext(〜);
f.SetFuncID(〜);
int val=f(a,b);
みたいな感じで、普通の関数呼び出しと同じようにAngelScriptの関数呼び出せるのがあれば便利かなーと。
0433デフォルトの名無しさん
2008/11/18(火) 20:34:35で.NETのSystem.Drawing.BitmapとかGraphicsを使って画像を読み込んで弄ったり出来るんだけど、
新規にBitmapを作る方法がわからん。
一旦画像を読み込んでそれのクローンをつくるとかいうやり方ぐらいしかうまくいかない。
0434デフォルトの名無しさん
2008/11/22(土) 08:49:08( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0435デフォルトの名無しさん
2008/11/22(土) 18:43:300436410
2008/11/24(月) 14:51:19UCS2は.NETでしか使ったことなかったので、ロケール失念してた。
0437デフォルトの名無しさん
2008/11/25(火) 00:12:56現在、「スクリプト言語による効率的ゲーム開発」という本を読み、
Visual C++ 2008 EE上で空のプロジェクトを作成し、
以下のソースファイルをビルドしてみたのですが、
// 以下、ソースファイル
#include <lua.hpp>
int
main()
{
lua_State* L = lua_open();
lua_close(L);
return 0;
}
LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
という警告が出ます。
かといってLIBCMTを無視するライブラリに指定するとビルドが通りません。
LNK4098のメッセージを無視する方法以外で、警告メッセージを消す方法はありますか?
0438デフォルトの名無しさん
2008/11/25(火) 00:51:29大体MTとかその辺のオプションで
0439デフォルトの名無しさん
2008/11/25(火) 09:08:48vcppでWin32向けプログラムをビルド際にFAQレベルで発生する問題だ。
Luaに限ったことじゃないのでぐぐればすぐに解決策は出てくる。
ややこしいことにvcppは複数のランタイムライブラリを持っていて、しかも各ライブラリ・プログラム生成時には原則全てあわせる必要がある。
0440デフォルトの名無しさん
2008/11/25(火) 23:22:38推測だがLuaのビルドオプションがMTでアプリ側もMDだとこの警告がでる。
この場合でもアプリのほうでLIBCMTを無視する設定にすれば大概大丈夫なはずなんだが・・・
面倒だったら、両方のランタイムをそろえてしまえばラクだけど
0441デフォルトの名無しさん
2008/11/26(水) 01:05:16>> 439
>> 440
プロジェクトの
[構成プロパティ]->[C/C++]->[コード生成]->ランタイムライブラリ
を/MDd(マルチスレッドデバッグ DLL)から/MT(マルチスレッド)に変更することで警告がでなくなりました。
おかげで少しVC++についてわかりました。
ご丁寧な回答、ありがとうございました。
0442デフォルトの名無しさん
2008/11/26(水) 01:44:50・LuaのライブラリをCRT毎に6種類全部ビルドする
・#ifdefと#pragma comment(lib,〜)で自動的にそれを選択するヘッダを作る
0443デフォルトの名無しさん
2008/11/27(木) 15:41:21確かに動的リロードはできたら便利だよなと思った。
そこでSquirrelで同じことをしようと思ったんだが、問題にぶつかった。
Squirrelの仕様だと、Classは一度インスタンスを生成すると変更不能になる。
この仕様だとSquirrelのクラスはリロードできないんだよな…
かといってdelegate使うのは、折角クラス機構があるのにどうよ?と思うんだが、
Squirrelで動的リロードを実装した人いる?
0444デフォルトの名無しさん
2008/11/27(木) 15:44:13Makefileで書けば至極簡単だが、(Luaを)プロジェクトファイルで管理したら普通の方法だとものすごく手間がかかりそうだな。
楽にやる方法何かないでしょうか。
0445デフォルトの名無しさん
2008/11/27(木) 15:45:19スクエニの小さな王国とかが動的リロードやってる
CEDEC2008で言ってた
0446デフォルトの名無しさん
2008/11/27(木) 15:45:24おそらく、いったんインタプリタを殺して最初からやり直した方が早いと思う。
0447デフォルトの名無しさん
2008/11/27(木) 16:02:33ヘッダ一発だってばさ
0448デフォルトの名無しさん
2008/11/27(木) 16:39:01やってるのか。詳細が欲しいな。
>>446
今まではまさにその方法でやってた。
色々考えてみたが、ソースに手を加えない方法ではdelegate使うしかないな。
Foo = NewClass( "Foo", SuperClass );
function Foo::foo()
{
// do something
}
のようにクラスを記述しないといけないが…
0450デフォルトの名無しさん
2008/11/28(金) 08:13:57〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0451デフォルトの名無しさん
2008/11/28(金) 17:02:22プロジェクトファイルってVCの話か?
それなら、ビルド方法のリリースやデバッグに追加して
「DLL リリース」とか「DLL デバッグ」とか作ればええよ
0452デフォルトの名無しさん
2008/12/02(火) 01:31:01色マクロに使おうとしてた俺涙目とか思ってたら>>100で既出な上、
さらに>>104で解決策が示されていた件
ありがとう>>104
0453デフォルトの名無しさん
2008/12/02(火) 10:20:36微妙に遅くなって涙目。
デバッガとかついててSquirrel便利だけど、
どっちにしようかなぁ……。
0454デフォルトの名無しさん
2008/12/02(火) 11:35:49実行に差し障りがあるレベルなら微妙とはいわなくね?
0455デフォルトの名無しさん
2008/12/02(火) 22:27:47FPSが明らかに低下したらならXtalのままにしたほうがいいと思う。
0456453
2008/12/03(水) 01:14:18Xtalだとぎりぎりで60FPS出せる。CPU使用率は1個換算で96〜98%くらい。
これがSquirrelだと52〜54FPSになって少しカクカクしてくる。
速度ならXtalということになるが、これ以上作りこむとどうせ足りなくなるのは同じで、
描画処理の枝刈りをすればSquirrelでもいけるかも……というところ。
蛇足でスマソ。
0457453
2008/12/03(水) 01:28:54jkBindってどうよ?
なんかフォーラムにパッチ上がってるみたいだけど。
0458デフォルトの名無しさん
2008/12/15(月) 19:37:58ライブラリ自作しちまったい。
やっぱり自前で書いたほうが細かく制御できていいね。
0459デフォルトの名無しさん
2008/12/15(月) 23:46:180460デフォルトの名無しさん
2008/12/17(水) 00:31:03まぁ、枝刈りも大切だと思う。
あとはココのJITとかどうかね
ttp://muffin.cias.osakafu-u.ac.jp/~matumoto/
バージョンがちょい古いけど…
0461デフォルトの名無しさん
2008/12/17(水) 01:26:17ちょうど今、vcpp向けの改修を行っているところ。
作者のスクリプト、デフォルト引数などは既に対応した。
まだメタメソッドや複数段階のクロージャの呼び出しがイマイチ不安定なので改善を図ってるところ。
近々フォーラムに発表予定。
0462デフォルトの名無しさん
2008/12/17(水) 13:44:50元にある問題点とかはそのままなの?
0463デフォルトの名無しさん
2008/12/17(水) 22:05:060464461
2008/12/19(金) 20:46:12協力者求む。
動かないスクリプトの例などがあるとうれしい。
0465デフォルトの名無しさん
2008/12/20(土) 00:09:140466デフォルトの名無しさん
2008/12/20(土) 09:07:13乙カレー
LuaはC++だとlua_call失敗時に例外投げるんだな。ちゃんと書いてくれよOTL
てっきりデストラクタ呼ばれないと思って、そういうコードを書いてたせいで
謎の挙動に悩まされたよ。
0467デフォルトの名無しさん
2008/12/20(土) 15:57:40リファレンスマニュアルの3.6にそれらしいことが書いてあるよ
Cでsetjmp/longjmp使っててもC++のデストラクタが呼ばれる処理系もあるけどね
0468デフォルトの名無しさん
2008/12/20(土) 18:03:42ほんとだ見落としてた
俺の3時間を返せorz
0469デフォルトの名無しさん
2008/12/22(月) 08:14:31〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0470デフォルトの名無しさん
2008/12/22(月) 09:22:22yieldをC++側で呼ぼうとしたとき、
toLuaの生成したラッパーの中じゃ、
lua_yieldを呼べないようなんだが、
どうしてる?
0471デフォルトの名無しさん
2008/12/22(月) 18:53:35lua が yeild をどうやって実装しているか、ソースを追っかけてごらん。
0472デフォルトの名無しさん
2008/12/28(日) 14:38:55ttp://www.igda.jp/modules/eguide/event.php?eid=58
CRIScriptの人が来るのはちょっと驚いた。
アメリカからはるばる・・・
0473デフォルトの名無しさん
2008/12/28(日) 15:41:56浜中さんの本すでに持ってる人にはあまり新しい情報は出ない気がする…
0474デフォルトの名無しさん
2008/12/29(月) 05:08:14開発した W.Dee 氏をパネリストでよぶべきだろう、とちょっと思ったけど、
よくよく考えてみればあの人はゲームは本業じゃないか……
0475デフォルトの名無しさん
2008/12/29(月) 10:57:23というか、組込み言語の話だからじゃないかな(Nスクの人がいるけど)。
0476デフォルトの名無しさん
2008/12/30(火) 09:34:59〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0477デフォルトの名無しさん
2008/12/30(火) 19:43:21ゲームとか簡易GUIが簡単に作れるHSPみたいなイメージ
0478デフォルトの名無しさん
2008/12/30(火) 19:43:560479デフォルトの名無しさん
2009/01/01(木) 16:45:20〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ O sol e a Lua!!, parabens!!!
彡、 |∪| /
/ __ ヽノ /
(___)
0481デフォルトの名無しさん
2009/01/04(日) 18:49:32/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0482デフォルトの名無しさん
2009/01/04(日) 18:59:390483デフォルトの名無しさん
2009/01/06(火) 23:35:21その状態をファイルとかに保存して、そのファイルを読み込んで復元、ってできる?
0484デフォルトの名無しさん
2009/01/06(火) 23:47:11日本語のドキュメントがないけど
ttp://luaforge.net/projects/pluto/
0485デフォルトの名無しさん
2009/01/09(金) 00:54:41d
ちょっと調べてみる。
しかし日本語マニュアルがないのは地味にきついな…
普段使ってるAngelScriptも英文マニュアルしかないし。
0486デフォルトの名無しさん
2009/01/09(金) 01:02:510487デフォルトの名無しさん
2009/01/09(金) 01:31:470488デフォルトの名無しさん
2009/01/09(金) 19:28:38のってるけど、実際はやいの?
0489デフォルトの名無しさん
2009/01/09(金) 19:39:39おめでと〜w
0490デフォルトの名無しさん
2009/01/09(金) 23:22:03日本語マニュアルはないけど、サンプルがたくさん付いてて分かりやすいのよ。
あと、LuaやSquirrelのスタック介したやり取りじゃなくて直接的にC++とやり取りできるんで便利。
ただデフォでShiftJISに対応してないけど…
0491デフォルトの名無しさん
2009/01/10(土) 08:32:24〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0492デフォルトの名無しさん
2009/01/10(土) 09:33:55気楽にやりなー
0493デフォルトの名無しさん
2009/01/10(土) 10:50:27上にSquirrelよりはやいって書いてあるよ
0494デフォルトの名無しさん
2009/01/10(土) 11:00:310495デフォルトの名無しさん
2009/01/10(土) 13:24:56Xtalも、JIT対応版を作ればLuaやSquirrelよりはやくなるけどね。
0496デフォルトの名無しさん
2009/01/10(土) 14:05:36/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0497デフォルトの名無しさん
2009/01/11(日) 20:18:260498デフォルトの名無しさん
2009/01/11(日) 20:58:340499デフォルトの名無しさん
2009/01/11(日) 21:55:53インスタンスメソッドを直接lua_registerできないですよね、いったいどうしたら良いものやら。。
ご存知のかたいらっしゃいましたら是非お教えください。
0500デフォルトの名無しさん
2009/01/13(火) 07:44:04〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0501デフォルトの名無しさん
2009/01/13(火) 12:13:07/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ まピョーん☆
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0502デフォルトの名無しさん
2009/01/14(水) 05:46:16〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ まピョーん☆
彡、 |∪| /
/ __ ヽノ /
(___)
0503デフォルトの名無しさん
2009/01/14(水) 08:14:31,' ヽ まピョーん☆
/<┃> <┃ >l _
_ l 、,,--イ | /Mヽ
/M l l ` ̄ Lノ/
i `ー l ̄
 ̄ヽ /
\ {
ヽ `ー-'ノ
`ー----''"
0504デフォルトの名無しさん
2009/01/14(水) 14:25:26ひかえてくれw
0505デフォルトの名無しさん
2009/01/15(木) 18:04:39メンバ関数呼び出しは、関数に対応した整数値とthisポインタを登録して
__call内部でswitchで対応する関数を呼び出すような実装ならしたことあるな。
もっとスマートな方法があると思うけど。
0506デフォルトの名無しさん
2009/01/16(金) 21:11:50toLuaとかluabind使うのがええよ。
自前でやるなら、テーブルなどを使うべし。
0507デフォルトの名無しさん
2009/01/16(金) 23:47:31〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua まピョーん☆
彡、 |∪| /
/ __ ヽノ /
(___)
0508デフォルトの名無しさん
2009/01/25(日) 19:50:53Windows+MinGWでやってるんだけどこれって仕様なのかな
unexpected tokenとか出るから最初何かと思ったわ
0509デフォルトの名無しさん
2009/01/26(月) 00:02:51自分の所では普通にビルドして実行できてるな。
ちなみにWindows+VisualStudio2005。
あと、全角文字使ってない?
0510デフォルトの名無しさん
2009/01/26(月) 09:10:32半角英文字しか使ってないよー
void main() {
return;
}
これでエラー出たんだぜw
普通に実行できるということはライブラリ自体のビルドに問題があったのかな
なんでだろう、Linux環境と誤認してるのか?
0511デフォルトの名無しさん
2009/01/26(月) 10:02:500512デフォルトの名無しさん
2009/01/26(月) 10:30:55現バージョンだとUTF-16のスクリプト読めないみたい。
0513デフォルトの名無しさん
2009/01/26(月) 11:16:26ライブラリがLinux環境(LF)を期待しているのに、Windows環境(CR+LF)を食わせるから
エラーが出るのだと思ったんだが…
Linux環境でCR+LFを食わせてもエラーが出ないなら、他に原因があることになるな
>>512
一応いくつかのエディタで開いてUTF-8Nだということは確認した
けれども、文字コード自体は最初から変えてないよ
エラーがいつもファイルの末尾で出てたから、
試しに void main() { return; } ってのをやってみたら
ビルドが通ることを発見して、改行コードに目をつけた
よく考えたら改行コードに問題があるなら、全ての行でエラーが出るはずだよな…
ファイルの末尾でだけエラーが出てたにも関わらず、なぜ改行コードを変えるとビルド出来るんだろう
0514デフォルトの名無しさん
2009/01/26(月) 11:51:16EOF判定がおかしくて、最後の文字(または行)が読めてないか、
あるいは逆にごみを読み込んでしまってるかのどちらかじゃないかと思う。
0515デフォルトの名無しさん
2009/01/26(月) 13:20:53EOFが無くてスクリプトを読み込んだ領域の後ろの部分まで
解析しようとしてエラー起こしたことがあったな。
0516デフォルトの名無しさん
2009/01/26(月) 13:29:590517デフォルトの名無しさん
2009/01/26(月) 23:11:29〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0518デフォルトの名無しさん
2009/01/27(火) 00:40:380519デフォルトの名無しさん
2009/01/27(火) 08:39:12/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua まピョーん☆
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0520デフォルトの名無しさん
2009/01/27(火) 10:53:07freadでファイルを読み込んでたんだけど、そこでCR+LFが勝手にLFに変換されてた
そのせいでファイルの長さと文字列の長さでズレが生じて、
スクリプト読み込み時にその差分だけ余計な領域まで踏み込んでた
"r"じゃなくて"rb"で読み込むようにしたらエラー出なくなったよ
サンプルのユーティリティ関数をそのまま使ったのが悪かったのかもしれん
0521デフォルトの名無しさん
2009/01/27(火) 11:14:18ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
まあよくあることだなw
Rubyのライブラリでも何か読み込みの挙動がおかしいと思ったら、
ライブラリ側でWindows考慮してなくて、バイナリモードになってなかったり。
0522デフォルトの名無しさん
2009/01/27(火) 13:27:290523デフォルトの名無しさん
2009/01/27(火) 13:40:23ってコードの、\n を出力時に \r\n にむりやり変換するのと、fclose したときに
EOF をむりやりつけるために存在する。DOSの遺産。
0524デフォルトの名無しさん
2009/01/27(火) 13:41:08タイプライターやTTY、CP/Mの歴史たどるといいかも。
0525デフォルトの名無しさん
2009/02/05(木) 17:09:16これ使ってる人いない?
0526デフォルトの名無しさん
2009/02/05(木) 17:18:06http://www.geocities.jp/popaihoge/index.html
0527デフォルトの名無しさん
2009/02/05(木) 19:56:41/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0528デフォルトの名無しさん
2009/02/05(木) 22:23:10/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua まピョーん☆
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0529デフォルトの名無しさん
2009/02/05(木) 22:31:040530デフォルトの名無しさん
2009/02/06(金) 11:43:23まずお前が試して、ダメ出しした方がいいんじゃない?
俺は、ずっと秀丸で済ましてるな。
LuaEditも使える様にインストールはしたけど、
本当にテンパった時の保険として残してる感じ。
0531デフォルトの名無しさん
2009/02/07(土) 18:18:29今のところの感じでは、
・色分けされて便利
・文字入力するたびに候補でもない単語が出てくるのがウザイ
・プロジェクトの設定が分からない
ググッて見たけど何処にも解説ないし、Raedmeが欲しかった。
環境を揃える所から入る性質で、
「コレはいいな」って思ったのにプロジェクトの設定が分からないから聞きたかったんだ。
(プロジェクトの設定できたらデバッグとか出来るのかと思うんだけどなぁ)
やっぱサクラエディタとか秀丸とかSciTEとか使った方がいいのかな・・・・。
取り合えずはLuaLanguagePackで勉強進めてみる。
0532名無しさん
2009/02/07(土) 21:08:45>
の状態で、Ctrl-C以外で終了する方法はありますか?
exit とか quit とかやってみましたがダメでした
0533デフォルトの名無しさん
2009/02/07(土) 21:32:09標準入力を終了しない事には終われないのが正常なのでは?
0534名無しさん
2009/02/07(土) 21:36:59どうも
Linuxなので、 Ctrl-D でぬけられました。
0535デフォルトの名無しさん
2009/02/09(月) 07:53:47〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0536デフォルトの名無しさん
2009/02/09(月) 13:00:58〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua まピョーん☆
彡、 |∪| /
/ __ ヽノ /
(___)
0537デフォルトの名無しさん
2009/02/12(木) 22:19:59Pawnでこう、いい日本語のサイトありますかねぇ。
0538デフォルトの名無しさん
2009/02/13(金) 08:44:59/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0539デフォルトの名無しさん
2009/02/14(土) 13:54:50アマチュア個人でゲーム作っててスクリプトはSquirrelでの実装を考えてたんだけど、Luaに気持ちが揺れる揺れる
嗚呼どうしよう!
0540デフォルトの名無しさん
2009/02/14(土) 14:21:12〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0541デフォルトの名無しさん
2009/02/14(土) 14:30:54それにLua本に書いてある考え方ってほとんどSquirrelにも応用できるんじゃない?
0542デフォルトの名無しさん
2009/02/14(土) 15:12:47/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0543デフォルトの名無しさん
2009/02/14(土) 15:16:25/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua まピョーん☆
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0544デフォルトの名無しさん
2009/02/14(土) 20:34:36ホントのオススメは、自分で何か実装してみてから選ぶことだけどな。
Lisp とか Forth ライクなものなら結構簡単だし、BASIC やアセンブラのような LL1 で行指向のものなら更に簡単だ。
0545デフォルトの名無しさん
2009/02/15(日) 00:21:33AngelScriptが使って欲しそうな目で見ている。
0546デフォルトの名無しさん
2009/02/15(日) 00:55:33http://plaza.rakuten.co.jp/OldStyleFactory/diary/200902030000/
関数の取得までは出来ているぽいんだけどasPrintが呼び出されない
0547デフォルトの名無しさん
2009/02/15(日) 08:45:40( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0548デフォルトの名無しさん
2009/02/15(日) 09:36:17自分の所では普通に動いたなー。
環境はXPSP2、VisualStudio2005SP1、AngelScript2.15.1。
0549デフォルトの名無しさん
2009/02/15(日) 11:43:06Luaにくらべてコードがシンプルそうだから、組み込んだ後のデバッグも楽だと思って、LuaじゃなくてSquirrelを採用しようかと思っていたのですが。
ちなみに、Squirrelって何であんなに不要なbreakやcontinueがあるんですかね?
0550デフォルトの名無しさん
2009/02/15(日) 11:53:070551デフォルトの名無しさん
2009/02/15(日) 12:07:100552デフォルトの名無しさん
2009/02/15(日) 12:36:48298 名前:デフォルトの名無しさん[sage] 投稿日:2008/09/20(土) 02:25:07
速さと軽さならLua
基本的な演算とsuspendを行う処理を一億回ループさせたらLuaはSquirrelの1/3の時間ですんだ
0553デフォルトの名無しさん
2009/02/15(日) 13:14:33Luaもがんばってるな〜
0554デフォルトの名無しさん
2009/02/15(日) 13:23:16>イメージとしてはLuaの方が早いって意外だよね
お前だけな
0555デフォルトの名無しさん
2009/02/15(日) 14:05:24Luaは実際には使ったことないんで知らないんでイメージでしか語れんかったわ
すまん
0556デフォルトの名無しさん
2009/02/15(日) 14:05:51( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0557デフォルトの名無しさん
2009/02/15(日) 20:02:42誰か作ってよ
0558デフォルトの名無しさん
2009/02/15(日) 20:18:31Squirrelでsuspendを使うということは、マイクロスレッドを切り替える処理があるということなんだが。
それが軽いはず無いだろう。
ただし、基本的な演算処理でSquirrelがLuaの半分くらいの速度しか出ないのは本当。
速さだけ求めるならXtalも有力。
0559デフォルトの名無しさん
2009/02/15(日) 22:15:34C++が速い理由には、言語仕様の差以上に、コンパイラに投入された労力が膨大なものだからというのもある。
LuaでもSquirrelでも、人月をかければC++以上に速くする事は可能だと思う。
逆に言うと、言語仕様だけではどうにもならない。
>>558
マイクロスレッドに関してはLuaも全く同じ。
Luaではコルーチンって呼ぶけどね。
298もそれはわかった上で比較してると思うよ。
0560デフォルトの名無しさん
2009/02/15(日) 22:47:50/ \ /\ キリッ
. / (ー) (ー)\ <C++が速い理由には、言語仕様の差以上に、コンパイラに投入された労力が膨大なものだからというのもある。
/ ⌒(__人__)⌒ \ LuaでもSquirrelでも、人月をかければC++以上に速くする事は可能だと思う。
| |r┬-| | 逆に言うと、言語仕様だけではどうにもならない。
\ `ー’´ /
ノ \
/´ ヽ
| l \
ヽ -一””””~~``’ー?、 -一”””’ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー’´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バンバン
ヽ -一””””~~``’ー?、 -一”””’ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
0561デフォルトの名無しさん
2009/02/16(月) 00:22:410562デフォルトの名無しさん
2009/02/16(月) 00:37:35学生が演習で作ったCのサブセット以下の速度なのよ
0563デフォルトの名無しさん
2009/02/16(月) 00:49:05CとJavaScriptで速度差が出るとしたらプロパティアクセス時の
ハッシュ計算だと思うんだけど、その差はJITすれば消せる。
JavaScriptはV8で比較した?
0564デフォルトの名無しさん
2009/02/16(月) 01:26:05誰も苦労しないだろw
0565デフォルトの名無しさん
2009/02/16(月) 02:18:11ネタは色々あるんだが。
0566デフォルトの名無しさん
2009/02/16(月) 03:17:30ベンチマークに使ったコードは、どんな内容だったのでしょうか?
興味があります。
0567デフォルトの名無しさん
2009/02/16(月) 03:21:07squirrel でも普通コルーチン。マニュアルの表記は「協調スレッド(コルーチン)」
「マイクロスレッド」だと、システムよりの機能を使ってるような誤解を招くから、
間違いじゃないけどふさわしくないと思う
0568デフォルトの名無しさん
2009/02/16(月) 04:38:29誰かこれやってみて
0569デフォルトの名無しさん
2009/02/16(月) 08:52:180570デフォルトの名無しさん
2009/02/16(月) 08:59:470571デフォルトの名無しさん
2009/02/16(月) 11:14:150572デフォルトの名無しさん
2009/02/16(月) 12:05:33/ \ /\ キリッ
. / (ー) (ー)\ <その通りのことにそのAA使ってもな
/ ⌒(__人__)⌒ \
| |r┬-| |
\ `ー’´ /
ノ \
/´ ヽ
| l \
ヽ -一””””~~``’ー?、 -一”””’ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー’´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バンバン
ヽ -一””””~~``’ー?、 -一”””’ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
0573デフォルトの名無しさん
2009/02/16(月) 12:09:180574デフォルトの名無しさん
2009/02/16(月) 13:38:25じゃあ何を吐くんだ?
0575デフォルトの名無しさん
2009/02/16(月) 13:43:00V8では新たなプロパティが追加されるたびに
プロパティに対して定数時間でアクセスできるような
アセンブラコードが生成されるよ。
だからV8は速い。
0576デフォルトの名無しさん
2009/02/16(月) 13:45:06突然そんなことを言われても意味がわからない。
その根拠はいったい何さ?
0577デフォルトの名無しさん
2009/02/16(月) 14:32:58昔StacklessPythonの記事で、言語仕様上で実装したマイクロスレッドとOS側で実装されるネイティブスレッドの
使い勝手の違いの話があって、それで覚えてしまっていた。
確かにこの場合はコルーチンと呼ぶべきだね。勉強になった。
各種言語処理系の仮想マシンが一種の機械語をサポートする場合、
その機械語、もしくはソースコードからコンパイルして作られた(仮想マシン用の)機械語を一般的にバイトコードと呼ぶ。
これに変換してから実行する形態をバイトコード処理系、もしくはバイトコードインタプリタと呼ぶ。
一方、CPUが直接実行する機械語を生成するのがJITコンパイラだ。
ただし欧米人でもたまに間違えてたりするので記事読む時に注意がいる……。
0578デフォルトの名無しさん
2009/02/16(月) 14:58:00/ \ /\ キリッ
. / (ー) (ー)\ <一方、CPUが直接実行する機械語を生成するのがJITコンパイラだ。
/ ⌒(__人__)⌒ \
| |r┬-| |
\ `ー’´ /
ノ \
/´ ヽ
| l \
ヽ -一””””~~``’ー?、 -一”””’ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー’´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バンバン
ヽ -一””””~~``’ー?、 -一”””’ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
0579デフォルトの名無しさん
2009/02/16(月) 15:02:170580デフォルトの名無しさん
2009/02/16(月) 15:04:190581デフォルトの名無しさん
2009/02/16(月) 15:13:240582デフォルトの名無しさん
2009/02/16(月) 15:13:520583デフォルトの名無しさん
2009/02/16(月) 15:17:30LLVMとか
0584デフォルトの名無しさん
2009/02/16(月) 17:12:36プロパティに定数時間でアクセス出来るのと
JIT使っているっていうのは関係ないだろ
0585デフォルトの名無しさん
2009/02/16(月) 17:41:53現代のCコンパイラがどれぐらいの労力をかけて最適化コード吐くのか考えてみたことある?
0586デフォルトの名無しさん
2009/02/16(月) 17:49:38Javascriptにまでw
0587デフォルトの名無しさん
2009/02/16(月) 17:52:390588デフォルトの名無しさん
2009/02/16(月) 17:53:080589デフォルトの名無しさん
2009/02/16(月) 17:54:00JavaScriptだとプロパティの追加や削除を実行時に
しなきゃならんことがある。
なので、普通はそれをプロパティに対するハッシュで実装するわけだけれど、
Googleはプロパティの変化ごとにJITコンパイルする道を選んだ。
V8 JavaScript Engine
http://code.google.com/apis/v8/design.html
> JavaScript is a dynamic programming language: properties can be added to, and deleted from,
> objects on the fly. This means an object's properties are likely to change.
> V8 compiles JavaScript source code directly into machine code when it is first executed.
> There are no intermediate byte codes, no interpreter. Property access is handled by inline cache
> code that may be patched with other machine instructions as V8 executes.
0590デフォルトの名無しさん
2009/02/16(月) 17:57:250591デフォルトの名無しさん
2009/02/16(月) 18:19:21意味不明
0592デフォルトの名無しさん
2009/02/16(月) 18:37:03労力だけかけても間違った結果しか出てこないもんなんだなー とは考えてみた事がある
主にループ抜けなくなるとか
0593デフォルトの名無しさん
2009/02/16(月) 18:45:520594デフォルトの名無しさん
2009/02/16(月) 18:48:15wwwww
0595デフォルトの名無しさん
2009/02/16(月) 18:50:37バインダ(SqPlus)の更新が半年前から止まっていて、使おうかどうか躊躇してる。
みんなはバインダに頼らず直接実装した?
0596デフォルトの名無しさん
2009/02/16(月) 18:57:43そいつが何の仕事を選ぶかだな
0597デフォルトの名無しさん
2009/02/16(月) 20:01:23/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0598デフォルトの名無しさん
2009/02/16(月) 20:19:260599デフォルトの名無しさん
2009/02/16(月) 20:30:570600デフォルトの名無しさん
2009/02/16(月) 21:12:32俺はjkBindに乗り換えようかと考えている。
既に作者とは連絡を取った。
Squirrel-2.2.2-stable向けのパッチがフォーラムにあがってる。
0601デフォルトの名無しさん
2009/02/16(月) 21:22:040602デフォルトの名無しさん
2009/02/16(月) 21:31:40ありがとう。jkBindも選択肢としてありなのか。なるほど。
ちょっと調べてみますね
0603デフォルトの名無しさん
2009/02/16(月) 21:44:37へんなクマが冷やかしに来るスレ?
0604デフォルトの名無しさん
2009/02/16(月) 22:31:10現在は使ってないけど「今後使ってみようかな」とか興味ある人が情報収集しにくるスレ
あとはクマスレ
0605デフォルトの名無しさん
2009/02/16(月) 22:35:26/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua まピョーん☆
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0606デフォルトの名無しさん
2009/02/16(月) 23:01:53/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ AngelScript!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0607デフォルトの名無しさん
2009/02/17(火) 00:38:30Luaは使ってないけどXtalはバリバリ使ってるよ!
0608デフォルトの名無しさん
2009/02/17(火) 00:40:390609デフォルトの名無しさん
2009/02/17(火) 01:16:03もうちょっとがんばれば2強に肩を並べるぐらいになってたかもしれないのに
0610デフォルトの名無しさん
2009/02/17(火) 01:41:28AngelScriptも流行るよ
0611デフォルトの名無しさん
2009/02/17(火) 02:15:47用途での言語処理系でJITなんて危なくて使えないだろw
0612デフォルトの名無しさん
2009/02/17(火) 02:38:34開発中は作業効率がいい動的スクリプト言語として使って、完成したら
コンパイルしてネイティブコード化するという方法もある。
0613デフォルトの名無しさん
2009/02/17(火) 06:44:510614デフォルトの名無しさん
2009/02/17(火) 06:57:190615デフォルトの名無しさん
2009/02/17(火) 09:24:13〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0616デフォルトの名無しさん
2009/02/17(火) 09:24:390617デフォルトの名無しさん
2009/02/17(火) 10:33:510618デフォルトの名無しさん
2009/02/17(火) 10:47:00今後の展望を含め、どれか一派に絞らなけりゃならないのは賭けだよね
・言語仕様
・ライセンス
・動作環境
・速度
・メモリ量やGC問題
・安定性
・将来性
・国内外でのコミュニティの活性度
など複雑な素因が絡んでくるもんね。
自分はSquirrelを選んだが、将来残っているか不安っちゃ不安だわ。
磐石なスクリプトが存在するか、せめて機械的なコード置換があればいいんだがなぁ。
0619デフォルトの名無しさん
2009/02/17(火) 11:05:29ソースコードが何百万行もあるソフトとは違う
0620デフォルトの名無しさん
2009/02/17(火) 11:30:48そのときに同じように余裕ぶっこいていられるかな?
0621デフォルトの名無しさん
2009/02/17(火) 11:35:30直す手段が用意されているところがオープンソースの処理系のいいところじゃないか。
0622デフォルトの名無しさん
2009/02/17(火) 11:50:110623デフォルトの名無しさん
2009/02/17(火) 11:50:42今のところ自力で直す場面に出くわした事は無いが、これを直すとなると骨折れるだろうな…
0624デフォルトの名無しさん
2009/02/17(火) 12:05:00jkBindだが、SqPlusと比較してみる。
いいところ:
・ソースコードが遥かにきれいで簡潔
・グローバルスコープで余計なことをしない(main関数抜けるまで握ってるオブジェクト解放しないってなんだそれ>SqPlus)
わるいところ:
・テストコードが整備されていない
・マニュアルがない(簡単なサンプルコードのみ)
・Squirrel言語仕様への対応が古い(公式のはコンストラクタの登録に対応してない。要パッチ)
・DirectXのラッパーライブラリがない?(全然使わんよこんなもの)
・せめてソースコードにコメントくらいは書いてください
バインダとしての使い勝手はそう変わらないと思う。
どちらもtemplateを用いるし。
0625デフォルトの名無しさん
2009/02/17(火) 15:14:24キーカスタマイズ機能でLuaを使ってるそうな。
0626デフォルトの名無しさん
2009/02/17(火) 20:15:03JavaScript から prototype をなくしたような感じで、
しかも stackless。
なんかすごく気に入ったんだけど、そういう人いないかしら?
0627デフォルトの名無しさん
2009/02/17(火) 20:34:280628デフォルトの名無しさん
2009/02/17(火) 21:08:400629デフォルトの名無しさん
2009/02/17(火) 22:28:380630デフォルトの名無しさん
2009/02/17(火) 22:55:360631デフォルトの名無しさん
2009/02/18(水) 00:26:57かなり使いやすいと思うんだが、やっぱり日本語資料が少ないのがネックなんだろうか。
0632デフォルトの名無しさん
2009/02/18(水) 01:57:11; | ノ||||||| ヽ `
, / ● ● |
;, | \( _●_) / ミ AngelScript…
; 彡、 | |∪| |、\ ,
./ ヽノ/´> ) :
(_ニニ> / (/ ;
; | | ;
' \ ヽ/ / :
, / /\\ .
; し’ ' `| | ;
0633デフォルトの名無しさん
2009/02/18(水) 04:01:51コルーチンが無いからスルーした記憶がある
「このサンプルは AngelScript でどうやったらコルーチンが実装できるか示してる」
って状態だとさっぱり嬉しくない
0634デフォルトの名無しさん
2009/02/18(水) 08:03:150635デフォルトの名無しさん
2009/02/18(水) 08:54:02いないのかな。
言語オタクの興味の対象から、実用フェーズに移ったということなのかなあ。
「スクリプト」で差がついた日米ゲーム開発の生産性 GDCを読む(2) デジタル家電&エンタメ-最新ニュース:IT-PLUS
http://it.nikkei.co.jp/digital/news/index.aspx?n=MMITew000006022009
0636デフォルトの名無しさん
2009/02/18(水) 12:01:19C++のバイナリ仕様に合わせて設計されてるわけだから、C++にできないことを実装するのは難しいのかもな。
ただJITコードですら中断可能なコルーチン化は実現できるので、やりようはあると思う。
0637デフォルトの名無しさん
2009/02/18(水) 12:08:110638デフォルトの名無しさん
2009/02/18(水) 12:12:47普通にSuspendじゃだめなん?
lua_yieldと同じことはできるよ。
引数渡せないが。
0639デフォルトの名無しさん
2009/02/18(水) 12:31:17マニュアル眺めてまともに記述されてないってことでスルーしただけなのでつっこまれると困る。すまん
できるのならどんな記述でできるのかぐらい書いておいてほしい
0640デフォルトの名無しさん
2009/02/18(水) 12:31:250641デフォルトの名無しさん
2009/02/18(水) 13:37:22void Suspend()
{
asIScriptContext *lpContext=asGetActiveContext();
if(lpContext!=NULL)
{
lpContext->Suspend();
}
}
こんな感じの関数をC++の方に記述して、このSuspend関数をasIScriptEngineインスタンスにRegisterGlobalFunctionで登録すればOK。
Luaだと、
int yield(lua_State *l)
{
return(lua_yield(l, 0));
}
こんな感じかな?
0642デフォルトの名無しさん
2009/02/20(金) 19:10:41バインダ使わずその辺を自前で実装したいんだが、SqPlusのコードを読んでてTemplateの嵐だったので投げた。
次はjkBind読むしかないのか……。
SquirrelのC/C++への組み込み方法について、何か参考になるページありませんか?
0643デフォルトの名無しさん
2009/02/20(金) 19:26:300644デフォルトの名無しさん
2009/02/20(金) 19:28:19スタック操作については若干曖昧ですが、C++側からSquirrel内の関数を呼ぶことは出来ました。
特にBind操作(LuaからC++関数の呼び出しや定数/変数のBind)について、
グルーコードの自動化のような処理を探しています。(Luaで言うところのtolua++に相当する実装)
0645デフォルトの名無しさん
2009/02/20(金) 19:34:35>>644
それを処理するのに、C++ではtemplateが一番適しているわけだが?
SqPlusにはマクロ版も一応ある。お勧めはしないが。
0646デフォルトの名無しさん
2009/02/20(金) 19:42:05ここを全部読んで理解するべし。
C++ のクラスを squirrel のクラスとして登録する方法は
「C++オブジェクトでのメタメソッド使用」から先で解説されてる。
ポイントになるのは sq_newclass と、sq_setinstanceup/sq_getinstanceup
テンプレートはラッパー関数群の自動生成を行ってるだけで本質じゃないよ
0647デフォルトの名無しさん
2009/02/20(金) 21:37:31645だが、642は自前でバインド作業をやろうとしてたのか。
2行目の前半を読み飛ばしてた。スマン。
……まあ、そのページ読めば分かるだろう。
ClassオブジェクトをSquirrel中にこさえるのと、それをroottableに登録するのと、
Classオブジェクトにメソッドやらプロパティやらの諸情報を埋め込むのと大まかに3つに分かれる。
0648デフォルトの名無しさん
2009/02/21(土) 02:18:490649デフォルトの名無しさん
2009/02/21(土) 02:40:42ちょうどそんな名前の喫茶店があるので。
0650デフォルトの名無しさん
2009/02/21(土) 06:40:56〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0651デフォルトの名無しさん
2009/02/21(土) 07:08:30〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua まピョーん☆
彡、 |∪| /
/ __ ヽノ /
(___)
0652デフォルトの名無しさん
2009/02/21(土) 09:42:210653デフォルトの名無しさん
2009/02/21(土) 11:38:00これからの組み込みスクリプト言語はschemeの時代かもしれない
0654デフォルトの名無しさん
2009/02/21(土) 12:18:310655デフォルトの名無しさん
2009/02/21(土) 12:22:24ありうるならもう来てないとおかしい>schemeの時代
0656デフォルトの名無しさん
2009/02/21(土) 12:30:18普通のスクリプタは括弧の嵐を見ただけでげんなりするからな
lisp系がメジャーになることは永遠にないだろう
0657デフォルトの名無しさん
2009/02/21(土) 12:37:120658デフォルトの名無しさん
2009/02/21(土) 13:20:300659デフォルトの名無しさん
2009/02/21(土) 13:35:580660デフォルトの名無しさん
2009/02/21(土) 15:24:06組み込み言語の利点は、ただ1つ「コンパイルなしで改変、実行できる」
言ってしまうとこれだけだし。
デザイナが弄るなら、弄るデータなんてほとんどデータだし、
括弧が多少多くてもプロなら入力してくれる。
ロジックはどうせ、プログラマの仕事だから、schemeだろうが何だろうが、かまわん
0661デフォルトの名無しさん
2009/02/21(土) 15:27:550662デフォルトの名無しさん
2009/02/21(土) 17:06:570663デフォルトの名無しさん
2009/02/21(土) 17:59:280664デフォルトの名無しさん
2009/02/21(土) 18:08:12ありがとうございます。
教えてもらったサイトを見て実装してみました。大変助かりました。
0665デフォルトの名無しさん
2009/02/21(土) 18:14:532006年で更新止まっているけど
ここでいいのかな?
0666デフォルトの名無しさん
2009/02/21(土) 20:35:55( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0667デフォルトの名無しさん
2009/02/21(土) 21:12:25「らしい」とかウゼェから死ねよ、クズ。
各言語のベンチマークに使ったコードを書き込んでから話せや。
0668デフォルトの名無しさん
2009/02/21(土) 21:19:59schemeなんか速くたってどうしようもないじゃないか
0669デフォルトの名無しさん
2009/02/21(土) 22:16:56嫌うプログラマがかなり多い。非プログラマにも好まない言語だ。
昔を懐かしみ知識を得るだけしか役にたたないというのが常識。
その常識を無視して新規プロジェクトに導入しようとするのは無能マネー
ジャで、他にも間違いを多く侵してる。
学生が自分の勉強用に自作するにはとても良い言語とは思うが。
0670デフォルトの名無しさん
2009/02/21(土) 22:22:00やらされたっきりだな
0671デフォルトの名無しさん
2009/02/21(土) 22:35:22この前エディタスレに行ってみたら、
「○○という機能があるエディタありませんか?」
「emacsなら出来る。Lispで自分で作ればいいよ」
と言う流れを未だにやっていて笑った。
0672デフォルトの名無しさん
2009/02/21(土) 23:03:250673デフォルトの名無しさん
2009/02/22(日) 00:20:44いくつか齧ってたらなんとでもなるよ。 似てる概念や要素が多いから。
0674デフォルトの名無しさん
2009/02/22(日) 00:44:48|ミサッ
0675デフォルトの名無しさん
2009/02/22(日) 00:47:10/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ AngelScript!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0676デフォルトの名無しさん
2009/02/22(日) 02:44:06P.43,44にあるスタンドアロンのLuaを実行してテキストファイル(hello.lua)に
書いたスクリプトを実行する(中身はprint("This is hello.lua"))部分を試しているのですが
Windowsのコマンドプロンプト上でhello.luaと同じディレクトリに移動し「lua5.1 hello.lua」と入力する部分がうまくいきません
コマンドプロンプト上でhello.luaと同じディレクトリに移動という意味が理解できず
勝手にただ単にパスを指定して実行すると解釈したのですが(C:\------\lua5.1 hello.lua)
stdin:1: '<name>' expected near '\'と出てきて実行できませんでした
stdin:1: '<name>' expected near '\'のキーワードで検索しても期待した内容が出てきませんでした
無知な私にご教授いただければ幸いです
0677デフォルトの名無しさん
2009/02/22(日) 02:47:02無知な上に努力不足です
0678デフォルトの名無しさん
2009/02/22(日) 02:53:10そんなんでよくプログラム書けるな
0679デフォルトの名無しさん
2009/02/22(日) 02:58:19「コマンドプロンプト 同じディレクトリ」では検索したのですが検索方法も悪かったようです
0680デフォルトの名無しさん
2009/02/22(日) 03:00:12使う機会ないと覚えないもんだなと思った
0681デフォルトの名無しさん
2009/02/22(日) 03:05:24使う機会が無くなったな
0682デフォルトの名無しさん
2009/02/22(日) 03:25:52stdin:1: '<name>' expected near '\'と表示されます
「stdin:1: '<name>' expected near '\'」はどのような意味を表しているのでしょうか?
0683デフォルトの名無しさん
2009/02/22(日) 03:28:44お前はそうやって完成するまでずっと人に聞きつづけるのかっつーの
本でわからない事があるなら著者に聞けよ
0684デフォルトの名無しさん
2009/02/22(日) 03:36:52試しに俺もそのワードでぐぐってみたが多分わからんと思う
わざわざここに書き込んでるのは反応が早いからって理由だろうに
まあ俺はドSだから教えないけどな
0685デフォルトの名無しさん
2009/02/22(日) 03:37:17著者にわざわざ連絡を取って聞くほどの問題ではないのだろうかと思い書き込みました
0686デフォルトの名無しさん
2009/02/22(日) 03:51:25stdin〜はようわからんが俺も同じ内容で引っかかったから教えると
lua5.1を起動させずに(重要).exeと.luaを同じディレクトリに置いてlua5.1 hello.luaでいける
これは初歩の初歩からやってんのに重要な事書かない筆者が悪いわ
これさえわかりゃ後はスムーズに進むぜ
0687デフォルトの名無しさん
2009/02/22(日) 03:54:13>Windowsのコマンドプロンプト上でhello.luaと同じディレクトリに移動し「lua5.1 hello.lua」と入力する部分がうまくいきません
って自分で書いてるのに
>Lua起動後にhello.luaを実行しようとすると
やってること違うじゃんよ。これぐらいさすがに気付いて欲しいよ
0688デフォルトの名無しさん
2009/02/22(日) 03:58:08.lua形式のファイル開くんだからlua起動してないとって思ったんじゃね
0689デフォルトの名無しさん
2009/02/22(日) 04:51:55〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0690デフォルトの名無しさん
2009/02/22(日) 05:12:51〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua まピョーん☆
彡、 |∪| /
/ __ ヽノ /
(___)
0691デフォルトの名無しさん
2009/02/22(日) 05:18:32たぶんもう少し読んだら出てくるtolua++の解説箇所あたりでも
困ることになる予感がする。
でも苦労したり嫌な思いして覚えたことほど忘れにくいのでがんがれ。
ただその本にはWikiにサポート用のForumあるので、質問とかは
あちらに書いた方がいい気はする。
0692デフォルトの名無しさん
2009/02/22(日) 07:47:200693デフォルトの名無しさん
2009/02/22(日) 17:21:06バッチファイル作るのに少し教えて貰ったけど全然使う機会無いわ。
便利な世の中になったお陰で考える事が減って美味しいです^q^
0694デフォルトの名無しさん
2009/02/22(日) 17:30:42こういう奴がHDD全消去するようなインストーラー作るんだろうな
0695デフォルトの名無しさん
2009/02/22(日) 18:06:17luaのイテレータを使用したfor文に渡す引数は
イマイチなじめない。
C++/STLのbegin/endになれた身としては最初に渡した
"_var"がfor内ブロックに渡されず、_f(_s,_var)の戻り値が
渡される所とか違和感を感じる。
他の言語のイテレータになれた人だとそうでもない?
0696デフォルトの名無しさん
2009/02/22(日) 19:02:000697デフォルトの名無しさん
2009/02/22(日) 21:08:320698デフォルトの名無しさん
2009/02/22(日) 21:35:390699デフォルトの名無しさん
2009/02/22(日) 22:27:30DOS窓?ぷwなにそれ、って言ったら白い目で見られたよ。
Windowsが全てと思ってる奴もいるし世の中間違ってる。
0700デフォルトの名無しさん
2009/02/22(日) 22:43:010701デフォルトの名無しさん
2009/02/22(日) 22:44:34Luaのことはほとんど知らないんだけど、w
組み込みでは、
・iteratorインスタンスをいちいち生成したくない。
・クロージャやジェネレータを扱いたくない。
という意図があると思う。
特に_s。クロージャ、ジェネレータ相当のことを自前で実装しろと。
単純なイタレータばかりなら、_varだけでいいけど。
そのトレードオフが_f(_s,_var)だと思う。
0702デフォルトの名無しさん
2009/02/22(日) 23:13:500703695
2009/02/22(日) 23:21:55ごめん。理解できないで詳しくお願い。
ちなみに、私が求めていたのはこんな感じ
do
local _f, _s, var_1,...,var_n = explist
while var_1 do
block
var_1, ... , var_n = _f(_s, var_1)
end
end
たとえばluaのtableでリンクリスト(nil終端)を操作する
iteratorを作るとき、上のだと、
_f=function(_s,_var) return _var.next end
_s=nil
var_1,...,var_n = top , ....
でいけると思うけど、オリジナルのLua版だと
_f=function(_s,_var) if _var then return _var.next,... else return _s,... end
_s=top
_var=nil
とかいまいちすっきりしない。(特に_varの位置付け)
リンクリストなら無理してforを使用しなくても出来るけどね。
for文がああなったのはLuaの文法との整合性の問題?
0704695
2009/02/22(日) 23:23:500705デフォルトの名無しさん
2009/02/22(日) 23:58:15このイテレータの形は関数型言語やれば自然と判るよ
0706デフォルトの名無しさん
2009/02/23(月) 01:57:470707デフォルトの名無しさん
2009/02/23(月) 02:16:24…と信じている……
0708デフォルトの名無しさん
2009/02/23(月) 08:13:23俺も今度スクリプト使うときはSquirrelでいくぜ!
何か作る…暇さえあればな…
0709デフォルトの名無しさん
2009/02/23(月) 08:46:390710デフォルトの名無しさん
2009/02/23(月) 09:32:18http://squirrelforge.com/
0711デフォルトの名無しさん
2009/02/23(月) 11:36:53……って、他に居ないのか。居ないのか!
0712デフォルトの名無しさん
2009/02/23(月) 12:06:370713デフォルトの名無しさん
2009/02/23(月) 13:13:11PSPの案件でもテスト開始してる。スクエニ様々だね。
0714デフォルトの名無しさん
2009/02/23(月) 14:18:10スクエニのFFCCのプログラマーはGJです。
0715デフォルトの名無しさん
2009/02/23(月) 17:25:160716デフォルトの名無しさん
2009/02/23(月) 17:55:060717デフォルトの名無しさん
2009/02/23(月) 18:14:38メモリ4Mくらいじゃなかったか?
0718デフォルトの名無しさん
2009/02/23(月) 21:57:49スクエニでPSP・・・・・パラsうわ何をするやめ(ry
0719デフォルトの名無しさん
2009/02/23(月) 22:15:59自分も案件提案して採択されそうだ。というわけでSquirrelは水面下で絶賛展開中だ
0720デフォルトの名無しさん
2009/02/23(月) 23:50:06〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ 勝手に使えばいいだろw
彡、 |∪| / 日本人が発音できない言語lolololololol
/ __ ヽノ /
(___)
0721デフォルトの名無しさん
2009/02/24(火) 00:03:490722デフォルトの名無しさん
2009/02/24(火) 00:34:120723デフォルトの名無しさん
2009/02/24(火) 00:39:560724デフォルトの名無しさん
2009/02/24(火) 01:16:53以前(半年ぐらい前)ちょっと調べてたけど見つからなかったよ。
Xtalの中の人はかなりがんばっていると思うんだけど、いかんせん外野からの支援が無いよね。
0725デフォルトの名無しさん
2009/02/24(火) 01:17:300726デフォルトの名無しさん
2009/02/24(火) 01:34:28言語仕様も定まってきているわけだし、ここいらで一旦仕様拡張を止めて、
導入方法について詳しく記述し、間口を広くすれば流行りそうな予感はしている。
欲を言えば作者自ら本出してほしい。そんな暇無いだろうけど。
0727デフォルトの名無しさん
2009/02/24(火) 01:38:50クマなんぞただの目障り。
0728デフォルトの名無しさん
2009/02/24(火) 01:41:11/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ AngelScript!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0729デフォルトの名無しさん
2009/02/24(火) 01:42:06Squirrelより実行速度速いしな。おまけに使いやすいC++バインダも内蔵ときた。
ちょっと構文が変な感じするけど、
オープン界のPHPとRubyみたいな関係で、
互いに刺激を受けてcoolな発展してくれることを望むぜ。
0730デフォルトの名無しさん
2009/02/24(火) 01:43:59構文が変なのは致命的だなあ
0731デフォルトの名無しさん
2009/02/24(火) 01:51:08Xtalを触りだけじゃなく、実際に使ってる人って居ないんかいねぇ?
0732デフォルトの名無しさん
2009/02/24(火) 01:51:13Squirrelの本って洋書でもまだ出てない?
0733デフォルトの名無しさん
2009/02/24(火) 01:57:42http://game.watch.impress.co.jp/docs/20080224/ffcc.htm
たった1行だけ。
0734デフォルトの名無しさん
2009/02/24(火) 02:07:27まとまって目ぼしい情報があるのが公式wikiぐらいだ
0735デフォルトの名無しさん
2009/02/24(火) 09:48:36AngelScript使ってるのは日本で自分含めて数名しかいないんじゃないかとすら思える。
0736デフォルトの名無しさん
2009/02/24(火) 10:14:140737デフォルトの名無しさん
2009/02/24(火) 10:18:45詳しく調べたわけではないが、C++の制約をそのまま受けてしまう仕様ではなぁ……。
0738デフォルトの名無しさん
2009/02/24(火) 11:14:45> PowerShellはどうよ?
UNICODE文字だけなので普段使いにはムリがあった
0739デフォルトの名無しさん
2009/02/24(火) 14:48:35んだな。SquirrelにLuaにあるような動的リロードをどう実装したのかが知りたい。
おそらくdelegateじゃないんだよな。
0740デフォルトの名無しさん
2009/02/24(火) 16:56:00ノシ使ってるよ
0741デフォルトの名無しさん
2009/02/24(火) 18:44:09Pythonからの移行を考えてる今日この頃
LuaやSquirrelも考慮してみるか・・・
0742デフォルトの名無しさん
2009/02/24(火) 20:41:59Python止めようと思ってる理由は?
0743デフォルトの名無しさん
2009/02/24(火) 21:01:21ただちょっと飽きてきたとかそんな理由
0744デフォルトの名無しさん
2009/02/24(火) 21:50:51あと、ゲームを作る用に作った言語ってのも
まだ、完成してないし詳しく知らんwスマソ
0745デフォルトの名無しさん
2009/02/25(水) 04:30:52どうなんだろねー。delegate はあまり凝ったことできないし、ユーザデータかテーブルでしか
使えないので別の方法だろうとは思う。
思いついた方法その1 メタメソッドを使ってプロトタイプもどきを実装
・「クラス名」は文字列で保持しておく
・_get/_set のメタメソッドを使って、「クラスのメソッドテーブル」を毎回「クラス名」を使って
引いてきてメソッドはそこから引き出して使うようにする
・「クラスのメソッドテーブル」の中身を書き換えると、同種のオブジェクトのメソッドを一斉にさしかえたことになる
思いついた方法その2 弱参照でインスタンスを全部おぼえておく
・クラスはメソッドを別のテーブルとして持つ(クラスは一度インスタンス化すると書き換えできないため)
・コンストラクタでそのメソッドテーブルの内容をインスタンスに自力でコピーする
・クラスはインスタンスリストも持つ。コンストラクタでインスタンスの弱参照をリストに追加する
・メソッドを書き換えるときは、新規オブジェクト用にメソッドテーブルの中身を置き換えると同時に、
インスタンスリストに登録されてる全インスタンスの該当メソッドも置き換えてしまう
・インスタンスリストは適当なタイミングで掃除
こんなとこじゃないかなー
0746デフォルトの名無しさん
2009/02/25(水) 08:54:06Luaがユーザー多くなった→情報を増える→ユーザー増える→(以下繰り返し)
日本でユーザー増やすなら、>>708みたいな実績増やして、
スクエニが導入の手引きみたいなリソースを公開してくれたら
祭りになるかもしれんが(公開は)多分ない
やっぱり情報を一杯出さないとな
0747デフォルトの名無しさん
2009/02/25(水) 09:39:42zlib/libpngライセンスだから問題ないだろうし。
他のスクリプトのShiftJIS対応版みたいな感じで。
0748デフォルトの名無しさん
2009/02/25(水) 09:49:42ファーストクラスオブジェクトというのはそういうものだ。
シリアライズ・デシリアライズ機構を用意するだけ。
0749デフォルトの名無しさん
2009/02/25(水) 09:50:54_ γ・ ̄\
γΞミvヽ _r・
( r-、i (゚Д゚)
ヽノ (ノ ミ) ミ Squirrel!!
ヾ_(つノノつ
0750デフォルトの名無しさん
2009/02/25(水) 10:38:57「ソースファイルを読み直すだけ」じゃないじゃん
0751デフォルトの名無しさん
2009/02/25(水) 14:43:12でもzlib系は書かなくてもいいのに記載します
なのでSquirrel使い
0752デフォルトの名無しさん
2009/02/25(水) 14:57:07MITのこれって、全体もしくは部分的な複製に記載しろという意味じゃなかったっけ?
0753デフォルトの名無しさん
2009/02/25(水) 15:09:09シリアライズ機構を、インスタンスの再構築を行うソースファイルを生成するように設計すればいい。
フォーラムに例が挙がってる。
0754デフォルトの名無しさん
2009/02/25(水) 16:03:262月24日の日記によるとよりC++らしい記法が出来るようになるみたいだが、
やっぱりC++チックな記法が世の中的には好まれるんだろうか?
0755デフォルトの名無しさん
2009/02/25(水) 16:06:48endはメンドクサイんで嫌いだ
0756デフォルトの名無しさん
2009/02/25(水) 16:17:040757デフォルトの名無しさん
2009/02/25(水) 17:32:44MITならCINTってのもあるが。
0758デフォルトの名無しさん
2009/02/25(水) 17:39:51日曜プログラマには無理だった。
もっと勉強してからにします。
0759デフォルトの名無しさん
2009/02/25(水) 17:56:28bool CallSquirrelFunction(const TCHAR* pFuncName, ...)
{
SQInteger top = sq_gettop(m_vm);
sq_pushroottable(m_vm);
sq_pushstring(m_vm,pFuncName,-1);
if(SQ_SUCCEEDED(sq_get(m_vm,-2)))
{
sq_pushroottable(m_vm);
int nArgCount = 1;
//TODO ここに可変長引数でsq_pushしたい(integer,float,string)
sq_call(m_vm,nArgCount,false,false);
sq_settop(m_vm,top);
return true;
}
sq_settop(m_vm,top);
return false;
}
va_***系マクロ使えば行けるかなと思ったが、無理なのかな。
"%d%f%s"のような型指定リストを渡すのはスマートじゃないけど、これ以外に方法は無いのかな……。
あんまりSquirrelと関係なくてすいません。助言をください。
0760デフォルトの名無しさん
2009/02/25(水) 18:07:11わかってるんじゃん。Cは言語仕様的に引数の型情報を取得する手段がないので、
型指定情報をなんらかの形で渡すか、全部 Variant な型を使うようにするかのどちらかしか無理。
型指定は別に printf みたく文字列にする必然性はないよ。
func("funcName", TYPE_INT, a, TYPE_FLOAT, b, TYPE_STR, c, TYPE_END)
とかこんなかんじで順次型情報とあわせて渡すとかでいいんじゃね?
0761デフォルトの名無しさん
2009/02/25(水) 18:32:27すばやい返信ありがとうございます。うーん。Cの仕様上どうしようもないんですね。
型情報も合わせて引数に送ることで、対処しようと思います。
ありがとうござました。
0762デフォルトの名無しさん
2009/02/25(水) 21:07:44(ログ出力等以外の目的で)で整備する利点は薄いので、
正直に他の方法による実装を考えた方がいいと思うけどな。
0763デフォルトの名無しさん
2009/02/25(水) 21:28:520764デフォルトの名無しさん
2009/02/26(木) 09:55:45template<typename _tR,>sq_function0(HSQUIRRELVM &vm);
template<typename _tR,typename _t0> sq_function1(HSQUIRRELVM &vm,_t0 t0);
template<typename _tR,typename _t0,typename _t1> sq_function2(HSQUIRRELVM &vm,_t0 t0,_t1 t1);
template<typename _tR,typename _t0,typename _t1,typename _t2> sq_function3(HSQUIRRELVM &vm,_t0 t0,_t1 t1,_t2 t2);
…
といった感じで、引数の個数にあわせたtemplateファンクタを用意して、これらをsq_functionというtemplateに置き換える仕組み用意したらいいんじゃね?
そういう仕組みの具体的な実装はboost::function参照。
Squirrelじゃないけど、自分はこういうtemplate用意してスクリプト内の関数呼び出す仕組み用意した。
結構便利。
0765デフォルトの名無しさん
2009/02/28(土) 22:53:470766デフォルトの名無しさん
2009/02/28(土) 23:02:24そもそも3.0というほどの変更箇所があるように見えないんだが、
ずっと黙って2.2.2-stableを使ってるな。
0767デフォルトの名無しさん
2009/03/01(日) 18:51:08x = 10 y = 3
print("余りは" .. x % y .. "です")
これを実行すると、
stdin:1: `)' expected near `%'
と表示されてしまいます。
0768デフォルトの名無しさん
2009/03/01(日) 19:03:510769デフォルトの名無しさん
2009/03/01(日) 19:08:520770デフォルトの名無しさん
2009/03/01(日) 19:21:570771デフォルトの名無しさん
2009/03/01(日) 19:33:50括弧付ければ無問題だと予想
0772デフォルトの名無しさん
2009/03/01(日) 22:16:06使ってるLuaが5.0系(%演算子が無い)なんだろう。
5.1にするか、math.modを使うかしろ。
ただしmath.modと%演算子は、負数のときの挙動が違うので注意。
0773デフォルトの名無しさん
2009/03/04(水) 08:05:29〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0774デフォルトの名無しさん
2009/03/04(水) 18:06:00〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ <●> <●>| /
| ( _●_) ミ/ Lua?
彡、 |∪| /
/ __ ヽノ /
(___)
0775デフォルトの名無しさん
2009/03/04(水) 21:35:400776デフォルトの名無しさん
2009/03/04(水) 22:31:360777デフォルトの名無しさん
2009/03/04(水) 22:51:120778デフォルトの名無しさん
2009/03/04(水) 23:16:530779デフォルトの名無しさん
2009/03/05(木) 00:17:05ないのか、残念
レスありがとう
0780デフォルトの名無しさん
2009/03/05(木) 21:09:280781デフォルトの名無しさん
2009/03/05(木) 21:18:530782デフォルトの名無しさん
2009/03/07(土) 01:20:44「**」がべき乗として使われる言語がたまにあるけど、
// はその除算版。
つまり、a // b = a ** -b = pow(a, -b)
0783デフォルトの名無しさん
2009/03/07(土) 08:14:310784デフォルトの名無しさん
2009/03/07(土) 14:01:590785デフォルトの名無しさん
2009/03/07(土) 20:35:460786デフォルトの名無しさん
2009/03/07(土) 21:46:340787デフォルトの名無しさん
2009/03/07(土) 22:34:530788デフォルトの名無しさん
2009/03/08(日) 10:43:16〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0789デフォルトの名無しさん
2009/03/09(月) 23:40:40sq_pushroottable(m_vm);
sq_pushstring(m_vm,"CONST_VALUE",-1);
sq_pushinteger(m_vm,255);
sq_newslot(m_vm,-3,true);
sq_pop(m_vm, 1);
これでもCONST_VALUE=255となりますが、定数ではなく変数(書き換え可能)なんですよね……。
スクリプト記述で言うところの、
const CONST_VALUE = 255;
となるよううなコーディングを実装したいです。
やっぱ、定数はコンパイル時決定だから無理なのかな?
0790デフォルトの名無しさん
2009/03/09(月) 23:56:03sq_pushconsttableとsq_setconsttableで上手くいきました。
仕様に目を通してないことが丸分かりで恥ずかしい……。
これでやっと
・定数・変数・クラスのバインド
・C++⇒Squirrel関数の呼び出し
・Squirrel⇒C++関数の呼び出し
まで完成しました。
あとは、デバッガと動的リロードだ。先が長いぞ。
0791デフォルトの名無しさん
2009/03/10(火) 10:35:48( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0792デフォルトの名無しさん
2009/03/10(火) 13:37:15Lua だとそーいう演算子ないみたいだけど、それってどの言語で使えるの?
c++系統だとコメントだし、Python3.0とかだと余りを切り捨てる除算に使うしあんまり一般的じゃない気がする
0793デフォルトの名無しさん
2009/03/11(水) 01:20:20俺はどうでもいいからやらないけど。
0794デフォルトの名無しさん
2009/03/11(水) 01:46:26あほか、ぐぐってみろw
0795デフォルトの名無しさん
2009/03/11(水) 02:59:280796デフォルトの名無しさん
2009/03/11(水) 09:03:27The Pawn language
http://www.compuphase.com/pawn/pawn.htm
Pythonバインディングあった。(組み込みにも使うPythonから使う利点は不明w)
craftware pypawn 1.05
http://hp.vector.co.jp/authors/VA012411/pypawn/doc/
0797デフォルトの名無しさん
2009/03/11(水) 09:04:01だめぽ。見つかりませんでした
// - Google 検索
http://www.google.com/search?hl=ja&safe=off&num=50&q=%2F%2F&btnG=%E6%A4%9C%E7%B4%A2&lr=
0798デフォルトの名無しさん
2009/03/11(水) 09:13:14http://code.google.com/p/luainterface/
Luaから.NETの機能を使ったり、.NETな言語からLuaを利用したりできるやつ。
LuaInterface Debugger
http://code.google.com/p/luainterface-debugger/
ステップ実行とかできるLuaのデバッガ。非GUI
0799デフォルトの名無しさん
2009/03/11(水) 10:59:05これ何がやりたいのかわからん
Luaはネーティブなんだから、只のラッパーに徹するか、
既存のLuaでも使える、.NETをラップしたモジュールにしてくれれば良かったのに
自分はC++/CLIに馴染みが無いから、只のラッパーを自作する参考に
コードを読む程度の利用しかしてね
0800デフォルトの名無しさん
2009/03/14(土) 11:26:370801デフォルトの名無しさん
2009/03/14(土) 15:46:240802デフォルトの名無しさん
2009/03/14(土) 21:45:180803デフォルトの名無しさん
2009/03/14(土) 21:54:280804デフォルトの名無しさん
2009/03/14(土) 21:57:400805デフォルトの名無しさん
2009/03/14(土) 22:01:580806デフォルトの名無しさん
2009/03/15(日) 00:19:44〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0807デフォルトの名無しさん
2009/03/15(日) 10:34:540808デフォルトの名無しさん
2009/03/15(日) 11:09:280809デフォルトの名無しさん
2009/03/15(日) 13:16:170810デフォルトの名無しさん
2009/03/15(日) 16:32:12( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0811デフォルトの名無しさん
2009/03/16(月) 11:37:16AVで本当にあって吹いた
TMA 涼宮ハヒルの憂鬱 レビュー | 丁dai Blog
http://tyodai.blog47.fc2.com/blog-entry-65.html
0812デフォルトの名無しさん
2009/03/16(月) 12:59:070813デフォルトの名無しさん
2009/03/16(月) 20:05:170814デフォルトの名無しさん
2009/03/16(月) 20:12:32ttp://www.lua.org/ftp/
0815デフォルトの名無しさん
2009/03/18(水) 08:32:520816デフォルトの名無しさん
2009/03/19(木) 01:43:27ttp://www.milknosato.com/enjoy/cowy.php
0817デフォルトの名無しさん
2009/03/21(土) 12:59:13http://homepage3.nifty.com/akaho/program/lua/xml.html
見つけたので、貼っとく。
0818デフォルトの名無しさん
2009/03/21(土) 17:09:250819デフォルトの名無しさん
2009/03/21(土) 18:09:360820デフォルトの名無しさん
2009/03/22(日) 06:14:060821デフォルトの名無しさん
2009/03/22(日) 17:56:260822デフォルトの名無しさん
2009/03/23(月) 22:38:00NekoVM 用として使えば組み込み系もいけるかも?
でも Nekoランタイムは LGPLかー
0823デフォルトの名無しさん
2009/03/24(火) 17:56:070824デフォルトの名無しさん
2009/03/28(土) 15:37:520825デフォルトの名無しさん
2009/03/29(日) 07:59:07同じような仕様のコンパイラは今まで何回か書いてきたが、
このようにたくさんのライブラリが公開されるというのはさすがオープンソースだな、と思う。
0826デフォルトの名無しさん
2009/03/29(日) 11:18:30L付きだからいいじゃん
0827デフォルトの名無しさん
2009/03/29(日) 12:11:160828デフォルトの名無しさん
2009/03/29(日) 12:16:15目的に合った方、実績のある方選ぶ。
GPLは社内ルール上駄目。
0829デフォルトの名無しさん
2009/03/29(日) 12:26:550830デフォルトの名無しさん
2009/03/29(日) 12:36:490831デフォルトの名無しさん
2009/03/29(日) 12:46:02バックドア的な穴を開けたようなソースを公開したくないな
ライブラリに変更を要する時に格好いい理由とかないだろ
0832デフォルトの名無しさん
2009/03/29(日) 13:26:550833デフォルトの名無しさん
2009/03/29(日) 13:33:57LGPLなら公開しなくていいじゃん
0834デフォルトの名無しさん
2009/03/29(日) 15:12:210835デフォルトの名無しさん
2009/03/29(日) 15:15:220836デフォルトの名無しさん
2009/03/29(日) 15:21:39うまくライブラリと分離すりゃいいだけでしょ?
0837デフォルトの名無しさん
2009/03/29(日) 15:44:09wikipediaを読めば大雑把だが把握できる。
0838デフォルトの名無しさん
2009/03/29(日) 17:19:27春だな
0839デフォルトの名無しさん
2009/03/29(日) 17:20:22結構痛い。
0840デフォルトの名無しさん
2009/03/29(日) 17:25:45パッカー系ってzipやlzh?それともexe?
0841デフォルトの名無しさん
2009/03/29(日) 20:30:38〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ○ ○ | /
| ( _●_) ミ/ <……
彡、 |∪| /
/ __ ヽノ /
(___)
0842デフォルトの名無しさん
2009/03/29(日) 20:33:480843デフォルトの名無しさん
2009/03/30(月) 07:38:40( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0844デフォルトの名無しさん
2009/03/30(月) 09:25:060845デフォルトの名無しさん
2009/03/30(月) 09:33:45同梱するだけのものにはソース開示は及ばないのに。
0846デフォルトの名無しさん
2009/03/30(月) 09:37:51* ライブラリAにリンクしたプログラムBを配布する場合、Bのライセンスにリバースエンジニアリングを禁止する条項を含めてはならない。(LGPLv2-6、LGPLv3-4)
* ライブラリAに静的リンクしたプログラムBを配布する場合、Bのソースコードまたはオブジェクトコードの配布を拒否してはならない。(LGPLv2-6a、LGPLv3-4d0)
* ライブラリAを改変して作成されたライブラリA'を配布する場合、A'のライセンスはLGPLまたはGPLである必要がある。
0847デフォルトの名無しさん
2009/03/30(月) 13:43:430848デフォルトの名無しさん
2009/03/30(月) 20:01:340849デフォルトの名無しさん
2009/03/30(月) 20:16:53じゃあパッカー系は大丈夫だな。ほっとした。
.jarも.airも影響受けず大丈夫なのね…
0850デフォルトの名無しさん
2009/03/30(月) 20:18:090851デフォルトの名無しさん
2009/03/30(月) 20:22:32要するに「入手した人がライブラリだけさしかえて再構築できるか」
がライセンスの想定なので、一般的にばらす手段が認知されて
ないようなものは基本的にダメだと思う
0852デフォルトの名無しさん
2009/03/30(月) 20:26:100853デフォルトの名無しさん
2009/03/30(月) 21:34:29コンシューマだとサードパーティライセンスの関係でこれをクリアできないってことか
0854デフォルトの名無しさん
2009/03/30(月) 23:48:29>4はXtal以外全く話がないからXtal関係を>3に移して4を削除してよくね?
このスレでは幸いにして問題にならなかったけど>10-12も配慮お願い。
関連スレの中で移行済のもの。 LLスレは流れが速いからスレ立て時に確認お願い。
「コンパイラ・スクリプトエンジン」相談室13
http://pc12.2ch.net/test/read.cgi/tech/1233143342/
0855デフォルトの名無しさん
2009/03/31(火) 07:20:26〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0856デフォルトの名無しさん
2009/04/01(水) 08:35:50\ ヽ ) ) \\ \\
( \ \∩___∩ \\
\ \ ⌒⌒| ノ ヽ \\
\ \ / ● ● ト、\ \\\
\ Y | ( _●_) ミ\ \\\
\ / 彡、_ |∪| ノ \ \\\
(____)―ヽノ' ヽ  ̄ ̄ ヽ\\
\, j l l .l }
Lua! l (_ノノノノ
0857デフォルトの名無しさん
2009/04/01(水) 08:41:41〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Luaまピョーん☆
彡、 |∪| /
/ __ ヽノ /
(___)
0858デフォルトの名無しさん
2009/04/02(木) 16:22:42http://www.igda.jp/modules/news/article.php?storyid=1622
13:10 - 14:00
「ごく簡単な並列処理スクリプトシステムの設計と実装」
□講師
小久保啓三(HAL東京)
(株)スクウェアでの代表作「ロマンシング・サガ」「FF5」「クロノトリガー」「FF7」。クロノトリガーとFF7では、スクリプトシステムの設計と実装に携わる。
14:00 - 14:50
「『サクラ大戦X』でのスクリプト運用事例」
□講師
秋葉晴樹(セガ)
株式会社セガ 第三CS研究開発部 リードプログラマ。
代表作は、サクラ大戦シリーズ、のび太の新魔界大冒険、ブレイザードライブ。
サクラ大戦シリーズは3から参加、主にADVパートのプログラムを担当。
15:20 - 16:10
「汎用スクリプト言語Xtal 設計と実装」
□講師
石橋立宣(バンダイナムコゲームス)
NBGI プログラマ。
PSP塊魂のエンディングミニゲームやシステム周り担当。
PSP太鼓のADV部分やシステム周り担当。
趣味で、C++組み込み用スクリプト「Xtal」を開発。
16:10 - 17:00
「Squirrelスクリプトを使った実装と活用」
□講師
神尾隆司(スクウェア・エニックス)
Wiiウェア 小さな王様と約束の国 ファイナルファンタジー・クリスタルクロニクル の開発に関わる。
北出智(スクウェア・エニックス)
PS2 聖剣伝説4、Wiiウェア 小さな王様と約束の国 ファイナルファンタジー・クリスタルクロニクル 等の開発に関わる。
0859デフォルトの名無しさん
2009/04/02(木) 17:13:42/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0860デフォルトの名無しさん
2009/04/02(木) 17:16:30/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Luaまピョーん☆
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0861デフォルトの名無しさん
2009/04/03(金) 20:33:21仕様、ソースのできもなかなかいいし、
今後日本ではやって行く可能性もあるなぁ……。
0862デフォルトの名無しさん
2009/04/03(金) 20:40:290863デフォルトの名無しさん
2009/04/03(金) 20:47:29LuaとSquirrelの2強を打破してくれることを祈る。
0864デフォルトの名無しさん
2009/04/03(金) 21:05:22> 要するに「入手した人がライブラリだけさしかえて再構築できるか」
> がライセンスの想定なので、
都合のいい風に読み替えるなよw
0865デフォルトの名無しさん
2009/04/03(金) 21:12:56Squirrelは2強というほど普及もしてないぞ。
いろいろ話聞いた感じでは、Luaが圧倒的に強くてPAWN、Squirrel、StacklessPythonがポストLuaな感じ。
XtalやCRIScriptはまだ産声あげたぐらいだしなぁ・・・もう数年必要かな。
0866デフォルトの名無しさん
2009/04/03(金) 22:24:28俺では有効活用できないんだけどね…
0867デフォルトの名無しさん
2009/04/03(金) 23:41:09どのへんが間違えてるか解説きぼん
ソース公開 / リンク用OBJの公開 / ダイナミックリンク から選べる、
ってのは平たくいえばそういうことだという認識なんだが。
0868デフォルトの名無しさん
2009/04/03(金) 23:51:54スレ違い。
『GPL/LGPL等ライセンスとゲーム製作_2』
http://pc11.2ch.net/test/read.cgi/gamedev/1036512390/
0869デフォルトの名無しさん
2009/04/03(金) 23:53:270870デフォルトの名無しさん
2009/04/04(土) 17:58:590871デフォルトの名無しさん
2009/04/04(土) 18:33:330872デフォルトの名無しさん
2009/04/05(日) 09:40:180873デフォルトの名無しさん
2009/04/05(日) 09:41:460874デフォルトの名無しさん
2009/04/05(日) 12:40:480875デフォルトの名無しさん
2009/04/05(日) 12:46:55GameDeveloperの2009年2月号にちょっと特集されてるよ
0876デフォルトの名無しさん
2009/04/05(日) 16:31:11おお、これか。ちょっくら読んでみるぜ
> Snakes on a Seamless Living World
> By David Hawes
> As a scripting language, Stackless Python is meant to serve the needs of
> multi-threaded environments, namely each of the current gen home consoles
> and PCs. Here, author David Hawes details how to get the language working
> in-engine on consoles.
Game Developer Magazine
http://www.gdmag.com/archive/feb09.htm
0877デフォルトの名無しさん
2009/04/05(日) 18:18:08\ ヽ ) ) \\ \\
( \ \∩___∩ \\
\ \ ⌒⌒| ノ ヽ \\
\ \ / ● ● ト、\ \\\
\ Y | ( _●_) ミ\ \\\
\ / 彡、_ |∪| ノ \ \\\
(____)―ヽノ' ヽ  ̄ ̄ ヽ\\
\, j l l .l }
Lua! l (_ノノノノ
0878デフォルトの名無しさん
2009/04/05(日) 18:29:280879デフォルトの名無しさん
2009/04/05(日) 18:30:500880デフォルトの名無しさん
2009/04/06(月) 14:34:48http://www.cri-mw.co.jp/event/2009/sig-gt-12.html
0881デフォルトの名無しさん
2009/04/07(火) 09:21:56俺の大好きなAngelScriptはダメですかそうですか。
0882デフォルトの名無しさん
2009/04/07(火) 10:22:160883デフォルトの名無しさん
2009/04/07(火) 16:04:28いや、悪くはないと思うよ。
ただ情報が本当に少ないので、布教も兼ねてCEDECとかもっと小さいセミナーでもなんでも講演してくれる人がいると、
使い手も増える思うんだよなぁ・・・
そういった草の根的な活動を担ってくれる人がいないと組み込みスクリプトはなかなか盛り上がらないと思う。
0884デフォルトの名無しさん
2009/04/08(水) 01:46:450885デフォルトの名無しさん
2009/04/08(水) 07:42:04( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0886デフォルトの名無しさん
2009/04/09(木) 14:22:19Luaは言語仕様がどうとか言われているけど、よく続けたナーって幹事。
0887デフォルトの名無しさん
2009/04/10(金) 05:31:36/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0888デフォルトの名無しさん
2009/04/10(金) 07:48:17たしかに言語ってだいたい10年ぐらいしてから普及しはじめるからなー
javaもいじってた頃はまだまだ普及しそうになかったし
0889デフォルトの名無しさん
2009/04/10(金) 09:56:110890デフォルトの名無しさん
2009/04/10(金) 10:01:26印象がだいぶ違うと思う。
0891デフォルトの名無しさん
2009/04/10(金) 10:54:490892デフォルトの名無しさん
2009/04/10(金) 11:05:460893デフォルトの名無しさん
2009/04/10(金) 11:07:58が、流行るのに10年はかかってないっしょ
0894デフォルトの名無しさん
2009/04/10(金) 11:17:150895デフォルトの名無しさん
2009/04/10(金) 11:55:550896デフォルトの名無しさん
2009/04/10(金) 13:54:14(WindowsでJava=Java appletの時代w)
こんなの流行るわけないだろ!と思ってたら、このありさまだよ!
まあ、Windowsでは今でもJavaは、金融関係(証券会社とかトレード関係とか)しかみない気がするけどさ
0897デフォルトの名無しさん
2009/04/10(金) 21:49:47今:Javaって(言語仕様が)重いよな
0898デフォルトの名無しさん
2009/04/10(金) 22:02:59もしかしてGenericsに挫折しちゃった人?
0899デフォルトの名無しさん
2009/04/10(金) 22:44:23どんだけ見る目ないんだw
0900デフォルトの名無しさん
2009/04/11(土) 16:29:460901デフォルトの名無しさん
2009/04/12(日) 02:30:32まあ、そろそろスレ違いかもしれんが。
0902デフォルトの名無しさん
2009/04/12(日) 06:25:14http://coreblog.org/ats/japanese-translation-why-reddit-uses-python
> Pythonを使い続ける最も大きな理由... そうだなあ,大きな理由が2つあるよ。
> ひとつめの理由はライブラリ。Pythonには全部のライブラリがそろっている。
> 僕たちは開発を進めてきた課程で,たくさんの技術や,たくさんのアーキテクチャを学んできた。
> たとえば,僕がコネクションプールについて理解していなかったとしても,
> 僕はただ単にライブラリを探してきて使うことができる。それからコネクションプールについて理解して,
> 自分たちでライブラリを書けばいい。Webフレームワークについても理解する必要はない。
> 自分たちのフレームワークを作る時が来るまで,他の人が作ったフレームワークを使うだけだ。
> その他の多くの技術を使う前に学ぶ必要はないんだ。
> だってPythonにはほとんど全ての種類のライブラリが備わっているのだから。
> これからも,僕たちはもっと多くの技術を学び続ける。
> そして自分たちの手でライブラリを作る。技術を自分たち流に変えるためにね。
> このような手法を使うことで,自分流に変換する作業をとってもとっても簡単にすることができるんだ。
>
>
> もうひとつ,僕たちをPythonにつなぎ止めておく理由は,これは最も大きな理由なんだけど,
> Pythonのコードが読みやすく書きやすい,ということなんだ。
> たとえば僕たちが新しい技術者を雇うとき。Pythonが書ける技術者を雇うことはまずないわけだけど。
> 僕はただ「ぜんぶPythonで書いてね」と言うだけだ。
> そう言うだけで,彼らの書いたコードを僕は読むことができる。
> これはすごいことなんだけど,僕は部屋越しにコードが良いか悪いかを見分けることができるんだ。
> というのは,良質なPythonのコードはとても明確な構造を持っているから。
> これが僕の仕事をより楽にしてくれるんだ。Pythonのコードはとんでもなく表情豊かで,
> とんでもなく読みやすく,そしてとんでもなく書きやすい。
> だから僕は仕事をスムーズに運べるというわけさ。
0903デフォルトの名無しさん
2009/04/12(日) 06:46:47組み込み用スクリプトとして言語を選択するのは視点が若干違うと思うな。
もちろん、手馴れた言語でスクリプトが記述できるのであれば大きなプラスポイントだとは思うけど、
実行速度やメモリ使用量、組み込みやすさ、本体とのやりとりの容易さ、デバッガetc...
と単独で実行するときとは事情がけっこう変わってくるので、そのスクリプト言語の仕様が素晴らしいからといって、
採用するかどうかは考えどころだったりするね。
0904デフォルトの名無しさん
2009/04/12(日) 07:26:48C言語と同じようにnut側にmain関数を書いておいて、それを呼び出すようにしたいんですが
if(SQ_SUCCEEDED(sqstd_loadfile(v,filename,SQTrue))) {
SQInteger top = sq_gettop(v);
sq_pushroottable(v);
sq_pushstring(v, _SC("main"), -1);
if(SQ_SUCCEEDED(sq_get(v, -2))){
sq_call(v, 1, SQFalse, SQTrue);
sq_settop(v, top);
}
}
と書いたんですが、sq_getで失敗してしまいます。
printなどの組み込み関数だと成功するんですが・・。
nut側は
function main()
{
}
しか書いてないんですが、nut側の書き方が悪いんでしょうかね?
0905デフォルトの名無しさん
2009/04/12(日) 08:20:550906902
2009/04/12(日) 08:59:480907デフォルトの名無しさん
2009/04/12(日) 09:27:520908デフォルトの名無しさん
2009/04/12(日) 10:55:13キニスルナ
プログラム作るのに何の言語を使うかは絶対的なものではなく相対的なものでしかないわけで、
日ごろ使わない他の言語の良さを語ってくれるテキストは参考になる。
それが実績のある開発者の言葉ならなおさらのことだ。
0909902
2009/04/12(日) 10:57:22って話だから、あながちネタフリとしてはスレ違いでもないかw
0910デフォルトの名無しさん
2009/04/12(日) 13:08:55sqstd_loadfile はスクリプトをロードしてスタックの先頭にのせるだけ。
その中身の function main() を登録するにはまずそれ自体を sq_call する必要がある。
sqstd_dofile にすれば思い通り動くと思われ。
0911デフォルトの名無しさん
2009/04/12(日) 14:30:010912デフォルトの名無しさん
2009/04/12(日) 15:09:46この2点に関してはAngelScriptが一番だと思うんだがどうだろう。
0913デフォルトの名無しさん
2009/04/12(日) 15:13:080914デフォルトの名無しさん
2009/04/12(日) 15:25:51C/C++とイディオム的に同じことしかできないんじゃなぁ。
無名クロージャーとかコルーチンとかのサポートはあるんだろうか。
0915デフォルトの名無しさん
2009/04/12(日) 15:33:59コルーチンは言語的にはサポートされておらず、C++側でそれのための仕組み作ってやらないとダメ。
簡単にできるけど。
0916デフォルトの名無しさん
2009/04/12(日) 17:10:010917デフォルトの名無しさん
2009/04/13(月) 23:38:07もしかして地雷?
0918デフォルトの名無しさん
2009/04/13(月) 23:48:15・スクリプト側でcoroutine.createで作るやつ
・C++側でlua_yield呼び出して止めるやつ
のどっち指してるんだろう。
0919デフォルトの名無しさん
2009/04/13(月) 23:48:25そっちの薄いのは言語仕様を書いてあったな。入門用っぽかった。地雷ではないだろう。
0920デフォルトの名無しさん
2009/04/14(火) 01:55:58・はじめてのLuaプログラミング は地雷
・入門Luaプログラミング は良書
・スクリプト言語による、効率的ゲーム開発C/C++へのLua組み込み実践 は
地雷ともまでは行かないが、そう受け取れる。
パン食い競争でぶら下げられてるフランスパンって感じ。
一部の実装の例に一貫性がない。しかも大事なところ。
ゲーム作りを謳ってるのに、徐々に作りながらじゃないくて、
「こういう時は、こんな感じでいいでしょう」みたいに書かれていて、
実際に積み重ねてく訳じゃないから使いたい時に使えない。
自分で考えて実装しろって事なんだろうけど、全体的に動かないもの見せられてる感は個人的には困り所。
だけど、Cへ実装の例に関しては一番詳しいのも事実。
入門Luaプログラミングと合わせて使うといい感じに分からない所同士を補ってくれたりするような関係。
0921デフォルトの名無しさん
2009/04/14(火) 03:58:47>スクリプト言語による
そっかなー。動作するゲームのソースコードは入手できるわけだし。
コラムなんかを見てもなかなか参考になることが書いてあるように思える。
動くか動かないかはソースコードを読めばいいわけで、必ずしも本で全体を解説する必要はないんじゃないかしら。
別に作者の回し者ではないが、一通り目を通したものとして。
0922デフォルトの名無しさん
2009/04/14(火) 07:44:16Luaってgotoある?
スコープ違うとwhileやifで逃げるのは面倒なんだよな〜
>スクリプト言語による
これの不満点はLuaで全部やる必要ないじゃんというところ
toluaはクラスのポインタを渡してやってLua側で制御するために使ってて
管理そのものはC側でやった方がいろいろと楽だと思うんだよね
俺は一部のメンバ関数をLuaで書き換えるみたいな使い方してる
0923デフォルトの名無しさん
2009/04/14(火) 09:20:200924デフォルトの名無しさん
2009/04/14(火) 23:21:450925デフォルトの名無しさん
2009/04/20(月) 11:36:10ttp://ruriko.denpa.org/200904b.html#2001
0926デフォルトの名無しさん
2009/04/21(火) 06:04:10Adobe AlchemyでSquirrelがFlash上でうごくのかー。すげえw
0927デフォルトの名無しさん
2009/04/22(水) 02:45:52Luaを組み込んだコンシューマゲームの製作の際に、
Luaのライセンス(MIT License)ってどういう風に処理したらいいのかな?
ソースのどっかにライセンス表記するのでいいのか、
それとも取説とかに明記する必要がある?
0928デフォルトの名無しさん
2009/04/22(水) 02:54:01ソースだけじゃダメ。取説の類に記載が必要。っていうかライセンス嫁。
0929デフォルトの名無しさん
2009/04/22(水) 06:52:41∧__∧
(´・ω・) いやどす
ハ∨/^ヽ
ノ::[三ノ :.、
i)、_;|*く; ノ
|!: ::.".T~
ハ、___|
"""~""""""~"""~"""~"
0930デフォルトの名無しさん
2009/04/22(水) 08:48:53ありがとう
調べはしたんだけど、ヘッダにでも書いときゃOKとか
言ってるサイトもあって混乱してたわ
0931デフォルトの名無しさん
2009/04/22(水) 08:54:16それはソース配布の場合の条件
バイナリ配布時は取説か、あるいは実行ファイルそのものでユーザが参照できる状態にしておく必要がある。
0932デフォルトの名無しさん
2009/04/22(水) 10:40:36ユーザーが見られるなら、CD内にreadme.txtでも置いてインストーラーでリンクはっておけばいいのかも試練が、
家庭用なら誰も見ないし(or 見れないし)、鳥説が自然でしょう
0933デフォルトの名無しさん
2009/04/22(水) 10:41:42あとダウンロード販売は。
・中古は無視
・ダウンロード販売は、ゲーム内クレジットをつくってそこに記述
って感じでしょうか
0934デフォルトの名無しさん
2009/04/22(水) 20:19:560935デフォルトの名無しさん
2009/04/22(水) 22:22:00あれみたいにしたら
0936デフォルトの名無しさん
2009/04/22(水) 22:47:51選択するとスタッフロールとかが流れるようにしておく。
0937デフォルトの名無しさん
2009/04/22(水) 23:11:470938デフォルトの名無しさん
2009/04/23(木) 03:14:16そんなんでもいいのか
0939デフォルトの名無しさん
2009/04/23(木) 12:14:350940デフォルトの名無しさん
2009/04/23(木) 12:27:510941デフォルトの名無しさん
2009/04/24(金) 17:08:17( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0942デフォルトの名無しさん
2009/05/05(火) 11:17:04どういうのがいいのか悩んでる。
二つ案があって、ひとつはLuaと同じくスタックを介する方法。
もうひとつは、オブジェクトハンドルを経由してアクセスする方法で、
Handle globalhash, funcobj, symbol;
globalhash = getglobal( state );
symbol = intern( state, "globalfunc" );
funcobj = getfield( globalhash, symbol );
arg_pushinteger( funcobj, 10 );
call( funcobj );
handle_drop( funcobj );
handle_drop( symbol );
handle_drop( globalhash );
という感じになる。ちょっと長いけど、グローバルハッシュから特定シンボ
ルの値を得るというのはありそうな処理なので、実際には専用のAPIを用意する。
ただこちらのほうはスタックに比べて、
・ハンドル開放処理を忘れるとメモリリーク
・遅い
という問題がある。
前者はスタック操作でも同じ(スタックトップを戻し忘れるのがそれにあたる)だけど、
後者は頻繁に行う処理な分、結構致命的。
ただ後者の方法のほうがスタックの状態を覚えなくてよい分、直感的といえば直感的
なんだよな。
両方用意したほうがいいかな?
0943デフォルトの名無しさん
2009/05/05(火) 11:31:29やっぱりスタック操作かOTL
0944デフォルトの名無しさん
2009/05/05(火) 22:13:00自前で実装するんだった、luabindとかxtalみたいにバインダがあると直感的で楽だと思うけど。
C++じゃなくて純粋なC言語でインターフェース作りたいの?
0945デフォルトの名無しさん
2009/05/05(火) 22:47:39LuaではluaL_refとluaL_unrefでハンドルを使えるよ
0946デフォルトの名無しさん
2009/05/06(水) 14:25:22ああ、そういやそうだった。やっぱり両方用意するのが得策か。
Pythonではハンドルしか扱えないようだったから、どうかなーと思ったんだけど。
ありがd
0947デフォルトの名無しさん
2009/05/06(水) 17:02:58AWKやBASICと何が違うんですか?
なんか、単なる先祖帰りのような・・・
Cとの連携が楽とか、
そういう違いは分かるんですけど。
AWKやBASICを拡張しただけでも代わり映えしないんじゃないですか?
0948デフォルトの名無しさん
2009/05/06(水) 17:11:36ttp://www.lua.org/about.html
ここに全部書いてあるから読んでこい。納得しなければそれはそれで
0949デフォルトの名無しさん
2009/05/06(水) 21:01:08>Luaって非OOの動的型付言語ですけど、
Luaはオブジェクト指向言語として十分な機能は備えてる。
言語のパワーなんて口で説明するよりも実際に触ったほうが理解がはやいと思う。
もし触った上での疑問なら、もうちょっと詳細に違和感を説明したほうがいいんじゃないかな。
自分がLuaを使ってるのは単純明快、
Luaでドメインを書くコスト+C++でその他を書くコスト < C++ですべて書くコスト
という不等式が(自分の場合)成り立つから。
お前さんもAWKやBASICがC++より生産性が高いと思ってて、かつそれが組み込み可能
ならば、それを使えばいいんじゃないの?
0950デフォルトの名無しさん
2009/05/06(水) 23:26:00|Д゚)ノ<AngelScriptもよろしく!
|ミサッ
0951デフォルトの名無しさん
2009/05/06(水) 23:46:11ちゃんと計算されてる。アングルとか
0952デフォルトの名無しさん
2009/05/07(木) 00:47:420953デフォルトの名無しさん
2009/05/07(木) 01:49:18そうなん?みてみたいからポインタよろ
0954デフォルトの名無しさん
2009/05/07(木) 02:11:32事件は2ちゃんねるで起こってるんじゃない。公式フォーラムで起こってるんだ!
0955デフォルトの名無しさん
2009/05/07(木) 03:14:51これか。コードが整理されてて sqplus よりはるかにわかりやすいですな
getter/setter の実装がちょっとトリッキーなのが要注意なかんじ。
0956デフォルトの名無しさん
2009/05/07(木) 03:17:58すぐ下にもう一つあった^^; なるほどぽろぽろだな
0957デフォルトの名無しさん
2009/05/09(土) 23:57:590958デフォルトの名無しさん
2009/05/10(日) 09:14:24∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0959デフォルトの名無しさん
2009/05/20(水) 12:32:10strtoul(lua_tostring(L, -1), NULL, 0) みたいにするしかないの?
0960デフォルトの名無しさん
2009/05/20(水) 12:36:110961デフォルトの名無しさん
2009/05/20(水) 17:20:34スクリプト上のプログラミングならunsigned整数など考えないで済むコードを書いた方が楽だぞ。
0962デフォルトの名無しさん
2009/05/20(水) 21:01:47"0xAARRGGBB" の形式で書いてあるから lua_tointeger だと読めないんだよね
そうか lua_tonumber は double だから 32ビット符号なしでもちゃんと変換できるのかな?
試してみます
0963962
2009/05/20(水) 21:34:170964デフォルトの名無しさん
2009/05/21(木) 07:26:38/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0965デフォルトの名無しさん
2009/05/21(木) 07:42:45/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Luaまピョーん☆
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0966デフォルトの名無しさん
2009/05/21(木) 13:39:45-- だと構文ハイライトされないエディタで見たときにコードに埋もれてよく見えん。
0967デフォルトの名無しさん
2009/05/21(木) 14:21:380968デフォルトの名無しさん
2009/05/21(木) 15:29:42宗教論争の火種になりそうな「改良」は、いくら提案してもむだだと思う。
0969デフォルトの名無しさん
2009/05/21(木) 22:07:430970デフォルトの名無しさん
2009/05/21(木) 23:01:14向上心のなさ、というか後方互換性が最大限に考慮されている気がする。
だから、商用プロダクトにも安心して採用できるんだろうけど。
最近、web周りでRubyとかRailsとかも使っているんだが
バージョン上がると全然違う挙動とか、書き方換わったりするのがザラだったりするんだが、これが結構キツイ
書籍が出ても、すぐ陳腐化しちゃったり…書籍の日本語訳が出たころには、次のかなり変わったバージョンがなんて
(Ruby 1.8はいいんだけど、Railsは本当にヒドイw
しかも次期バージョンで他のフレームワークと統合されるのが決定しててちょオマ…)
0971デフォルトの名無しさん
2009/05/21(木) 23:49:52AngelScriptの出番だな!
0972デフォルトの名無しさん
2009/05/21(木) 23:57:55誰も本気で言わないから
0973デフォルトの名無しさん
2009/05/22(金) 00:29:20そんな程度も我慢できない根性でLuaを選んだ自分の浅はかさを呪うがいい
0974デフォルトの名無しさん
2009/05/22(金) 09:56:260975デフォルトの名無しさん
2009/05/22(金) 12:52:22メモ帳で開けないから、設定ファイルの拡張子は xml じゃなくて txt にしてくれと言われたのに。
0976デフォルトの名無しさん
2009/05/22(金) 12:58:220977デフォルトの名無しさん
2009/05/22(金) 13:02:460978デフォルトの名無しさん
2009/05/22(金) 13:33:11ini形式よりもxmlのほうが楽だったんだよね。
メモ帳に関連付けるだけで終わりだし、そもそもxmlエディタいれればそれで終わりなのに。
0979デフォルトの名無しさん
2009/05/22(金) 14:35:22下手にメモ帳で開いて保存すると、文字コード変わっちゃうしメンドクサイことになりますよね
あと、xmlはMSからエディタ出てるけど微妙に使いづらいのが難点
個人的に、スクリプト言語で使うオススメの設定フォーマットはJSONだと思う
0980デフォルトの名無しさん
2009/05/22(金) 14:37:080981デフォルトの名無しさん
2009/05/22(金) 14:41:20同感ですな
xmlは素人には無理
フォーマット決めうちなtxtか、ini程度でokな気がする
0982デフォルトの名無しさん
2009/05/22(金) 16:29:30C からlua の関数を呼ぶ -> 呼ばれた関数は、lua 内の別の関数 A そのものを返す -> C 側でそれを保持して、必要なときに A を呼びだす
てことをやりたいんだけど、どうすればいいですか?
lua の関数オブジェクトやみたいなのをスタックから取得する関数が見当たらないのですが。
lua_getglobal(L, "getfunc");
lua_call(L, 0, 1);
myfunc = スタック[-1]からlua関数を取得
... しばらくたってから ...
myfunc をスタックにpush
lua_call(...)
ということがやりたいです。
0983デフォルトの名無しさん
2009/05/22(金) 17:09:08Lua はオブジェクトを直接C側で参照する機構を持たない。よって単純には出来ない。
一般的には luaL_ref を使ってオブジェクトのリファレンス(絶対重ならないint値)をとって、
それをつかってレジストリテーブルにつっこんでおいて、必要になったらそのリファレンスを
つかってレジストリテーブルから引っ張り出してくる、という手法がとられる。
そんなややこしいのはいやじゃって人は、リファレンスを C側で保持できる squirrel オススメ
0984デフォルトの名無しさん
2009/05/22(金) 17:58:18luaL_ref が一番素直そうなのでそれでやってみます。どうもありがとう。
0985デフォルトの名無しさん
2009/05/23(土) 00:58:12bindは確かにC++だが、直叩きだったらCの範疇でいけたような・・・
0986デフォルトの名無しさん
2009/05/23(土) 01:07:48class でなくて struct なのは趣味かね。
ただ、インターフェース的には全部C合わせなので、普通にリンクして使える。
例外とかも全く使ってないから問題になるところはどこにもない。
プロジェクトが C縛りってのがいまどきだと意味不明だねぇ
0987デフォルトの名無しさん
2009/05/23(土) 08:11:35( ・∀・) < Lua!!
⊂/ 9) \____
q( /
> >
0988デフォルトの名無しさん
2009/05/23(土) 09:07:00// スタック初期化
lua_settop(L, 0)
// A::Bをpush
lua_getglobal(L, "A")
lua_pushstring(L, "B")
lua_gettable(L, -2)
// 暗黙の引数selfをpush
lua_getglobal(L, "A")
//引数Cをpush
lua_getglobal(L, "C")
//実行
lua_call(L, 2, 2)
//luaで return d, e された戻り値を受け取る
D = lua_tointeger(L, 1)
E = lua_tointeger(L, 2)
てやると、D,Eにluaで返した値が入らないんだけど、どうしてですか???
0989デフォルトの名無しさん
2009/05/23(土) 09:35:28lua_gettable(L, -2) の後に lua_remove(L,-2) を入れるか、
その後の lua_getglobal(L, "A") を消せばいいと思うよ
0990デフォルトの名無しさん
2009/05/23(土) 11:43:430991デフォルトの名無しさん
2009/05/23(土) 22:44:35C++がぜんぜんわからないってのがいまだに上にいたりするからな…
自分がそういう上司に当たって死にかけてからもうずいぶんになるが、
いまだにそういう人はちょくちょく見かける。
0992デフォルトの名無しさん
2009/05/23(土) 22:52:55てかつかえません
サーセン
0993デフォルトの名無しさん
2009/05/24(日) 03:45:08Cオンリーなら、
// 一行コメント
も使っちゃダメなんだろうな、大変だな。
0994デフォルトの名無しさん
2009/05/24(日) 04:28:060995デフォルトの名無しさん
2009/05/24(日) 04:37:280996デフォルトの名無しさん
2009/05/24(日) 05:00:50//は使えるけど
0997デフォルトの名無しさん
2009/05/24(日) 11:00:210998デフォルトの名無しさん
2009/05/24(日) 11:29:17テンプレに、大きな変更ないよね?
0999デフォルトの名無しさん
2009/05/24(日) 21:29:001000デフォルトの名無しさん
2009/05/24(日) 21:29:5310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。