06/10/14 13:18:27
/\
/ =.\
// ̄\ .\
/| |へノ⌒| //\
\ \_// .\
\ = / \
\/ \
∧∧∧∧\
( `/) >ヽ∧
/ / / `∀> ∧∧
◇( イ◇ ( ,つ`∀´>
/ヽ )) ヽ )ヽ )と , イ
(_/(_/(_/(_/ノ(_/⊂ノ> )J
/ ̄Y ̄`|/ ̄^Y ̄ヽ/ ̄ ̄Y `´ ̄\
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
このスレはキムチ軍の奇襲により占領されました
3:デフォルトの名無しさん
06/10/14 13:28:44
色々リンク辿ってたら URLリンク(luaforge.net) を発見。
でも、ここのtable.clone関数は浅いコピーしかやってくれない模様。
色々と不足してるっぽいし、パッチとか投げたら喜ばれるのやもしれず……。
4:デフォルトの名無しさん
06/10/14 13:31:55
>>2
ちょw
5:デフォルトの名無しさん
06/10/15 00:39:00
テーブルは確かに必要な関数が多いかもしれないけど
実際のゲームとかphotoshopとかに組み込まれている奴って
テーブル関係の関数をどういう風に実装してんのかな
6:デフォルトの名無しさん
06/10/15 12:16:50
ム板って即死判定とかあったっけ?
とりあえず保守を兼ねて思いついたことを書くと、テーブルを書き出す前に
まず_Gとかを再帰的に舐めて関数テーブルを自力で作れば、関数名も書き出せて
復元できるようになるのでは?と思った。まだ試してないけど。
7:デフォルトの名無しさん
06/10/15 20:38:34
Luaを使ったゲームとかアプリで実際にどういう風に利用されているか読むのも
面白いな
テクニックとか盗めるし
8:デフォルトの名無しさん
06/10/16 13:09:03
C と Pascal を合わせたような言語で、Gentee というプログラム言語を
見つけたけど、誰か使っている人いる?
URLリンク(www.gentee.com)
9:デフォルトの名無しさん
06/10/16 18:33:32
>>2
消えうせろ
>>8
タイトルをよく読め
10:デフォルトの名無しさん
06/10/16 20:55:10
>>9
ここはLuaだけじゃなくて、LightWeight全般もサブで取り扱うスレです。
前スレをよく読め
11:デフォルトの名無しさん
06/10/16 22:17:34
そういやスレタイ変えるって話が出てたけど結局そのままだったね。
あとせっかく立ててくれたまとめWikiを忘れたらだめだよ。
[関連]
Lua/組み込み系言語 Wiki*
URLリンク(wikiwiki.jp)
12:デフォルトの名無しさん
06/10/16 23:13:17
実際にどういう風に使われているのか事例を紹介したりして、
余力があったらソースを解説したらいいんじゃないの
13:デフォルトの名無しさん
06/10/17 18:57:43
>>11
そのWikiってこのスレのまとめWikiだったのか!
14:デフォルトの名無しさん
06/10/17 19:24:21
#でコメントってもうないのですよね?
15:デフォルトの名無しさん
06/10/17 20:01:31
shebang行は無視してくれるけどね
16:デフォルトの名無しさん
06/10/17 23:43:19
リフレクションみたいなことが出来るってほんとうれすか
17:デフォルトの名無しさん
06/10/19 07:28:17
定期保守
18:デフォルトの名無しさん
06/10/19 20:08:41
天上天下唯一最高神が保守
19:デフォルトの名無しさん
06/10/19 20:33:56
引数の個数によるオーバーロード
function makeoverload(...)
local funcs={...}
return function(...) local args={...} return funcs[#args+1](...) end
end
function funcA()
print("引数なし")
end
function funcB(a)
print("1引数", a)
end
function funcC(a, b)
print("2引数", a, b)
end
func = makeoverload(funcA, funcB, funcC)
func()
func(123)
func(123, 456)
20:デフォルトの名無しさん
06/10/19 21:26:06
めっちゃ遅くなりそうだな
21:デフォルトの名無しさん
06/10/19 22:55:08
lua 5.0 からはそんなことしなくても最初っから arg っていう変数に束縛されてるよ。
Programming in Lua の2版には、確か ... ではなく arg の方を使えって書いてあったような気がした。
22:デフォルトの名無しさん
06/10/21 23:36:50
ほしゅ
23:デフォルトの名無しさん
06/10/22 22:46:38
文字列に文字列を挿入するとか
置換する関数が標準であればいいのに
Luaのgsubは使い方が判りづらくてウンコだ
24:デフォルトの名無しさん
06/10/24 19:13:22
保守
25:デフォルトの名無しさん
06/10/24 22:39:44
保守
26:デフォルトの名無しさん
06/10/25 22:01:41
1オリジンやめれ
27:デフォルトの名無しさん
06/10/26 07:11:13
チーズはどこにいった
28:デフォルトの名無しさん
06/10/27 07:35:23
本スレどこだ
29:デフォルトの名無しさん
06/10/29 20:30:04
保守
30:デフォルトの名無しさん
06/10/30 18:50:04
定期保守
31:デフォルトの名無しさん
06/10/30 19:51:42
小ネタ投下。
luaL_newmetatableで作成されたメタテーブルを持つユーザーデータならtnameを返し、それ以外ならtype()の結果を返す。
たとえばio.openで開いたファイルなら"FILE*"という文字列になる。
debugライブラリを使ってるのがマズイ
function type_ex(o)
local t = type(o)
if t=="userdata" then
local m = getmetatable(o)
if m then
for k,v in pairs(debug.getregistry()) do
if m==v then
if type(k)~="string" then
return tostring(k)
end
return k
end
end
end
end
return t
end
32:デフォルトの名無しさん
06/11/01 06:24:32
ていうか誰か速くJUMP文実装してくんねーかなぁ~~
33:デフォルトの名無しさん
06/11/02 18:54:59
スパゲティコードでよければ
↑の人が実装する
34:デフォルトの名無しさん
06/11/07 01:36:18
temp = { 500, x = 200, 'aaa', y = 300 }
というテーブルがあって、
temp[2]で200を取得することって出来ない?
35:デフォルトの名無しさん
06/11/07 14:23:55
できないと思う。
temp[2]は'aaa'になる。
嫌なら
temp[2] = temp.x みたいにするとか。
36:デフォルトの名無しさん
06/11/07 19:59:45
前スレの978みたいなやつ。
循環参照にも対応してるはず。
テーブルを渡すとそのテーブルを復元するコードを返す。
loadstring(save_table(t))()で元のテーブルのコピー。
↓をlua.exeに食わせると(ry
print((string.gsub([==[function save_table(data)@;assert(type(data)=="table")@
;local s,l,c={},"",""@;local function dump(x)@;;local t,r=type(x),nil@;;if t==
"nil" or t=="boolean" or t=="number" then@;;;r=tostring(x)@;;elseif t=="string
" then@;;;if x:find("[%[%]]") then@;;;;x=x:gsub("%%", "%%%%"):gsub("%[", "%%("
):gsub("%]", "%%)")@;;;;r="(u[["..x.."]])"@;;;else@;;;;r=" [["..x.."]] "@;;;en
d@;;elseif t=="table" then@;;;if s[x] then@;;;;r="m[\""..s[x].."\"]"@;;;else@;
;;;assert((not getmetatable(x)) or (not getmetatable(x).__tostring))@;;;;local
k=tostring(x)@;;;;s[x]=k@;;;;l=l.." m[\""..k.."\"]={}"@;;;;r="s(\""..k.."\",{
"@;;;;for k,v in pairs(x) do@;;;;;r=r.."["..dump(k).."]="..dump(v)..","@;;;;en
d@;;;;r=r.."})"@;;;end@;;end@;;return r@;end@;s[data] = "r"@;for k,v in pairs(
data) do@;;c = c.." r["..dump(k).."]="..dump(v)@;end@;return [[do local r,m={}
,{r=r}local function s(n,t)local r=m[n]for k,v in pairs(t)do r[k]=v end return
r end local function u(s)return s:gsub("%%%)","]"):gsub("%%%(","["):gsub("%%%
%","%%")end]]..l..c.." return r end"@end]==], "\n",""):gsub("%s*@%s*", "\n")
:gsub(";", "\t")))
37:36
06/11/08 17:21:17
少し修正。
print((string.gsub([==[function save_table(data)@;assert(type(data)=="table")@
;local s,l,c,e,a={},"","",false,false@;local function dump(x)@;;local t,r=type
(x),nil@;;if t=="nil" or t=="boolean" or t=="number" then@;;;r=tostring(x)@;;e
lseif t=="string" then@;;;if x:find("[%[%]]") then@;;;;x=x:gsub("%%", "%%%%"):
gsub("%[", "%%("):gsub("%]", "%%)")@;;;;r="(u[["..x.."]])"@;;;;e=true@;;;else@
;;;;r=" [["..x.."]] "@;;;end@;;elseif t=="table" then@;;;if s[x] then@;;;;r="m
['"..s[x].."']"@;;;else@;;;;assert((not getmetatable(x)) or (not getmetatable(
x).__tostring))@;;;;local k=tostring(x)@;;;;s[x]=k@;;;;l=l.." m['"..k.."']={}"
@;;;;r="s('"..k.."',{"@;;;;for k,v in pairs(x) do@;;;;;r=r.."["..dump(k).."]="
..dump(v)..","@;;;;end@;;;;r=r.."})"@;;;;a=true@;;;end@;;end@;;return r@;end@;
s[data] = "r"@;for k,v in pairs(data) do@;;c = c.." r["..dump(k).."]="..dump(v
)@;end@;return "do local r,m={},{}m.r=r"@;;..((a and " local function s(n,t)lo
cal r=m[n]for k,v in pairs(t)do r[k]=v end return r end") or "")@;;..((e and "
local function u(s)return s:gsub('%%%)',']'):gsub('%%%(','['):gsub('%%%%','%%
')end") or "")@;;..l..c.." return r end"@end]==],"\n",""):gsub("%s*@%s*", "\n"
):gsub(";", "\t")))
38:36
06/11/08 17:26:29
コード貼るだけではアレなのでちょっと使い方を説明。
--tableは保存しておきたいテーブル
dump = save_table(table)
--または dump = string.dump(loadstring(save_table(table)))
--ファイルに書き出す
f = io.open("hoge.lua", "w")
f:write(dump)
f:close()
--元のテーブルが復元される
table = dofile("hoge.lua")
function、thread、userdataはもちろん対応してない
39:デフォルトの名無しさん
06/11/08 19:47:35
あるスレッドである程度スタックに値を積んでいる状態で
lua_resumeを呼んで帰ってきたときに、それまでスタックに積んでいたものが見事に
なくなります。lua_call系では消えずに残っているようですが…仕様なのかバグなのか。
マニュアルに書いてあるlua_resumeを使うときはlua_newthreadで新しくスレッドを
作ってから使えっていうのはこういうことなのですね…。
40:デフォルトの名無しさん
06/11/10 18:38:07
lua.exeに食わせるとかアホな事やってないで
うpろだ使えよ
41:デフォルトの名無しさん
06/11/23 12:09:36
metaluaの使い方がわからねぇ。
42:デフォルトの名無しさん
06/11/23 13:52:08
昨日5.1 SJIS対応版を拾ってテストコードを作ってみたんだが動かないんだ。
lua_State *L=lua_open();
luaL_loadstring(L,"function Add(x,y)\r\n return x+y \r\nend\r\n");
//printf("%s\n",lua_typename(L, lua_type(L, -1)));
lua_getglobal(L, "Add");
//printf("%s\n",lua_typename(L, lua_type(L, -1)));
//printf("%s\n",lua_typename(L, lua_type(L, 1)));
lua_pushnumber(L, 1.2);
//printf("%s\n",lua_typename(L, lua_type(L, -1)));
lua_pushnumber(L, 2.3);
//printf("%s\n",lua_typename(L, lua_type(L, -1)));
if(lua_pcall(L, 2, 1, 0) != 0){
printf("残念賞:%s\n",lua_tostring(L, -1));
}
printf("%f\n",lua_tonumber(L, -1));
lua_pop(L, 1);
lua_close(L);
これだけで動くと思うんだが、lua_pcallした後は
「残念賞:attempt to call a nil value」
合間のprintfを有効にすると
function,nil,function,number,number って出る。
初っ端から駄目駄目な俺に誰か助言をくれ~
43:デフォルトの名無しさん
06/11/23 14:09:21
>>42
残念!
44:デフォルトの名無しさん
06/11/23 14:57:13
>>42
FAQ
loadstringは評価しない。callしる。
45:42
06/11/23 16:47:09
>>44
オオゥ。そうなのか。
・・・うん、無事動きました。ありがとう。
46:デフォルトの名無しさん
06/12/01 04:10:14
==演算子でテーブルをくらべてるとき指してるテーブルが同じときにだけ__eqが呼ばれないことについて
47:デフォルトの名無しさん
06/12/02 01:21:16
>>46
そう定義されてるから仕方が無い
48:デフォルトの名無しさん
06/12/02 03:19:41
処世術なんてききたくない
この挙動は真っ当ではないと思わないか
49:デフォルトの名無しさん
06/12/02 03:38:02
それほど酷い仕様とも思えんが・・・
むしろ"=="の意味からいったら真っ当な気さえする。
演算子をつかってboost.spirit並みの拡張をしたい
というなら話はべつだが。
50:デフォルトの名無しさん
06/12/02 03:59:33
metamethodは記述は同じでも比べられる変数の値によって実行されたりされなかったりしていいと思う?
意味的な意味で
>むしろ"=="の意味からいったら真っ当な気さえする。
__eqよんだ上で返値を無視すりゃいいじゃん
51:デフォルトの名無しさん
06/12/02 13:39:17
>実行されたりされなかったりしていいと思う?
いいんじゃん。単に言語設計上のポリシーの問題では?
>__eqよんだ上で返値を無視すりゃいいじゃん
無視するぐらいなら、呼ばなきゃいいじゃん
52:デフォルトの名無しさん
06/12/02 13:55:08
>>50
別にいいと思う。それより
意味的な意味で ← この日本語がどうかと思う。意味がわからん。
53:デフォルトの名無しさん
06/12/02 14:52:21
metamethodの機能として不完全だということは認知してもらえるんだろうか?
スクリプト実行時にその時比較される値によって実行されたりされなかったりするんだよ?
その上で「まぁべつにいいんじゃねヽ(´ー`)ノ」という意味でいいって言ってるんだよね?
だから処世術なんてききたくないっていってんだよばかばかまんこ
54:デフォルトの名無しさん
06/12/02 16:00:59
同じテーブルを指す=比較するまでもない
という設計思想なんでしょ。
不必要なことはしないというだけで、別に不完全とは思わないなあ。
55:デフォルトの名無しさん
06/12/02 17:13:58
言いたい事があるならMLでサクーシャに直接言ったら良いじゃない。
56:デフォルトの名無しさん
06/12/02 17:16:18
とりあえず「metamethodの機能として完全」の
定義をしてくれ
言語設計ポリシーの結果として選択された仕様を
完全か否かなんて議論はきわめて不毛だし。
57:デフォルトの名無しさん
06/12/02 17:17:14
>>54
仮にそういう設計思想なんだとして、だったら__eqなんて作らせないでしょ?
58:デフォルトの名無しさん
06/12/02 17:18:58
>>53
>スクリプト実行時にその時比較される値によって実行されたりされなかったりするんだよ?
で、何が困るの?
困ることが無いなら、比較速度がかなり速くなる分、
いまの実装の方が完全なんだけど。
わかる?お前定義の「完全な言語」なんてどうでいいんだよアホ。
59:デフォルトの名無しさん
06/12/02 17:20:22
>>57
はぁ?バカか?
お前__eqの意味すら理解してないんじゃないのか?
60:デフォルトの名無しさん
06/12/02 17:23:07
そろそろ釣れた宣言がくる悪寒
61:デフォルトの名無しさん
06/12/02 17:24:49
べつにつらないよw
君らばかだなホント
62:デフォルトの名無しさん
06/12/02 17:34:22
お、でたでた。バカの口癖「お前等全員バカ」。
63:デフォルトの名無しさん
06/12/02 22:46:40
どうやら尻尾巻いて逃げたようです。
彼がなぜ__eqが同一のオブジェクトでも
実行されて欲しかったのかは謎のまま。
64:デフォルトの名無しさん
06/12/02 23:59:37
>>63
そんな事書くとまた出てきちゃうだろ。
JavaのequalsとかC++のoperator==とかは同一オブジェクトでも
呼び出されるから彼の要求が特別に変というわけではない気がする。
まぁ結局は>55なんだが。
65:デフォルトの名無しさん
06/12/03 01:11:57
別になんか要求してるわけじゃないよ
挙動が気に入らなきゃvm書き換えりゃいいだけの話なんだし
66:デフォルトの名無しさん
06/12/05 12:29:24
比較時にログを出力する、という実装は不可能だわな。
それに意味があるかどうかというより、
不可能なことがある、ってのがちょっと気持ち悪いとは思う。
所詮スクリプトなんだし、そこまで求めないけど。
67:デフォルトの名無しさん
06/12/05 13:19:17
>>66
>不可能なことがある、ってのがちょっと気持ち悪いとは思う。
ナポレオン乙
68:デフォルトの名無しさん
06/12/09 08:01:03
luabindの中身見たが、なんだありゃ・・・
さっぱりわけが分からない
69:デフォルトの名無しさん
06/12/09 09:07:09
>>66
オーバーロードが一切出来ない言語できないなw
バカなお前じゃw
70:デフォルトの名無しさん
06/12/09 09:18:34
方言?
71:デフォルトの名無しさん
06/12/09 13:46:11
>>69
>所詮スクリプトなんだし、そこまで求めないけど。
ちゃんと読めよ。
72:デフォルトの名無しさん
06/12/09 18:38:16
>>71
アホかお前。お前がちゃんと読めよ。
>所詮スクリプトなんだし、そこまで求めないけど。
スクリプトじゃなければ、そこまで求めるんだろうが。
スクリプトじゃなくて、オーバーロードできない言語だと、不可能だらけ。
アホな66は使えません。
73:デフォルトの名無しさん
06/12/09 19:09:10
__eqが同一のオブジェクトでも実行されて欲しいケースなんてない、
という雰囲気にひとつ例を出したに過ぎない66に対して、
72の粘着っぷりは異常。
74:デフォルトの名無しさん
06/12/09 19:49:33
72の粘着っぷりが怖いよ。
なんかよほど言い負けた感を持ったらしいとしか思えん、何が原因かは不明だが。
75:デフォルトの名無しさん
06/12/10 18:35:05
「粘着っぷりが怖い」という粘着ぶりが怖いw
76:デフォルトの名無しさん
06/12/10 19:08:12
ほら粘着とか呼んじゃうからムキになってるじゃないか。
スルーしとけばよかったのに。
77:デフォルトの名無しさん
06/12/12 18:59:03
Lua以外の(軽量組込み系)言語の話はとんとご無沙汰な件について
もうLuaで鉄板?
78:デフォルトの名無しさん
06/12/13 01:25:31
squirrel推したいけど比較するのにluaの変なとこを引き合いにだすと粘着されそうなんでやめときますね
79:デフォルトの名無しさん
06/12/13 11:43:37
>>78
どんなものかを知るためにぜひやってほしいにょ
80:デフォルトの名無しさん
06/12/13 19:41:44
>>78
俺もsquirrelを推したいけど別にLuaの変なとこを指摘することもないな
むしろLuaのほうが環境整ってるせいでsquirrelのほうが使いづらい感が…
81:デフォルトの名無しさん
06/12/14 02:02:30
>>80
”環境”って日本語ドキュメント?binder?eclipseのplugin?
各apiを実行するとどういう風にstackがアクセスされるのかのきちんとした仕様の明示はほしい
これは外人もいってたけど
82:デフォルトの名無しさん
06/12/14 08:23:13
>>81
前も書いたけどluabindのあるなしの問題
stackなんか考えるのだるいじゃん
83:デフォルトの名無しさん
06/12/14 09:06:07
squirrelならscriptで使うクラス等の型はscriptで書いてそれを最初にdofileさせるだけだよ
データの送受はインスタンスや配列の中身を直接アクセスするだけで大抵すんじゃうし
native closureの初期下時の組み込みとnative closure内での引数取得と
script側のclosureをcallするとき引数を積むくらいだよstack使うのなんて
実際必要ないからbinderが発達しないんだと思う
84:デフォルトの名無しさん
06/12/16 10:08:48
squirrelをざっと眺めてみたけど、Cと文法が近かったりビット演算が
標準だったり"++"と"+="があったり、いいかも。
ただ、配列とテーブルが違ったり、ジェネレーターとコルーチンが
違ったり、Luaに比べてやや複雑か。気になったのは、
・Luaだとtbl.abcとtbl["abc"]は同じ意味だけどsquirrelでも
同じ方法はある?
・classとtableの関係は?
・参照カウンタ+GCの意味は循環参照検出にGCを使うという意味?
パフォーマンスにはどんな影響が?
あたりか。
85:デフォルトの名無しさん
06/12/16 14:23:14
>・Luaだとtbl.abcとtbl["abc"]は同じ意味だけどsquirrelでも
できるよー
>・classとtableの関係は?
ハッシュテーブルの基盤を使ってclassが作られてるようなかんじ?
>・参照カウンタ+GCの意味は循環参照検出にGCを使うという意味?
そうみたい。
でもまともに書いてれば循環参照なんてありえんし
コンパイルオプションで参照カウンタオンリーにしてしまえ
86:デフォルトの名無しさん
06/12/17 14:35:45
squirrelのgeneratorはjump使ったトリック、threadはvmのstate切り替え
luaのcoroutineはどうなってるの?
87:デフォルトの名無しさん
06/12/18 00:25:35
>>86
state切り替え
coroutine.create()から呼ばれるluaE_newthread()見れば、新しいlua_State作ってるのがわかる
88:デフォルトの名無しさん
07/01/01 20:05:52
squirrelはC++だから流行らないとみた。
89:デフォルトの名無しさん
07/01/02 02:35:20
今のところ他人のコードを見たくない言語ナンバーワンだ・・・
90:デフォルトの名無しさん
07/01/02 08:20:31
Cは記号に頼りすぎ。
91:デフォルトの名無しさん
07/01/05 04:39:10
>89
俺はbrainf*ckだな
92:デフォルトの名無しさん
07/01/05 15:18:31
>>91
まず見ることがないじゃないかw
93:デフォルトの名無しさん
07/01/09 00:18:29
なあ、すごく基本的なこと聞いていい?
最近Luaを知って調べ始めたんだが、自作プログラムの外部スクリプトとして
Luaを組み込む方法が全然見つからないんだが、どこへ行けば詳しく書いてるだろうか?
94:デフォルトの名無しさん
07/01/09 00:36:49
>>93
ソースに付属しているインタープリタみれば一発じゃん。
95:デフォルトの名無しさん
07/01/09 00:56:16
>>94
すまん、ソースダウンロードしてみたがさっぱりわからなかった。
Boostとかだと、~をinlcudeしろ、~.libのあるところにパスを通せ、といった記述があるのだが、
そういうのが全然見当たらないんだが・・・
96:デフォルトの名無しさん
07/01/09 01:03:26
「lua embed」でググレ
97:デフォルトの名無しさん
07/01/09 01:17:19
>>96
㌧!
やっと解説してるところが見つかった。
98:デフォルトの名無しさん
07/01/09 19:59:01
>>97
で、どこにあったの?
99:デフォルトの名無しさん
07/01/10 00:14:33
>>98
URLリンク(www.codeproject.com)
ただ、ビルドはできたが読み込む際のluaopen_ioで落ちる。
ちょっと作業する時間なかったので、原因はまだ調べてない。
100:デフォルトの名無しさん
07/01/10 20:07:13
The Pawn language
URLリンク(www.compuphase.com)
だれも使ってなさそうな、組み込み言語
101:デフォルトの名無しさん
07/01/11 22:24:14
ゲーム用のスクリプトを探していて、最近Luaを触り始めた者です。
質問なんですが、C++側でlua_Stateをいくつか作ったとき、そのlua_State間で
C++の関数を通じてテーブルの参照渡しをすることはできますか?
どうも値渡しならスタックを再帰でゴリゴリやってできそうな感じですが…。
102:デフォルトの名無しさん
07/01/12 18:30:38
>>101
lua_xmove かレジストリで良いのかな?
103:デフォルトの名無しさん
07/01/12 22:49:52
>>102
lua_xmoveもレジストリも同じglobal stateのスレッド同士じゃないとだめ。
104:101
07/01/13 17:04:49
ご回答どうもです。
もう少し方法を考えてみようと思います。
ありがとうございました。
105:デフォルトの名無しさん
07/01/24 14:39:15
ROのほむのAIがLuaで記述できるので触っただけです。
別にLuaが好きなわけじゃないんだからね!
106:デフォルトの名無しさん
07/01/26 13:07:45
帰値がdoubleなのはヘッダいじるとして
cdeclなのが気に食わないのはどうしたらいいものか...
107:デフォルトの名無しさん
07/02/08 05:10:19
部分文字列ってどうやって取得するの?今は
string.char(string.byte(str, x, y))
としてるんだけど、これであってるのかなあ。
Lua 2日目の初心者です。
108:デフォルトの名無しさん
07/02/09 06:24:11
なぜstring.subを使わない
109:デフォルトの名無しさん
07/02/09 16:26:00
最近ゲーム内スクリプトに使われることが多いのかな?
110:デフォルトの名無しさん
07/02/09 17:56:11
>109
昔からいっぱい使われてるじゃないか。
111:デフォルトの名無しさん
07/02/09 17:56:42
つっても2年くらいだけどさ
112:デフォルトの名無しさん
07/02/10 04:55:56
>>108
string.subはstring.gsubとおなじで文字列置換だと思ってた。
正直すまんかった。
113:デフォルトの名無しさん
07/02/10 13:23:01
homeworldはこれ使ってるね
114:デフォルトの名無しさん
07/02/10 21:12:44
>>113
FarCryもつかってたな
115:デフォルトの名無しさん
07/02/11 06:31:15
Homeworldで検索したら凄いなこれ・・・
日本人よ、アニメ絵ゲームで萌えてる場合じゃないぞ!
116:デフォルトの名無しさん
07/02/11 14:37:36
EVE onlineもすごいぞ
今検索したら日本語版も出そうだな。
URLリンク(www.4gamer.net)
stackless pythonをサーバー側・クライアント側ともに使ってるらしい。
117:デフォルトの名無しさん
07/02/16 22:15:17
NullLogic Embedded Scripting Language
URLリンク(sourceforge.net)
118:デフォルトの名無しさん
07/02/17 00:54:05
getfenvってlocal変数は取得できないのって不便だな。
function f1(e)
setfenv(1,e) ;print(a)
end
function f2(f)
local a=123 ;f(getfenv(1))
end
f2(f1)
で123が表示されてほしいんだけど。
debug.getlocalとか使えばなんとかなるんだろうけど。
getlocalとgetupvalueだけ何でdebug扱いなんだろう。
速度?
119:デフォルトの名無しさん
07/02/17 12:23:25
あげとこう
120:118
07/02/21 21:35:09
ぅぅ、誰もいないのか? or どうでもいい話題?
これが出来ないとf1への引数指定をするしかないよね。
f2のローカル変数が増えて且つf1でそれを使う場合
f1の引数宣言をどんどん追加する羽目になるんだよなー。
Cのマクロ展開的に気楽に処理をまとめようとする時
>>118見たいに出来ると便利なんだけど。
-------
話変わるけど、luabind使って
a=luabind_class_a() --luabindで定義したクラス生成
b=luabind_class_b() --luabindで定義したクラス生成
a.p=b ; b.p=a
a=nil ; b=nil
collectgarbage("collect")
ってやっても回収されないような気がする。
(pはluabindでdef_readwrite指定してない)
循環さえしてなければ回収されるっぽい。
そもそもdef_readwrite指定してpに代入すること
自体がまずいのかな?
luabind使ってる人、意見ヨロ。
121:118
07/02/21 21:38:11
修正
そもそもdef_readwrite指定してpに代入すること
=> そもそもdef_readwrite指定してないpに代入すること
122:118
07/02/21 21:43:47
更に追記
118は最初f1をf2のローカル関数にしてたけど他でも参照しようとして
外部に出した時の話です。
123:デフォルトの名無しさん
07/02/21 22:08:28
luaさわったことないが、luaでは環境=テーブルなんだし
print(e.a)じゃだめなの?もしくはgetfenv(f2)ではどうなる?
getfenv(1)というのがわからんな。ソース読んだ方が早い
124:118
07/02/21 22:13:40
>>123
print(e.a)でも駄目。
getfenv(f2)もgetfenv(1)もf2内では
同じ意味(のはず)です。
125:118
07/02/21 22:20:39
function f1(e)
setfenv(1,e) ;print(a)
end
function f2(f)
setfenv(1,setmetatable({},{__index=_G}))
a=123 ;f(getfenv(1))
end
f2(f1)
これなら動くんだけどねぇ。
126:デフォルトの名無しさん
07/02/21 23:20:32
>>118
すまん。見てたが良くわからないから
偉い人が降臨するのを待った方がいいと思った。
でもローカル変数はenvironmentが持ってるわけじゃないし
(Function Prototypeが持ってるぽい)
他の関数はスコープの外だから無理だと思うよ。
table:functionの形式にしてselfに持たせるのはどう?
127:118
07/02/22 00:27:58
>>126
いえいえ半分愚痴なんで。
たとえば>>118を以下の様に書き換えると
a=456
function f1(e)
setfenv(1,e) ;print(a) -- 123が表示
end
function f2(f)
--ここからシンタックスシュガー
local org_env=getfenv(1)
local local_env={}
setfenv(1,setmetatable(local_env,{__index=org_env}))
--ここまでシンタックスシュガー
-- aはローカル
a=124
f(local_env)
-- print($a) グローバルなaを表示 =>
print(org_env["a"]) -- 456が表示
end
f2(f1)
print(a) -- 456が表示
関数先頭でローカル環境設定して
むしろlocalが指定されていないときをlocal変数
と解釈し、Rubyみたく$a見たいに記述された時を
グローバル変数と解釈するほうが安全なようなきがする。
関数内でlocal宣言し忘れてうっかりグローバル汚す
心配もないし。
128:118
07/02/22 02:37:14
なんか一人で書き込んでるな (orz
luabindのほうが大問題に思えてきた
class 'abc'
function abc:__init(name) self.name=name ; print("initialize:"..self.name) end
function abc:__finalize() print("finalize:"..self.name) end
a=abc("1")
b=abc("2")
a.p=b;b.p=a --循環
a=nil;b=nil
collectgarbage("collect")
これも__finalizeが呼ばれない模様
上記コードのaもbもuserdataで多分GCがuserdata内部で
持ってる参照を追ってないためリークしてるのではと
予想してみたけど、どうでしょ。
129:デフォルトの名無しさん
07/02/22 12:27:46
luabindはboostまわりで環境(バージョン)依存するし、tolua++使ってるわ。
>>118で何を実現したかったのか見えなかったんだけど、
setfenvとかはあくまでグローバルテーブルが取れるだけだし、
localとupvalueが取れないのは仕様上しょうがない・・・。
debugライブラリ使ってもいいけど、安全上の問題が・・・とかマニュアルに書いてある。
んで、今luaのソースちょっと見てみたら、
ローカル変数は数値インデックスで管理されてて、テーブルになってない。
バイトコード上ではほぼ名前は省かれてて、「このインデックスのローカルにこのインデックスのローカルを代入」みたいな
処理になってると思われる。
グローバル変数をlocalに代入してから処理したほうが高速、といわれるのはこういう理由なのね。
グローバル汚す可能性についてはグローバルのメタテーブルの__newindexをいじくって
制限をつければいいと思う。
130:118
07/02/22 19:38:37
>>129
tolua++ってコードジェネレーター系ですよね。
tolua++て>>128みたいなことって出来ます?例えば
a=ABC:new()
b=ABC:new()
a.p=b;b.p=a --aとbで循環参照させる。
a=nil;b=nil
collectgarbage("collect")
出来るとしたら、これでC++側のABCの実体のデストラクタ
って呼ばれます?
>グローバル汚す可能性についてはグローバルのメタテーブルの__newindexをいじくって
誰かがそんなことやってましたね。
131:デフォルトの名無しさん
07/02/23 03:51:29
>>130
newしたものを普通のテーブルと同じように扱ってるところに問題がない?
userdataの可能性が高いし、そのままメンバー追加してどうなるかはluabindの実装によるかも。
tolua++では、new()で生成すると手動でdeleteが必要。
new_local()または クラス名() で生成すればガベコレに任せる。
local a=TestClass()
local b=TestClass()
local ax = { p = a }
local bx = { p = b }
a=nil;b=nil
ax=nil;bx=nil
collectgarbage(0)
これならちゃんと回収されてる。(Lua5.0の場合)
132:118
07/02/24 00:04:45
>>130
てゆうか、それ循環してないし。
例え循環させても、テーブルは循環してても当然回収されるので
>>130みたくラッピングすればluabindでも当然回収される。
>>userdataの可能性が高いし、そのままメンバー追加してどうなるかはluabindの実装によるかも。
luabind的にはuserdataだけど一応メタテーブル設定して大丈夫になっています。
>>128にも書いたけど、おそらくuserdataからそれに関連づけされた
luaオブジェクトへの参照をGCが追跡できて無いのでリークしてると思う。
5.0ではuserdataに環境は設定できないけど5.1では出来るようになって
いる。5.1でそうした理由は多分”userdata->その環境table”のパス
をGCでおえるようにして循環参照を検出して回収可能にする為だと思います。
(ぐぐったらそれっぽい議論がされてる。)
おそらくluabindが5.1に対応しきれてないのではと予想して対策を検討中。
133:118
07/02/24 00:05:50
まちがえた
>>130では無く>>131です(自分レスしてどうするw)
134:デフォルトの名無しさん
07/02/24 04:44:20
>>132
あ・・・ほんとだぜんぜん循環してないorz
あとLua5.0でもフルユーザーデータにはメタテーブルもてたけどね。
lightuserdataの扱いが変わっただけかと。
問題はメタテーブルの__newindexとかで実際何をやってるかということだけど・・・
135:デフォルトの名無しさん
07/03/10 15:00:02
hoshu
136:デフォルトの名無しさん
07/03/18 02:28:50
Squirrel + SqPlus使ってる人とかっているんかな?
Squirrel側から呼ばせるC++側の関数で
戻り値としてあるクラスのインスタンスをPushするにはどうすればいいんだろう?
137:デフォルトの名無しさん
07/03/29 21:09:52
保守
138:デフォルトの名無しさん
07/04/06 23:54:07
Lua 5.1.2 released.
URLリンク(www.lua.org)
139:デフォルトの名無しさん
07/04/09 14:51:00
Squirrelのプログラムサイズがでかい…
squirrel.libだけで741KBってどうなんですか?
スクリプトエンジンとか組み込むの初めてなので標準的な尺度がいまいちわかりません。
コンパイルかけたファイルしか使わないと考えればいろいろと削れる部分はあるんでしょうけど、
そういう使い方するのが普通なんですかね?
Luaってどのくらいのサイズなんでしょうか?
140:デフォルトの名無しさん
07/04/09 20:17:31
>>139
自分でexe作成して確認してみな。
そっちのが手っ取り早いぞ。
141:デフォルトの名無しさん
07/04/10 09:23:05
>>139
それでかすぎな気がする
デバッグ情報はってない?
あとstdlibとかなしでそのサイズ?
142:139
07/04/10 18:40:41
squirrel.libのサイズが741KBです。
プログラムサイズが小さくなるような最適化設定にしてビルドしたら664KBでした。
両方ともreleaseです。
>>139
一応、プロパティの『デバッグ情報の形式』というところは無効になっています。
143:139
07/04/10 18:42:17
訂正
>>139じゃなくて>>141でした。
144:デフォルトの名無しさん
07/04/10 19:05:16
報告乙
145:デフォルトの名無しさん
07/04/10 19:28:56
にしてもでかすぎる気がする。
Linux/gcc-4.1.2だとストリップ前が403926バイト、後が295940バイト
Linux/gcc-3.3.6だとストリップ前が390954バイト、後が281116バイト
…Luaと比べると非常に大きいな。
146:デフォルトの名無しさん
07/04/10 21:07:09
いや、Luaがすんごい小さいってのもあると思う。
147:デフォルトの名無しさん
07/04/10 21:53:40
CとC++の差が大きいよ。サイズはでかくなるしコンパイル遅いしライブラリ
配布ではバイナリ互換性が怪しくなってない?
GCCのバージョンを揃えないとリンクに失敗するとか(←これ本当?)
PerlもRubyもPythonもPHPもLuaもオールCで書かれているのはその辺の事情
と思う。
FirefoxやOpenOfficeはC++で別に問題ないが、オプソのスクリプトエンジンの
ジャンルはC++は駄目でCが適切らしい.
148:139
07/04/10 22:12:21
いや、
URLリンク(www.wanderer.jp)
ここのサイトの人がコンパイルかけたら270KBくらいだった言ってたり…
VS2005でビルドしてたんですが、gccでメイクしたら450KBでした。
うーん、まだ何かあるのかな?
149:デフォルトの名無しさん
07/04/10 22:25:40
>>147
オープンでも C++ の実装も結構あるよ。
JDK, AVM2, Poly/ML, StrongTalk とか。
俺も C で書いた方が良いと思うけどね。
150:デフォルトの名無しさん
07/04/10 22:44:39
>>149
JDKがC++と判明して、オプソ界では扱いづらいな...と思われてたりして。
151:デフォルトの名無しさん
07/04/10 22:48:23
>>150
昔からソースは公開されていたし、nm すればソース見ないでも C++ だって
分かる人には分かっていたから大丈夫だよ。
152:デフォルトの名無しさん
07/04/10 22:52:18
>>151
あー、そうなんだ。
153:デフォルトの名無しさん
07/04/11 06:46:14
Squirrelって糞だね
154:デフォルトの名無しさん
07/04/11 07:38:08
>>148
VS2005で、SquirrelをDLL化して
Releaseビルド220Kだよ
155:139
07/04/11 13:13:13
>>154
それって『構成の種類』をdllに設定してビルドするってことですか?
たしかにsquirrel.dllが170KBくらいで軽くなっているんですが、
sqstdlib.dllがエラーで作成できない…。このリンクエラーどうしました?
156:139
07/04/11 15:34:58
>>154
libのサイズってコンパイルさせるために必要なデータが入ってるから
dllより重くなるみたいですね。知りませんでした。
実行ファイルのサイズに影響する分のサイズは二つのlibでだいたい270KBくらいなんだと思います。
ありがとうございました。
157:デフォルトの名無しさん
07/04/11 16:46:14
>>147
Rubyは作者が、オブジェクト指向の言語をオブジェクト指向の言語で書きにくいと言ってる。
>>153
どの辺が?
サイズ大きいのは別に害じゃないと思うけど
158:デフォルトの名無しさん
07/04/22 00:44:07
Xtal 復活記念あげ
159:デフォルトの名無しさん
07/04/28 20:45:47
何かネタないの?
160:デフォルトの名無しさん
07/05/08 17:11:31
保守
161:デフォルトの名無しさん
07/05/09 20:26:56
Squirrel - Lua/組み込み系言語 Wiki*
URLリンク(wikiwiki.jp)
Squirrelの参考リンク参考になりました。
サンクス。
162:デフォルトの名無しさん
07/05/13 11:16:32
初歩的なことかもしれないけど
Squirrelで
sq_open使うと
ハンドルされていない例外 : System.TypeLoadException: アセンブリ 'squirreltest, V
ersion=0.0.0.0, Culture=neutral, PublicKeyToken=null' から型 'SQVM' を読み込めま
せん。
at main()
みたいなメッセージでる。調べたけどわからん
助けて
163:デフォルトの名無しさん
07/05/13 11:33:09
すまん自己解決した
なんでこうなるのかよくわからんけど
164:デフォルトの名無しさん
07/05/13 11:41:18
>>163
自己解決したら、解決法をかけとあれほど・・・
165:デフォルトの名無しさん
07/05/13 11:52:47
URLリンク(support.microsoft.com)にのってる
1. MyProject.cpp ファイルに次のコードを含みます。typedef struct _t_Struct *myStruct;
2. 手順 1 で探したコードをの後、次のコードを追加します。 struct _t_Struct
{
};
を書いて
t_Structの部分をSQVMにしたら動いた
プログラム初心者なんで意味がよくわからないし本当に治ってるのかわからないけど
166:デフォルトの名無しさん
07/05/16 15:52:01
squirrel使う人増えれば嬉しいな
今ゲームに組み込んでるのでそこで得た知識をいずれ記事にしてまとめるかも
コードのどこを削るかとか、Windows以外で使うときにメモリ確保部分をどう書き換えるかとか
167:デフォルトの名無しさん
07/05/16 17:29:10
>>166
マジで期待したいです。
168:デフォルトの名無しさん
07/05/16 23:03:00
新言語 Xtalを作る日記
URLリンク(d.hatena.ne.jp)
169:デフォルトの名無しさん
07/05/18 00:35:54
リンク張り逃げだけじゃなく、なにかしらの解説してくれや。
170:デフォルトの名無しさん
07/05/18 20:11:56
>>169
ざっと目を通しただけなので細かいところはわからないけど、
C++への組み込みに使用するとき、スタックを意識せずによいみたい。
残念なのは、ソースがVC依存ぽいところ。
171:デフォルトの名無しさん
07/05/23 03:05:54
>>170
むしろ、レス見てると、gcc依存っぽいが。
172:デフォルトの名無しさん
07/05/23 17:33:52
>>168
xtal-language - Google Code
URLリンク(code.google.com)
こっちを出さないと
173:デフォルトの名無しさん
07/05/23 20:38:36
Cみたいに文字列の先頭から順にアクセスするとかできないんですか?
174:デフォルトの名無しさん
07/05/23 22:20:10
>>173
おまー、mixiのluaコミュでも同じ質問してるだろ
175:デフォルトの名無しさん
07/05/23 22:38:27
別に効率が悪いだけでstring.subでできるでしょ。
176:デフォルトの名無しさん
07/05/23 23:36:38
>>168,172
なんか凄いところで紹介されてるね
■404 Blog Not Found
君は新言語xtalを知っているか?
URLリンク(blog.livedoor.jp)
177:デフォルトの名無しさん
07/05/23 23:59:34
>175
ver5.1使ってるんですけど日本語化パッチが5.02までしかないみたいなんで
sjisに対応できないんですよ。まあ出るのを待ちますか。
178:デフォルトの名無しさん
07/05/24 00:01:39
>>177
自分で改造するんだ!
179:デフォルトの名無しさん
07/05/24 07:36:57
UTF8でいいじゃない
180:デフォルトの名無しさん
07/05/24 14:31:10
>>177
これはどう?
Lua@空想具現化プログラミング
URLリンク(hammm.dw.land.to)
181:デフォルトの名無しさん
07/05/26 21:53:29
誰かlua_qt使ってる人いますか?
182:デフォルトの名無しさん
07/05/26 22:25:11
はい
183:デフォルトの名無しさん
07/05/30 16:12:03
質問です。LuaからOpenGLって使えます?
C++ネイティブからOpenGL使っているところを、一部分のOpenGL関数だけ
Luaから呼びたいんですけど。
184:デフォルトの名無しさん
07/05/30 17:36:39
そういうやつが、どっかにあった気がす
WikiLuaだっけ
185:デフォルトの名無しさん
07/05/30 18:38:34
というか逆に使えないと思う理由は何?
186:デフォルトの名無しさん
07/05/30 19:06:52
俺が昔使ってたやつはまだ大まかな関数しかなかったから、
自分で書いて命令増やしたりしてたな。
HDDと共に吹っ飛んでもう手元にないが。
187:デフォルトの名無しさん
07/06/02 16:37:36
>>147
GCCのABIがかわったのは、C・C++関係ないだろ。
188:デフォルトの名無しさん
07/06/02 16:39:26
>>166
は、どうした?
189:デフォルトの名無しさん
07/06/06 20:10:29
あげる
190:デフォルトの名無しさん
07/06/07 07:23:06
WikiXtalとかないの
191:デフォルトの名無しさん
07/06/07 20:10:15
SquirrelをDLL化して使っている人いませんか?
squirrel.dllを作ろうとするのですが、失敗します・・・
うまくできた人いない?
192:デフォルトの名無しさん
07/06/07 20:21:05
VisualStudio 2005 の、squirrelプロパティで、構成の定義で、
「ダイナミック ライブラリ (.dll)」を選べばいいんですよね?
あれ?あ、できました。
何でできなかったんだろ・・・。
ところで、
sqstdlib は、DLL化できないのですが、これってもしかして、付属のライブラリが使えないことを意味するのでしょうか?
193:191
07/06/07 20:51:45
sqstdlib.dll ビルドできました。
一旦、squirrel プロジェクトで、lib\ に Squirrel.libを吐いておいて、
sqstdlib プロジェクトで、プロパティ→構成プロパティ→リンカ→→入力 で、
..\lib\squirrel.lib をパスに加えたら、コンパイル通りました。
これでいいのかな?
これで上手くいっているのか、わからないのですが、
他言語(Delphi)から、使ってみようと思います。
ああ、ヘッダーかかなきゃ・・・
194:191
07/06/07 20:57:48
squirrel.dll 200K
sq.exe 348K
sqstdlib.dll 348K
なんかサイズが、マズイ気がします。
もしかして、squirrel.dllの中身全部、sqstdlib.dllにも入っちゃってるんでしょうか?
(..\lib\squirrel.libつっこんだんだから当り前か・・・)
別プロジェクト作って、一つのDLLにまとめた方が手っとり早いのですかね?
195:デフォルトの名無しさん
07/06/07 22:39:14
半年ROMってろ
196:デフォルトの名無しさん
07/06/07 23:43:22
スタティックリンクでいいじゃん
197:デフォルトの名無しさん
07/06/07 23:51:10
>>195
ムカッ!!
>>196
C++じゃないから、できないもん・・・
198:デフォルトの名無しさん
07/06/07 23:53:13
>>196
え、あ、もしかして、zlibみたいに、.oでリンクできるかってことか?
できるんかいな・・・
Delphiと、結合となると、BCCもってきていコンパイルか('A`)
どっちにせよだな・・・
199:デフォルトの名無しさん
07/06/08 07:14:40
自分で調べて学習する気がないなら、いくら教えても無駄だ
200:デフォルトの名無しさん
07/06/08 07:50:47
191はがんばってるとおもうけど
201:デフォルトの名無しさん
07/06/08 08:52:20
>>199
ひとつも教えてやってもいないじゃないかw
202:191
07/06/08 17:30:58
squirrel と sqstdlib 合わせて、まとめた squirrel.dll 作れました。
普段、VS.net使わないから、いやに手こずったぜ・・・
作り方は、後でかくぜ
203:191
07/06/08 17:48:50
以下、まとめた squirrel.dll の作り方。
VS.net 2005 proでコンパイルを確認。
squirrel_2.1.1_stable が解凍されているとして、
・squirrel_dll ディレクトリを作る
・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・ファイル→追加→既存のプロジェクト で、 squirrel_dll を追加
・プロジェクト名が、squirrel になっているので、squirrel_dll に変更
・squirrel_dll の関連づけられたファイルを一旦全部削除
・プロジェクト → 新しいフィルタ で、フィルタを作って、
ソリューションエクスプローラーで、フィルタ名を squirrel に変更
・ソリューションエクスプローラーで、フィルタ squirrel を選択して、
右クリック→追加→既存の項目 で、..\squirrel ディレクトリ の .h と .cpp を全部追加
・同様に、プロジェクト → 新しいフィルタ で、フィルタを作って、
ソリューションエクスプローラーで、フィルタ名を sqstdlib に変更
・ソリューションエクスプローラーで、フィルタ sqstdlib を選択して、
右クリック→追加→既存の項目 で、..\sqstdlib ディレクトリ の .h と .cpp を全部追加
・プロジェクト→プロパティで、
・構成プロパティ→全般→構成の種類 を、「ダイナミック ライブラリ (.dll)」に設定
・構成プロパティ→全般→出力ディレクトリを、「..\bin」に設定
・構成プロパティ→リンカ→全般→出力ファイルを、「$(OutDir)\squirrel.dll」に設定
・あとは、ビルド→squirrel_dll のビルドで、
bin\ に、348KBの squirrel.dll ができていたら成功ー
面倒なら、フィルタは作らんでもいいけど・・・
204:191
07/06/08 17:49:38
ようは、squirrel と sqstdlib のファイルまとめて、DLL出力にしただけです。
たぶん、普段 VC使っている人なら見なくてもできる。
205:デフォルトの名無しさん
07/06/08 17:55:47
>>172
これ面白そうだね。でもまだバージョンが1.0未満か
206:191
07/06/08 18:22:03
一部訂正
> ・squirrel_dll ディレクトリを作る
> ・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・squirrel_dll ディレクトリを作る
・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・squirrel\squirrel_dll.dsp に名前を変えておく
・squirrel\squirrel_dll.dsp を VS.netで開く(新しいプロジェクトに変換する)
207:191
07/06/08 18:22:50
間違えた orz
> ・squirrel_dll ディレクトリを作る
> ・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・squirrel_dll ディレクトリを作る
・squirrel\squirrel.dsp を squirrel_dll ディレクトリにコピーする
・squirrel_dll\squirrel_dll.dsp に名前を変えておく
・squirrel_dll\squirrel_dll.dsp を VS.netで開く(新しいプロジェクトに変換する)
208:デフォルトの名無しさん
07/06/08 20:26:11
squirrel の 日本語対応できている人はいませんか?
環境は、Windowsです。
ためしに、sq.exeを対応させてみようとしているのですが、微妙な状況です。
素(そのままコンパイルした)のsq.exe に、
---- multi_byte.nut ------
// 表が怖い
print("噂のソフト\n")
-----------------------
を食わせてみた場合
・SJISは、エラー
sjis.nut line = (2) column = (10) : error unrecognised escaper char
Error [unrecognised escaper char]
・UTF-8N は問題なく通る?
出力は、UTF8だが、ターミナルの文字コードをPoderosaで、UTF-8にすると問題なく見られる。
・UTF-16 LE-BOM付き は問題なく通る?
出力が、UTF-16になっているがUTF-16のターミナルを持たないので確認できない。
となったのですが、
これは、素で、UNICODE対応していると見てよいのでしょうか?
SQUNICODEしなくてよいのかな?
209:デフォルトの名無しさん
07/06/08 20:28:54
Squirrel 2.1 リファレンスマニュアル
URLリンク(muffin.cias.osakafu-u.ac.jp)
> Unicode
>
> デフォルトではSquirrelの文字列はプレーン8ビットASCII文字となる。
> しかし、VMにシンボル'_UNICODE'がdefineされているなら、
> コンパイラとAPIで文字が16ビットとして扱われる。
210:デフォルトの名無しさん
07/06/08 20:44:06
>>209
_UNICDOEをプリプロセッサの定義に設定して、コンパイルしたのですが、
今度は、
>>208のファイルで、
・sjis
・UTF-8N
・UTF-16 LE-BOM
でどれも、
Error [?????????????8・?8?8?8?
と出てしまい、実行できません。
困りました・・・。
211:デフォルトの名無しさん
07/06/08 20:47:25
>>210
ちなみに、_UNICODEを定義すると
// hello
print("hello")
とだけ書いたファイルでも
Error [?????????????8・?8?8?8?
といわれてしまいます。
212:デフォルトの名無しさん
07/06/08 21:28:30
SqPlusつかったほうがはやいかもね。
213:デフォルトの名無しさん
07/06/12 16:39:38
Squirrel の_UNICODE で、デバッガでおいかけていたのですが、
バグなのか、sq.exeで、途中でfilenameが変わって、ファイルが読み込めないという、
不可解な挙動をして、読み込みエラーを吐くので、_UNICODE 見合わせる方向です。
ソースをみると、一応、_UNICODEなくても、BOM付きファイルのUTF16 LE, UTF-16 BE、UTF-8が、
ちゃんと考慮されているようなので、(sqstd_loadfile付近)
_UNICODE使わずに、UTF-16でやってみようと思います。
>>212
多言語から利用したいので、たぶん使えないのですよ・・・
参考にするのはできると思いますが・・・
214:デフォルトの名無しさん
07/06/12 18:36:04
>>213
残念ながら、_UNICODEなしで、UTF-16は駄目のようです。
_io_file_lexfeed_UCS2_LE あたりを見ればわかるのですが、
wchar_t を char にキャストしていますので、日本語がつぶれてしまいます。
UTF-8では、そのようなことは起きないようですので、
_UNICODEなしの場合は、UTF-8を使いましょう。
という結論です。
215:デフォルトの名無しさん
07/06/12 18:50:36
>wchar_t を char にキャスト
すげえなこれ。マジかよ
216:デフォルトの名無しさん
07/06/12 19:08:56
>>210-211の _UNICODE の問題ですが、解決できました。
sq.exe で、動作確認をしていたのですが、単に、プロジェクト sq が参照している、
プロジェクト squirrel とプロジェクト sqstdlib の_UNICODE が定義されていないだけでした。
VS.netでは、プロパティのプリプロセッサ設定です。
(つまり、_UNICODEの定義された objと、されていないobjを混ぜていた。そりゃ駄目だわー)
VS.netに、慣れてないせいにしておきます!
>>215
_UNICODE を定義(#define)していない場合の話です。
_UNICODE 定義時は、wchar_t → wchar_t になり、ちゃんと読めます。
217:デフォルトの名無しさん
07/06/12 20:59:10
>>212
> 多言語から利用したいので、たぶん使えないのですよ・・・
kwsk
218:デフォルトの名無しさん
07/06/13 02:56:41
>>217
SqPlusはテンプレートベースの、スタック操作とか減らすためのライブラリというように見えたのですが、
違うのかな?
テンプレートベース=C++べったりなので、そのまま多言語から使うのは難しいという認識です。
いや、よく見ていないのですが・・・
これから見てみます。
219:デフォルトの名無しさん
07/06/13 11:14:11
>>210
遅レスですまんけど、
たんにコンソール出力がUNICODEに対応してないからじゃないのかな
エラー出力をフックして、
コード変更してみたらどうかな
220:デフォルトの名無しさん
07/06/13 17:05:09
>>219
>>216
221:デフォルトの名無しさん
07/06/13 17:06:56
>>216
squirrelの追記。
プロジェクト sq などの、printを使うプロジェクトの場合、文字化けする(コンソールに?????と出力される)ので、
setlocale( LC_ALL, "" );
を最初の方に入れてロケールの設定をしておくこと。
222:デフォルトの名無しさん
07/06/13 17:22:45
setlocaleって内部で何やってんのかね
SetThreadLocaleとかのAPIを呼び出してるのかな
223:デフォルトの名無しさん
07/06/15 11:15:20
luabind使ってる人に質問。引数にunicode文字列を持つC++の関数をLuaから呼び出した
いときってどうやる?
224:デフォルトの名無しさん
07/06/15 12:11:08
>>188
すみません。ちょっと忙しいのでなかなか取り掛かれません。
自分はLuaを使ったことはないし、スクリプトをいじるのも今回が初めてですし、
プログラマとしても経験不足なのは否めないのであまり期待されても困るのですが、
squirrelを使い始めたばかりの人が参考に出来るくらいの情報を提供する自信はあるので、
そのうち必ずやります。
225:デフォルトの名無しさん
07/06/16 01:37:01
>>203
補足。
APIに、externだけでなくて、 __declspec(dllexport)つけとかないと、
DLLとして外部に関数を解放できない。
俺アフォw
- #define SQUIRREL_API extern
+ #define SQUIRREL_API extern __declspec(dllexport)
226:デフォルトの名無しさん
07/06/17 15:29:22
Luaの質問。
Cで定義した変数をLuaのグローバル変数にして、
Lua側で値を変更するとC側でも変更されてるようにならないかな?
userdataかlightuserdataあたりを使うんだろうけど、、、
227:デフォルトの名無しさん
07/06/18 09:38:11
lightuserdataをdoubleへのポインタだと決めてかかって
無理やりluaの実数書き込んだり読んだりできるようにluaを書き換えるのは
大した手間じゃないと思うぞ
228:デフォルトの名無しさん
07/06/19 16:55:22
>>227
何の話?
229:デフォルトの名無しさん
07/06/20 23:38:23
なんか股間がザーメン臭いんだけど
230:デフォルトの名無しさん
07/06/21 00:10:56
>>229
遺精か。あんまり頻繁にあるようなら病院逝けよ。お大事に。
231:デフォルトの名無しさん
07/06/21 00:30:35
真性マゾルートだと一切触れずにいける様になるらしい
232:デフォルトの名無しさん
07/06/26 19:09:55
月と栗鼠だったのかorz
233:デフォルトの名無しさん
07/06/26 19:15:33
誤爆
234:デフォルトの名無しさん
07/06/26 19:34:06
Lua、LL魂で紹介されるらしいね
235:デフォルトの名無しさん
07/06/28 21:53:59
Luaって何て読むんですか?
ぅあ?
236:デフォルトの名無しさん
07/06/28 21:58:04
>>235
ルア
237:デフォルトの名無しさん
07/06/28 21:58:44
ポルトガル語で月って意味らしいし
英語だとルナだから ルアじゃない?
238:デフォルトの名無しさん
07/06/28 22:06:53
>>232
誤爆じゃねーじゃん
239:デフォルトの名無しさん
07/06/28 22:30:30
「ぅあ」ワラタ
240:デフォルトの名無しさん
07/06/28 22:54:58
すいませんそのまま打ったらぅあなのでなんてよむのか分からなくて
241:デフォルトの名無しさん
07/06/29 00:08:09
「ぅあ」は良いなw
242:デフォルトの名無しさん
07/06/29 14:58:30
萌えるな
243:デフォルトの名無しさん
07/06/29 18:25:03
プログラミング言語ぅあ その4
244:デフォルトの名無しさん
07/06/29 21:14:15
Luaの呼び方は「ぅあ」であることが決定された瞬間だな。
245:デフォルトの名無しさん
07/06/29 21:19:09
瞬間はいいが、次スレなんてどんだけ先だよw
246:デフォルトの名無しさん
07/06/29 21:28:27
>>245
あと2~3年だな
247:デフォルトの名無しさん
07/06/29 22:27:28
ぅあって、単なる配列も整数のインデックスなのに辞書みたいに毎回ハッシュを
計算するって本当ですか?
あとインデックスが0じゃなくて1から始まるらしいんですけど、何故なんでしょう・・・
この点が無ければ、スクリプト言語で今のところ最有力候補なんですが・・・
248:デフォルトの名無しさん
07/06/29 23:00:05
>247
配列とハッシュ表が区別されない同一のデータ構造なのは本当。
でも、ふつうに配列と使っているときには、配列用のパートにつっこまれてハッシュなんか計算しないよ。
つまり効率が気になるようなら、そこは効率わるくならないようになっている
と考えてよい。
なぜ1から始まるかは知らん。
249:デフォルトの名無しさん
07/06/30 08:13:12
1から始まるぐらいで嫌ならぅぁあ向いてないよ
250:デフォルトの名無しさん
07/06/30 11:21:38
>>247
その辺を改良したのがsquirrelなんじゃね?
squirrelもなんかよみにくね?
251:デフォルトの名無しさん
07/06/30 16:17:40
よみにくね?
?
252:デフォルトの名無しさん
07/06/30 19:16:39
よみにいな
じゃあすくいっれるの読み方も>>235に考えてもらおうぜ
253:デフォルトの名無しさん
07/06/30 22:07:23
>>248-250
どうもありがとうございます。配列の件よく分かりました。
あとSquirrelってのは知りませんでした・・・ちゃんとスレ読んでなくてすみません
Squirrel、いいですね、検討してみます
254:デフォルトの名無しさん
07/07/01 13:26:38
>>227
超遅くてごめんレスありがとう。そんなすごいこと可能なら検討してみる。
でも、ぅあ書き換えるってかなりの手間じゃないかな、、、
255:デフォルトの名無しさん
07/07/01 13:58:45
書き換える、の対象を勘違いしてないか?
256:デフォルトの名無しさん
07/07/02 02:35:07
Squirelの感想の続きが聞きたい
257:デフォルトの名無しさん
07/07/02 08:41:18
>>256
別の人でよければ
GCで時間くわれないからゲームで重宝してます。
258:デフォルトの名無しさん
07/07/02 08:42:02
あとついでに、
squirrel2.1.2 の動きがあるね
259:デフォルトの名無しさん
07/07/02 23:24:14
そんなの屁でもないぜ
260:デフォルトの名無しさん
07/07/02 23:25:18
誤爆
261:デフォルトの名無しさん
07/07/02 23:27:27
warata
262:デフォルトの名無しさん
07/07/07 16:34:44
あげますよ
263:デフォルトの名無しさん
07/07/07 16:44:26
阻止
264:デフォルトの名無しさん
07/07/10 11:37:13
誰か
VC++2k3での使い方
頼む
265:264
07/07/10 12:22:55
一週間ぐらい悩んでたのに、質問書いた途端に事故解決した
プロジェクト作ってサンプルソース加える
本家でdownload binaries (ここで違うサイトへ飛ぶ) download lua-----vc6_lib.zipをダウンロード
プロジェクトのフォルダに解凍したもの突っ込む
includeのフォルダの中身をソリューションエクスプローラーのヘッダーファイルのところに放り込む
lua5.1.libをソリューションエクスプローラーのリソースファイルのところに放り込む
あとはプロジェクトのプロパティで
全般のマネージ拡張をいいえ
リンカの入力 特定ライブラリの無視をlibcmtd
これで実行できた
マネージ拡張の部分変えなくてもコンパイルとリンクは普通に通るから何が原因か訳分からなかった
チラシの裏だったかもしれないがとりあえず
266:デフォルトの名無しさん
07/07/13 20:41:43
ゲーム用スクリプトとしては有名らしいけど
使ってる国内の市販ゲームってほんとうにあるの?
267:デフォルトの名無しさん
07/07/13 20:53:24
知るか
268:デフォルトの名無しさん
07/07/14 01:13:39
>266
国内では知らないが
海外含めればFarCryとかRagnarokOnline(ホムンクルス用)か?
269:デフォルトの名無しさん
07/07/14 12:48:59
1つ質問
組込言語を使う場合、
・全ての処理を記述する
・部分的に処理を記述する(敵の移動ルーチンなど)
どっちが良いのかな?
270:デフォルトの名無しさん
07/07/14 13:01:16
>>269
・分離が必要な部分のみを記述する(敵の移動ルーチンなど)
271:デフォルトの名無しさん
07/07/14 13:29:28
RigidChipsに組み込まれたLUAでFFTを実装しているんだが
なんかうまくいかない
参考にしているCソースのFFTは基本が再帰呼び出しなんだが
ポインタなぞ使えないし
色々やってみたが、ナンカ Arithmeric fireldなんとかって出てエラーになりよる
もう頭が沸騰しそうだぉ
272:デフォルトの名無しさん
07/07/14 14:41:09
質問です。
C側からLua内のテーブルにアクセスする場合
URLリンク(tgws.fromc.jp)
↑を使うと「table.member.value」のような形の値にはアクセスできますが
table[1].value のような配列形のテーブルに入っている値にはアクセスできません。
実現する方法はありますか?
273:デフォルトの名無しさん
07/07/14 16:14:39
>>272
そのURLのどこを参考にしてるのかわからんけど・・・
キーの値としてpushstringしてるところをpushnumberにすればいいんじゃないの?
274:デフォルトの名無しさん
07/07/14 18:57:10
>>269
ケースバイケースじゃね?
全部スクリプトでいいならその方がらくできそうだし
275:デフォルトの名無しさん
07/07/14 19:08:19
LuaとRubyって何か似てますね
276:デフォルトの名無しさん
07/07/14 21:43:31
そうかなあ。
277:デフォルトの名無しさん
07/07/14 22:47:13
endくらいだろ
278:デフォルトの名無しさん
07/07/14 23:54:44
JavaScriptのほうが似てるという噂
279:デフォルトの名無しさん
07/07/15 00:48:46
Squirrelなら、何となくJavaScriptに似てなくもないが、ぅあは・・・
280:デフォルトの名無しさん
07/07/15 00:49:57
Rubyはいろんな言語からのパクリンだから
281:デフォルトの名無しさん
07/07/15 00:59:04
色々な言語のパクリじゃない言語なんて無いですけどね。
Luaもパクリンしまくりですよ。
282:デフォルトの名無しさん
07/07/15 01:08:20
>>279
構文にしか目がいかないヘタレ発見
283:デフォルトの名無しさん
07/07/15 01:12:02
>>281
いや、Rubyのパクリ方は酷い
オリジナリティなんてない
他の言語と比較するなんておこがましい
284:デフォルトの名無しさん
07/07/15 01:16:34
別に酷くても良いんじゃない
上手くアセンブル出来ていて、それが有用ならオリジナリティなんて要らないでしょ
俺はまともにスレッドを扱える様になるまで使う気は無いけど
285:デフォルトの名無しさん
07/07/15 01:21:17
>>283
具体的に何がどう酷いの?
どうせパクリ元の言語なんて知らずに見聞だけで言ってるんでしょ?
プログラミング言語の歴史を少しでも知ってたら、
「パクるなんて酷い」なんてとてもいえないんだがね。
おこがましいのは無知なお前。
286:デフォルトの名無しさん
07/07/15 01:27:03
どちらかと言うと、パクりつつけなしているのが酷いような
287:デフォルトの名無しさん
07/07/15 01:59:36
パクリ=Ruby厨が集まるキーワードです
288:デフォルトの名無しさん
07/07/15 02:11:01
反論できなくなるとレッテルを貼ってごまかします。
289:デフォルトの名無しさん
07/07/15 02:19:04
良く分からんが >>288 的には、誰が誰に反論すべき局面だったんだ?
290:デフォルトの名無しさん
07/07/15 02:22:10
自分だってわかってるからそうやってレスしてんでしょ?
291:デフォルトの名無しさん
07/07/15 02:23:39
パクリパクリ言うなら、C#の方がひどいだろ
Delphiパクった上に、J++までパクッたあげく文法は、C似だし
最近は、関数型言語まで朴楼としている
292:デフォルトの名無しさん
07/07/15 02:28:11
プログラミング言語の世界において、
パクリとかは関係無いし、どーでもいいことだってことを理解しないと前に進めません。
Rubyをパクった言語もいくつも生まれています。
293:デフォルトの名無しさん
07/07/15 02:30:02
>>290
だから自分って誰だよ...
君のレスだけ迷子になってるっぽかったから聞いてあげたのに。
294:デフォルトの名無しさん
07/07/15 02:34:28
>>293
はいはい、自分じゃないと思うならいちいち反応しなくていいよw
バカだなw
お前は2chでそうやっていちいち迷子のレスを案内してやってのかいw
295:デフォルトの名無しさん
07/07/15 02:41:18
以後、ru○yの話題は禁止
296:デフォルトの名無しさん
07/07/15 02:47:15
>>289
すまん。見てたが良くわからないから
偉い人が降臨するのを待った方がいいと思った。
でもローカル変数はenvironmentが持ってるわけじゃないし
(Function Prototypeが持ってるぽい)
他の関数はスコープの外だから無理だと思うよ。
table:functionの形式にしてselfに持たせるのはどう?
297:デフォルトの名無しさん
07/07/15 03:31:15
>>294
>お前は2chでそうやっていちいち迷子のレスを案内してやってのかいw
見ていて可哀想だなと思った時だけだよ。
298:デフォルトの名無しさん
07/07/15 11:58:49
>>297
かわいそうなのはお前なんだけどなw
299:デフォルトの名無しさん
07/07/15 12:44:33
ムjもID出ればいいのにな。
毎行wつくのがうざwww
300:デフォルトの名無しさん
07/07/15 12:50:26
すまん。見てたが良くわからないから
偉い人が降臨するのを待った方がいいと思った。
301:デフォルトの名無しさん
07/07/15 13:02:21
>296,300
どうして >126 がコピペされているんだろう。
126を書いたので気になる。間違ってるならそう言ってくれよう。
302:デフォルトの名無しさん
07/07/15 13:29:46
すまん。見てたが良くわからない
303:デフォルトの名無しさん
07/07/15 15:00:56
>>298
そんな無理に頑張らなくても、もう終わりで良いんじゃない?
304:デフォルトの名無しさん
07/07/15 15:04:58
お前らこんな人口の少ないスレでなにやってんだよ
305:デフォルトの名無しさん
07/07/15 15:18:50
>>303
お前が必死に引き伸ばしてるんだろうが。バカだな・・・。
306:デフォルトの名無しさん
07/07/15 15:22:39
>>305
バカだと思ったらレスしなきゃ良いんじゃね?
w 付けるのも止められたんだしw
307:デフォルトの名無しさん
07/07/15 15:36:48
Ruby>>>>>>>>。。。。Lua
308:デフォルトの名無しさん
07/07/15 16:32:24
久しぶりに二桁未読があって楽しみに開いたらやっぱりか…
ちょっと期待しちゃった俺がばかだった( ´・ω・)
309:デフォルトの名無しさん
07/07/15 16:59:03
>>275-307まで脳内削除
310:デフォルトの名無しさん
07/07/15 17:17:56
RUBYYYYYYYYYYYYYYY!!!!!!!!!!!
311:デフォルトの名無しさん
07/07/15 17:43:06
これからはXtalの時代でしょ
312:デフォルトの名無しさん
07/07/15 17:46:26
もう俺言語はいいよ
バグあったら最悪。大抵デバッグで詰まるし
結局緊急時とかは既成のCとか使っちゃうわけだし?
313:デフォルトの名無しさん
07/07/15 17:54:56
>>306
バカかお前。
お前がまず「もう終わりで良いんじゃない?」と思ったんだから、
レスしなきゃいいだろうがバーカ。
314:デフォルトの名無しさん
07/07/15 18:07:59
バカしか書けんのか、この荒らしは...
虚しいのう...
315:デフォルトの名無しさん
07/07/15 18:11:42
バカなお前のために、俺の語彙力を発揮しろと?
というか、バカなんだから理解できないだろ?
316:デフォルトの名無しさん
07/07/15 18:13:01
>>313
ここはぅあのスレですよ。喧嘩をしたいのなら他所でやって頂けませんか。
317:デフォルトの名無しさん
07/07/15 18:14:21
>>315
あまりにも程度が低過ぎてワラタ。お前面白いからもっと頑張れw
318:デフォルトの名無しさん
07/07/15 18:14:27
もう終わりで良いんじゃない、と言った本人がダラダラと続けてるからムリ
319:デフォルトの名無しさん
07/07/15 18:15:39
>>317
お前もガンバレよ、そのネット難民の生活をなw
320:デフォルトの名無しさん
07/07/15 18:16:57
うわー、レッテル貼られたw
何だっけ? レッテル貼るのは反論出来ない時のごまかしなんだっけかw
321:デフォルトの名無しさん
07/07/15 18:17:44
これが2ch名物、"悔しいからお互いにレスし続ける合戦"ですか。
低脳二人がこの合戦にはまると、まさにエンドレスサマー
322:デフォルトの名無しさん
07/07/15 18:18:53
>>320
えw
お前レッテルの意味わかってるの?w
323:デフォルトの名無しさん
07/07/15 18:21:30
スマソ。はしゃぎ過ぎたわ。あとは誰か適当に相手してあげて。
ちょっと面白かったわ。
324:デフォルトの名無しさん
07/07/15 18:21:54
そろそろ「夏か…」と言い出す夏厨厨も参加して、
事態はますます混迷を深めていきます。
325:デフォルトの名無しさん
07/07/15 18:31:09
もう夏か・・・
326:デフォルトの名無しさん
07/07/15 18:32:03
>>323
まぁよくがんばったよ。
散々やっときながら、"ちょっと面白かったわ"と、
"俺は余裕だった、ちょっとアラシをからかってやっただけ"
という演出をするところがなかなか将来有望。
そんな演出を入れてみても、
傍から見るとどっちもアラシにしか見えないんだけどね。
327:デフォルトの名無しさん
07/07/15 18:33:41
↑傍観者気取りでた~www
328:デフォルトの名無しさん
07/07/15 18:35:21
スマソはどうした?
329:デフォルトの名無しさん
07/07/15 18:40:45
相手を特定したがる割に、匿名を嫌うわけでもないのが始末に終えない
匿名の全体主義こそすべて
330:デフォルトの名無しさん
07/07/15 19:27:00
>>328
俺は傍観してるよ。>>327 は誰だか知らん。
331:デフォルトの名無しさん
07/07/15 22:17:16
Luby
332:デフォルトの名無しさん
07/07/15 22:24:40
ぅび
333:デフォルトの名無しさん
07/07/16 01:07:47
あぁ、とうとうこのスレにもキチガイがきたか…。はやく別のとこいってくれねーかな。
334:デフォルトの名無しさん
07/07/16 23:52:40
結論 同一人物or魂の双子
335:デフォルトの名無しさん
07/07/17 00:44:33
RubyとLuaが?
336:デフォルトの名無しさん
07/07/17 00:55:29
>>283
rubyのは オ マ ー ジ ュ な
パクリとオマージュは紙一重だけど
rubyのはオマージュだと言える
だいたいパクリで成り立ってる言語なんてあるのか
337:デフォルトの名無しさん
07/07/17 01:23:44
Java
338:デフォルトの名無しさん
07/07/17 01:26:20
ところで、squirrelの記事を書いてくれると言った>>166はどうしたのかね?
339:デフォルトの名無しさん
07/07/17 01:48:10
>>336
パクりで成り立ってない言語なんてあるのか
の間違いじゃないの?
まあ俺が言ってるのはその「オマージュ」なんだろうけど
340:デフォルトの名無しさん
07/07/17 12:04:38
どうでもいいからお前らLuaの大域変数の初期値与える方法教えろよ!
具体的に言うとあるゲーム(説明のために簡単にブロック崩しにしておく)の初期値
ユーザ側でスクリプトを作ることが出来るゲーム(カルネジのような)を作ろうと思ってるんだが
ステージごとに初期位置可変なのでLua側に大域変数として全部与えてLuaから必要な変数だけ使う形にしたい。けどどう実現するべきか分からない
上から出来たら簡単だろうなーと思う順に言うと
1 C側からLuaに初期値を与えることが出来る関数がある
2 ユーザ型とかいうの使って色々やると値を作れる
3 変数読む為だけのCの関数を作る
341:デフォルトの名無しさん
07/07/17 16:44:11
質問なんだけど
lua_getfield( L, -1, "test" );
と
lua_pushstring( L, "test" );
lua_gettable( L, -2 );
って何が違うの?
342:デフォルトの名無しさん
07/07/17 21:00:19
Squirrelムズイな・・・というか、Lua系というか。
>>166さんをマジで期待したいぜ・・・
343:デフォルトの名無しさん
07/07/18 14:51:43
>>341
どっちも同じ。
テーブルからキーが文字列の値を取り出すことは
頻繁にあるから前者が用意されているのよ。
344:デフォルトの名無しさん
07/07/18 20:24:00
>>342
何が難しい?
345:デフォルトの名無しさん
07/07/18 22:08:00
Ruby好きはLuaが好き、
Java好きはSquirrelが好きって感じだね
346:デフォルトの名無しさん
07/07/18 23:44:03
C++好きはXtalが好きと言われるくらいにXtalが発展してくれるといいんだけどなぁ
347:デフォルトの名無しさん
07/07/19 02:49:10
>>345
Lua好きがRuby好きとは限らない罠
348:デフォルトの名無しさん
07/07/19 04:28:49
>>344
ホスト言語からの大域変数の取得でいきなり、つまづいた
今はできたけど・・・
APIリファレンスは、日本語のものがあって助かるんだけど、
リファレンスの説明だけじゃ、わかんなくて、本家にもAPIの使用例が全然ないので、
これ、何に使うのってことが一杯・・・
何かするにも手探り状態
もっとも肝心なのは、関数呼び出しとか、変数の取得などの効果的なラッピングの方法なんだけど。
まさか、ホスト側でSquirrel APIそのまま使うわけにもいくまい。
C++じゃないんで、SqurrelPlusなどつかえなくて(参考にはしてるが、なかなかにきっかい)
>>345
Ruby好きだけど、Squirrelの方が文法は好きだよ
349:デフォルトの名無しさん
07/07/19 08:08:19
Luaは速いけどRubyは遅いからちょっと違うかな
350:デフォルトの名無しさん
07/07/19 08:18:33
RubyはS。
ぅあはM。
に決まってんだろ
351:デフォルトの名無しさん
07/07/19 22:29:43
luaでFFTを実装しようと思うんだが
言語使用が違うからCやjavaから単純に移植というわけにはいかないので
どなたかC2LUAやらjava2luaのようなトランスレーターを知っていたら
是非教えて貰いたいのだけど
352:デフォルトの名無しさん
07/07/20 02:55:30
普通、トランスレーターはわざわざ遅くなる方向には作らんよ。
少し考えれば判る事だろ。
それとFFTがFINAL FANTASY TACTICSだとかいう
逆上脊髄反射ネタも禁止な。
353:デフォルトの名無しさん
07/07/20 04:03:01
URLリンク(www.kurims.kyoto-u.ac.jp)
にある再帰版のFFTならluaに移植できるんじゃない?
354:デフォルトの名無しさん
07/07/20 07:13:51
そういう方面はバインディング書くのが妥当かなー
355:デフォルトの名無しさん
07/07/20 07:35:02
foo.f.bindenv(foo)
これ汚ねえなー
デリゲート渡したいだけなのに、何だよbindenvって
356:デフォルトの名無しさん
07/07/20 22:21:27
せっかくなんでFFTルーチン手直ししてみた。
ネタ元はRigidChipsスレみたいなのでこっちに書き込み。
>>スレリンク(gameama板:498番)
実装が間違ってないとして・・・
64点なら1万回繰り返して4秒程度だったので(Core2Duo)
実用も可能そう。
luaソース:URLリンク(hammm.dw.land.to)
357:デフォルトの名無しさん
07/07/23 02:35:57
Perl好きだけどLuaの方が親近感は沸く
358:デフォルトの名無しさん
07/07/23 02:36:33
ぅあー助けて
359:デフォルトの名無しさん
07/07/24 11:53:01
>>346
Xtalいいよね。
早く1.0にならないかなぁ
360:デフォルトの名無しさん
07/07/24 18:39:57
>>359
1.0になってもバグフィックスぐらいで殆ど機能変わらないと思うぞ。
てか早く1.0になって欲しかったら沢山使ってバグ報告しようぜ。
361:デフォルトの名無しさん
07/07/24 19:12:45
Xtalは仕様が変態的で面白いんだが実装が首傾げたくなるんだよなぁ
"1" == 1はnullが返って1 == "1"はエラーとか。
前者がC++からsend使ってて
後者がXsrcで存在しないString::op_eq_r_Intを呼んでるせいだと思うんだが。
362:デフォルトの名無しさん
07/07/25 07:22:08
PC初心者でも弄り易くというぅあの思想が好きだ。
363:デフォルトの名無しさん
07/07/25 19:14:56
Luaは学習用に使えるサンプルやチュートリアルが少なすぎるな
364:デフォルトの名無しさん
07/07/25 23:15:37
lua-wikiのチュートリアルやらsample-codeやら見たけど
なかなか面白い
Pascalの文法に近いので、Pascalのサンプルやチュートリアルをluaでも動くようにしたらいいのではないだろうか
googleのソースコード検索で探してみたが、あまりヒットしなかった
365:デフォルトの名無しさん
07/07/25 23:46:40
ところでLuaのコルーチンで途中から別の関数に切り替えるのってどうすればいい?
例えばFunc0っていう関数の途中でyieldしてC++側に制御戻した後、
次にresumeするとFunc1という関数の最初から始まるようにする感じ。
単純にC++からの関数呼び出しでやると、yieldのところでエラー出てしまい、その後resumeしても戻らないんだが・・・。
366:デフォルトの名無しさん
07/07/26 01:54:57
やりたいことがいまいち不明だけど yield のあとに return Func1() って書くという意味ではないのかな。
367:デフォルトの名無しさん
07/07/26 02:14:50
lua_tostringで得られたポインタは、解放しなくていいんでしょうか?
368:デフォルトの名無しさん
07/07/26 13:09:04
>>367
チュートリアルの、lua_tolstringのところに
Because Lua has garbage collection, there is no guarantee that the pointer returned by lua_tolstring will be valid after the corresponding value is removed from the stack.
ってあるから、ガベージコレクタで解放されるものだと思っています。
369:デフォルトの名無しさん
07/07/26 23:57:05
>>366
Luaのスクリプト側で次にresumeして戻る位置を決めるんじゃなくて、C++側から切り替えたい場合どうすればいいのかな、と。
ちょっと記述不足だった。すまん。
370:デフォルトの名無しさん
07/07/27 13:53:53
スクリプトでできることはすべてC側からもできるよ
371:チラシの裏
07/07/27 20:51:33
LuaをC++で使うときは
lua.hの代わりに、lua.hppをインクルードする、っと
372:デフォルトの名無しさん
07/07/28 19:30:45
UNICODEに対応していれば、ぅあ.hでもおk
373:デフォルトの名無しさん
07/08/01 16:40:05
Squirrelに関して質問。
SqPlusのソースを呼んでいるのですが、
SquirrelObjectで使っている、sq_addref というAPIがあり、
リファレンスによると、参照カウンタのインクリメントとあるのですが、
これって、つまり、C++側で作成した SquirrelObject で束縛?するためでしょうか?
sq_addref を sq_release しない限りは、squirrelが勝手に開放しないということで
あってるでしょうか?
374:デフォルトの名無しさん
07/08/01 16:41:13
読みにくくてすまそ。
SqPlusのソースを呼んでいるのですが、
SquirrelObjectで使っている、sq_addref というAPIがあります。
リファレンスによると、参照カウンタのインクリメントとあるのです。
これは、つまり、C++側で作成した SquirrelObject で HSQOBJECT を束縛?するためでしょうか?
sq_addref を sq_release しない限りは、squirrelが勝手に開放しないということで
あってるでしょうか?
375:デフォルトの名無しさん
07/08/01 19:17:53
参照カウンタのインクリメントは参照カウンタのインクリメントだよ
けどその理解で多分間違ってないと思う
376:デフォルトの名無しさん
07/08/01 19:39:20
URLリンク(ll.jus.or.jp)
377:デフォルトの名無しさん
07/08/01 21:08:24
URLリンク(ja.wikipedia.org)
- sq_addrefで参照カウンタが+1
- sq_releaseで参照カウンタが-1 (0となったらsq_resetobjectが呼ばれる)
378:デフォルトの名無しさん
07/08/01 22:04:59
サンクス。
あ、いや、参照カウンタ知らないわけではないすw
HSQOBJECTを保持するときは、こうやって参照カウンタをいじるのがその流儀なのね、思っただけなので。
379:デフォルトの名無しさん
07/08/02 16:53:20
Squirrelの質問です。
SqPlusの SquirrelVM.cpp の SquirrelVM::RunScript を見ています。
sq_gettopでスタック位置を確認しながら、見ていたのですが、
この関数、スタック操作が、間違ってませんか?
sq_callが成功した時点で、二つスタックが残っているので、
sq_popで2つポップしないといけないはず・・・。
バージョンは、ersion 2.1.1 stable
(でもHISTORYみてたら、
-sq_call() doesn't pop the closure (just the params) って書いてあるんだよなあ)
SquirrelObject SquirrelVM::RunScript(const SquirrelObject &o,SquirrelObject *_this)
{
SquirrelObject ret;
sq_pushobject(_VM,o._o); //スタックに残る
if(_this) {
sq_pushobject(_VM,_this->_o); //引数1
}
else {
sq_pushroottable(_VM); //引数1
}
if(SQ_SUCCEEDED(sq_call(_VM,1,SQTrue,SQ_CALL_RAISE_ERROR))) {
// 成功したら、スタックに戻り値が残る
ret.AttachToStackObject(-1);
sq_pop(_VM,1); // sq_pop(_VM,2);では?
return ret;
}
sq_pop(_VM,1); // 失敗したら、スタックに
throw SquirrelError();
}
380:デフォルトの名無しさん
07/08/02 16:55:10
sq_pop(_VM,1); // 失敗したら、スタックに1つだけ残っている
throw SquirrelError();
}
なんで、そう思ったかというと、
testSqPlus2.cppが残っているはずのスタック(戻り値)を全然考慮してないからなんですけど
381:デフォルトの名無しさん
07/08/02 17:03:52
ごめんちょっと勘違い
バージョンとHISTORYは、SqPlusじゃなくて、Squirrelのですね。
SqPlusのバージョンは、stable 25でした。
382:デフォルトの名無しさん
07/08/02 18:30:48
URLリンク(squirrel-lang.org)
383:デフォルトの名無しさん
07/08/02 18:48:57
>>382
どっちも日本人なのか・・・
384:デフォルトの名無しさん
07/08/02 19:09:04
>>382
同じバグかYO!\(^o^)/
サンクス。
おれの判断は正しかったようだ。
つか、公式フォーラムくらい検索しろ > 俺
コミッターもメンテナーにも日本人居るのなw
385:デフォルトの名無しさん
07/08/03 04:06:58
生のSquirrelでなくSqPlus使うと
コード大きくなたり重くなったりするの?
386:デフォルトの名無しさん
07/08/03 07:27:17
もともと重いからあまり関係ないような
387:デフォルトの名無しさん
07/08/04 21:27:01
LuaLua魂オワタ
388:デフォルトの名無しさん
07/08/04 21:37:39
>>387
参加したのか?
389:デフォルトの名無しさん
07/08/04 22:18:34
ぅあぅあ
390:デフォルトの名無しさん
07/08/04 22:58:17
行った。
・上野氏(みんな読んでるLuaマニュアルの訳者)によるLua紹介。
「遺伝子関連のプログラムを組む上で最も都合が良かった」
・Luaの速度がXtalとPnutsから比較対象にされてた
・Xtalは頑張って作ってる印象。作者ナイスキャラ
・Squirrelは上野氏が一言触れた程度
その他はプレゼン中にチャットログ(Lingr)が流れる奴とか、嘘だらけのmatzプレゼンとか、いろいろ。
全体的には演者のレベルが結構高かった印象。
体調が最悪じゃなければなかなか良かった。
391:デフォルトの名無しさん
07/08/05 03:55:44
Xtaの彼はテンパっちゃったのか「切迫」を正しくない使い方で
連発してたね。気持ちはわかるがもうちょっとおちつけとw
392:デフォルトの名無しさん
07/08/05 19:33:36
>・Luaの速度がXtalとPnutsから比較対象にされてた
Luaメジャーじゃん?と思った
393:デフォルトの名無しさん
07/08/06 03:09:03
測るだけに
394:デフォルトの名無しさん
07/08/06 08:06:31
>>393
山田君ざぶとん1枚あげて!
395:デフォルトの名無しさん
07/08/06 22:48:18
Lightweight Language Spirit
URLリンク(ll.jus.or.jp)
これかー
LuaLuaっていうからわからんだじゃねーか
Luaだけじゃねえw
つか、Luaの話すくねえw
396:デフォルトの名無しさん
07/08/06 23:57:53
Lua 自体の話は少ないけど、色んなところで触れられてた。>>390 参照
397:デフォルトの名無しさん
07/08/07 02:37:50
> 原著第5版
テクスチャへの描画とか、実際に使う際の普遍的なチップスとかって
載ってますのん?
そういうのは、Game Programming Gems買えって事かな?(そろえたら、赤本よりたけええけどよぉおぉ)
398:デフォルトの名無しさん
07/08/07 02:38:25
誤爆 orz
399:デフォルトの名無しさん
07/08/07 04:06:38
Game Programming Gems といえば
6巻でLuaが扱われてるよね。
読んでないけど、どうなんだろう
400:デフォルトの名無しさん
07/08/08 01:12:02
LL魂、まとめ見てたけど、Cleanとか、Javaとか、OCamlはLLじゃねえw
すでに、適用範囲広がってるな。
普通に、L魂でいいんじゃないのか?
401:デフォルトの名無しさん
07/08/08 01:27:34
lightのL?
ぅあのL?
402:デフォルトの名無しさん
07/08/08 01:55:24
LanguageのLのつもりで書いた > L魂
403:デフォルトの名無しさん
07/08/08 03:01:53
>>400
確かだ一回目でHaskellが取り上げられてるはずだが?
すでにどころか最初から適用範囲も何もあったもんじゃなかったんじゃねえの。
404:デフォルトの名無しさん
07/08/08 04:15:12
>>400
うむ、Cleanの説明で「速い!」って言ってるの見て、これはカテゴリ違うよなーとは思った。
言語まわりの新しい動きをおさえつつ、中心軸はlightweightに置くって感じで理解している・・・
Javaに関してはJythonとかJRubyとかの絡みが主かと。
今後スクリプト言語が動くプラットフォームとして、JavaなのかDLRなのか、みたいな。
そういう流れでは、JLuaとかIronLuaはでないのかと。
lua-lのほう見るとつくってる人は居るっぽいな。
405:デフォルトの名無しさん
07/08/08 04:31:46
IronSequirrel超希望
406:デフォルトの名無しさん
07/08/09 00:24:37
Lua魂開催しよう!!
407:デフォルトの名無しさん
07/08/09 14:48:53
参加者1名とかで終わりそう
408:デフォルトの名無しさん
07/08/10 23:53:06
要するにOff会じゃないのか?
409:デフォルトの名無しさん
07/08/11 10:52:37
>>407は来てくれるってことだね!
410:デフォルトの名無しさん
07/08/11 13:11:25
>>407が参加したら主催者と合わせて参加者2名になっちゃうでしょ
411:デフォルトの名無しさん
07/08/11 18:57:01
主催者すら来ないOff、ってのもそれはそれで魅力的だけどな
412:デフォルトの名無しさん
07/08/13 03:00:30
それはもう主催者って呼び方が適当じゃないなw
企画者とか。
413:デフォルトの名無しさん
07/08/19 21:03:14
>166
もう三ヶ月経ってますよ。ちょっと焦らしすぎじゃーないですかね?
414:デフォルトの名無しさん
07/08/19 21:38:34
お前ら他人の作った糞言語使って嬉しいか
おれは我慢ならん
415:デフォルトの名無しさん
07/08/19 22:07:07
C++だってJavaだってC#だって他人が作った言語なんだが、お前は使わないのか?
これらの言語が糞じゃなくてぅあが糞だというのなら、それはお前の主観であって
他人に押し付けるものではないよ
416:デフォルトの名無しさん
07/08/19 22:14:12
糞言語かどうかは俺が決める事であって、
C++やJavaやC#がそうだとは一言も言ってないが
417:デフォルトの名無しさん
07/08/19 22:16:14
糞言語判定委員乙
418:デフォルトの名無しさん
07/08/19 22:22:01
他人のレスは初めの一行しか読まないのな
419:デフォルトの名無しさん
07/08/19 22:25:06
>>416は明らかにレスを読んでないし、
恐らく普段から人の話を聞かない自己中な人間なんだろうね。
糞言語判定委員乙
420:デフォルトの名無しさん
07/08/19 22:46:34
決め付けは良くない。
421:デフォルトの名無しさん
07/08/19 22:59:14
↓糞言語番付
422:デフォルトの名無しさん
07/08/19 23:05:42
1.糞言語かどうかは俺が決める事
2.糞言語かどうかは俺が決める事
3.糞言語かどうかは俺が決める事
4.糞言語かどうかは俺が決める事
5.糞言語かどうかは俺が決める事
決め付は良くない。
423:デフォルトの名無しさん
07/08/19 23:09:17
糞言語かどうかは俺が決める事であって、決め付けは良くない。
424:デフォルトの名無しさん
07/08/19 23:25:44
いや俺が決めるやるってば.決め付けは良くない.
425:424
07/08/19 23:27:04
日本語がおかしいかどうかも俺が決める.
426:デフォルトの名無しさん
07/08/19 23:52:53
俺がおかしいかどうかは…orz
427:デフォルトの名無しさん
07/08/20 00:02:59
俺が糞かどうかは日本語がおかしいかどうかで決まった。
428:デフォルトの名無しさん
07/08/20 01:02:36
俺が糞かどうかはお前が決める事であって、
お前が糞だとは一言も言ってないが
429:デフォルトの名無しさん
07/08/20 08:06:52
日本語は糞言語じゃないよ
430:デフォルトの名無しさん
07/08/20 08:25:17
日本語は糞言語だって土屋賢二が言ってた
431:デフォルトの名無しさん
07/08/20 08:27:26
LightWeight的観点からすれば日本語は糞
432:デフォルトの名無しさん
07/08/20 08:33:55
ついでにRubyは糞
433:デフォルトの名無しさん
07/08/20 09:29:10
スレが伸びてると思って楽しみにしてきてみれば
またこれか
学習しろ俺
434:デフォルトの名無しさん
07/08/20 14:18:58
まあお前らはそうやって糞言語を決めつけてればいいさ
その代わりPerlたんは俺の嫁だからな
435:デフォルトの名無しさん
07/08/20 23:00:02
∧_∧ ┌──────
◯( ´∀` )◯ < 僕は、LISPちゃん!
\ / └──────
_/ __ \_
(_/ \_)
lll
436:デフォルトの名無しさん
07/08/20 23:13:00
Cで書いてあるのが良言語でC++で書いてるのが糞言語。この分類で9割方
当たる。
437:デフォルトの名無しさん
07/08/20 23:25:12
どこがどう糞なのか書いてくれると言語談義に花が咲くのに
438:デフォルトの名無しさん
07/08/21 00:14:12
C++はいろんな機関で策定されてきた標準ライブラリにのみ価値があり、
それ以外の自家製オナニーライブラリは糞と言っていい。
Cで書き直せグズ
439:デフォルトの名無しさん
07/08/21 00:49:14
boostとかほんとゴミだね
440:デフォルトの名無しさん
07/08/21 02:20:19
↓MFCはおまえの嫁
441:デフォルトの名無しさん
07/08/21 02:49:19
/ ̄ ̄ ̄ ̄\
/ :: ヽ
/ \ / |
(∂| | ・ ・丿 |
ヽ| "" "" |
| ___ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\ /__/ / < やっぱぅあはすげえや!
/ヽ /\ \_________________
442:166
07/08/22 18:11:01
squirrelの解説書きました
ごめん、もうめんどくさくなってすっぽかすつもりでした
かなり投げやりですがとりあえず約束は守りましたよ~
443:デフォルトの名無しさん
07/08/22 21:08:02
>>442
URLを張ってくれ
444:デフォルトの名無しさん
07/08/22 22:14:06
wiki
445:デフォルトの名無しさん
07/08/22 23:31:20
ジェネレータが役に立たない理由が気になる.
何をどう直すつもりなのかも.
446:デフォルトの名無しさん
07/08/23 00:18:17
>>445
その辺をちょっと書き足しました
447:デフォルトの名無しさん
07/08/23 00:53:40
速度にナシつけるならもうちょっと裏付けを示そうよ
delegateの使い方が無茶苦茶だよ
threadあたりは突込みどころが多すぎてもう
448:デフォルトの名無しさん
07/08/23 11:11:51
>>447
速度に関しては確かにはっきりと言えることじゃないですね
delegateは非常駐っぽいことをやる方法がこれしか思いつかなかったので…
突っ込みどころあるなら具体的に言ってもらえると助かります。個人的にそれを期待して書いてみたというのもあるので
449:デフォルトの名無しさん
07/08/23 11:27:58
俺も期待してる
450:デフォルトの名無しさん
07/08/23 23:20:45
どおおおんだけええええええ
としかリアクションが思い浮かばない
451:デフォルトの名無しさん
07/08/23 23:25:17
>速度にナシつけるならもうちょっと裏付けを示そうよ
ナシって、
>その使い方ならゲームでも大丈夫でしょうが、
>スクリプトでガリガリ計算を行うようだと速度面で問題になってくると思います。
この部分か?他に見当たらないが。
これは当然の話で、裏づけも糞もないだろ、と思う。
452:デフォルトの名無しさん
07/08/23 23:43:10
言ってることがどんなに真だろうが
実際のデータがなかったら何も言っていないのといっしょだよこういう話は
453:デフォルトの名無しさん
07/08/23 23:47:00
>>452
はいはい。お前は口を出すとマイナスにしかならないから黙っててねこういう話は
454:デフォルトの名無しさん
07/08/24 00:13:42
>>453
>>452が何をいってるのかちゃんと理解できてるか?
キレてるのだけはわかるんだが
黙ってろとかどんだけだよ
455:デフォルトの名無しさん
07/08/24 00:20:08
どおおおんだけええええええ
456:デフォルトの名無しさん
07/08/24 01:25:58
まあいろいろと突っ込まれるのは覚悟してました
Squirrelのことだったらまだしもそれ以前に用語の使い方がおかしかったりとか
そういう指摘もあるだろうなあ、と
それはもう未熟っぷりを晒す覚悟でしたのでいいのですが、
Squirrelに関する間違いはここで出して欲しいです。それをまとめたいので。
特に>>448さんのdelegateに関しては具体的に理由を聞きたいです
常駐、非常駐的なことをするのって他に方法あるんですかね?
個人的にそこら辺は死活問題なんですよね