【Lua】組み込み系言語総合 その6【Squirrel】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/03/10(日) 15:10:32.28使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/
その他の参考URLは>2から
■前スレ
【Lua】組み込み系言語総合 その5【Squirrel】
http://toro.2ch.net/test/read.cgi/tech/1321063450/
■過去スレ
その4 http://hibari.2ch.net/test/read.cgi/tech/1301414458/
その3 http://hibari.2ch.net/test/read.cgi/tech/1272643397/
その2 http://pc12.2ch.net/test/read.cgi/tech/1243210301/
その1 http://pc12.2ch.net/test/read.cgi/tech/1205208141/
プログラミング言語 Lua
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/
0173デフォルトの名無しさん
2013/08/07(水) NY:AN:NY.AN0174デフォルトの名無しさん
2013/08/07(水) NY:AN:NY.AN0175デフォルトの名無しさん
2013/08/07(水) NY:AN:NY.AN一応、asBEHAVE_GET_WEAKREF_FLAGを使って弱参照にしてみたり、
asOBJ_GCつけてメソッド入れてやってみたんだけど上手く行かないんだ。
asIScriptFunctionが内部で持ってるデリゲート用のオブジェクトが上手く解放できないみたい。
0176デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.AN循環参照にはならない筈なのに解放漏れがあるならそれは
何処かで参照カウント減らして解放するのを忘れているだけなんじゃないか
としか言えない
0177デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.AN\\
\\\
\ ∧_∧
( ´・ω・)
G と) ガッ >>174
ヽ⌒)、 \人∧__∧
 ̄ (_) >`д´)')
∨つ /
0178デフォルトの名無しさん
2013/08/18(日) NY:AN:NY.ANhttp://www.gamedev.net/topic/646723-angelscript-2271-is-here-so-soon-yes/
バグフィックス
メモリフットプリントの減少
void expressionで関数の出力引数を省略できる
デフォルト引数を匿名に出来る
0179デフォルトの名無しさん
2013/08/29(木) NY:AN:NY.AN0180デフォルトの名無しさん
2013/08/30(金) NY:AN:NY.AN/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
0181デフォルトの名無しさん
2013/08/31(土) NY:AN:NY.AN0182デフォルトの名無しさん
2013/09/01(日) 10:45:33.660183デフォルトの名無しさん
2013/09/01(日) 12:16:25.91ほとんどが動的型付けだから
コード補完の性能はどれも似たようなもの
むしろ使い慣れた開発環境・エディタが対応しているかの方が重要だと思う
0184デフォルトの名無しさん
2013/09/01(日) 13:52:27.440185デフォルトの名無しさん
2013/09/01(日) 15:20:57.01VS&C#にC#だな。
0186デフォルトの名無しさん
2013/09/01(日) 15:56:48.03みたいなツッコミでOK?
0187デフォルトの名無しさん
2013/09/01(日) 16:01:13.71って感じでさらに脱線させればOK?
0188デフォルトの名無しさん
2013/09/01(日) 18:35:17.50絵空事ばかり
世迷い言に人々を巻き込みやがって
太平妖術だよ
0189デフォルトの名無しさん
2013/09/01(日) 18:36:18.64┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0190デフォルトの名無しさん
2013/09/01(日) 20:38:37.260191デフォルトの名無しさん
2013/09/02(月) 00:35:21.080192デフォルトの名無しさん
2013/09/02(月) 22:27:39.45ラッパーとインタフェースの自動生成が捗る?
0193デフォルトの名無しさん
2013/09/02(月) 22:41:22.04最近のは知らんが
0194デフォルトの名無しさん
2013/09/04(水) 16:57:01.010195デフォルトの名無しさん
2013/09/04(水) 17:20:42.93を繰り返してるうちに嫌になるな
生成されたシンボル名が1000文字突破してるの見て
めまいがしたのもいい思い出だ
0196デフォルトの名無しさん
2013/09/04(水) 18:12:40.97luabindより楽なケースもあればバインダ使わず生で書いたほうが楽なケースもある
その上で、SWIGを選択するような状況でダメだというなら
他の選択肢はtoluaぐらいしかない
で、SWIGとtoluaを比べると
冗長なのはデメリットだが依存せずピュアコードを吐くのはメリットなので好みの問題として
多言語対応でつぶしが効くという1点においてSWIGの勝ちかなと思うよ
0197デフォルトの名無しさん
2013/09/10(火) 19:15:01.410198デフォルトの名無しさん
2013/09/10(火) 19:36:31.380199デフォルトの名無しさん
2013/09/11(水) 08:36:58.960200デフォルトの名無しさん
2013/09/11(水) 16:59:49.050201デフォルトの名無しさん
2013/09/11(水) 22:45:42.730202デフォルトの名無しさん
2013/09/11(水) 22:51:01.710203デフォルトの名無しさん
2013/09/11(水) 23:26:48.79時間のかかる処理だけをネイティブコードに
の方が開発しやすいかもしれない
0204デフォルトの名無しさん
2013/09/11(水) 23:30:18.160205デフォルトの名無しさん
2013/09/14(土) 03:21:57.790206デフォルトの名無しさん
2013/09/15(日) 07:46:57.160207デフォルトの名無しさん
2013/09/15(日) 08:12:11.62〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0208デフォルトの名無しさん
2013/09/15(日) 12:52:09.81てかそういう用途としてdll使うのってもう流行ってないんかな?(昔のエロゲとか)
呼び出し元を変更したらコンパイルし直しになるのはスクリプトだって同じだし、バインダも必要ない。
もっぱらLGPLの回避法としてしか見なくなった
0209デフォルトの名無しさん
2013/09/15(日) 13:28:21.980210デフォルトの名無しさん
2013/09/15(日) 14:55:12.130211デフォルトの名無しさん
2013/09/15(日) 16:54:49.610212デフォルトの名無しさん
2013/09/15(日) 17:45:32.190213デフォルトの名無しさん
2013/09/15(日) 21:06:15.98fiberやlongjmpを使ったら出来ない事はないな
だがライターにVisuaStudio入れてもらうとか出来ないだろ?
ライターには簡単にプログラムをインストール・実行できる環境が必要だ
プログラマーにも
・コンパイルから実行までが速い(実行前にネイティブコード生成とか最適化をしないから)
・リフレクションが使える
等のメリットはある
ラムダ式やデリゲートはC++11で使えることは使えるな
0214デフォルトの名無しさん
2013/09/15(日) 22:55:54.120215デフォルトの名無しさん
2013/09/15(日) 23:44:33.85boost他、標準ライブラリオンリーのイディオムも腐るほどあるし
メリットが感じられない
0216デフォルトの名無しさん
2013/09/16(月) 12:08:37.510217デフォルトの名無しさん
2013/09/16(月) 16:39:52.89しかし、マイクロソフトが行ったCOM拡張によって互換性が失われ、パソコン用アプリが
スマホでは動かないといったトラブルが起こるようになった。
0218デフォルトの名無しさん
2013/09/16(月) 16:50:37.98やっぱりIronPython/IronRubyとかになるんでしょうか?
できればLuaを使いたいのですが、LuaDowNetは随分長い間止まってますし
と質問しようと思って検索したら、AluminiumLua(2008年更新)ってのがあったので
これ試してから出直します。
すみませんでした。
ttps://github.com/chkn/AluminumLua
0219デフォルトの名無しさん
2013/09/16(月) 16:52:25.96たびたびすみません
0220デフォルトの名無しさん
2013/09/18(水) 12:01:03.07スクリプトだと一つのファイルに書ける
C++で何でもヘッダーに関数定義を書いたらコンパイル時間が大変な事になる
0221デフォルトの名無しさん
2013/09/18(水) 12:09:19.320222デフォルトの名無しさん
2013/09/18(水) 12:16:26.38一つのファイルに書けてありがたいだろ?
0223デフォルトの名無しさん
2013/09/18(水) 12:57:45.990224デフォルトの名無しさん
2013/09/18(水) 13:45:40.90Javaで書くとAndroidには移植しやすいかもしれないがiPhoneにはそのまま持っていけない
MonoはAndroid、iPhoneでも動くけど無料の開発環境なし
PCでも、未だにXPを使っている様な人はVMを入れていなかったり
その点スクリプト言語のVMは小さいから同梱しやすい
Dとか知らん!
0225デフォルトの名無しさん
2013/09/18(水) 14:47:00.98コミュニティの規模が小さいのでJScript一択
保守まで考えるとhackはproductとして採用できない
0226デフォルトの名無しさん
2013/09/18(水) 22:41:41.90Luaの方がスクリプトを書きなれているので、できればそっちを使いたいと思っていました。
JScriptの利用も少し考えましたが、利用方法がいまいちパッとしなかったので見送りました。
保守性は、個人/小規模利用なので大して気にしていません。
0227デフォルトの名無しさん
2013/09/19(木) 06:18:34.30/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Lua!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
∩_
〈〈〈 ヽ
〈⊃ }
∩___∩ | |
| ノ ヽ ! !
/ ● ● | /
| ( _●_) ミ/ Lua!!
彡、 |∪| /
/ __ ヽノ /
(___)
0228デフォルトの名無しさん
2013/09/24(火) 01:30:13.900229デフォルトの名無しさん
2013/09/24(火) 19:59:45.110230デフォルトの名無しさん
2013/09/24(火) 21:03:42.63アプリケーション組み込みなら、mrubyでなくとも本家のrubyでもできるし
0231デフォルトの名無しさん
2013/09/24(火) 23:53:45.130232デフォルトの名無しさん
2013/09/25(水) 00:47:43.99CSVファイルからスクリプトに変換したりとか。
0233デフォルトの名無しさん
2013/09/27(金) 11:18:33.530234デフォルトの名無しさん
2013/09/27(金) 12:04:12.820235デフォルトの名無しさん
2013/09/27(金) 18:18:42.840236デフォルトの名無しさん
2013/09/27(金) 18:33:15.820237デフォルトの名無しさん
2013/09/27(金) 23:10:20.40あとはLuaでアルゴリズム組むだけでゲームを作れるようにしておくとすごい快適
個人的には各種パラメータを、数値をイジるだけじゃなく
定義を修正しまくっても余裕なのが最高
0238デフォルトの名無しさん
2013/09/28(土) 09:12:16.18Luaだと辛いなーな部分はCで書きゃいいだけ。
0239デフォルトの名無しさん
2013/09/28(土) 11:19:10.07Cのバインディングに挫折しそうになってた頃に出会ってたら危なかった
0240デフォルトの名無しさん
2013/09/28(土) 15:57:45.920241デフォルトの名無しさん
2013/09/29(日) 00:13:43.34C++側のクラスとかもそのままスクリプトで使えるよ。
0242デフォルトの名無しさん
2013/09/29(日) 02:20:08.22┼ (\. \! * // ,/) *
+ * (ヽ、 \ + * / /) +
⊂ニ ) * + ( ニ⊃
* + ⊂、 ( ∩___∩ ノ ⊃ + *
(/(/ ヽ | ノ ヽ / 、)ヽ) ┼
+ (/ ∨ ● ●レ /⌒) 、)ヽ)
* (/' | ( _●_) ミ' /、)、)´ +
+ (/'ヽ 彡、 |∪| ノ / AngelScript!!
+ / __ヽノ / * +
┼ (___) / +
/ /
(_ ⌒丶..
| /ヽ }.
し ))
ソ トントン
0243デフォルトの名無しさん
2013/10/10(木) 19:31:49.27http://www.lua.org/
0244デフォルトの名無しさん
2013/10/10(木) 19:33:12.350245デフォルトの名無しさん
2013/10/13(日) 01:54:16.74Luaの無名関数をC関数で受け取って、
それを、C側から任意のタイミングでコールしたいんだけど、どうしたらいいの?
lua_type()の戻り値を見ると、LUA_TFUNCTION型みたいなんだけど、これはどう扱ったらいいんだろう…
0246デフォルトの名無しさん
2013/10/13(日) 06:06:13.41luaL_refとluaL_unrefで参照数を操作して、生かして、
生かしておいたのを lua_rawgetiでスタックにプッシュして
lua_call系でいいんだね
0247デフォルトの名無しさん
2013/10/25(金) 14:27:11.51Luaにエラー関数を設定する場合は
lua_pcallにてエラー関数のスタックを設定しますが、
これをコルーチンで行う場合、
lua_resumeを呼びだすのですがエラー関数の設定が見当たらないです。
どこで設定すると呼びだされるようになるのでしょうか…。
お願いします!
0248デフォルトの名無しさん
2013/10/25(金) 15:45:29.070249デフォルトの名無しさん
2013/11/02(土) 00:38:50.34luaに自分自身を渡して、lua側で値を更新させて、自分自身に反映させるのは
どうすればいいでしょう。lua_pushlightuserdataじゃインスタンスは別になる?
0250デフォルトの名無しさん
2013/11/02(土) 01:04:30.61値の更新をC側でできるようにしてから
C側の内部でLuaを使う
0251デフォルトの名無しさん
2013/11/02(土) 01:06:57.46すみません。C++とCで分けるという所はどういう感じで分けるのでしょうか。
0252デフォルトの名無しさん
2013/11/02(土) 10:59:08.34userdataにメタテーブルを仕込んでやればできる。他のやり方も
あると思うけど。
例えばuserdataにthisや関数へのポインタを入れておいてメタテーブルに
cfunctionを登録しておく。登録したcfuntcionではuserdataから
thisとかを取り出して何かすればいい。
0253デフォルトの名無しさん
2013/11/02(土) 12:43:26.03やりたいことは、リコンパイルしなくても値を変更できるようにしたいです。
そこで、luaにオブジェクトの初期処理や更新処理を持っていって、描画はC++で
しようと思ってます。
教えていただいた内容を調べながら試してみます。
0254デフォルトの名無しさん
2013/11/02(土) 12:55:58.52C++でLuaチャンク実行→Luaチャンク実行終了→変数の値を読み出して利用する。
LuaのプログラムからCallbackさせながら、C++プログラムと協調動作させる
必要があれば、252のようにする必要があるけど。
0255デフォルトの名無しさん
2013/11/02(土) 13:10:44.93初期処理でクラスの各項目値は、luaのメソッドを呼び出してその戻り値を受けるので
出来たのですが、更新処理となるとロジックがあって、単純に戻り値を受け取るだけだと
中々難しいなーと思って、ロジックもluaに移そうと思っていました。
そういうのはやっぱり、lua⇒C++の関数⇒luaみたいな感じになるんですね。
自分のイメージとしてはC++でインスタンスをluaに渡す⇒luaで引数のインスタンスに対して
色々な処理を行い値を変更する⇒luaメソッド終了⇒C++に処理が戻るみたいな感じです。
0256デフォルトの名無しさん
2013/11/03(日) 10:39:57.230257デフォルトの名無しさん
2013/11/03(日) 11:14:19.88Cならlua_pushlightuserdataでいいよ
0258デフォルトの名無しさん
2013/11/03(日) 11:24:38.17Lua側の記述とLuaチャンクの実行の仕方を工夫するしかないんじゃないか?
0259デフォルトの名無しさん
2013/11/03(日) 12:00:06.70lua_pushlightuserdata等でlua内の変数に渡しているときに、
このlua内の変数のスコープがはずれたりしたときに、
このポインタをdeleteしたいのだけどできますか?
0260デフォルトの名無しさん
2013/11/03(日) 14:45:33.09可能ならuserdataで確保したメモリそのものに割り当てるか
スマポとかで包んでからuserdataに突っ込む感じになるかと
0261デフォルトの名無しさん
2013/11/03(日) 18:17:24.790262デフォルトの名無しさん
2013/11/03(日) 21:02:45.16リファレンス見ても機能が少ないだけで何が嬉しいか分からなかった。
0263デフォルトの名無しさん
2013/11/04(月) 00:14:11.47そこまでやるならもうAngelScriptの方がいいような気がする。
0264デフォルトの名無しさん
2013/11/04(月) 00:19:18.11ポインタもってるだけだから圧倒的にシンプルだよ。luaがわでは寿命管理しないけどとにかくデータの参照を維持したい場合に使う
0265デフォルトの名無しさん
2013/11/04(月) 00:23:01.58tableじゃなくてuserdataのmetatable使うのか。面白そうなのでやってみた
配置newを定義して__gcをセットしたmetatableを設定する. gcでデストラクタを明示的に呼ぶ
class a{
void *operator new(size_t size, lua_State *L) {
void *p =lua_newuserdata(L, size);
lua_newtable(L);
lua_pushcfunction(L, gc);
lua_setfield(L, -2, "__gc");
lua_setmetatable(L, -2);
return p;
}
static int gc(lua_State *L) {
a *p = static_cast<a *>(lua_touserdata(L, -1));
p->~a();
return 0;
}
};
// newと同時にLUAスタックにプッシュされる
a *a1 = new(L) a;
0266デフォルトの名無しさん
2013/11/04(月) 01:05:41.10lua内の変数のコピーも認識できないとdeleteしていいかわからないなぁ。
0267266
2013/11/04(月) 01:11:07.790268デフォルトの名無しさん
2013/11/04(月) 01:56:57.820269デフォルトの名無しさん
2013/11/04(月) 02:42:16.330270デフォルトの名無しさん
2013/11/04(月) 03:46:09.89あんまりそういう作りになってないなぁ
0271デフォルトの名無しさん
2013/11/04(月) 09:52:17.93newではないコンストラクタを使うからできるんだよ
newを使わない保証があるなら参照カウンタもいらないよ
0272デフォルトの名無しさん
2013/11/04(月) 15:21:11.51> このlua内の変数のスコープがはずれたりしたときに、
■ このスレッドは過去ログ倉庫に格納されています