- 1 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 13:02:21 ]
- LuaやSquirrelなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■過去スレ その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
- 912 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 15:09:46 ]
- >組み込みやすさ、本体とのやりとりの容易さ
この2点に関してはAngelScriptが一番だと思うんだがどうだろう。
- 913 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 15:13:08 ]
- COM用のスマートポインタがそのまま使えたのにはびっくりした
- 914 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 15:25:51 ]
- >>912
C/C++とイディオム的に同じことしかできないんじゃなぁ。 無名クロージャーとかコルーチンとかのサポートはあるんだろうか。
- 915 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 15:33:59 ]
- >>914
コルーチンは言語的にはサポートされておらず、C++側でそれのための仕組み作ってやらないとダメ。 簡単にできるけど。
- 916 名前:デフォルトの名無しさん mailto:sage [2009/04/12(日) 17:10:01 ]
- じゃあ駄目じゃん
- 917 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 23:38:07 ]
- 本屋で「はじめてのLuaプログラミング」って本見かけたんだけど、全然話題になってないね。
もしかして地雷?
- 918 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 23:48:15 ]
- ところで914の言うコルーチンは、Luaでいうところの、
・スクリプト側でcoroutine.createで作るやつ ・C++側でlua_yield呼び出して止めるやつ のどっち指してるんだろう。
- 919 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 23:48:25 ]
- スクリプト言語による効率的なんたらの方を買って読んだ。
そっちの薄いのは言語仕様を書いてあったな。入門用っぽかった。地雷ではないだろう。
- 920 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 01:55:58 ]
- 個人的には、
・はじめてのLuaプログラミング は地雷 ・入門Luaプログラミング は良書 ・スクリプト言語による、効率的ゲーム開発C/C++へのLua組み込み実践 は 地雷ともまでは行かないが、そう受け取れる。 パン食い競争でぶら下げられてるフランスパンって感じ。 一部の実装の例に一貫性がない。しかも大事なところ。 ゲーム作りを謳ってるのに、徐々に作りながらじゃないくて、 「こういう時は、こんな感じでいいでしょう」みたいに書かれていて、 実際に積み重ねてく訳じゃないから使いたい時に使えない。 自分で考えて実装しろって事なんだろうけど、全体的に動かないもの見せられてる感は個人的には困り所。 だけど、Cへ実装の例に関しては一番詳しいのも事実。 入門Luaプログラミングと合わせて使うといい感じに分からない所同士を補ってくれたりするような関係。
- 921 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 03:58:47 ]
- >>920
>スクリプト言語による そっかなー。動作するゲームのソースコードは入手できるわけだし。 コラムなんかを見てもなかなか参考になることが書いてあるように思える。 動くか動かないかはソースコードを読めばいいわけで、必ずしも本で全体を解説する必要はないんじゃないかしら。 別に作者の回し者ではないが、一通り目を通したものとして。
- 922 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 07:44:16 ]
- ちと質問
Luaってgotoある? スコープ違うとwhileやifで逃げるのは面倒なんだよな〜 >スクリプト言語による これの不満点はLuaで全部やる必要ないじゃんというところ toluaはクラスのポインタを渡してやってLua側で制御するために使ってて 管理そのものはC側でやった方がいろいろと楽だと思うんだよね 俺は一部のメンバ関数をLuaで書き換えるみたいな使い方してる
- 923 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 09:20:20 ]
- 調べてすぐに分かることは、人に聞くほうが時間の無駄だと思うんだが。
- 924 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:21:45 ]
- スルー推奨
- 925 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:36:10 ]
- Squirrel on Flash Player
ttp://ruriko.denpa.org/200904b.html#2001
- 926 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 06:04:10 ]
- >>925
Adobe AlchemyでSquirrelがFlash上でうごくのかー。すげえw
- 927 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 02:45:52 ]
- ちょっと詳しい人教えて欲しいんだけど
Luaを組み込んだコンシューマゲームの製作の際に、 Luaのライセンス(MIT License)ってどういう風に処理したらいいのかな? ソースのどっかにライセンス表記するのでいいのか、 それとも取説とかに明記する必要がある?
- 928 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 02:54:01 ]
- >>927
ソースだけじゃダメ。取説の類に記載が必要。っていうかライセンス嫁。
- 929 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 06:52:41 ]
- >>928
∧__∧ (´・ω・) いやどす ハ∨/^ヽ ノ::[三ノ :.、 i)、_;|*く; ノ |!: ::.".T~ ハ、___| """~""""""~"""~"""~"
- 930 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 08:48:53 ]
- >>928
ありがとう 調べはしたんだけど、ヘッダにでも書いときゃOKとか 言ってるサイトもあって混乱してたわ
- 931 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 08:54:16 ]
- >>930
それはソース配布の場合の条件 バイナリ配布時は取説か、あるいは実行ファイルそのものでユーザが参照できる状態にしておく必要がある。
- 932 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 10:40:36 ]
- バイナリを入手したユーザーが参照できるってのがポイントだよな
ユーザーが見られるなら、CD内にreadme.txtでも置いてインストーラーでリンクはっておけばいいのかも試練が、 家庭用なら誰も見ないし(or 見れないし)、鳥説が自然でしょう
- 933 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 10:41:42 ]
- と書いて、思ったけど、中古だとどうなるん?
あとダウンロード販売は。 ・中古は無視 ・ダウンロード販売は、ゲーム内クレジットをつくってそこに記述 って感じでしょうか
- 934 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 20:19:56 ]
- Xtalがもうすぐ1.0か
- 935 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 22:22:00 ]
- 洋ゲーとかでタイトルロゴの下にいっぱいコピーライトが羅列してあるじゃん
あれみたいにしたら
- 936 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 22:47:51 ]
- 洋ゲー風にするなら、クレジット表示をメニューの中に入れてしまう手もあるな。
選択するとスタッフロールとかが流れるようにしておく。
- 937 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 23:11:47 ]
- へーそれいいね
- 938 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 03:14:16 ]
- それって、取説に載せずにゲーム中に表示してしまうってこと?
そんなんでもいいのか
- 939 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:14:35 ]
- ゲーム起動時のデモで、Luaのサイトにある、青い丸に「Lua」って書かれた画像を出すのはOKなんだろうか。
- 940 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:27:51 ]
- ライセンスのページには必須じゃないけどいれてくれるとうれしいな的なかんじでかかれてるね>ロゴ
- 941 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 17:08:17 ]
- ∧_∧ / ̄ ̄ ̄ ̄
( ・∀・) < Lua!! ⊂/ 9) \____ q( / > >
- 942 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 11:17:04 ]
- 今組み込み言語を制作中で、Cから言語へのインターフェイスを考えてるところなんだけど、
どういうのがいいのか悩んでる。 二つ案があって、ひとつは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を用意する。 ただこちらのほうはスタックに比べて、 ・ハンドル開放処理を忘れるとメモリリーク ・遅い という問題がある。 前者はスタック操作でも同じ(スタックトップを戻し忘れるのがそれにあたる)だけど、 後者は頻繁に行う処理な分、結構致命的。 ただ後者の方法のほうがスタックの状態を覚えなくてよい分、直感的といえば直感的 なんだよな。 両方用意したほうがいいかな?
- 943 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 11:31:29 ]
- とおもったけど関数呼び出しをハンドルに対して行うのは非常に無駄が多いな…
やっぱりスタック操作かOTL
- 944 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 22:13:00 ]
- ごめん、何がいいたいかサッパリだわw
自前で実装するんだった、luabindとかxtalみたいにバインダがあると直感的で楽だと思うけど。 C++じゃなくて純粋なC言語でインターフェース作りたいの?
- 945 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 22:47:39 ]
- >>942
LuaではluaL_refとluaL_unrefでハンドルを使えるよ
- 946 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 14:25:22 ]
- >>945
ああ、そういやそうだった。やっぱり両方用意するのが得策か。 Pythonではハンドルしか扱えないようだったから、どうかなーと思ったんだけど。 ありがd
- 947 名前:デフォルトの名無しさん [2009/05/06(水) 17:02:58 ]
- Luaって非OOの動的型付言語ですけど、
AWKやBASICと何が違うんですか? なんか、単なる先祖帰りのような・・・ Cとの連携が楽とか、 そういう違いは分かるんですけど。 AWKやBASICを拡張しただけでも代わり映えしないんじゃないですか?
- 948 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 17:11:36 ]
- >>947
ttp://www.lua.org/about.html ここに全部書いてあるから読んでこい。納得しなければそれはそれで
- 949 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 21:01:08 ]
- >>947
>Luaって非OOの動的型付言語ですけど、 Luaはオブジェクト指向言語として十分な機能は備えてる。 言語のパワーなんて口で説明するよりも実際に触ったほうが理解がはやいと思う。 もし触った上での疑問なら、もうちょっと詳細に違和感を説明したほうがいいんじゃないかな。 自分がLuaを使ってるのは単純明快、 Luaでドメインを書くコスト+C++でその他を書くコスト < C++ですべて書くコスト という不等式が(自分の場合)成り立つから。 お前さんもAWKやBASICがC++より生産性が高いと思ってて、かつそれが組み込み可能 ならば、それを使えばいいんじゃないの?
- 950 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 23:26:00 ]
- |Д゚)ジー
|Д゚)ノ<AngelScriptもよろしく! |ミサッ
- 951 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 23:46:11 ]
- 単なる先祖返りなわけないだろ
ちゃんと計算されてる。アングルとか
- 952 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 00:47:42 ]
- 最近、Squirrelはポロポロと新しいバインダが出回るな。
- 953 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 01:49:18 ]
- >>952
そうなん?みてみたいからポインタよろ
- 954 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 02:11:32 ]
- >>953
事件は2ちゃんねるで起こってるんじゃない。公式フォーラムで起こってるんだ!
- 955 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 03:14:51 ]
- ttp://squirrel-lang.org/forums/thread/3198.aspx
これか。コードが整理されてて sqplus よりはるかにわかりやすいですな getter/setter の実装がちょっとトリッキーなのが要注意なかんじ。
- 956 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 03:17:58 ]
- ttp://squirrel-lang.org/forums/thread/3129.aspx
すぐ下にもう一つあった^^; なるほどぽろぽろだな
- 957 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 23:57:59 ]
- scratイイ!luaから乗り換えようかな
- 958 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 09:14:24 ]
-
∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
- 959 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 12:32:10 ]
- lua_tointeger の unsgined int バージョンが欲しいんだけど、
strtoul(lua_tostring(L, -1), NULL, 0) みたいにするしかないの?
- 960 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 12:36:11 ]
- (unsigned int)lua_tonumber(L,-1) じゃだめなん?
- 961 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 17:20:34 ]
- C/C++とバインドするときの話なら別の論となるが、
スクリプト上のプログラミングならunsigned整数など考えないで済むコードを書いた方が楽だぞ。
- 962 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 21:01:47 ]
- 色コードが書いてあるテキストファイルを読み込みたいんだけど、
"0xAARRGGBB" の形式で書いてあるから lua_tointeger だと読めないんだよね そうか lua_tonumber は double だから 32ビット符号なしでもちゃんと変換できるのかな? 試してみます
- 963 名前:962 mailto:sage [2009/05/20(水) 21:34:17 ]
- テキストファイルというか lua でかいた設定ファイルという感じね
- 964 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 07:26:38 ]
- //
/ / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
- 965 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 07:42:45 ]
- //
/ / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Luaまピョーん☆ / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
- 966 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 13:39:45 ]
- Luaのコメントが//か#だったら最高だったんだが...
-- だと構文ハイライトされないエディタで見たときにコードに埋もれてよく見えん。
- 967 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 14:21:38 ]
- そういう人は squirrel にうつると精神衛生的には楽になるよ!
- 968 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 15:29:42 ]
- Luaの向上心のなさは最低レベルだから
宗教論争の火種になりそうな「改良」は、いくら提案してもむだだと思う。
- 969 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 22:07:43 ]
- -- は伝統的な構文だからもっと賢いエディタを使えばよろし
- 970 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:01:14 ]
- >>968
向上心のなさ、というか後方互換性が最大限に考慮されている気がする。 だから、商用プロダクトにも安心して採用できるんだろうけど。 最近、web周りでRubyとかRailsとかも使っているんだが バージョン上がると全然違う挙動とか、書き方換わったりするのがザラだったりするんだが、これが結構キツイ 書籍が出ても、すぐ陳腐化しちゃったり…書籍の日本語訳が出たころには、次のかなり変わったバージョンがなんて (Ruby 1.8はいいんだけど、Railsは本当にヒドイw しかも次期バージョンで他のフレームワークと統合されるのが決定しててちょオマ…)
- 971 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:49:52 ]
- //でコメントか。
AngelScriptの出番だな!
- 972 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 23:57:55 ]
- いやさ、エディタにあわせてライブラリ諸々変更なんて
誰も本気で言わないから
- 973 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 00:29:20 ]
- つーかそんな程度もカスタマイズできないエディタを持っていることと
そんな程度も我慢できない根性でLuaを選んだ自分の浅はかさを呪うがいい
- 974 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 09:56:26 ]
- 我慢しないで、カスタマイズができる「普通の」テキストエディタを使ってください
- 975 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 12:52:22 ]
- 自分は普通にエディタ使うけど、客が使ってくれるとは限らないじゃない。
メモ帳で開けないから、設定ファイルの拡張子は xml じゃなくて txt にしてくれと言われたのに。
- 976 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 12:58:22 ]
- メモ帳で開くような設定ファイルを XML にする時点で仕様バグといってもいい。まじで。
- 977 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 13:02:46 ]
- それは拡張子xmlをメモ帳に関連付けるだけで良かったんじゃないか
- 978 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 13:33:11 ]
- 細かく設定したいから、可能な限り設定項目多くしてくれといわれたので、
ini形式よりもxmlのほうが楽だったんだよね。 メモ帳に関連付けるだけで終わりだし、そもそもxmlエディタいれればそれで終わりなのに。
- 979 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:35:22 ]
- xmlなんかは1行目に文字コードセットが定義されているから、
下手にメモ帳で開いて保存すると、文字コード変わっちゃうしメンドクサイことになりますよね あと、xmlはMSからエディタ出てるけど微妙に使いづらいのが難点 個人的に、スクリプト言語で使うオススメの設定フォーマットはJSONだと思う
- 980 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:37:08 ]
- 素人さんにさわらせる場合は CSV 以上のものは使っちゃダメだってのが経験則
- 981 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:41:20 ]
- >>980
同感ですな xmlは素人には無理 フォーマット決めうちなtxtか、ini程度でokな気がする
- 982 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 16:29:30 ]
- 質問。
C からlua の関数を呼ぶ -> 呼ばれた関数は、lua 内の別の関数 A そのものを返す -> C 側でそれを保持して、必要なときに A を呼びだす てことをやりたいんだけど、どうすればいいですか? lua の関数オブジェクトやみたいなのをスタックから取得する関数が見当たらないのですが。 lua_getglobal(L, "getfunc"); lua_call(L, 0, 1); myfunc = スタック[-1]からlua関数を取得 ... しばらくたってから ... myfunc をスタックにpush lua_call(...) ということがやりたいです。
- 983 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 17:09:08 ]
- >>982
Lua はオブジェクトを直接C側で参照する機構を持たない。よって単純には出来ない。 一般的には luaL_ref を使ってオブジェクトのリファレンス(絶対重ならないint値)をとって、 それをつかってレジストリテーブルにつっこんでおいて、必要になったらそのリファレンスを つかってレジストリテーブルから引っ張り出してくる、という手法がとられる。 そんなややこしいのはいやじゃって人は、リファレンスを C側で保持できる squirrel オススメ
- 984 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 17:58:18 ]
- いまのプロジェクトにはC縛りがあるのでC++なsqurrelはダメなんです。
luaL_ref が一番素直そうなのでそれでやってみます。どうもありがとう。
- 985 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 00:58:12 ]
- SquirrelってC++だっけ?
bindは確かにC++だが、直叩きだったらCの範疇でいけたような・・・
- 986 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 01:07:48 ]
- squirrel のソース自体は c++ だよ。
class でなくて struct なのは趣味かね。 ただ、インターフェース的には全部C合わせなので、普通にリンクして使える。 例外とかも全く使ってないから問題になるところはどこにもない。 プロジェクトが C縛りってのがいまどきだと意味不明だねぇ
|

|