1 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 09:11:41 ] LuaやSquirrelなどアプリケーションへの組み込み用途で 使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■前スレ 【Lua】組み込み系言語総合【Squirrel】 pc12.2ch.net/test/read.cgi/tech/1205208141/ ■過去スレ その3 pc11.2ch.net/test/read.cgi/tech/1160799232/ その2 pc8.2ch.net/test/read.cgi/tech/1063711237/ その1 pc5.2ch.net/tech/kako/1034/10341/1034182349.html
108 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 21:40:20 ] >>100 2日で0.71に上がってるからバグでもあったのかと思ったら、 バインドしたC++の関数の引数にSquirrel関数を渡せるようにしてほしいと 要望もらって一日で作ってきてるんですね。 Kanryuさんのパッチも入ったし仕事はやいぞ。
109 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 00:50:51 ] AngelScript|Д`)<俺らの話題全然ないな GameMonkey|Д`)<全くだ CRIScript|Д`)<全くだ
110 名前:デフォルトの名無しさん [2009/07/15(水) 01:41:13 ] ttp://www.chaiscript.com/ > ChaiScript | Easy to use scripting for C++
111 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 02:24:00 ] チャイってミルクティーやん と思ったらロゴがほんとにミルクティーだw
112 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 02:28:39 ] Squirrelってリスやん
113 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 06:59:47 ] Luaを組み込んである字幕作成ソフトAegisub ttp://www.aegisub.net/ ttp://g-mark.jpn.org/index.php?Aegisub 字幕スクリプトの整形やエフェクトにLuaを利用してる ライセンスはBSD、ソースは、 ttp://svn.aegisub.net/
114 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 19:21:30 ] >>106 Python のyield は引数や戻り値の指定できるよ Stackless Python なら同じ関数でしかyield使えないという制限もなかった気がするけどうろ覚え
115 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 10:35:29 ] >>114 レスを見てジェネレータ関係を触ってみたら、 Pythonのバージョンによる挙動の差異が如実に出ててビビッた。 3.0系はprint文が関数化されて書式に互換性が無いとか、 ジェネレータのnext()メソッドが使えなくなってるとか。 IronPythonの現行版はまだ2.5系で、今年中に2.6系互換になる予定なのか。 オレには3.0はまだ新しすぎたようだ!
116 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 13:54:53 ] >Python のyield は引数や戻り値の指定できるよ www.python.jp/doc/nightly/ref/yield.html 本当だ、気づかなかった.... orz
117 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 10:08:15 ] lua_newthread だとグローバル変数が共有されちゃうけど、 グローバル変数を独立させるようにできないの? コードを共有して変数だけ独立させたいんだけど。 ... って書いてて思ったけど、結局関数もグローバル変数と同じなんだから lua_newstate でいいのか。
118 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 02:48:48 ] LUAのコルーチンの中から、C++側で定義された構造体を取得し、 そのメンバの値を変更したいのですが、変更するコードをスクリプトに 記述した場合、そのコルーチンをresumeするLUAの関数をC++から何度か呼ぶと luabind::detail::unrefというところで例外が出てしまいます struct Test { int a; Test(){} }; という構造体があって、luabindで luabind::module(L) [ luabind::class_<Test>("Test") .def(luabind::constructor<>()) .def_readwrite("a", &Test::a) として、コルーチンの中で t=Test() t.a=0 の2行を書くと例外になります この2行をコメントアウトすると、何度呼んでも例外が出ません また、この2行をコルーチンでない普通の関数に記述してC++から呼んでも 例外が出ません なぜコルーチン内から構造体を使用するコードを書くと例外が出るのでしょうか
119 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 06:10:29 ] luabind は使ったことがないので想像ですが、 コルーチンから C の関数が呼ばれるときは lua_State(L の値)が違うから、 それが問題になってたりしないかな?
120 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 07:27:21 ] >>119 ありがとうございます すみません、質問しておいて何ですが、以下のフォーラムの記事に よるとどうやらluabindにバグがあったみたいで、仰るとおりlua_Stateの 値が関係してるようです(英語がよく分からないので間違っているかもしれません) それでluabind/detail/ref.hppを記事の下にあるものに置き換えたところ、 今のところ例外が出ずに動いています。。 ttp://www.nabble.com/Re:-Garbage-collector-crashes-if-luabind-objects-are-created-in-a-lua-coroutine-td24251470.html
121 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 16:36:17 ] lua_resume(ls, ...) で中断しているスクリプトがあるんだけど、 再開するのではなく、リセットして最初から実行しなおしたい場合がある。 このとき、どうすればいい? マニュアルには lua_newthread で作ったスレッドは解放しなくていい、 GCが管理すると書いてあるけど、さすがにいきなり ls = lua_newthread(..); って上書きするんだと、いつまでたっても古い ls の内容が削除されないよね? だってLua側からしてみれば、古い ls はあくまでも中断してるのであって、 いつ再開されるかわからないからGCで回収できないし、 古い ls はもはや不要になったよー ってことをまったく Lua 側に知らせてないし。 かといって、明示的に ls が不要になったことを伝えるために lua_close(ls); ls = lua_newthread(...); lua_resume(ls, ...); とやってみると、lua_newthread で内部エラーが発生する(メモリ違反ぽい) どうすればいいですか?
122 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 18:37:55 ] >>121 >いつ再開されるかわからないからGCで回収できない んな事はない。 スレッドでも他のデータでも、参照できなくなったらGCで回収される という事に変わりはない。
123 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 18:56:50 ] >>122 でも C のレベルでは、参照されているかどうかってわからないんじゃない? つまり、lua_newthread() した直後は、 Lua のオブジェクトからは参照されていない thread ができるわけですよね。 逆にいうと、lua_newthread() しただけだとどこからも参照されていない事になるから、 lua_setglobal か何かを使って、どこかから参照してあげないといけないとか?
124 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 19:50:44 ] どこのlua_newthreadの解説読んでるのか知らんが、 「新しいスレッドを"スタックに積み"……」って書いてないか?
125 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 19:59:52 ] www.lua.org/manual/5.1/manual.html#lua_newthread ここみてますけど、でもさすがに、スタックに積んだままじゃほかのことできないでしょ。 元の質問された方がどういう風に使っていたかによるけど。
126 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 20:09:46 ] lua_newthreadの直後はC関数のスタックから「参照」されてるし そのあとLuaで参照したいなら戻り値なりグローバル環境なりに押し込めばいいし C側だけで管理したいならレジストリ+luaL_refとか使えばいいだろ 何がしたいんだかわかんねーよ
127 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 20:12:10 ] 新しいスレッドを積むのはいいんだけど、 古いスレッドが不要になったということをどうやってLUAに知らせるの? 最初に ls = lua_newthread(...); lua_resume(ls, ...) を実行したとして、ls は中断状態のまま残っていると。 で、中断状態をやめて、最初から実行したいということで、いきなり ls = lua_newthread(...); lua_resume(ls, ...) をもう一度呼び出すと、古い ls が上書きされるけど、古い ls への参照も、 なにもかもまったくいじっておらず、ただ単に新しいスレッドを追加しただけにすぎないわけで。 古い ls の参照カウンタをデクリメントするなり、古い ls への参照を 削除するなりの処理がまったく入っていないと。
128 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 20:38:13 ] C++とLuaスクリプトの連携をしたいお年頃なんですが、 toluaとluabindだったらどちらが安定してる感じですか?
129 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 21:20:37 ] >>127 だから削除したいならスレッドの参照を潰せばいいだけでしょ? 自分で最後に答え書いてるじゃん! 中断中のコルーチンが参照されなくなった場合に GC 対象になるかどうかは マニュアルにも明言されてない、どっちなの? って質問なら確かにわかりにくいとは思うが。 int main(int argc, char* argv[]) { lua_State* L = lua_open(); luaL_openlibs(L); lua_State* thread = lua_newthread(L); luaL_loadstring(thread, "print('co1'); coroutine.yield(); print('co2');"); lua_resume(thread, 0); //lua_settop(L, 0); lua_gc(L, LUA_GCCOLLECT, 0); lua_resume(thread, 0); lua_close(L); return 0; } lua_newthreadで積んだスレッドを潰す処理であるlua_settopの行のコメントを削除すると 二回目のlua_resumeの時点で落ちるところから「GC対象になる」が正解みたいやね。
130 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 21:27:07 ] >>127 は根本的なところを理解してないようだ。スタックにあるんだからpop すればいいんだよ。 まず lua_State *base = lua_newstate(); lua_State *ls = lua_newthread(base); は、 lua_State *base = lua_newstate(); lua_newthread(base); lua_State *ls = lua_tothread(base, -1) と意味的には等価ね。 ここで ls は、あくまでスタック上にあるスレッドの情報を、 直接ポインタとして参照してるだけで、別にリファレンスを持ってるわけではない lua_newthread がこれを返してるのは、単に便利だからにすぎない この状態で、lua_pop(base,1) することで、スタックの末尾にあるもの=さっき作ったスレッドが 破棄されて解放されることになる。これでスレッドが破棄された後に ls にアクセスすると、 実体がなくなってるポインタの参照になるから誤動作を引き起こす 一般的には、スレッドをスタックにつんだままにしとくのはわけわかになるので、 >>126 の言ってる通りに管理することになる
131 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 21:52:47 ] >>129 お前も使い方間違ってるよ・・・
132 名前:131 mailto:sage [2009/07/31(金) 21:59:29 ] と思ったけど、俺が間違ってる気がしてきた・・・ メインスレッドのスタックに、新しいスレッドと関数と引数を積んでlua_resumeを呼ぶ と思ったけど、違うのか
133 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 22:01:02 ] >>131 え? それだけ言われてもわかんない、どこどこ、教えて!
134 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 22:04:32 ] >>132 ってなんじゃいゴルァ!w いやそこは合ってるはずだよ、とゆーかみんなCで組み込むなら標準ライブラリのソース読もうぜ 組み込みの基本からトリッキーなものまで一通りそろってるぜ
135 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:41:44 ] lbaselib.cのauxresume(L, co, narg)の所を見るとlua_resume(co, narg)となっている。 1番目の引数がLではなくcoだということがマニュアルを読んだだけではわからなかった。
136 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 17:41:02 ] C++でPython組み込んでて 例えば Pythonのソースにスペルミスがあったとして それをC++側で知る方法が全く分からない どなたか分かりませんか
137 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 17:52:13 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
138 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 17:57:43 ] >>136 Pythonスクリプトのコンパイルエラーやら実行時エラーを取得したいっていうこと?
139 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 18:02:39 ] >>138 そのとおりです。 PyErr_Print () の出力先を変えればいいのだと思うのですが。。。うまくいきません
140 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 18:44:19 ] >>139 PyErr系はstdoutに出力するけど、これはcで定義されたstdoutではなく python で定義されたsys.stdout を呼んでいるので、その変数を上書きすれば良い。 sys.stdout 変数を書き換えるコードを最初に実行する。 const char *s = "\ import sys\n\ sys.stdout = MyStdout\n\ class MyStdout:\n\ def write(s):\n\ call_c_function(s)\n"; てやって s を実行すれば、Python側の sys.stdoutが自作クラスで上書きされる。 もちろんあらかじめ自作C関数を call_c_function で呼び出せるように登録しておく。
141 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 21:11:59 ] >>139 PyErr_Occurred で存在を確認して、PyErr_Fetch で取得
142 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 22:22:23 ] AngelScript2.17記念カキコ
143 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 23:09:19 ] >>140-141 ありがとうございます 出来ました
144 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 07:43:44 ] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
145 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 01:25:43 ] IronPython……。 開発効率はそんなに悪くないんだが、 スクリプトで書いたメソッドの実行のレスポンスが悪いような気がするなぁ。 最初の実行時に引っかかる感じ。2回目以降は問題ないんだが……。
146 名前: tor1.digineo.de mailto:age [2009/08/17(月) 17:46:38 ] Q. 自動保守#K9K?_D[L とは一体何なのか? A. 外部サイトへの突撃大好きな真性厨房 韓国突撃でお馴染みの自動保守 最近は自動焼人 ★として2ちゃんねるのボランティアにも精を出す日々 だがそんな彼にも、人間らしい部分はあったのだ… 名言集 『アパッチ砲はワシが作った』 『お前が規制系キャップ取れるか審査してやるよ』 『いつもサボってばかりのキャップがウゼえ』 『俺、100人規模の集団サイバーテロの主犯だったこともあるんだぜ』 『俺の経歴カックイイだろ?』 最近のニュース 8月15日の韓国突撃の際に歴史的大敗を喫する。ラジオでの敗戦宣言のときに声が震えていた 本人は体調不良と言っているが… ---------------------------------------------- この自動焼人 ★メールマガジンの配信停止をご希望される方は qb5.2ch.net/test/read.cgi/sec2chd/1250169591/ にて自動焼人 ★までご連絡ください
147 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:37:23 ] Xtalが 1.0.0.0になった気配
148 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:48:59 ] \ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
149 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 00:02:36 ] なん・・・だと・・・
150 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 08:49:22 ] 修正点まだあるみたいだね
151 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 13:51:23 ] XtalってC++以外からは使いにくくない? っていうか使えるんだろうか
152 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 14:17:00 ] >>151 バインド部分がテンプレートべったりなんだから、そのままではC++以外で使えるわけがない。 ぼやき。 Squirrelを.NET向けに移植しようかと考えたこともあったが、 この分野ではIronPythonが便利すぎてやる気が失せた。 起動が重過ぎる点を除けば処理速度以外は特に不満点はない。 Luaに関しては.NET判処理系のNuaがあるみたいね。
153 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 16:54:28 ] >>152 ですよねー もうちょい汎用的なバインド方法が欲しいところだ
154 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 19:43:09 ] >>151 試してないけど extern "C" {} でC言語リンケージに変換してみるとか。
155 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 05:27:30 ] IronRubyも0.6まで着てたな。Ruby on Railsが動くまでになったらしい。 Rubyも楽に組み込めるといいんだけどね。例えば、スクレイピングの部分だけまかせるとかさ
156 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 08:56:09 ] IGDAで Xtal を扱う勉強会があるみたい。 www.igda.jp/modules/bulletin/index.php?page=article&storyid=122
157 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 11:13:19 ] Xtalっておいしいの?
158 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 11:31:58 ] 食わず嫌いはいけませんよ
159 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 11:45:23 ] 4時間で6テーマか。 Xtalに特に興味があるなら別のイベントに期待って感じかな。
160 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:08:05 ] JITコンパイルでC並の速度で動く組み込み言語とかない?
161 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:19:50 ] AngelScriptがJITコンパイルできるようになったらしいが、やり方がわからない…
162 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:24:07 ] >>160 言語じゃないけど、NativeClient
163 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 00:34:11 ] 昔は高速な組み込み言語はLispだったな。 JITコンパイルじゃないが。
164 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 12:15:39 ] >>160 ttp://www.compuphase.com/pawn/pawn.htm
165 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 23:51:16 ] >>164 これ良さそうだけど人気ないのかな
166 名前:164 mailto:sage [2009/09/09(水) 02:11:46 ] 164 書いた後で発見 ttp://pawn.my-sv.net/index.php?%B4%F0%CB%DC
167 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 08:52:36 ] 現状Pythonの組み込みで満足してるというのに、他の言語を検討する必要性をまったく感じない……。
168 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 11:08:55 ] >>167 帰れ
169 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 12:24:04 ] >>160 LuaJIT 速いらしいよ。 C ほどじゃないだろうけど、Python には大体勝ってるみたい。 shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=luajit&lang2=python&box=1
170 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 14:17:34 ] Lua は JIT じゃなくても python より速いよ
171 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 14:30:54 ] IronPythonはLuaより倍ほど速いがな。(2.0.1)の場合。 2.6系ならさらに速くなってる。 ただし速いのは数値計算で、文字列計算などはPythonより遅かったりするが。
172 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 15:36:57 ] 組み込み言語って 「Cで書いた (だから速い)」と喧伝しながらこっそりと組み込むものではないのか?
173 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 15:43:13 ] たぶn Luaやリス使っている人はゲームの組み込みが多いと思われるのですが、 Pythonを組み込みに使っている人は、どんなアプリに使ってますか?
174 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 17:14:54 ] >>171 マジで!? IronPython スゴイんだな。 数値計算に関してなら、以前に計測したとき Lua は Python より2〜5倍速かったんだけど。 数値計算については .NET すごいということなのかな?
175 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 19:32:49 ] LuaJITとかCに比べたら桁違いに遅いんじゃない?
176 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 19:37:08 ] というか、Cで各プログラムと速度面で執拗に比較するやつがいるが、意味が分からない。 C/C++にスクリプト言語の動作を追加するのは柔軟性を増やすことで 開発・運用を容易にするためであって速度のためではない。 スクリプト言語で実装した部分が重いなら改めてC/C++側に移植することを考えればいいだけのこと。
177 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 19:43:51 ] ユーザがプログラムを拡張するのに使えるだろ
178 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 19:55:55 ] 組込み言語に今注目してる業界にゲーム業界があるが、 ユーザによる拡張をばりばり推進するぜ派(洋ゲー、リアルタイム物メイン)と、 そんなもん完全にアウトオブ眼中だぜ派(和ゲー、アドベンチャー系メイン)で、 まっぷたつですな。
179 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 20:10:01 ] 社風の違いだからどうにもならない。 プログラマの部長級が開放的という幸運なケースであってさえ、 総務営業やら会社も巻き込むとやっぱり日本的感覚で ゲームの内情を客に見せるのは御法度になるね。 プログラマ出身のワンマン社長のところしかありえないでしょう。
180 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 09:18:47 ] プラットフォームの違いもある。 洋ゲーと言えども、360やPS3でMODを許しているものは少ないだろう。 >>178 の(和ゲー、アドベンチャー系メイン)ってPCのエロゲ・ギャルゲのことを 指してるんだろうけど、俺としては違和感があるなぁ。
181 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 23:34:31 ] ttp://www.amazon.co.jp/Programming-Lua-プログラミング言語Lua公式解説書-Roberto-Ierusalimschy/dp/4048677977/ この本持ってる人いる? luaを始めて見ようと思ってamazonで検索して出てきて最新ぽいから買おうと思ってるんだけど
182 名前:デフォルトの名無しさん mailto:sage [2009/09/16(水) 21:34:58 ] >>181 読んでみようと思って大きな本屋まで行ってきたが、 SQLiteの本とDirectXの本読んでたら満足しちゃってそのまま帰ってきてしまった。
183 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 05:14:33 ] >>181 リファレンスマニュアルの日本語訳も収録してるなら長く使えそうかも。 リファレンス読んでよくわからないところを本文で確認とかできそうだし。 sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html よくここにお世話になるんだけど、内容が古いのか、 本家の英語版にくらべると結構抜けがあるんだよね。
184 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 10:12:06 ] >>182 おいw
185 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 18:27:44 ] ttp://blog-imgs-26.fc2.com/d/i/n/dinalia/WS000206.jpg このSSで使用してるソフトご存知の方いたら教えていただけませんか
186 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 21:15:21 ] ttp://mystone.jp/ ttp://tibid.seesaa.net/
187 名前:186 mailto:sage [2009/09/17(木) 21:23:49 ] もしかしてエディタの方なら ttp://www.vector.co.jp/vpack/browse/pickup/pw7/pw007523.html
188 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 21:23:50 ] >>185 NoEditor
189 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 12:39:47 ] ご回答ありがとうごじあましたー
190 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 16:57:06 ] メインアプリ起動後に裏で常にLuaを複数同時に動かして プラグインのようなことをさせたいのですが 何か参考になるサイトやソースコードはないでしょうか?
191 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 06:26:45 ] >>190 メインと切り離す必要が本当にあるならプロセス間通信。 メインの内部で別スレッドを作って回すだけでいいならマルチスレッド。
192 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 09:17:46 ] マルチスレッドだと今度はリソースのロックとかがめんどくさいから、 コルーチンで協調的マルチスレッドにするとかどうですか?
193 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 09:51:46 ] >>191-192 貴重な意見ありがとうございます コルーチンで実装してみて上手く行かないようなら マルチスレッドを試す方向で行こうと思います
194 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 14:57:40 ] オレの場合、最初はコルーチンで実装してたが早々にCPUリソースが足りなくなって マルチスレッドに移行したがな。 ゲームで使用するリソースを開始前に一括してロードするような FPS的な仕様にしないと単独スレッドの実装は難しい。
195 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 13:19:32 ] >>190 が言ってるような 一つのソフト上で同時に複数の Luaスクリプトを動かす事って可能なの? 変数やスタックがバッティングしそうな気もするし 実際そういうことをしてるアプリ見たことないな
196 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 13:21:09 ] lua_Stateを複数作ってそれぞれ別管理すればいいだけじゃ?
197 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 13:59:39 ] ですね。 Luaはインタプリタの状態がグローバルにならない作りになってる。
198 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 21:44:36 ] V8も以前は・・・
199 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 09:55:14 ] Lua Programming Gems に、 Lua のコルーチンを改造してマルチスレッドにするという記事があるみたい。 www.lua.org/gems/ 本は読んでないけど、サンプルコードがダウンロードできる。 Enhanced Coroutines in Lua Patrick Rapin
200 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 14:32:03 ] 何かが引っかかると思ったら、コルーチンでLuaを複数回して 更にLua内でもコルーチンを使うからか なんか富豪だな
201 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 15:38:36 ] 総合的な処理速度はSquirrelとLuaではどちらが上ですか?
202 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 15:49:56 ] >>201 単純な数値計算ではLuaの方が倍くらい早い。 が、いずれにせよCなどの静的型付言語よりは10分の1以下のスピードなので、 あまりヘビーな処理はさせないようにすること。 とはいえ、80:20の法則で大部分のコードはスクリプト側に移行できるはず。 処理能力が足りなくなったら下回りからC/C++に再度移植していく。
203 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 15:55:21 ] >>202 そうですか、一見するとSquirrelはLuaの欠点を補い 構文もC/C++に近いなど利点ばかりかと思っていたけど それなりに欠点があってゲーム用に改良された割には 未だ使用例が少ないのが現状みたいですね
204 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 16:14:07 ] >>203 いや、C++で書いてたころは普通にSquirrel使ってたよ。 とりあえず基本的なレベルでの不満はない。 オブジェクトの寿命は常に問題になるけどね。 今はもうC++でプログラムは書かないようにしてるから関係なくなった。
205 名前:デフォルトの名無しさん mailto:sage [2009/09/30(水) 18:40:24 ] >>204 気になるなw > 今はもうC++でプログラムは書かないようにしてるから関係なくなった。 今は何で書いてるんですか? .NET系?
206 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 05:46:32 ] >>204 C#+IronPythonだ。レポはこのスレに何回も書いてるのでログを見てくれ。 しかし静的型付言語でいいならBooでもいいかも……(はっきり言ってこっちの方が速いし) まあ今回は途中まで作ったからIronPythonでやってしまう予定だけど。
207 名前:デフォルトの名無しさん mailto:sage [2009/10/02(金) 05:47:14 ] 204 → 205
208 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 12:21:55 ] Luaステートを増やした(同時実行した)場合のGC負荷は 単純計算でステート数分増えるのかな? 検証してるサイトないか探したけど見当たらない