【Lua】組み込み系言語総合【Squirrel】

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
LuaやSquirrelなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめ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
2デフォルトの名無しさん:2008/03/11(火) 13:02:49
■関連してるかもしれないスレ
Io 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/
3デフォルトの名無しさん:2008/03/11(火) 13:03:54
4デフォルトの名無しさん:2008/03/11(火) 13:05:27
■他、前スレに載ってた言語
The 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

※テンプレ以上※
5デフォルトの名無しさん:2008/03/11(火) 15:59:21
組み込みと言えば、TCLだな
6デフォルトの名無しさん:2008/03/11(火) 16:07:26
>>1
7デフォルトの名無しさん:2008/03/11(火) 16:40:28
function L(t,c)
return 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})
8デフォルトの名無しさん:2008/03/11(火) 17:10:27
>>5
なんでTCLなの?
組み込みのIDEとかでよく使われてるけど
9デフォルトの名無しさん:2008/03/11(火) 18:47:39
>>1
10デフォルトの名無しさん:2008/03/11(火) 21:17:18
RubyもPythonも組込めるけどなあ。
Perlはさすがにやったことないが、できないこともないだろう。
11デフォルトの名無しさん:2008/03/11(火) 22:39:02
RubyにしてもPythonにしても標準ライブラリや言語機能がでかすぎにみえる。
組込みに向いてるってのはコードサイズまたは外部への依存の少なさと
言語機能のバランスが取れてるって意味にではないのかと。
12デフォルトの名無しさん:2008/03/12(水) 01:23:20
没になったテンプレ案には書いてあったけど、
そういう比較的大きな言語の組みこみの話も
多少は許容することが前スレで同意されていたはず。

でも一応Luaスレの続きだからその辺は空気読んでねと。
13デフォルトの名無しさん:2008/03/12(水) 01:25:10
Ruby Perlは$がきらいだ
>>1 乙curry
14デフォルトの名無しさん:2008/03/12(水) 06:04:56
このスレタイにくるまで長かったな
15デフォルトの名無しさん:2008/03/12(水) 11:24:25
前スレは実りの多いスレだった
二年前からのスレだから当然かwww
16デフォルトの名無しさん:2008/03/12(水) 11:48:00
GCのまとめ

LuaのGCはマーク&スィープ方式を組み込み言語向けに改良したインクリメンタル方式。
SquirrelのGCは参照カウント方式。

マーク&スィープ方式の欠点:
GCの処理に時間がかかるとハングアップした感じになる。その欠点を克服すべく、
少しづつ分割してGCの処理を行う(インクリメンタル方式)、
マルチスレッドで平行してGCの処理を行う、などの進化型が現在の主流。

参照カウント方式の欠点:
参照カウンタの更新処理によるオーベーヘッドにより処理速度が低下する。
循環参照への対処が必要になる。
過去の方式である感は否めない。
17デフォルトの名無しさん:2008/03/12(水) 12:41:27
むしろ,ここはSqとLのどちらを使うか自分で判断できる人のスレ
GCの比較は余計なお世話というのが前スレの結論じゃなかったか?
18デフォルトの名無しさん:2008/03/12(水) 12:50:09
squirrel

[名](複 〜s, 1で((集合的))〜)
1 《動》リス:肉は食用になる.
2 [U]リス類の肉[毛皮].
3 ((米俗))変なやつ. ━━[動](〜ed, 〜・ing;((英))〜
19デフォルトの名無しさん:2008/03/12(水) 13:34:15
         ____   
       / \  /\ キリッ
.     / (ー)  (ー)\      
    /   ⌒(__人__)⌒ \    <過去の方式である感は否めない。
    |      |r┬-|    |      
     \     `ー'´   /
    ノ            \
  /´               ヽ              
 |    l              \
 ヽ    -一''''''"〜〜``'ー--、   -一'''''''ー-、.    
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))


          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ    だっておwwwwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)
| / / /      |r┬-|    | (⌒)/ / / //  
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/
|     ノ     | |  |   \  /  )  /  
ヽ    /      `ー'´      ヽ /    /     
 |    |   l||l 从人 l||l      l||l 从人 l||l   バ   
 ヽ    -一''''''"〜〜``'ー--、   -一'''''''ー-、 ン
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒)) バ
                             ン
20デフォルトの名無しさん:2008/03/12(水) 14:28:03
>>18
欧米じゃリスを食うのか…
21デフォルトの名無しさん:2008/03/12(水) 15:27:03
squirrelちゃん涙目wwwwwwwwwwwwwwww
22デフォルトの名無しさん:2008/03/14(金) 19:35:26
なんでこんなところに子供が…と思ったら春休みか
23デフォルトの名無しさん:2008/03/19(水) 07:50:55
外国だとFreePascalでNintendo DSのソフト作ってる人多いな
24デフォルトの名無しさん:2008/03/20(木) 12:59:11
Squirrelの正規表現なんですが
local 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
こうなっちゃうのうちだけでしょうか?
25デフォルトの名無しさん:2008/03/20(木) 16:05:19
正規表現通りの結果でてる。Squirrelでなくてもそうなると思う
26デフォルトの名無しさん:2008/03/20(木) 17:56:02
"a.*b" の * は欲張りだから本来 "ab abcd ab" にまでマッチするはずじゃない?
Squirrel書いたことないので見当違いしてたらごめん
27デフォルトの名無しさん:2008/03/20(木) 19:55:26
a.*?bだよな。
28デフォルトの名無しさん:2008/03/20(木) 20:55:19
>>25
>>26さんの言うように最後までマッチするはずなんですよ
秀丸と、Luaで試してみましたが最後までマッチします。
>>25さんのところでも同じ結果がでますか?
うちで何か失敗してるのかなぁ?
29デフォルトの名無しさん:2008/03/21(金) 13:54:40
うちでもなるから最短マッチな実装なんだと思うよ。
不満なら直すか、他から持ってくるしかないんじゃなかろうか。
30デフォルトの名無しさん:2008/03/21(金) 14:28:25
いやいや、最短なら
ab
で終了だろw
31デフォルトの名無しさん:2008/03/21(金) 14:35:24
あ、そうか。間抜けな俺。

* は 0 個もありだよな

ってことで、バグ認定でいいんでね?
32デフォルトの名無しさん:2008/03/21(金) 22:11:46
.が任意の一文字で*がワイルドカードだとすると辻妻あうな
33デフォルトの名無しさん:2008/03/21(金) 22:33:32
>>29-31
ありがとうございます
どうもバグみたいですね
英語苦手だけど、なんとかレポート送っときます
34デフォルトの名無しさん:2008/03/22(土) 17:43:40
>>33 レポート乙
35デフォルトの名無しさん:2008/03/31(月) 20:28:40
age
36デフォルトの名無しさん:2008/04/02(水) 00:55:25
なんか過疎ってるな。

swig + lua の組み合わせを最近多用している。
luaからswigで公開する型や関数のメタ情報を取得ってできる?
例えば関数の引数や戻り値の型名とか。
構造体のメンバ変数の一覧ならメタテーブル経由で取得できるけど。
37デフォルトの名無しさん:2008/04/06(日) 18:28:21
>>36
luaは動的言語だから、戻り値や引数の型の分からんでしょう。
型は変数じゃなくて、値にくっついてる。
38デフォルトの名無しさん:2008/04/07(月) 02:55:50
luaをネットワーク関係のライブラリ(httpを解釈できればいい)
辺りだけ組み込んで、最小構成にするとどれだけ小さくなりますか?
100kByte以下とかできる?(linuxのELFで)
39デフォルトの名無しさん:2008/04/07(月) 10:05:33
それは質問する前に自分で試せるだろう。
40デフォルトの名無しさん:2008/04/07(月) 17:48:01
組み込みの状態でヴィジュアルデバッグができる言語ありませんか?
41デフォルトの名無しさん:2008/04/08(火) 01:21:25
ヴィジュアルデバッグとか聞いたことなかったけど、そんな単語あるんだなw
ICEとかじゃだめなの?言語に依存する内容じゃないように思うけど・・・
42デフォルトの名無しさん:2008/04/08(火) 01:41:17
サイケデリック ヴァイオレンス & クライム オヴ ヴィジュアル デバッグ!
43デフォルトの名無しさん:2008/04/08(火) 02:00:17
squirrel は SqDbg と SQDEV っての使うと eclipse からリモートデバッグできるらしいけど使ったことはない。
44デフォルトの名無しさん:2008/04/08(火) 08:50:27
squirrelはちょっと・・・すみません。
4540:2008/04/08(火) 20:26:03
>>41
ヴィジュアルデバッグは造語かもしれません。
GDBじゃないVisualStudioのような環境のことを指しています。
あと、「組み込み」は小型機器への組み込みではなく、
C++プログラムに対する組み込みの意味です。
いろいろ、すみません。

>>43
その組み合わせは非常に使えそうなので、ちょっと試してみます。
ありがとうございました。
46デフォルトの名無しさん:2008/04/08(火) 23:53:24
GUIデバッガとか、ソースレベルデバッガ、って言うと思う。
4741:2008/04/09(水) 01:12:39
>>45
ヴィジュアルデバッグでググったら多少引っかかったんで個人の造語ってわけじゃないと思うよ。
単純に俺が無知だっただけorz
48デフォルトの名無しさん:2008/04/12(土) 22:34:43
sqplusでプロパティ(getterとsetterを普通の変数アクセスのようにみせるアレ)
は作れますか?
49デフォルトの名無しさん:2008/04/13(日) 02:03:48
Xtalで

char 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から呼ぶ方法がわかんない。
50デフォルトの名無しさん:2008/04/14(月) 01:20:39
>>40
scite-debugを使えば、C/Luaプログラムを同じ環境でデバッグできるはず
使ったこと無いけど
51デフォルトの名無しさん:2008/04/15(火) 23:22:53
xtal結構いいよな。
luaから乗り換えた。

つか作者はドキュメント整備してくれんかのぉ。
52デフォルトの名無しさん:2008/04/15(火) 23:24:02
>>49
マニュアル嫁
53デフォルトの名無しさん:2008/04/16(水) 09:57:04
Xtalいいな ネイティブスレッド対応か。
54デフォルトの名無しさん:2008/04/16(水) 12:28:27
Xtalのページ見てみたけどよくわからん。
ゲーム重視だからパフォーマンス重視なんだろうけれども。
Xtalはお手軽に制御構文が書けてかつパフォーマンス重視ってところがいいのかな?
55デフォルトの名無しさん:2008/04/16(水) 21:36:25
>>53
ちょまて Xtalってバーチャルマシンがスレッドセーフでできてんのか?
56デフォルトの名無しさん:2008/04/18(金) 09:32:44
ゲームのスクリプトにlispってどう思います?
57デフォルトの名無しさん:2008/04/18(金) 10:52:19
やってみたら?
5856:2008/04/18(金) 11:05:19
そっすね
59デフォルトの名無しさん:2008/04/18(金) 20:29:27
>>56
たしか、naughty dogがlispなんだよね
60デフォルトの名無しさん: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が呼び出されたときにポインタにキャストするようになっています。

何かいい方法はないでしょうか? もしくはセオリーなどを教えていただけませんか?
61デフォルトの名無しさん:2008/04/21(月) 03:12:37
申し訳ありません、上げてしまいました
62デフォルトの名無しさん:2008/04/21(月) 03:13:14
プログラム板では質問は age 推奨
63デフォルトの名無しさん:2008/04/21(月) 03:19:01
個人のゲームなんですかねえ
64デフォルトの名無しさん:2008/04/21(月) 08:12:31
まずポインタをデバッガで追ってみりい。
スタック操作で単純にミスしてるだけな気がするよう。
65デフォルトの名無しさん:2008/04/21(月) 11:04:50
>>60
オブジェクトをIDで管理すればポインタを持たなくても
IDでやり取りできるんじゃない?
66デフォルトの名無しさん:2008/04/21(月) 19:30:36
>>60
そのC++オブジェクトをSquirrelのオブジェクトとして登録してみるのは?
67デフォルトの名無しさん:2008/04/22(火) 08:12:10
Squirrelあきらめます。ありがとう。
68デフォルトの名無しさん:2008/04/22(火) 11:19:04
www
まあ正直聞いててスクリプトでやるようなことじゃないと思ったわ
69デフォルトの名無しさん:2008/04/22(火) 22:55:42
>>64
スタック操作確認して怪しいところ修正したら動きました。
本当にありがとうございました…。

>>65
次改造するときに試してみます。

>66
そんなこと出来るのでしょうか? Squirrelのクラスについてもう少し学んでみようと思います。

>68
たしかにそうかもしれません…。
70デフォルトの名無しさん:2008/04/22(火) 22:57:50
>>60
こんなんはどう?
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;
}

71デフォルトの名無しさん:2008/04/23(水) 19:09:00
>>69
ホストのポインタをvm内に格納するばあい
userpointer型を使うとかsqclassのインスタンスにsq_setinstanceupするのが適当
72デフォルトの名無しさん:2008/04/24(木) 02:39:32
luaの関数をCの値として保持しておくことはできるんでしょうか?
luaスクリプトからコールバックを登録して、Cから適宜呼び出す、ということをしたいのですが。
73デフォルトの名無しさん:2008/04/24(木) 08:27:31
>>72
LuaのC APIを使って、Lua VM内のグローバルにある関数を(値として)スタックに積むことはできる
スタックに積まれた関数をLuaのC APIから実行することはできる

でOK?
この手の話題ってC側なのかLua側なのか、表現が難しいな。
上のSquirrelのやつもそうだが
7472:2008/04/24(木) 16:15:42
>>73
ありがとうございます。Cの値として保持しておくことはできないんですよね。
それだと、Luaから渡された関数を適当なタイミングで呼びだすには、
関数を一旦スタックの深いところに置いておいて、必要な時にインデックスを使って呼び出す、という形になるのかな…。
75デフォルトの名無しさん:2008/04/24(木) 17:42:07
>>74
LuaからCに関数名を渡せばあとでCのほうから探索できる。
関数を保持しとくのは無理かな、たぶん。
76デフォルトの名無しさん:2008/04/24(木) 20:17:04
luaL_ref/unrefを使えっていう話?
77デフォルトの名無しさん:2008/04/24(木) 22:39:23
>>76
それが一番質問者の期待しているものに近そう。
75に似た方法で呼び出す関数名を決め撃ちするのもあり。
7872:2008/04/25(金) 01:33:55
>>75-77
ありがとうございます。マニュアル引き引き調べてみます。
79デフォルトの名無しさん:2008/04/28(月) 09:10:05
コンパイル済みのsquirrelスクリプトを事前に変数かなんかに格納しておいて、後でvmに読み込む場合はどのようにすればいいのでしょうか?
リファレンスなどを読んだ感じだとsq_readclosure()辺りを使うのかと思ったのですが資料をあまり見つけることができませんでした。
80デフォルトの名無しさん:2008/04/29(火) 15:57:18
>資料
ソースを読めばいいじゃない。
そこらのライブラリとかスクリプトのような聞き方をされると違和感をおぼえてしまう。
81デフォルトの名無しさん:2008/04/30(水) 08:25:13
でたーソース嫁攻撃
82デフォルトの名無しさん:2008/04/30(水) 09:27:07
そりゃあ出るだろう
ソース読むのが妥当な場面だもの
83デフォルトの名無しさん:2008/04/30(水) 11:59:05
すべての質問は自分で調べろで片付く
ある意味最狂
84デフォルトの名無しさん:2008/04/30(水) 12:31:55
まぁ、極論馬鹿の脳内では今回の話もそこへ繋がるんだろうな、
というのは、容易に推察できることではある。

アホくさいけど。
85デフォルトの名無しさん:2008/04/30(水) 13:30:40
昔はハウトゥー本前提での自分で調べろって台詞だったが、
最近は面倒になりそうなのは全部自分で調べろって投げ捨てるよな
86デフォルトの名無しさん:2008/04/30(水) 13:44:35
ソース嫁馬鹿に極論馬鹿にレッテル馬鹿の三つ巴ですかw
87デフォルトの名無しさん:2008/04/30(水) 13:45:52
バカばっか
88デフォルトの名無しさん:2008/04/30(水) 14:14:23
>>86
無理矢理三つ巴と思い込む暇があったら
ソースでも読んでた方がいいと思うよ。
89デフォルトの名無しさん:2008/04/30(水) 16:55:55
ソース読まない馬鹿は死ぬべきだな。
90デフォルトの名無しさん:2008/04/30(水) 17:32:11
春か…
91デフォルトの名無しさん:2008/04/30(水) 17:39:41
ソースを読めば素晴らしい回答が在る、というのにお礼も言わずに、
アホなレス繰り返してる馬鹿のレベルが低いんだもの。
まぁ、読めないから回答者に喰いついてるんだろうね。

質問者は社会常識を身につけてから出直しておいで。
自分の立場を弁える常識は必要だよ?学生君。
92デフォルトの名無しさん:2008/04/30(水) 18:16:20
ソース読んでどうにかなるレベルの奴がここで質問するわけがない
93デフォルトの名無しさん:2008/04/30(水) 18:24:36
テンプレに追加案
【このスレは”質問スレ”ではありません】
ソースを読めば素晴らしい回答があります。
何時間掛かるかも分りませんが、まずはすべてのソースを読み理解する頃には質問の内容も解決している事でしょう。
また質問者は立場をわきまえ、回答者を崇めること。


このスレは雑談スレか
94デフォルトの名無しさん:2008/04/30(水) 19:35:46
79の言ってることがよくわからないんだけど、
あらかじめ変数に読み込んでおいてというのは、
ファイル開いてファイルサイズ分メモリを確保して、そこにreadするということか?
それでそのバッファのポインタを渡して読み込ませたいってこと?
9579:2008/05/01(木) 02:06:38
忙しくてレスできませんでした。
>>80
とりあえずソース読んで分からなかったらまた尋ねるかもしれません。

>>94
94さんの言うとおりファイルサイズ分メモリを確保しておいて、そこにファイルを読み込ませ、そのメモリからオブジェクトにデータをロードさせようと
思っています(do_fileやload_fileなどを使うといちいちファイルにアクセスして負荷がかかるため)。
現在はchar*にスクリプトを読み込ませておいて、オブジェクト生成時にコンパイルしていたのですが、
コンパイルにかかる負荷がバカに出来ないと考え「コンパイル済」のスクリプトをメモリに保存しておいて運用したかったのでその方法を質問させていただきました。
96デフォルトの名無しさん:2008/05/01(木) 03:37:06
コンパイルドバッファだったと思う。
ttp://wikiwiki.jp/lua/?Squirrel か もんしょの巣穴っていう個人さんのサイトに解説あった気がする。
違ったらヘッダをcompで検索すれば出てくると思う。
眠いからこれ以上は書けないZzzz
97デフォルトの名無しさん:2008/05/01(木) 03:41:20
ああ勘違い、コンパイル済みスクリプトをバイナリで保存しておいて読み込みたいのね?
役に立てないZzzz
98デフォルトの名無しさん:2008/05/01(木) 11:25:29
本人が言ってるとおりsq_readclosureでいいんじゃないのか
99デフォルトの名無しさん:2008/05/01(木) 12:14:36
私はLuaの方の人だから見当違いかもしれないと前置き。
sq_readclosureでよさそうだけど解説があまりないから
断片的な情報とソースから推測するしかないって感じかな。
ソースはsqstdio.cppにあるsqstd_loadfileの実装が参考になりそう。

ところでsqstd_loadfileは関数を評価せずにスタックに
積むだけみたいだから、その参照を保持しておくだけで
用が足りたりしないのかな。
100デフォルトの名無しさん:2008/05/02(金) 01:18:42
流れぶった切るけどスマソ。
Lua側の関数に引き渡した0xFFFFFFFFってリテラルが、C側からlua_tonumberで取ってくると0で返却されるのは既知?
さらに、0xFF00FFFF -> 0xFF010000なんて取れてきたりする。
どうもVC8だと起こるらしくて、gcc系だと引き渡したリテラルが正しく取れるんだけどなぁ。
10179:2008/05/02(金) 02:27:06
sqstd_dofileは内部でsqstd_loadfileを呼び出していたため、sqstd_loadfileの中を見てみました。
sqstd_loadfileの中には外部から読み込んだファイルがバイナリであるかテキストであるかを判定する文があり、
バイナリの場合はコンパイルせずにそのままsq_readclosureによってスタックに読み込んでいることが分かりました。
そこで、sqstd_loadfile冒頭のsqstd_fopen(fopenと同じ働き)を削除し、loadfileの引数のファイル名の変わりに(FILE*)型のポインタを
渡してやるようにし、また、(テキストファイルは扱わないため)テキストであった場合の分岐を削除してみました。
これは成功すると思ったのですが(おそらく)こちらのコーディングミスでメモリ関係のエラーが出てしまいました。
こちらを直して正常に動作するようならまた報告したいと思います。

>>99
スタックトップに積むようなので、sq_move(dest, src, -1)といったように設定してやればいいんですかね? 試してみます。
ただ今回の件でSquirrelのスタック周りの操作についてほぼ無知であることが分かったため、もう少し勉強してからトライすることになると思います。
102デフォルトの名無しさん:2008/05/02(金) 14:13:56
>>100
Luaは整数を小数として扱ってるからその辺りが関係あるのかなぁ。
あと、高速化のためか整数←→小数の変換には
単なるキャストを使っていたり、アセンブラ命令を直で使っていたりする。
103デフォルトの名無しさん:2008/05/02(金) 17:37:50
>>102
luaconf.hの中のlua_number2intの定義の所ね。
_MSC_VERでifdefしてる個所もある@5.1.3
LUA_ANSIをdefineして直ったらここが原因だろう。
104デフォルトの名無しさん:2008/05/02(金) 20:16:36
>>100
Direct3D使ってたら浮動小数点演算の精度が24bitになってる可能性あるんで
D3DCREATE_FPU_PRESERVE
を調べるといい。

ただ値の受け渡しだけはできるはずの気がするが。
105デフォルトの名無しさん:2008/05/03(土) 16:16:35
lua_xmoveが使える条件に、「同じグローバルステートの異なるスレッド」ってあるんですが
これってどういう事なんですか?
同じlua_Stateから派生したスレッド同士なら良いということですか?
106デフォルトの名無しさん:2008/05/03(土) 17:37:37
>>105
それを使ったことはないけども・・・
coroutine作ると新しいlua_Stateが作られるけど、それは元のlua_Stateとグローバル情報を共有してる。
だからxmoveが使えるのは、元のVMから作られたcoroutineを示すlua_State(および元のVM)間だけ、ということかと。

「スレッド」って言うとOSスレッドのように聞こえるから、混乱を招くので敢えて使いたくないんだよね・・・。
107デフォルトの名無しさん:2008/05/06(火) 03:48:30
>>101
FILE*つかってんなら 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);
}
}
108デフォルトの名無しさん:2008/05/06(火) 11:17:07
どうにも理解しがたいので、質問させてください。
Lua 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で落ちるんですが
これはどう対処すればいいんでしょうか・・・
109デフォルトの名無しさん:2008/05/06(火) 12:06:07
>>108
lua_newthreadはあくまでコルーチンを作る関数だから、
それで作られたlua_Stateはコルーチンの流儀でしか使えないんじゃないかな?
つまり、lua_resumeを使えと。

あとlua_newthreadはスタックにスレッド(コルーチン)オブジェクトを積むので、
使い終わったらpopするとか、グローバルに置くとか、なんとかしてやる必要がありそう。

思うに、Lua側からcoroutine使ったほうが余計なことを考えずに済むような気がするけど。
110デフォルトの名無しさん:2008/05/06(火) 16:24:33
>>109
ありがとうございます。
そもそもこんな使い方をするものじゃない、ということですかね。
どうやら根本的に考え方がおかしかったようですね・・・

>>105も私の書き込みです。遅れましたが、>>106さんありがとうございます。
111デフォルトの名無しさん:2008/05/09(金) 17:29:29
>>72
lua_tofunctionでググれば出てくるよ
112デフォルトの名無しさん:2008/05/13(火) 22:54:29
Python スレに行くべきかとも思ったのですが、一応 Lua の話題なので
こちらで質問させてもらいます。

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 のレキシカル・スコープはどのような点が
制限されているのでしょうか?ご教授いただければと思います。
113デフォルトの名無しさん:2008/05/14(水) 12:01:15
クロージャ関係のようだけど...

なんか今そのLuaのドキュメントのあるサイトが落ちてるみたいなので
覚えてたらまた見てみますね。
114デフォルトの名無しさん:2008/05/14(水) 16:40:29
5章の最初のところね。そこで言いたいことはわかるんだけど、Pythonに、そこで
言ってるような制限は無いように思うんだな。昔のバージョンではそういう制限が
あったのかもしれないけど。

実際、Figure 3. が意味しているコードはPythonで問題なく書ける。

def add(x):
  def tmp(y):
    return x + y
  return tmp

add2 = add(2)
print add2(5)

その Most procedural ... の前の 2 パラグラフが言いたいことはわかってるよね?
115デフォルトの名無しさん:2008/05/14(水) 17:45:25
wikiのsquirrelのAPIリファレンスが行数オーバーとか言われてるけど
116デフォルトの名無しさん:2008/05/15(木) 01:46:31
>>114

5章の最初のパラグラフは、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 の制限を示すためのものでは
ない、ということではないでしょうか?
117デフォルトの名無しさん:2008/05/15(木) 09:51:37
別のサンプルでmutableに見えたのでうっかりしていたのですが、

def 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

になりますね。そういうことでいいと思います。
118デフォルトの名無しさん:2008/05/15(木) 11:26:01
>>117

やはりそういう理解でいいんですかね。
お付き合いいただきありがとうございました。
119デフォルトの名無しさん:2008/05/17(土) 02:34:29
You can download Squirrel 2.2.1 stable here
120デフォルトの名無しさん:2008/05/17(土) 06:39:16
月とリス
121デフォルトの名無しさん:2008/05/19(月) 23:52:06
>>108,109さん関連で
同様なことやって、lua_newthread関数を連続で呼び出したら。
60前後スレッドを作った時点でエラーが発生してしまった。
これの対策として、109さんのようにLUA_GLOBALSINDEXに突っ込むのも良いと思うけども
luaL_refでLUA_GLOBALSINDEXに突っ込んでも良いのではと一意見を言ってみます。

ちなみに、この関数でリファレンス化したものを消そうとする場合。
luaL_unref(L,LUA_GLOBALSINDEX,(luaL_refの返り値));
って感じで良いのでしょうか?
使っている人が居ましたらご教授お願いいたします。
122デフォルトの名無しさん:2008/05/20(火) 04:29:05
北陸先端科学技術大学院大学情報科学研究科組込みシステムコース(博士前期課程、博士後期課程)
ttp://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
123デフォルトの名無しさん:2008/05/20(火) 05:43:41
>>122
組み込みの意味違うし
124デフォルトの名無しさん:2008/05/20(火) 11:39:43
version5.1.2でluac -lしても定数やらUpvalやらのリストが
出てこないんだけど、なんでかな?

125デフォルトの名無しさん:2008/05/20(火) 16:39:11
>>124
騙されたと思って -l 2つつけてみ・・・

バグっぽいけど。
126デフォルトの名無しさん:2008/05/20(火) 18:21:46
>>124

ホントだ。man見てもさっぱり理由が分からなかったから
結構まいんってたんだけど・・・。

とにかくありがとう。
127126:2008/05/20(火) 18:23:42
安価ミス失礼

>>125ありがとう
128デフォルトの名無しさん:2008/05/23(金) 13:37:46
DLLなどなしで使えるポータブルな組み込み言語を探していてWSHに行きついたのですが、
WSHの組み込みってありなんでしょうか?

webページを検索してみてもサンプルみたいなものが全然ないのですが、
どこかにないかな・・・
129デフォルトの名無しさん:2008/05/23(金) 14:01:07
130デフォルトの名無しさん:2008/05/24(土) 02:38:46
Squirrel+SqPlus使い始めたんですが。

C++で記述されてるclass AをSqPlusでSquirrel側に公開
  ↓
Squirrel側でAをextendsしてclass Bを定義
  ↓
Class BのインスタンスをSquirrelで作成。

結果としてSquirrelでBのインスタンス、C++でAのインスタンスが出来上がっていて
C++でAのポインタを掴んでるとします。
この状態でC++から呼べるのは、まぁ当然Aのメンバ関数だけなんですが、
Bのメンバを呼ぶ方法って、なんかないでしょうか?
131デフォルトの名無しさん:2008/05/24(土) 14:12:17
>>130
SquirrelFunction<void>(SquirrelVM::GetRootTable().GetValue("instance_of_B"), "member_function_of_B")("argument1", "argument2");
132デフォルトの名無しさん:2008/05/24(土) 19:40:34
>>131
これだと、RootTable上にinstance_of_Bという名前で生成されているという情報を
C++側がつかんでないと実行できないですよね?

現状の設計だと、
ClassAのコンストラクタでstaticなClassA*のListへ突っ込むという処理を入れとく。

あとでそのリストをぐるっと回してClassAの派生Classのメンバーを呼んでいく

という処理をしたいので、
C++側ではそのインスタンスの名前とか生成されたスコープとかは掴んでないんですよね……。

と、今思いついたんだけど。
GetRootTable().GetValue()が返すのはHSQOBJECTだから、
PostConstructが動いた時点でそいつを掴んどけばいいのか?

133デフォルトの名無しさん:2008/05/24(土) 20:24:40
class B の constructor() 内で A.constructor() を呼び出すのはどう?
134132:2008/05/25(日) 00:39:57
int construct_A(list<A * > *, HSQUIRRELVM v){
A *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タイミングとかで変化したりとかしなければこれでいけっかな?
135デフォルトの名無しさん:2008/05/29(木) 18:06:06
wikiのLuaチュートリアルのサイトでlua_dofileって関数あるけど、
これもうなくなったの?
136デフォルトの名無しさん:2008/05/29(木) 19:55:44
luaL_loadfile 名前が変わったとかなんとか。
137デフォルトの名無しさん:2008/05/29(木) 20:10:18
luaL_dofile
138デフォルトの名無しさん:2008/05/29(木) 23:14:47
DSのLuaはスレチだよね?
139デフォルトの名無しさん:2008/05/30(金) 11:10:06
>>138
URLplz
140デフォルトの名無しさん:2008/05/30(金) 18:20:10
http://dslua.7mc.org/wiki.cgi?page=Menu

起動できなかったorz..
141デフォルトの名無しさん:2008/05/30(金) 20:09:59
そこのページにある
>NDS用のテキストエディタがあれば、NDSだけでプログラミングも可能です
とい文章に質問。NDS用のテキストエディタってどこにあるの?
142デフォルトの名無しさん:2008/05/30(金) 20:13:51
143デフォルトの名無しさん:2008/05/31(土) 03:52:48
scriptsフォルダはルートに置けよ。念のため。
144デフォルトの名無しさん:2008/06/04(水) 16:12:35
Luaって組み込みに関する日本語の解説ページ少ないよね?
Squirrelの方がまだ多い気がする
145デフォルトの名無しさん:2008/06/04(水) 18:08:36
>>144
本家のテキストの和訳が出てないんだからまだこれからじゃないの?
Erlangだって和訳が出てから急激に増えたんだしさ。
146デフォルトの名無しさん:2008/06/05(木) 17:27:33
Luaでバイナリ出力ってどうするんですか?

luaL_loadfileでスクリプト読み込んで
lua_dumpで出力でいいんでしょうか?

lua_dumpの解説で関数をバイナリ出力すると書いてあるので、
ファイル丸ごと出力するのはまた別にあるのかと思ったのですが、見当たりませんでした
147デフォルトの名無しさん:2008/06/05(木) 19:57:19
>>146
luac.c調べればいいんじゃないかな
148デフォルトの名無しさん:2008/06/06(金) 17:02:47
Luaの内部の挙動理解するの難しい…
SquirrelはVM内のデータのひとつひとつの役割とか挙動とかもわりと簡単に追えたけど
Luaのステートはメンバ変数の意味もよくわからんし、ソースも追いにくい
どうしようこれ。突破口が見えん
149デフォルトの名無しさん:2008/06/06(金) 20:30:15
何となくわかってきたスレ汚しスマソ
150デフォルトの名無しさん:2008/06/13(金) 13:15:11
C++側で定義したクラスをSquirrelで継承したクラスを作って
SqPlus::CreateConstructNativeClassInstanceでインスタンス作ったんだけど
戻り値のSquirrelObjectからどうやってそのメンバにアクセスすりゃいいんだろう?

SquirrelObject obj
obj = SqPlus::CreateConstructNativeClassInstance(SquirrelVM::GetVMPtr(), _T("hoge") )
ClassA * p = (ClassA *)(obj.GetInstanceUP());
とかでいけるのかと思ったら、そんなメンバねーよ、とVCに言われてしまった。
151150:2008/06/13(金) 14:47:05
すみません、私はキチガイでした。
なんでこれでビルド通ったんだ???
152デフォルトの名無しさん:2008/06/13(金) 18:36:00
自分で自分を放送禁止用語で貶めなくても。
153デフォルトの名無しさん:2008/06/14(土) 21:19:14
Luaってlua_loadfileで読み込んだ特定のファイルのデータだけ解放する方法ってありますか?
例えば自分で作成したテーブルにスクリプトを読み込ませて、それを削除する、とか。
154デフォルトの名無しさん:2008/06/15(日) 18:03:55
グローバルに追加した物を削除してGCかければいいとは思うけど…

方法としては、ロード前にグローバルテーブル入れ替えちゃう方法もいいかも。
155デフォルトの名無しさん:2008/06/19(木) 21:43:38
SquirrelのコンパイラがFILE*使ってるのを何とかしたいんだけど、
sqstd_fopen、sqstd_fread、sqstd_fwrite、sqstd_fseek、sqstd_fclose、
sqstd_feof、sqstd_ftell、sqstd_fflush
これ全部書き換えればなんとかなるかな?
誰か実証した人いない?


156デフォルトの名無しさん:2008/06/20(金) 08:08:00
>>155
うちは2.2.1でそれで一応動いてるよ。squirrelの全機能の検証まではしてないけど。
157デフォルトの名無しさん:2008/06/23(月) 01:17:20
>>154
それをやる方法がAPIで見つからなかったんですが…
ひょっとしてlua_Stateのl_gtメンバを
直接書き替えるんですか?
158デフォルトの名無しさん:2008/06/23(月) 07:49:48
>>157
>ひょっとしてlua_Stateのl_gtメンバを
>直接書き替えるんですか?

さすがにそんなことを推奨しないよw
setfenv()使えばいいかと。
CでやるならluaB_setfenv()あたり参考に。

ただグローバルそのまま置き換えると元のグローバルにあったAPIとか全部使えなくなるわけだけど、
新しいグローバルのメタテーブルの__indexに元のグローバルでも入れとけば
なんとかなるんじゃないかなぁ。
159デフォルトの名無しさん:2008/06/26(木) 23:40:50
ttp://sankei.jp.msn.com/topics/affairs/8181/afr8181-t.htm
職務質問で勝手に手を突っ込んだポシェットの中の、ツールナイフの剥き身の刃を触ったら切れて公務執行妨害だとか
もう警察も秋葉原で事件さえ起これば何でも良いみたいだな
160デフォルトの名無しさん:2008/06/26(木) 23:52:37
test
161デフォルトの名無しさん:2008/06/27(金) 15:24:10
tolua++ってオワタんですか?
サイトにアクセスできないけど…
162デフォルトの名無しさん:2008/06/27(金) 16:13:16
まだ繋がる。

プロキシを使うと接続できるという報告例あり。
163デフォルトの名無しさん:2008/06/27(金) 16:29:25
よくわからんけどそれは串のキャッシュを見てるだけなんじゃ…。
164デフォルトの名無しさん:2008/06/28(土) 03:29:45
あーやっぱtolua++つながらない人いるんだ。
うちも基本繋がらないんだけど、串とか携帯とかhtmllintゲートウェイとか経由すれば大抵いけるんだよね。
調べた限りではその付近のIP一帯につながらない。どっかでルーティングが狂ってそう。
165デフォルトの名無しさん:2008/06/30(月) 12:46:37
LOVEっていうLua用?の 2D Game Engineみつけた
チュートリアルは知りたかったこと扱ってるし簡単そう!
166デフォルトの名無しさん:2008/06/30(月) 12:49:28
167デフォルトの名無しさん:2008/06/30(月) 13:21:17
そういや、後輩が持ってたけどLuaの本っていつの間にでたん?
168デフォルトの名無しさん:2008/06/30(月) 14:13:00
ググレカス
169デフォルトの名無しさん:2008/07/05(土) 17:30:37
ゲーム向け組み込みJavaScript(まだベータ版)
CRI 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
170デフォルトの名無しさん:2008/07/05(土) 18:23:12
なんで60MBもあるんだよ・・・
171デフォルトの名無しさん:2008/07/05(土) 20:44:47
boostのライブラリのせいかな? srcのほとんどがboostのヘッダだ。
リリースとデバッグのライブラリで合計400MBもある。
172デフォルトの名無しさん:2008/07/05(土) 23:03:55
bisonとか使うなつーの
173デフォルトの名無しさん:2008/07/06(日) 00:34:15
後発なんだったらせめてLuaあたりは軽くこえてもらわんと
174デフォルトの名無しさん:2008/07/06(日) 01:05:39
Cから使えるJavascriptといえば
spidermonkeyはどうなんだ
yieldも使えるし
175デフォルトの名無しさん:2008/07/06(日) 16:52:05
>>172
なんで? 使いたいの使えばいいじゃん。
176デフォルトの名無しさん:2008/07/06(日) 17:06:10
やりたいようにやればいいじゃん
177デフォルトの名無しさん:2008/07/06(日) 22:34:18
ライセンスは?
178デフォルトの名無しさん:2008/07/10(木) 13:03:11
セデックでスクワラルのセッションがある
179デフォルトの名無しさん:2008/07/10(木) 13:47:56
180デフォルトの名無しさん:2008/07/10(木) 16:50:30
luaでゲーム作る人ってやっぱりそんないないのか
181デフォルトの名無しさん:2008/07/10(木) 22:32:01
小規模なゲームだと使うメリットがあんまりないし
使うほど大きな規模のゲームがそもそも作られない

・・・んじゃないかと思う
あと組み込み言語自体がいまいち一般的じゃないよね
182デフォルトの名無しさん:2008/07/11(金) 00:30:14
海外ゲーはMOD改造しやすいように組み込み言語やXMLなどを使っている。
一方、日本は海外のようなMOD文化が弱い。あっても、バイナリ解析によるデータ変更や画像差し替えが主。
日本のゲームは書き換えを許容する文化でないから、汎用言語を使って間口を広げる必然がないのかも。
183デフォルトの名無しさん:2008/07/11(金) 00:50:19
homeworldシリーズはluaだったよ
184デフォルトの名無しさん:2008/07/11(金) 03:56:17
luaやsquirrel使ってたとしても
あえて公表する理由がない
185デフォルトの名無しさん:2008/07/11(金) 15:15:50
>>184
luaはライセンス表記しないとダメだろ
186デフォルトの名無しさん:2008/07/11(金) 19:17:01
luaはMIT、Squirrelはzlib
187デフォルトの名無しさん:2008/07/11(金) 20:53:24
今気付いたんだが、MITライセンスに関するOSG-JP参考訳とWikipediaの内容が全然違うような?
ttp://sourceforge.jp/projects/opensource/wiki/licenses%2FMIT_license
ttp://ja.wikipedia.org/wiki/MIT_License
188デフォルトの名無しさん:2008/07/11(金) 21:57:26
>>181
DSluaおもしろそうだと思ったんだがな・・・
189デフォルトの名無しさん:2008/07/11(金) 23:46:37
組み込み系の言語はそもそもゲーム本体作るのに向いてないしな。
アクションゲームの敵の動きや敵の配置とかをスクリプトで記述するのには向いてるけど。
190デフォルトの名無しさん:2008/07/12(土) 00:20:11
>>182
XMLってまじっすか
191デフォルトの名無しさん:2008/07/12(土) 01:13:13
>>190
Rise of Nationsとか思いっきりXMLだったな。
改造し放題。
AoE3も確かそうだった気がする
192デフォルトの名無しさん:2008/07/12(土) 01:15:06
>>189
embeddedの言語はあくまでDSLだからねえ
Pythonとかのレベルになるとそうでもないんだろうけど
193デフォルトの名無しさん:2008/07/12(土) 02:17:26
Pythonはbattery includedだが電池を作るのに向いてるわけじゃないだろ。
194デフォルトの名無しさん:2008/07/12(土) 02:37:33
>>187
そう?
言っていることは同じで、Wikipediaは要約しているだけのように見えるけど。

ところで、このライセンスだと、ソースコードを配布しない場合も
ライセンス文を書く必要があるってことだよね?

商用ゲームだと、マニュアルの半ページくらいうはめになりそうだ…
195デフォルトの名無しさん:2008/07/12(土) 05:08:02
>>185, >>194
著作権表示および本許諾表示を記載しなければならない、というのはソースコード等の話です(消すな、ということ)。
マニュアル等への表示義務はないです(旧BSDライセンスには宣伝条項があった)。
あとサブライセンスが許可されているから、より権利を制限する方向へのライセンス
(例えばGPLや商用ライセンス)を上からかぶせて適用することには問題がない。

ライセンス表記が必要だと思われてるとはなあ
業界でなかなかオープンソースが使われないわけだ
196デフォルトの名無しさん:2008/07/12(土) 05:32:37
↑偉そうなこといって本当にすまんw
zlibと間違ってたみたい
197デフォルトの名無しさん:2008/07/12(土) 16:14:21
MITの場合でも、見ようと思えば見れる場所にライセンスファイルなりを置いておけばいいでしょ。
オンラインのCREDIT表記あたりが適切か。
198デフォルトの名無しさん:2008/07/12(土) 23:11:24
>>191
それはデータやら何やらの記述だな。
199デフォルトの名無しさん:2008/07/13(日) 02:48:50
>>198
まさか、CDATAでスクリプトでも埋め込むのか?w
200デフォルトの名無しさん:2008/07/13(日) 23:38:11
XMLで書かれたスクリプトってのもどこぞにあった気がする・・・

あんま書きたくないが。
201デフォルトの名無しさん:2008/07/13(日) 23:49:03
>>200
XMLで書かれた同人ゲームを一つだけ知ってるが、
解析がえらい面倒だったな
202デフォルトの名無しさん:2008/07/14(月) 04:31:50
>>200
BulletMLもXMLのDSLだな
203デフォルトの名無しさん:2008/07/14(月) 11:28:11
XMLで書いてると最後に統計取れたり
解析が楽だったりするのがメリットか。
ドキュメンテーションも楽だろう。
204デフォルトの名無しさん:2008/07/14(月) 12:34:15
S式じゃダメ?
205デフォルトの名無しさん:2008/07/14(月) 12:40:29
セックスピー
206デフォルトの名無しさん:2008/07/14(月) 21:17:26
Lua workshop2008もうすぐはじまるよ

@ワシントン州で
207デフォルトの名無しさん:2008/07/18(金) 18:15:34
xtal更新とまっちまってるなあ
208デフォルトの名無しさん:2008/07/20(日) 00:54:26
>>207
C++では行き詰まるという現実に気がついたのでは
209デフォルトの名無しさん:2008/07/20(日) 01:00:17
つまりスクリプトをつくるための軽量スクリプト言語を


アレ?
210デフォルトの名無しさん:2008/07/20(日) 16:41:45
わらかすなwwwwww
211デフォルトの名無しさん:2008/07/20(日) 19:15:16
Lispでいいじゃん
212デフォルトの名無しさん:2008/07/20(日) 19:41:13
そういや、Ruby の Matz もOOPのスクリプト作るのにOOPはむりぽ
みたいなこと言ってたな
213デフォルトの名無しさん:2008/07/20(日) 23:37:57
>>212
なんで?やっぱり速度?
214デフォルトの名無しさん:2008/07/21(月) 01:53:26
今時、さすがに速度じゃないと思うがw(開発速度?w)

Matz日記の過去ログにあったかもしれん。ちょっと行ってくる
215デフォルトの名無しさん:2008/07/21(月) 02:06:29
確か、まつもと氏が混乱するとかいう理由だったような・・・・と思ったら

オブジェクト指向言語でオブジェクト指向言語を実装するというのに、脳がついていけないんだけど。
それって、僕だけ? (笑) C++ で言語作ってる人がいるけど、よくやるなぁ、とか思う。
ベース言語のクラスとか継承とかと、実装言語のクラスや継承がごっちゃになて、訳わかんなくなっちゃう。
設計して、どういう風に作ろうかなと思った時点で、もう、わかんなくなって「もういい、やめた」って。
ttp://jp.rubyist.net/magazine/?0001-Hotlinks
216デフォルトの名無しさん:2008/07/21(月) 05:44:25
C++/CLIのことかー
217デフォルトの名無しさん:2008/07/21(月) 16:17:08
なんだ…人間の能力の限界の話なのかよ
218デフォルトの名無しさん:2008/07/21(月) 16:53:35
PHPもC++でエンジン書いてたが、やばいと気がつき後にむりやりCで
書き直したと聞いたことがある。具体的に何がやばかったのかは知らない。
219デフォルトの名無しさん:2008/07/21(月) 17:24:10
俺には全く理解できん
CでいいならそのままC++でもいいじゃんと思うんだが…
220デフォルトの名無しさん:2008/07/21(月) 17:36:48
そもそもCよりC++の方が型がこなれているんだから
OO捨ててもCより享受できるものが多いはず。

まあ、でもポータビリティ犠牲にするほどのものでもないかなあ。
221デフォルトの名無しさん:2008/07/21(月) 18:47:24
>>219
C++ は、効率重視で、バイナリ互換とるのが極端に難しい実装ばっかりなので、
独立アプリならいいんだけど、ライブラリとして広く長期的に共有されるような
ものの記述には残念ながらあまりむいてない。

Windows はこれを COM という形で一応解決したんだけど、UNIX 系OSではその手のものが
統一的につくられることは結局なかったからね。php のような、他と組み合わせた
運用が求められるものだとこの点はわりと致命的なので、Cでかかざるをえ
なくなったんじゃないかな。

一応 Objective-C という選択はあるけど、こっちは実装が限られてるからねぇ
222デフォルトの名無しさん:2008/07/21(月) 19:14:47
勉強になりました
223デフォルトの名無しさん:2008/07/21(月) 21:55:19
ABIの問題ってことかな。
C++のライブラリをextern "C"してDLLやsoにしたものを、
Cとかで呼ぶとなんかまずそうなのは想像できるな。
グローバルなコンストラクタとかあったらそれはいつ呼ばれるんだろうって。
224デフォルトの名無しさん:2008/07/21(月) 23:31:59
継承かガベージコレクトじゃね?
225デフォルトの名無しさん:2008/07/22(火) 00:54:53
>>223
もう一度良く考えてみろ。どうにもならないことはない。単にリンカがどうするかというだけのことだ。
しかし、万人が納得する解法は無いという事も、ここからわかる。
226デフォルトの名無しさん:2008/07/24(木) 20:18:47
Squirrel3.0alpha1リリースあげ
227デフォルトの名無しさん:2008/07/25(金) 08:35:19
イラネ
228デフォルトの名無しさん:2008/08/02(土) 19:26:37
hoshu
229デフォルトの名無しさん:2008/08/03(日) 06:02:10
squirrelでsq_compile()を行うとプロシージャが一つ返ってきますが、
このプロシージャは何を表しているのでしょうか?
たえば、コンパイル元のファイルが、

function foo()
{
print("foo");
}

function bar()
{
print("bar");
}

の場合、sq_compile()が返すプロシージャはこの2つの内の一つなんでしょうか?
230デフォルトの名無しさん:2008/08/03(日) 09:02:27
squirrel 的には用語は「クロージャ」ってのはさておき、
戻ってくるのは、元のソースを頭から終わりまで実行するクロージャになります。

その例でいくなら、「foo() と bar() をグローバル空間に登録するクロージャ」ということになります。

sq_compile → sq_call してはじめてスクリプトで記述したことが意味を持ちます。
sq_compile したものを sq_writeclosure すると、コンパイルされてバイナリ状態に
なったスクリプトを保存できます。これを sq_readclosure → sq_call するようにすると、
実行時にコンパイルしなくてすみます。

ちなみに sqstdio にふくまれる sqstd_loadfile, sqstd_dofile は、テキスト/バイナリいずれのスクリプトも
同様に扱ってくれるので便利です(ファイルのヘッダをみて、sq_readclosure / sq_compile を切り換えてくれる
231229:2008/08/03(日) 13:22:55
>>230
解説ありがとうございました。おかげで理解できたような気がします。
説明をふまえて、マニュアルにあらためて目を通すと、

function ciao(a, b, c)
{
}



this.ciao <- function(a, b, c)
{
}

と等価であるという説明から、「sq_call()が返すのはグローバル空間に登録するクロージャ」ということがより直感的に理解できました。

#コンパイル済みのバイナリについても悩みどころだったので説明感謝です。
232デフォルトの名無しさん:2008/08/05(火) 01:40:07
LuaとかSquirrel使ってる人って、存在しない関数・変数の検出や、
引数の数チェックってどうしてます?

実行時にはエラーになりますが、さすがに関数の引数の数間違いで
実行が止まるのは面倒ですし、
エラーが起きるコードが普段はなかなか実行されないところに
あるものだったりするとかなり面倒ですよね。。。
233デフォルトの名無しさん:2008/08/05(火) 02:22:21
それは環境によるのでは?
ユーザーにいじらせるようなものでなければ落とした方が間違いに気付きやすくていいと思うけど
234デフォルトの名無しさん:2008/08/05(火) 05:15:11
誰か静的型付けの組み込み言語作ってよ
235デフォルトの名無しさん:2008/08/05(火) 12:04:09
>>232
型チェックさえしていれば引数の数チェックは必要ない。

Luaは引数の数が違っても変数が未定義でも実行は止まらない。
存在しない変数の値はnilとして続行。
実行が止まるのは、nil以外の型が必要なところにnilが来るのが原因。
236デフォルトの名無しさん:2008/08/05(火) 23:42:07
>>233
そうですね、僕は自分しかいじらないので、エラーの時は落とすようにしてます。
ただそうしてると、Cなどであればコンパイル時にわかる型のミスなどが、
Luaだと実行してしばらくしてからでないとわからないので面倒で…

>>235
nilが入ってたまたま動作し、エラーが発見できなかった場合に
デバッグするのが大変ではありませんか?
公開する時には実行が止まらない挙動でないとまずいですが、
作っているときは「想定外の挙動」を検出するために、
型チェックと引数の数チェックは必須だと思っています。

>>234
そ・れ・だ!
237デフォルトの名無しさん:2008/08/06(水) 02:19:38
>型チェックと引数の数チェックは必須だと思っています

個人的には厳格な静的チェックが欲しいならCで書けばいいし、
気楽にかけて初心者に教えやすく関数がファーストクラスだったりするのが
スクリプトのメリットだと思ってる

でもまー、スクリプトの用途によって違うかもね
238デフォルトの名無しさん:2008/08/06(水) 02:27:31
なにげにsquirrelだとC++から関数通すたびに数回は引数の数チェックに
ひっかかるけど実はデバッグのための膨大な時間の浪費を回避できてたのかな
239デフォルトの名無しさん:2008/08/06(水) 07:07:49
関数型の組み込み言語あれば面白いかも
240デフォルトの名無しさん:2008/08/06(水) 08:30:08
lisp系ならそこそこないか
241デフォルトの名無しさん:2008/08/07(木) 09:57:22
ゲーム作ってるんですがNPC等のと会話中の選択肢などをスクリプトで書きたいと思ってます。
今のところc++で使いやすそうなのでSqPlusが候補なんですが、
どんな感じにやるものなのかってのいうが全然想像できないです。
例えば下のような感じでc++と行ったり来たりってのはできるんでしょうか?

//////////////////////////////////////////////////////
game::SetMsg("買い物する?");

if(game::ShowWndYesNo())//ゲーム側で選択画面を出し、何らかの方法で入力を待ち結果を取得…
{
 if(game::GetMoney() == 0)
{
game::SetMsg("お客さん金持ってないね!")
}
 else
{
game::SetMsg("何にする?")
game::ShopOpen();//買い物画面出して買い物が終わるのを待つ…
}
}
game::SetMsg("またきてね!");
///////////////////////////////////////////////////////
242241:2008/08/07(木) 10:06:29
なんでもないです。無かったことにしてください^^
243241:2008/08/07(木) 11:20:04
うーんやっぱ全然分かりません。

>>241みたいな例でいうと、
c++側でgameクラスのインスタンスを生成して、
そのポインタをsqplusに渡して、
sqplus側でSetMsg()だのGetMoney()だのの関数を使う

っていう、そういうことはできないんでしょうか?
なんか根本的に用途間違ってますか?
244241:2008/08/07(木) 11:28:49
>sqplus側でSetMsg()だのGetMoney()だのの関数を使う

sqplus側で受け取ったポインタを通して
そのインスタンスのSetMsg()だのGetMoney()等のメンバ関数を使ったり
メンバ変数の操作をしたり、ということをしたい、、、
ということです。
245デフォルトの名無しさん:2008/08/07(木) 12:06:33
もう少しマニュアルとサンプルとか見直して出直してきたほうがいいぞー

概念的にはもちろんそういうことができるが、C++ のインスタンスの情報は
squirrel 側は当然知らないので、ポインタを渡しただけでは何もできない。
呼び出し用のラッパーを squirrel の流儀で構築する必要がある。

具体的には、C++ のインスタンスは、ユーザデータ型をつかって保持し、
メソッド呼び出しは、そのインスタンスを使ってメンバ呼び出しをする
Cのラッパー関数を、ネイティブクロージャとして、そのユーザデータ型の
オブジェクトの委譲テーブルに登録することで実現する。

sqplus はこれの記述を簡易化するためのテンプレートライブラリ。
メンバメソッドの引数から自動的にラッパーを組み上げて登録してくれる。

基本的には、登録したクラスを、squirrel 側からインスタンス化して使うのが想定されてて、
C++ 側で生成したインスタンスをはめこむのは原理的にはできるはずだけど、sqplusが
それをサポートしてたかどうかは知らない。
246デフォルトの名無しさん:2008/08/07(木) 12:30:15
つまり、C++をはじめとする静的型付言語の問題は型システムの相互運用性でありそれが組み込み言語でユーザデータを扱う際に表面化する、というわけだな。
247デフォルトの名無しさん:2008/08/07(木) 13:29:25
>>245
SqPlus の testSqPlus2unit/test_PassByReference.cpp
にその例があるよ
248デフォルトの名無しさん:2008/08/07(木) 22:22:37
Squirrelで使えるクラスを作りたいだけならこんな感じだったような

class 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"));
}
249デフォルトの名無しさん:2008/08/08(金) 01:38:24
>>232
動的言語はその辺は実行しろでFAだったと思いますよ。
動的言語を使用するなら、せめて全経路を走査する単体テストくらいは書けということなのでしょう。

>>245
>基本的には、登録したクラスを、squirrel 側からインスタンス化して使うのが想定されてて、
>C++ 側で生成したインスタンスをはめこむのは原理的にはできるはずだけど、sqplusが
>それをサポートしてたかどうかは知らない。

Squirrelを直に叩いていいならば、
・sq_createinstanceでコンストラクト前のオブジェクトを得る。
・sq_setinstanceupでオブジェクトのポインタをセット
・sq_setreleasehookで後始末関数を設定

で実現できると思いますが、SqPlusには相当する機能は無いんでしょうか。
この機能、無いとFactoryMethodがあるとき困るので、無い事は無いと思うんですが…
250デフォルトの名無しさん:2008/08/08(金) 02:42:19
251デフォルトの名無しさん:2008/08/08(金) 03:56:36
どうしても自分のコードで new したポインタを使いたいのかな
これじゃダメなのん?

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();
252デフォルトの名無しさん:2008/08/12(火) 18:06:52
お前らちょっと聞いてくれよ Squirrelなんだけどさ、


class Foo
{
val = [];
}

ってプロパティを空配列で初期化したんだけどさ、これ、インスタンス毎に
空配列を作成するんじゃなくて、インスタンス間で同じ空配列を参照するんだね。

わかんなくて3時間くらいはまったよ。なんだよもうOTL
253デフォルトの名無しさん:2008/08/12(火) 18:41:53
うむ。みんなが通る道だ。クラス中で定義した値は、インスタンス生成時に
毎回実行されるわけじゃなくて、単にコピーされるんでそういう挙動になるようだ。
ってことで、配列と辞書はコンストラクタで初期化するのが基本。

ちなみに全部同じ空配列を参照するから、クラス変数的に使えたりする。
254デフォルトの名無しさん:2008/08/17(日) 10:46:09
Luaのgeneric for文って、引数の個数を柔軟に扱うというLuaの特徴を生かしているのだね。
255デフォルトの名無しさん:2008/08/17(日) 15:43:02
くわしく
256デフォルトの名無しさん:2008/08/17(日) 17:40:24
>A for statement like
>
> 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) としても間違いじゃないから上のコードで統一できる。
257デフォルトの名無しさん:2008/08/17(日) 20:18:21
>>256
なんかやたら抽象的なコードが出てきたと思ったら、
リファレンスマニュアルから引用してるのか。
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html#2.4.5
258デフォルトの名無しさん:2008/08/17(日) 22:02:49
Programming in Luaにも同じコードがある。日本語訳は無いみたい。
http://www.lua.org/pil/7.2.html
259デフォルトの名無しさん:2008/08/21(木) 23:59:39
何かよく分からないけどCからLuaに何かさせたい人とか向けな超入門用のテンプレ作ってるの見つけた
・Cからluaにグローバル変数を登録する の項だけ絶賛放置プレイされてるけどまあこのスレ見てるなら過去ログに書いてあるし
ttp://www2s.biglobe.ne.jp/~nunokawa/wiki.cgi?page=Lua
260デフォルトの名無しさん:2008/08/22(金) 22:49:59
Lua 5.1.4
いつも通り、バグ修正のみ
261デフォルトの名無しさん:2008/08/25(月) 00:18:07
Luaの質問です
Luaの関数の戻り値をC言語で受け取りたいのですが,どうもうまくいきません.

http://ameblo.jp/coffeex/theme-10002528966.html

このサイトの Luaのり付け講座2 - C++からLuaの関数を呼ぶ という部分のコードを丸写しして
実行したのですが,実行結果が

可算結果: 5 (5.000000)
減算結果: 1 (1.000000)

ではなく

可算結果: 1 (1.000000)
減算結果: 5 (5.000000)

とひっくり返ってしまってます.もしかして環境によって戻り値の返し方は違うのでしょうか?
262デフォルトの名無しさん:2008/08/25(月) 03:08:58
ここの1つめと2つめは逆のような気がするな。
-2のほうが下にあるんだから1個めでは。

double result1 = lua_tonumber(L, -1); //1つめの戻り値(注意:Luaの数値はdouble型!)
double result2 = lua_tonumber(L, -2); //2つめの戻り値

その前に「可算」が気になる・・・
263デフォルトの名無しさん:2008/08/30(土) 14:26:16
Squirrelの話なんだけど、スレッド内でエラーが発生すると有用なメッセージ出力しないのは
仕様?

例えば、

local coro = ::newthread(
function()
{
264デフォルトの名無しさん:2008/08/30(土) 14:28:53
ゴメン途中送信した、まとめてから書くよOTL
265デフォルトの名無しさん:2008/08/30(土) 14:36:09
再送。

Squirrelの話なんだけどさ、スレッド内でエラーが発生すると有用なメッセージ出力しないのは
仕様?

例えば、

local coro = ::newthread(
function()
{
noindex = "";
}
);

coro.call();

ってコードを書くと、[the index doesn't exist]とだけメッセージが出力されて、スタック
トレースもcoro.call()の部分までしか表示してくれない。
実際のコードだと、noindex = "";の部分が原因だって特定するのが時間かかる。
ただのtypoの特定に時間かかってしまうと、コーディングのテンポが悪くて非常に困る。

Luaはそのあたりどうなのかな。コルーチンの内部にまで踏み込んでスタックトレース
表示してくれる?
266デフォルトの名無しさん:2008/08/30(土) 15:50:15
おk自己解決した。
これ実際にコーディングする上では結構致命的だと思うんだが…

フォーラムに載ってた。

http://squirrel-lang.org/forums/thread/2269.aspx

2行書き換えるだけで、ちゃんとコールスタック表示してくれる。
267デフォルトの名無しさん:2008/08/30(土) 15:57:35
sq_notifyallexceptions に SQTrue 指定するだけででない?
268デフォルトの名無しさん:2008/08/30(土) 16:30:21
>>267
お、ほんとだ出るね。サンクス。
でもこれ指定するとtry/catchでくるんでるのにエラーハンドラ呼ばれるんだよね?
状況によっては困る気もする。
269デフォルトの名無しさん:2008/08/30(土) 19:22:28
デフォルトのエラーハンドラはトレース表示するだけで catch の先自体はちゃんと動いてた
と思うから、あんま困ったことはなかったような記憶、だけどどうだっけか
270デフォルトの名無しさん:2008/08/30(土) 20:02:35
>>269
例えばエラーハンドラが呼ばれたときはキャッチ失敗したということだから、深刻なエラーとして
ログ出力して終了する、という運用スタイルの時困る気がする。

運用方法変えたら良いだけかもしれないけど…
本当は小細工しなくても、コールスタックちゃんと表示してくれるのが一番
なんだけどね。
271デフォルトの名無しさん:2008/09/01(月) 10:05:48
SqPlusでヘンな挙動発見。
VM内で初期化してないアドレスを参照してたから、最初は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
272デフォルトの名無しさん:2008/09/01(月) 20:55:02
てきとうな英語と実証コードを送れば分かってくれるんじゃね?
273sage:2008/09/01(月) 23:43:31
Squirrelでスレッド使うときって、
自分でVM切替えしてるの?
274デフォルトの名無しさん:2008/09/02(火) 07:20:43
>>272
公式フォーラムでいいのかな?暇ができたらレポートすることにする。

>>273
自分が何を指すのかわからないけど、フレンドVMを使っていることを普通意識する必要はないよ。
275デフォルトの名無しさん:2008/09/03(水) 15:08:48
SqPlusはいくつか変なところあるよ。
フォーラムに報告もたまにしてたけど、最近のリリースがけっこう前のものならとりこまれていないのかも。
276デフォルトの名無しさん:2008/09/10(水) 01:33:04
スクエニの小さな王国はSqPlus使ってるってさ
277デフォルトの名無しさん:2008/09/10(水) 21:12:07
>>276
これ?
Wiiウェアで始まった、スクエニの“小規模開発への挑戦”。「小さな王様と約束の国 FFCC」の開発事例
http://www.watch.impress.co.jp/game/docs/20080224/ffcc.htm
278デフォルトの名無しさん:2008/09/10(水) 22:51:52
Squirrelに関して質問させてください。

LuaからSquirrelに移行しようかと、いろいろ試しているのですが
SquirrelにはLuaでいう require/module のような機能はないのでしょうか?

自前で用意すればできるのはわかるのですが、
Squirrelの作法として、
スクリプトファイルを機能ごとに複数に分けて管理したい場合は
通常どうするのが正しいのでしょうか?

よろしくお願いします。
279デフォルトの名無しさん:2008/09/11(木) 00:50:24
特定のテーブルにロードすれば出来るのでは?
squirrelってsqstd_dofileとかでファイル読み込む直前でルートテーブルをプッシュしてるけど、
それをルートテーブルではなく、任意のテーブルを指定する
そうするとその任意のテーブルにデータが読み込まれる

ただし、使うときはtable.func();みたいな使い方をしなければならなくなる…のかな?
他にもデリゲートテーブルを使う方法もあるけど、これはファイルごとと言うわけにはいかないかな

というかLuaってrequire/moduleで機能ごとに分けて管理できるんだ…
そっち知らなかった…

280デフォルトの名無しさん:2008/09/11(木) 21:52:26
>>279
返答ありがとうございます。

やはり、自前で用意する必要があるようですね。
とりあえず Lua と同じような形で
ルートテーブルに登録する形で実装してみようかと思います。

ありがとうございました。
281デフォルトの名無しさん:2008/09/11(木) 22:27:49
>>279

>SquirrelにはLuaでいう require/module のような機能はないのでしょうか?
>スクリプトファイルを機能ごとに複数に分けて管理したい場合は

個別に管理、ということは
requireを使えば、いらなくなったスクリプトファイルとかを個別に解放できたりするんですか?
282281:2008/09/11(木) 22:29:06
>>279じゃなくて>>278でした
283デフォルトの名無しさん:2008/09/12(金) 13:33:06
>>281

解放ですか…
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ファイルに記述するわけにはいきませんから。
284デフォルトの名無しさん: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");

判定に使うのはグローバルに定義するものなら
なんでもいいですが、ルールきめておけばあとでみたときわかりやすいと思います。
285デフォルトの名無しさん:2008/09/14(日) 12:10:26
「スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践」
ってのがでるらしい。

出版社のページみつかんなかったのであまぞん
ttp://www.amazon.co.jp/dp/4797348550
286デフォルトの名無しさん:2008/09/14(日) 12:44:58
あと二週間くらい?
発売日になったらとりあえず買ってこようと思う。
287デフォルトの名無しさん:2008/09/14(日) 13:06:02
こういうのが何十冊も出ると買う気なくすが、Luaはまだまったりしていてよいです
288デフォルトの名無しさん:2008/09/14(日) 13:17:53
赤坂じゃなくてよかったw
289デフォルトの名無しさん:2008/09/14(日) 15:54:56
これか・・・

Amazon.co.jp: スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践: 浜中 誠: 本
http://www.amazon.co.jp/dp/4797348550
http://images-jp.amazon.com/images/P/4797348550.09.MZZZZZZZZZ.jpg
290デフォルトの名無しさん:2008/09/14(日) 23:06:46
CEDECでスクエニがSquirrel使ってるの話してたねー。
291デフォルトの名無しさん:2008/09/15(月) 03:33:58
>>290
kwsk
どっかに資料とかあがってないの?
292デフォルトの名無しさん:2008/09/15(月) 06:01:40
今さら知ったのかよ
293デフォルトの名無しさん:2008/09/19(金) 23:15:44
SquirrelとLuaってどっちがつおいの?
294デフォルトの名無しさん:2008/09/20(土) 01:08:36
Luaの方がこなれてるだろう
295デフォルトの名無しさん:2008/09/20(土) 01:38:03
強さで言うとSquirrelのが強い。
悟空とべジータくらい違う。
296デフォルトの名無しさん:2008/09/20(土) 01:48:54
Squirrelはバグだらけ。
自力で直せる環境にいないと使えない
297デフォルトの名無しさん:2008/09/20(土) 02:09:42
LuaとCをいったりきたりすると演算子とか間違えるから
Squirrelのほうがやわらかい
298デフォルトの名無しさん:2008/09/20(土) 02:25:07
速さと軽さならLua
基本的な演算とsuspendを行う処理を一億回ループさせたらLuaはSquirrelの1/3の時間ですんだ
299デフォルトの名無しさん:2008/09/20(土) 02:26:59
てゆうかこのスレ張ってる奴けっこう多いんだな
散々過疎ってたのに燃料来たとたんこれかよ
300デフォルトの名無しさん:2008/09/20(土) 09:58:58
Luaの方が愛されてる感はある
301デフォルトの名無しさん:2008/09/20(土) 10:11:15
>>285
この辺がなんか不安、サンプルやらソースやら見れば解ることが山ほど載ってそう
>〜人気スクリプト言語Lua(ルア)とC/C++のバインディング実例を詳細に解説。
302デフォルトの名無しさん:2008/09/20(土) 10:30:39
サンプルやソース見てわかる人は買わなきゃいいだけだろw
303デフォルトの名無しさん:2008/09/20(土) 10:46:06
サンプルの種類が増えるのは良い。延べ数ばかり増えるのは困る。
304デフォルトの名無しさん:2008/09/20(土) 14:11:14
LuaとC/C++との連携では、Swigはあまり使わないものなんですか?
305デフォルトの名無しさん:2008/09/21(日) 00:53:52
>>304
Lua本体に入ってない
LuaがC/C++との連携を単なるオプション扱いすることはない

ゆえに、Swigはあまり使わない
306デフォルトの名無しさん:2008/09/21(日) 02:11:53
>>291

一応、CEDECのサイトで講演に使ったパワポがpdfでアップされてたんだけど、
これ会員以外に流すとなんかやばそうな・・・

まぁいろいろ言ってたよ。
コード全体の7割はSquirrelとかallocが多いのでメモリまわりの工夫をしたとか。

実際このゲームプレイしたけど、Wii環境であれだけ動いていれば、まぁ実践レベルには十分達しているといえるだろうね
307デフォルトの名無しさん:2008/09/21(日) 02:15:41
つか、スクエニの開発スタッフ、このスレたまにはチェックしてると思う。
2chにここしかSquirrelのスレないんだもん。

クレっていったら資料くれそうな気もする
308304:2008/09/21(日) 22:00:07
>>305
なるほど、サンクスです。「入門Luaプログラミング」を読んだんですが、
C++との連携方法がいまいち良く分からなかったので(SquirrelだとSqPlus?)、
>>285の本を見て勉強することにしてみます。
309デフォルトの名無しさん:2008/09/21(日) 22:29:12
今週末か。レビューよろ
310デフォルトの名無しさん:2008/09/21(日) 23:13:07
既出の質問かも知れませんが…。
CからLua関数をコールするときは、関数名、引数をスタックに積んで行うと思います。
これを以下のようにコールするのって、副作用とか問題点って何かありますか?
(実行速度とか)

sprintf( strCmd, "return add( %f, %f )", a, b );
luaL_dostring( L, strCmd );
311デフォルトの名無しさん:2008/09/21(日) 23:34:49
速度なら試して比較すりゃいいんでないの?
312デフォルトの名無しさん:2008/09/23(火) 14:16:38
ものすごくループする所で使うんじゃなければそんなに問題ないよ。
スタック積むのめんどくさい時はたまにやってしまう。
313デフォルトの名無しさん:2008/09/23(火) 20:28:26
310です。
速度低下と実数が桁落ちするデメリットはすぐに分かるのですが、
マニュアルにある"tail call"形式にする影響が少々心配でした。
アドバイスありがとうございました。


314デフォルトの名無しさん:2008/09/24(水) 15:53:01
Luaってバインダの決定版っぽいのが無い感じだけど(Activeじゃないのが多い気がする)、
皆なに使ってる?自作してるのかな?
315デフォルトの名無しさん:2008/09/24(水) 22:18:38
Squirrel 2.2.2 stable - September 24, 2008

-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()
316デフォルトの名無しさん:2008/09/27(土) 08:49:30
>>314
漏れはバインダなんてイラン派
317デフォルトの名無しさん:2008/09/30(火) 09:20:05
>>285って誰か買った?
どっかで見てから買いたかったんだけど売ってない。
よさげor誰も買ってないならamazonで買おうかと。誰か買ってたら感想よろ
318デフォルトの名無しさん:2008/09/30(火) 10:06:28
>>317
>ご注文いただいた商品の配送予定日がまだ確定しておりません。
<中略>
>継続して商品の調達に努めてまいりますが、調達不能な場合または入荷数の関係上キャンセルをさせていただくこともございます。

報告するようじゃないけど、初めてkonozamaメール貰った。\(^o^)/

319317:2008/09/30(火) 15:07:52
konozama食らうくらいなら探すべ、と思ったらヨドにあったんで買った。
結構いろいろ書いてあるっぽいんで楽しみ。
320デフォルトの名無しさん:2008/09/30(火) 15:48:15
おれもさっきこうてきた
大学の書店に普通においてあったよ
321デフォルトの名無しさん:2008/09/30(火) 17:11:38
参考Webサイトにこのスレがwww
322デフォルトの名無しさん:2008/09/30(火) 17:23:42
記念ぱぴこ

オール・ハイル・ぅあ!
323デフォルトの名無しさん:2008/09/30(火) 19:18:24
bccで使う方法がようわからんのだけど
324デフォルトの名無しさん:2008/09/30(火) 23:25:37
bcc用のlib付属してないんだっけ。
bccについてるimplibでdllからlibファイル吐かせてリンクすればいけんじゃね?

何がわからんのだかわからんから適当言ってるが、的外れなこと言ってたらスマン
325デフォルトの名無しさん:2008/10/01(水) 02:25:52
つーかBCBならともかくbccなんざ捨てろ
326デフォルトの名無しさん:2008/10/01(水) 09:14:48
そしてIDEだけ残ると
327デフォルトの名無しさん:2008/10/01(水) 16:14:35
vcのexpressあるからなあ。
無料で使えるってことで以前は定番だったけども。
328デフォルトの名無しさん:2008/10/02(木) 09:11:38
無職なのに、欲望に負けて>>285の本を買ってしまった…orz。
C/C++とのバインディングは、パッと見でtolua++とかいうのを使っているみたい。
329デフォルトの名無しさん:2008/10/03(金) 23:03:56
今のうちにgoluaを登録商標にしとかないと
330デフォルトの名無しさん:2008/10/04(土) 11:09:33
自作のLuaラッパにApolloって名づけようとしたけど
RubyのDelphiバインディングに使われていた
331デフォルトの名無しさん:2008/10/04(土) 11:36:59
「バインダ」てyaccと同じにおいがする
使うと勝ち組になれるような気がするぜ
332デフォルトの名無しさん:2008/10/04(土) 14:04:24
amazonからやっと本が届いた
tolua++便利だな
まだ使っても無いけど
333デフォルトの名無しさん:2008/10/04(土) 18:27:26
またLua入門売り切れてる
http://www.amazon.co.jp/dp/4797342722
334デフォルトの名無しさん:2008/10/04(土) 22:41:43
lua最高!
335デフォルトの名無しさん:2008/10/05(日) 01:25:06
luaはAlgol系schemeのうまくいった例という感じがする
336デフォルトの名無しさん:2008/10/06(月) 08:29:45
DSのLuaってどうよ?
337デフォルトの名無しさん:2008/10/06(月) 11:28:58
>>285の本のサンプルダウンロードサイトって落ちてるのかな?
tolua++のソースとかSDLとかSConsとかダウンロードしたいやつが結構ある。
できればCD-ROM付きの方が良かったかも…。
338デフォルトの名無しさん:2008/10/06(月) 14:05:06
落ちてるっぽいな。
まあCD-ROMは邪魔だわ更新されないわで嫌いだから気長に待つが。
339デフォルトの名無しさん:2008/10/06(月) 20:23:00
lua5_1_3_Win32_mbenc.zip にコンパイル済みの lua5.1.lib が入ってないと
81ページ付近で少し困るような気がする。

ついでに59ページ。counry
340337:2008/10/06(月) 22:52:20
なんかサイトがダウンしてたみたいで、いろいろダウンロードできた。
4章まで読んだところでは、4.10のLuaの文法:クラスのところが、Lua入門の方で
よく分からなかったとこなんで役に立ったかも。
5章から手動かしながら読んでくべ。
341デフォルトの名無しさん:2008/10/08(水) 23:26:54
Lua最高!
342デフォルトの名無しさん:2008/10/10(金) 02:24:17
Lua melhor!
343デフォルトの名無しさん:2008/10/11(土) 09:13:45
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   

344デフォルトの名無しさん:2008/10/11(土) 18:21:28
クマでもわかるLuaプログラミング 第5版
345デフォルトの名無しさん:2008/10/11(土) 19:09:26
スクリプト言語 Kuma
346デフォルトの名無しさん:2008/10/11(土) 19:20:07
Kumaで書かれた>>343のスクリプトを実行すると「(_●_)Lua!!」と表示されます
347デフォルトの名無しさん:2008/10/11(土) 20:00:24
ぅぁあああ!
348デフォルトの名無しさん:2008/10/11(土) 20:52:59
インタプリタ書いてみた
io.open(arg[1]):read("*a"):gsub(([[
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ KUMA
 彡、   |∪|  /
/ __  ヽノ /
(___)]]):gsub("[^%a]","%%%1"):gsub("KUMA","(.-)"),
function(s)io.write("(_●_)",s,"\n")end)
349デフォルトの名無しさん:2008/10/12(日) 08:47:37
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


350デフォルトの名無しさん:2008/10/12(日) 11:17:47
なんだクマスレか
351デフォルトの名無しさん:2008/10/12(日) 14:08:31
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ _ヽ  ヽノ ノ/
(___)\/ 
  Urso de lua 「和名: ゥアノワグマ」
352デフォルトの名無しさん:2008/10/12(日) 15:11:20
さすがにうざいだろこれは…
353デフォルトの名無しさん:2008/10/12(日) 15:53:21
他に話題も無いしなあ
354デフォルトの名無しさん:2008/10/12(日) 18:57:56
つ翻訳
355デフォルトの名無しさん:2008/10/13(月) 19:16:01
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
356デフォルトの名無しさん:2008/10/13(月) 20:58:57
Lua 5.2とか機能追加候補とか。
ttp://lua-users.org/wiki/LuaFiveTwo
ttp://lua-users.org/wiki/FeatureProposals

個人的にはHash計算しない文字列(バッファ目的)とか
標準にほしいような。LuaSocketとかでそれなりのサイズの
通信行うと、ゴミがたまるので精神衛生上良くない。
357デフォルトの名無しさん:2008/10/13(月) 21:50:07
そういう部分は後で少しずつCで書き直すわけにはいかないのかな
CとLuaの比率をなめらかに変化させるのが理想的だと思う
358デフォルトの名無しさん:2008/10/14(火) 23:07:14
ところでここはAngelScriptやGameMonkeyの話題はOKなの?
359デフォルトの名無しさん:2008/10/14(火) 23:24:21
組み込み系言語総合だからおk
360デフォルトの名無しさん:2008/10/15(水) 00:36:47
やたら懐かしい名前が出てきたなw
361デフォルトの名無しさん:2008/10/15(水) 01:44:37
AngelScript使っているひといないの?
結構良さそうなんだけど
362デフォルトの名無しさん:2008/10/15(水) 01:53:26

        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/ (⌒ヽ. ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'\ \|   ( _●_) ミ'  /、)、)´       +
         +      `ヽ彡、   |∪| ノ /    Lua!!
     +            〉    ヽノ  /  *      +
       ┼        /      /      +
           +     /    /\ \   *        +
  +         *  /  / ┼ )  )       +
            / / +  (   \          *
    *     +   (_/      *   \_丿   ┼
363デフォルトの名無しさん:2008/10/15(水) 02:56:46
流れぶった切るが
ゲーム系で問題になるluaのreallocの問題って
 1) OSのreallocは排他等高コスト
 2) 拡張時のコピーが高くつく
 3) メモリ断片化
のどれだろう。また、その代替案として以下は正しい?
1) 2)
=>インタフェース変えずにカスタムlua_Alloc作成だけでOK?
3)
=>stl::vector ->stl::dequeみたいに配列サイズ追加しても
allocが呼ばれない配列管理に変更
364デフォルトの名無しさん:2008/10/15(水) 03:07:13
>>361
あー、おれも興味あるんだ
文体C++風味で型の扱いが静的というところに魅かれる

365363:2008/10/15(水) 03:08:37
ちょい修正
1)
=>インタフェース変えずにカスタムlua_Alloc作成だけでOK?
2) 3)
=> 配列サイズ増加時にallocは呼ぶが、stl::deque
のような再配置をなくした配列管理にし、また、追加される
メモリブロックは固定長に出来るので固定長メモリアロケーター
で済む。故にメモリ断片化が防げる。
366デフォルトの名無しさん:2008/10/15(水) 05:05:38
>>363
ここで聞くほど問題が見当たらないなら
 4) そもそも実は問題ない
という結論にならないかね?

malloc/free が OK で realloc がダメとかおかしいだろ、普通に考えて。
367デフォルトの名無しさん:2008/10/15(水) 18:05:36
AngelScriptはC++みたいで個人的に大好きなんだが漠然と遅い気がする。
まぁちょろいテストアプリを作っただけなんで作り込んだらいい線いくかもしれないが。
368デフォルトの名無しさん:2008/10/15(水) 18:48:39
何だかんだで速度が気になってLuaに戻って来ちゃうんだよなあ。
PythonとかRubyとかちょっと組み込んでみたいんだけども。
369363:2008/10/15(水) 20:32:14
反応薄いな。366の言うとおり実は問題にしてる人少ない?

本当にリサイズが発生するのって配列サイズの増加と
テーブルのハッシュ再計算時と文字列結合ぐらい?
lua自身の配列サイズの増加も倍々方式だし、realloc自体も
同様の最適化されてるので、コピーはそんなに発生しない。

ある程度の大きさのランダムアクセス配列が必要なら、
配列サイズの事前割り当ても可能だし、配列自体の
使いまわしも出来る。

ガベコレはだめだ、参照カウンタがいいってんなら理解できるが。
370デフォルトの名無しさん:2008/10/15(水) 21:22:06
そもそもシビアなゲームとかならalloc呼び出す、みたいな設計はしない。
371デフォルトの名無しさん:2008/10/16(木) 02:28:44
AngelScriptはホスト側のインターフェイスは好みなんだけどなあ・・
372デフォルトの名無しさん:2008/10/16(木) 02:34:17
AngelScriptにはJITみたいなのないの?
373デフォルトの名無しさん:2008/10/16(木) 20:54:50
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
374デフォルトの名無しさん: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の関数に渡せるの?
375デフォルトの名無しさん:2008/10/18(土) 11:33:42
>>374
lua_pushlightuserdata()
メンバ変数をLua側に公開するなら他にも色々必要だろうけど
376デフォルトの名無しさん:2008/10/18(土) 15:46:17
>>375
ありがとうございます
色々って、たとえばアクセス用の関数を準備するとかですか?
ほかになにか手はありますかね。
377デフォルトの名無しさん:2008/10/18(土) 22:31:06
>>376
その関数とデータを一つのテーブルにまとめるとか
メタテーブルを使うとか

メタテーブルの説明はマニュアルにある
何に使うかは自由
378デフォルトの名無しさん:2008/10/21(火) 10:50:36
SQDEVでSquirrelの自作スクリプト&プログラムのデバッグをやってるんだが、
SquirrelスクリプトにSJISの文字列リテラルを書いてたら
Eclipseで毎回コンパイルエラーがでるのは俺だけ?

Eclipseの起動前にスクリプトを一時的に削除したりして面倒。
デバッグ用に動かす分には問題ないっぽいんだが。
\
379デフォルトの名無しさん:2008/10/21(火) 15:56:12
ヒント:SJIS
380378:2008/10/21(火) 18:22:22
>>379
今確認したが、UTF-8でスクリプトを用意して
bin/squでシンタクスチェックをさせるようにしても、
やはり日本語のリテラル部分でEclipseのエラーメッセージが表示される。
(もちろんsqu -c では問題なし)
381デフォルトの名無しさん:2008/10/22(水) 07:47:34
ヒント:UTF-8
382デフォルトの名無しさん:2008/10/22(水) 12:58:16
Eclipseスレでどうぞ
383デフォルトの名無しさん:2008/10/22(水) 21:17:49
とりあえず、SQ-DEVでインストールの仕方を教えてくれ、うまくいかない。
384378:2008/10/25(土) 14:22:02
>>381
UTF-16LE/BEに変えてみたがやはり変わらず。
それからSquirrelインタプリタsqu.exeはコンパイル時にエラーを吐かないことが結構あることに気づいた。
コンパイルチェックはあまり信用できないんだな。
>>382
説明が悪かった。Eclipseのウィンドウに、「Squirrelスクリプトのコンパイルエラー」と表示されるわけだ。
表示させてるのはSQDEVなので一応まだSquirrelの範囲内。まあしつこいと思われるようだったら黙る。
>>383
俺もつい先週入れたばかりなのでまだ使える情報だと思うが、

1.まずSun Java SEの最新版を入れる。
2.EclipseはC++用じゃなくてJava開発用をインストールすること(CDTは後から入れられる)
3.あとはSQDEVのWikiページの通りでよい
385デフォルトの名無しさん:2008/10/25(土) 17:03:25
ヒント:UTF-16LE/BE
386デフォルトの名無しさん:2008/10/25(土) 19:14:16
まず、素のSquirrelはマルチバイド考慮してない
本体のコンパイル時にUNICODE対応させるオプションがある。
内部のUNICODE=UTF-16

だけど確か、読み込み時に標準ライブラリを使ってロードする時はいくつかのUNICODEに対応していたはず、
(UTF-8N,UTF-16のLE,BEあたりだったような)
この辺はソース読んでみて、確かめてみて簡単だから
387378:2008/10/25(土) 20:10:22
>>386
Squirrelソース本体はまさにその通りですね。どうもありがとう。

ところがSQDEVに関しては、どうやらSQDEV自体でSquirrelスクリプトの構文解析をやってるっぽいんだ。
(pluginのJavaソースコードを入手して眺めてみた)

このJavaで独自に実装された構文解析器で文法チェックしてるのか、
SQDEVのオプションで指定するインタプリタで文法チェックさせてるのかはまだ調べてない。

残念ながら俺はJava界隈はあまり詳しくないので、どう直したらSJIS対応の構文解析器に改造できるのかがわからん。
388デフォルトの名無しさん:2008/10/25(土) 21:21:47
>>384
syntax checkingもできてないし
デバックできなかった。

suspend
ready
connected
SQDBG error : cannot open the file
389デフォルトの名無しさん:2008/10/26(日) 01:12:46
SQDEVって結構謎めいた奴なんだな
390デフォルトの名無しさん:2008/10/27(月) 14:34:30
>>388
EclipseでSquirrelパースペクティブを開いているかどうか。
SQDEVの設定は完了しているのかどうか。
プロジェクトのファイルパスがスペースを含まない半角英数字のみで構成されているかどうか。
sqdbglibを含んだインタプリタかどうか。(sqdbg.exe)
391390:2008/10/27(月) 15:17:09
補足。
リモートデバッグというのは動いている外部プログラムをSocket越しにモニターするだけのことだから、
デバッグ対象のプログラムが正常に動作するようにする必要がある。
「SQDBG error : cannot open the file」
という言葉通り考えるなら、sqdbg.exe の場合だと
「Default Working Directory」と「Default command line options」の組み合わせが正しくないとか。
392デフォルトの名無しさん:2008/10/27(月) 15:28:22
既出かもしれないが、
SqPlusの初期化において、VMをSQSharedStateNodeに渡してアプリケーション終了時にまで
VMの解放を後回しにするコードは丸めてゴミ箱に捨てたほうがいい。回避させたほうが無難。
393デフォルトの名無しさん:2008/10/27(月) 18:53:29
>>392
「Default command line options」がわかんないよ。
「test.nut」じゃないの
ほかは全部あってると思う。
394393:2008/10/27(月) 18:54:05
間違えた。
>>391
395デフォルトの名無しさん:2008/10/28(火) 11:16:46
>>393
まあ分からないというなら、ファイル・ディレクトリ構成まで含めてWikiと全く同じにしてごらんよ。
connectedと出ているようだから、sqdbg.exeへのSocket接続は成功しているようだ。
396デフォルトの名無しさん:2008/10/28(火) 23:02:00
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >
397デフォルトの名無しさん:2008/11/03(月) 15:03:40
ほっしゅ
398デフォルトの名無しさん:2008/11/03(月) 18:31:08
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   

399デフォルトの名無しさん:2008/11/04(火) 18:05:01
luaで正規表現は使えますか?

また、文字列処理に関して、pythonやrubyと
比べるとどうですか?かなり劣ってますか?
400デフォルトの名無しさん:2008/11/04(火) 19:13:11
>>399
使えます
ある程度は劣っていると思います
401デフォルトの名無しさん:2008/11/04(火) 19:27:44
>>399
文字列の簡単なパターンマッチは標準ライブラリでできますが、
例えばバックトラックを必要とするような複雑なパターンは使えません。
マルチバイト文字のサポートもありません。
あえて言うなら、文字列とbyte列を区別するのが嫌いな人向け。

ちなみにLPegというライブラリでparsing expression grammarが使えるそうです。
ttp://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html
402デフォルトの名無しさん:2008/11/04(火) 22:30:15
>>400
>>401
レスありがとう。
rubyかpythonの拡張で行こうかと思ってたけど、
組み込みで行くわ。
俄然やる気出てきた。
403デフォルトの名無しさん:2008/11/04(火) 23:29:28
>>399,402
文体の変化にやる気というか、テンションの上がりっぷりが伺えて面白いんだがw
404デフォルトの名無しさん:2008/11/05(水) 10:49:20
さしあたり、SquirrelにはSJISのテキストを1文字ずつ区切って
配列にぶち込んでくれるAPIが欲しいところだな。
405デフォルトの名無しさん:2008/11/06(木) 02:33:13
>>404
自分でネイティブ関数作ればいいじゃないかw
406デフォルトの名無しさん:2008/11/07(金) 20:21:05
スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践

って本に関して、Luaの入門書を先に読んだほうが良いですか?
それともこの本だけで完結しますか?
407デフォルトの名無しさん:2008/11/07(金) 21:05:26
開発効率を上げるためにスクリプト言語(Lua)を利用するという趣旨の本で
読むのにLua自体の知識はあまり必要ない
408デフォルトの名無しさん:2008/11/07(金) 21:41:36
>406
Luaの構文規則については第4章をまるまる使って解説してる
本に載っている内容だけならこれで十分

自分でなんか作ってみて
わからないところが出てきたら
Webのリファレンスみればいいんじゃない?
409デフォルトの名無しさん:2008/11/08(土) 04:24:49
ご意見ありがとう御座いました。
大変参考になりました。
410デフォルトの名無しさん:2008/11/09(日) 03:47:40
あれこれSquirrel(on SqPlus)でテストしたけど、VCで文字コードをUnicodeにした場合、スクリプトコードの日本語はうまく処理できない。
文字列処理をアプリ側でやれば問題はないんだが、スクリプトコードのデバッグに日本語が使えないな。
411デフォルトの名無しさん:2008/11/12(水) 01:04:17
lua5.0で割り算をした時に余りを出す方法はないですか?
412デフォルトの名無しさん:2008/11/12(水) 01:27:30
ん、5.0って%ないの?
413デフォルトの名無しさん:2008/11/12(水) 06:25:36
あるならそんな質問しないだろ常識的に考えて・・・
414デフォルトの名無しさん:2008/11/12(水) 07:39:32
5.0にはないみたいだね。
http://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
415デフォルトの名無しさん:2008/11/12(水) 19:49:36
416デフォルトの名無しさん:2008/11/12(水) 23:54:16
>>411
つ math.mod
417デフォルトの名無しさん:2008/11/13(木) 00:01:26
418デフォルトの名無しさん:2008/11/13(木) 00:03:58
>>417
すまね、携帯で見てて下切れてたorz
419デフォルトの名無しさん:2008/11/13(木) 01:39:50
math = nil
420411:2008/11/14(金) 23:41:53
>>414
ありがとうございます。できました
421デフォルトの名無しさん:2008/11/15(土) 10:58:34
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   

422デフォルトの名無しさん:2008/11/16(日) 10:17:41
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

423デフォルトの名無しさん:2008/11/16(日) 13:06:01
俺のXtalたんはどうなりましたか?
424デフォルトの名無しさん:2008/11/16(日) 13:06:52
音信不通です
425デフォルトの名無しさん:2008/11/16(日) 18:36:16
Xtalたんは緊張気味です
426デフォルトの名無しさん:2008/11/16(日) 20:12:46
返事がない。ただの屍のようだ。
427デフォルトの名無しさん:2008/11/16(日) 21:31:57
AngelScripたんなら俺の横で寝てるが
428デフォルトの名無しさん:2008/11/16(日) 23:07:10
AngelScript色々いじってみたが、結構使いやすいな。
文法がC++なんで慣れてるってのもあるが。

ただ、AngelScriptとC++プログラムを結びつけるのを簡単に行うツールとかないのが残念。
LuaBindとかみたいなやつね。
429デフォルトの名無しさん:2008/11/17(月) 15:01:43
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
430デフォルトの名無しさん:2008/11/17(月) 15:32:49
プログラミング言語のソースコード行数
http://d.hatena.ne.jp/SumiTomohiko/20081114/1226668855
431デフォルトの名無しさん:2008/11/17(月) 20:00:00
>>428
バインダがなくてもシームレスに利用できるのがAngelScriptの良いところだと思うのだが。
432デフォルトの名無しさん:2008/11/17(月) 23:47:04
>>431
確かに。
Luaはいまいち使いこなせなかったが、AngelScriptはその辺楽でよかった。

ただ、例えば

ASFunc<int(int,int)> f;
f.SetContext(〜);
f.SetFuncID(〜);
int val=f(a,b);

みたいな感じで、普通の関数呼び出しと同じようにAngelScriptの関数呼び出せるのがあれば便利かなーと。
433デフォルトの名無しさん:2008/11/18(火) 20:34:35
LuaInterface http://luaforge.net/projects/luainterface/
で.NETのSystem.Drawing.BitmapとかGraphicsを使って画像を読み込んで弄ったり出来るんだけど、
新規にBitmapを作る方法がわからん。
一旦画像を読み込んでそれのクローンをつくるとかいうやり方ぐらいしかうまくいかない。
434デフォルトの名無しさん:2008/11/22(土) 08:49:08
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

435デフォルトの名無しさん:2008/11/22(土) 18:43:30
いいえ、それはKumaです。
436410:2008/11/24(月) 14:51:19
アプリ側でsetlocaleすりゃよかったんだな。
UCS2は.NETでしか使ったことなかったので、ロケール失念してた。
437デフォルトの名無しさん: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のメッセージを無視する方法以外で、警告メッセージを消す方法はありますか?
438デフォルトの名無しさん:2008/11/25(火) 00:51:29
LuaのライブラリをコンパイルしたときのCRTとそのプロジェクトのCRTが食い違ってるんじゃね。
大体MTとかその辺のオプションで
439デフォルトの名無しさん:2008/11/25(火) 09:08:48
>>437
vcppでWin32向けプログラムをビルド際にFAQレベルで発生する問題だ。
Luaに限ったことじゃないのでぐぐればすぐに解決策は出てくる。
ややこしいことにvcppは複数のランタイムライブラリを持っていて、しかも各ライブラリ・プログラム生成時には原則全てあわせる必要がある。
440デフォルトの名無しさん:2008/11/25(火) 23:22:38
>>439
推測だがLuaのビルドオプションがMTでアプリ側もMDだとこの警告がでる。
この場合でもアプリのほうでLIBCMTを無視する設定にすれば大概大丈夫なはずなんだが・・・

面倒だったら、両方のランタイムをそろえてしまえばラクだけど
441デフォルトの名無しさん:2008/11/26(水) 01:05:16
>> 438
>> 439
>> 440

プロジェクトの
 [構成プロパティ]->[C/C++]->[コード生成]->ランタイムライブラリ
を/MDd(マルチスレッドデバッグ DLL)から/MT(マルチスレッド)に変更することで警告がでなくなりました。

おかげで少しVC++についてわかりました。

ご丁寧な回答、ありがとうございました。
442デフォルトの名無しさん:2008/11/26(水) 01:44:50
正しい解決法は、
・LuaのライブラリをCRT毎に6種類全部ビルドする
・#ifdefと#pragma comment(lib,〜)で自動的にそれを選択するヘッダを作る
443デフォルトの名無しさん:2008/11/27(木) 15:41:21
スクリプト言語による効率的ゲーム開発の本読んで、
確かに動的リロードはできたら便利だよなと思った。

そこでSquirrelで同じことをしようと思ったんだが、問題にぶつかった。
Squirrelの仕様だと、Classは一度インスタンスを生成すると変更不能になる。
この仕様だとSquirrelのクラスはリロードできないんだよな…

かといってdelegate使うのは、折角クラス機構があるのにどうよ?と思うんだが、
Squirrelで動的リロードを実装した人いる?
444デフォルトの名無しさん:2008/11/27(木) 15:44:13
>>442
Makefileで書けば至極簡単だが、(Luaを)プロジェクトファイルで管理したら普通の方法だとものすごく手間がかかりそうだな。
楽にやる方法何かないでしょうか。
445デフォルトの名無しさん:2008/11/27(木) 15:45:19
>>443
スクエニの小さな王国とかが動的リロードやってる
CEDEC2008で言ってた
446デフォルトの名無しさん:2008/11/27(木) 15:45:24
>>443
おそらく、いったんインタプリタを殺して最初からやり直した方が早いと思う。
447デフォルトの名無しさん:2008/11/27(木) 16:02:33
>>444
ヘッダ一発だってばさ
448デフォルトの名無しさん:2008/11/27(木) 16:39:01
>>445
やってるのか。詳細が欲しいな。

>>446
今まではまさにその方法でやってた。

色々考えてみたが、ソースに手を加えない方法ではdelegate使うしかないな。

Foo = NewClass( "Foo", SuperClass );

function Foo::foo()
{
// do something
}

のようにクラスを記述しないといけないが…
449444:2008/11/27(木) 22:30:07
>>447
意図がうまく伝わらなくてすまん。
Luaを6種類ビルドする方法のことを言ってます。
450デフォルトの名無しさん:2008/11/28(金) 08:13:57
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
451デフォルトの名無しさん:2008/11/28(金) 17:02:22
>>449
プロジェクトファイルってVCの話か?
それなら、ビルド方法のリリースやデバッグに追加して
「DLL リリース」とか「DLL デバッグ」とか作ればええよ
452デフォルトの名無しさん:2008/12/02(火) 01:31:01
なんか0xff表記使うとfloatっぽい丸め誤差が発生するんだが。
色マクロに使おうとしてた俺涙目とか思ってたら>>100で既出な上、
さらに>>104で解決策が示されていた件

ありがとう>>104
453デフォルトの名無しさん:2008/12/02(火) 10:20:36
Xtalで書いたスクリプトをSquirrelに移植したら
微妙に遅くなって涙目。

デバッガとかついててSquirrel便利だけど、
どっちにしようかなぁ……。
454デフォルトの名無しさん:2008/12/02(火) 11:35:49
”微妙に”遅くなるだけなら問題ないと思うんだが・・・
実行に差し障りがあるレベルなら微妙とはいわなくね?
455デフォルトの名無しさん:2008/12/02(火) 22:27:47
たしかに、スクリプトの速度が1/2になるのとFPSが1/2になるのとでは全く意味が違うからな。
FPSが明らかに低下したらならXtalのままにしたほうがいいと思う。
456453:2008/12/03(水) 01:14:18
60FPSでキャッシュせずに全張替えしてる仮実装の状態だが、
Xtalだとぎりぎりで60FPS出せる。CPU使用率は1個換算で96〜98%くらい。
これがSquirrelだと52〜54FPSになって少しカクカクしてくる。

速度ならXtalということになるが、これ以上作りこむとどうせ足りなくなるのは同じで、
描画処理の枝刈りをすればSquirrelでもいけるかも……というところ。
蛇足でスマソ。
457453:2008/12/03(水) 01:28:54
ところで、みんなSqPlusのところ悪いが(ほんとか?)
jkBindってどうよ?
なんかフォーラムにパッチ上がってるみたいだけど。
458デフォルトの名無しさん:2008/12/15(月) 19:37:58
なんかtolua++の挙動怪しかったん、手てグルーコードを書くのを補助する
ライブラリ自作しちまったい。

やっぱり自前で書いたほうが細かく制御できていいね。
459デフォルトの名無しさん:2008/12/15(月) 23:46:18
AngelScriptのShiftJIS対応版とか需要あるんだろうか…
460デフォルトの名無しさん:2008/12/17(水) 00:31:03
俺はSquirrel3のパフォーマンスチューニングに期待してSquirrelで行くぜ!
まぁ、枝刈りも大切だと思う。

あとはココのJITとかどうかね
ttp://muffin.cias.osakafu-u.ac.jp/~matumoto/

バージョンがちょい古いけど…
461デフォルトの名無しさん:2008/12/17(水) 01:26:17
>>460
ちょうど今、vcpp向けの改修を行っているところ。
作者のスクリプト、デフォルト引数などは既に対応した。
まだメタメソッドや複数段階のクロージャの呼び出しがイマイチ不安定なので改善を図ってるところ。
近々フォーラムに発表予定。
462デフォルトの名無しさん:2008/12/17(水) 13:44:50
>>461
元にある問題点とかはそのままなの?
463デフォルトの名無しさん:2008/12/17(水) 22:05:06
wktk
464461:2008/12/19(金) 20:46:12
とりあえず、手元のスクリプトがほぼ一通り動くようになったのでフォーラムで公開してみる。
協力者求む。
動かないスクリプトの例などがあるとうれしい。
465デフォルトの名無しさん:2008/12/20(土) 00:09:14
乙!
466デフォルトの名無しさん:2008/12/20(土) 09:07:13
>>464
乙カレー

LuaはC++だとlua_call失敗時に例外投げるんだな。ちゃんと書いてくれよOTL

てっきりデストラクタ呼ばれないと思って、そういうコードを書いてたせいで
謎の挙動に悩まされたよ。
467デフォルトの名無しさん:2008/12/20(土) 15:57:40
>>466
リファレンスマニュアルの3.6にそれらしいことが書いてあるよ
Cでsetjmp/longjmp使っててもC++のデストラクタが呼ばれる処理系もあるけどね
468デフォルトの名無しさん:2008/12/20(土) 18:03:42
>>467
ほんとだ見落としてた
俺の3時間を返せorz
469デフォルトの名無しさん:2008/12/22(月) 08:14:31
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
470デフォルトの名無しさん:2008/12/22(月) 09:22:22
toLuaでC++とLuaをバインディングしてるんだけど、
yieldをC++側で呼ぼうとしたとき、
toLuaの生成したラッパーの中じゃ、
lua_yieldを呼べないようなんだが、
どうしてる?
471デフォルトの名無しさん:2008/12/22(月) 18:53:35
>>470
lua が yeild をどうやって実装しているか、ソースを追っかけてごらん。
472デフォルトの名無しさん:2008/12/28(日) 14:38:55
IGDAでこういったイベント新年にやるみたいだから、参加するのもよいかも

ttp://www.igda.jp/modules/eguide/event.php?eid=58

CRIScriptの人が来るのはちょっと驚いた。
アメリカからはるばる・・・
473デフォルトの名無しさん:2008/12/28(日) 15:41:56
>>472
浜中さんの本すでに持ってる人にはあまり新しい情報は出ない気がする…
474デフォルトの名無しさん:2008/12/29(月) 05:08:14
日本製のゲーム用スクリプトで最もオープン、かつ、つかわれまくってるものを
開発した W.Dee 氏をパネリストでよぶべきだろう、とちょっと思ったけど、
よくよく考えてみればあの人はゲームは本業じゃないか……
475デフォルトの名無しさん:2008/12/29(月) 10:57:23
うん。Nスクの人だと食指は動かないが、Deeたんなら是非行く。
というか、組込み言語の話だからじゃないかな(Nスクの人がいるけど)。
476デフォルトの名無しさん:2008/12/30(火) 09:34:59
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   

477デフォルトの名無しさん:2008/12/30(火) 19:43:21
Nスクリプトは、組み込み言語?というよりDSLでは?
ゲームとか簡易GUIが簡単に作れるHSPみたいなイメージ
478デフォルトの名無しさん:2008/12/30(火) 19:43:56
ごめん、 W.Dee ってきりきりの人かスアソ
479デフォルトの名無しさん:2009/01/01(木) 16:45:20
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ O sol e a Lua!!, parabens!!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
480 【大吉】 【1340円】 :2009/01/01(木) 17:04:11
ぅあけおめー
481デフォルトの名無しさん:2009/01/04(日) 18:49:32
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
482デフォルトの名無しさん:2009/01/04(日) 18:59:39
あ、ぅあたんいんしたお!
483デフォルトの名無しさん:2009/01/06(火) 23:35:21
ところでLuaとかでyieldでスクリプトの処理を一時停止させて、
その状態をファイルとかに保存して、そのファイルを読み込んで復元、ってできる?
484デフォルトの名無しさん:2009/01/06(火) 23:47:11
使ったこと無いけどPluto使えばできるかも
日本語のドキュメントがないけど
ttp://luaforge.net/projects/pluto/
485デフォルトの名無しさん:2009/01/09(金) 00:54:41
>>484
d
ちょっと調べてみる。
しかし日本語マニュアルがないのは地味にきついな…
普段使ってるAngelScriptも英文マニュアルしかないし。
486デフォルトの名無しさん:2009/01/09(金) 01:02:51
Xtalたん結婚おめ!
487デフォルトの名無しさん:2009/01/09(金) 01:31:47
地味にきついな、といいながら日本ではマイナーもいいところなAngelScirptを普段使っているところに男を感じるw
488デフォルトの名無しさん:2009/01/09(金) 19:28:38
Xtalってソースコードに他言語との比較ベンチコードが
のってるけど、実際はやいの?
489デフォルトの名無しさん:2009/01/09(金) 19:39:39
>>486
おめでと〜w
490デフォルトの名無しさん:2009/01/09(金) 23:22:03
>>487
日本語マニュアルはないけど、サンプルがたくさん付いてて分かりやすいのよ。
あと、LuaやSquirrelのスタック介したやり取りじゃなくて直接的にC++とやり取りできるんで便利。
ただデフォでShiftJISに対応してないけど…
491デフォルトの名無しさん:2009/01/10(土) 08:32:24
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
492デフォルトの名無しさん:2009/01/10(土) 09:33:55
Xtalなんて誰も使ってないから
気楽にやりなー
493デフォルトの名無しさん:2009/01/10(土) 10:50:27
>>488
上にSquirrelよりはやいって書いてあるよ
494デフォルトの名無しさん:2009/01/10(土) 11:00:31
Squirrelも、JIT対応版を使えばLuaやXtalよりはやくなるけどね。
495デフォルトの名無しさん:2009/01/10(土) 13:24:56
Luaも、JIT対応版を使えばSquirrelやXtalよりはやくなるけどね。

Xtalも、JIT対応版を作ればLuaやSquirrelよりはやくなるけどね。
496デフォルトの名無しさん:2009/01/10(土) 14:05:36
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

497デフォルトの名無しさん:2009/01/11(日) 20:18:26
つまりLuaSquirrelXtal-JITを作れば、LuaやSquirrelやXtalよりもはやいLuaSquirrelXtalが出来るということだね。
498デフォルトの名無しさん:2009/01/11(日) 20:58:34
a
499デフォルトの名無しさん:2009/01/11(日) 21:55:53
C++のインスタンスをLuaからLuaのインスタンスかのようにアクセスしたいのですがやり方が判らず悩んでいます。
インスタンスメソッドを直接lua_registerできないですよね、いったいどうしたら良いものやら。。

ご存知のかたいらっしゃいましたら是非お教えください。
500デフォルトの名無しさん:2009/01/13(火) 07:44:04
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
501デフォルトの名無しさん:2009/01/13(火) 12:13:07
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
502デフォルトの名無しさん:2009/01/14(水) 05:46:16
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ まピョーん☆
 彡、   |∪|  /
/ __  ヽノ /
(___)   
503デフォルトの名無しさん:2009/01/14(水) 08:14:31
      _,..-- 、
       ,'     ヽ     まピョーん☆
     /<┃> <┃ >l  _
  _ l  、,,--イ   | /Mヽ
  /M l l  ` ̄   Lノ/
   i `ー       l ̄
     ̄ヽ      /
       \     {
        ヽ   `ー-'ノ
         `ー----''"


504デフォルトの名無しさん:2009/01/14(水) 14:25:26
すでにLua関係ねえw
ひかえてくれw
505デフォルトの名無しさん:2009/01/15(木) 18:04:39
>>499
メンバ関数呼び出しは、関数に対応した整数値とthisポインタを登録して
__call内部でswitchで対応する関数を呼び出すような実装ならしたことあるな。
もっとスマートな方法があると思うけど。
506デフォルトの名無しさん:2009/01/16(金) 21:11:50
>>499
toLuaとかluabind使うのがええよ。
自前でやるなら、テーブルなどを使うべし。
507デフォルトの名無しさん:2009/01/16(金) 23:47:31
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua まピョーん☆
 彡、   |∪|  /
/ __  ヽノ /
(___)   
508デフォルトの名無しさん:2009/01/25(日) 19:50:53
AngelScriptで改行コードがCR+LFだとスクリプトがビルドできない
Windows+MinGWでやってるんだけどこれって仕様なのかな
unexpected tokenとか出るから最初何かと思ったわ
509デフォルトの名無しさん:2009/01/26(月) 00:02:51
>>508
自分の所では普通にビルドして実行できてるな。
ちなみにWindows+VisualStudio2005。

あと、全角文字使ってない?
510デフォルトの名無しさん:2009/01/26(月) 09:10:32
>>509
半角英文字しか使ってないよー
void main() {
  return;
}
これでエラー出たんだぜw

普通に実行できるということはライブラリ自体のビルドに問題があったのかな
なんでだろう、Linux環境と誤認してるのか?
511デフォルトの名無しさん:2009/01/26(月) 10:02:50
別にLinuxでもSolarisでも改行コードのせいでビルド失敗することないけどな。
512デフォルトの名無しさん:2009/01/26(月) 10:30:55
スクリプトをUnicode(UTF-16)で保存してないか?
現バージョンだとUTF-16のスクリプト読めないみたい。
513デフォルトの名無しさん:2009/01/26(月) 11:16:26
>>511
ライブラリがLinux環境(LF)を期待しているのに、Windows環境(CR+LF)を食わせるから
エラーが出るのだと思ったんだが…
Linux環境でCR+LFを食わせてもエラーが出ないなら、他に原因があることになるな

>>512
一応いくつかのエディタで開いてUTF-8Nだということは確認した
けれども、文字コード自体は最初から変えてないよ

エラーがいつもファイルの末尾で出てたから、
試しに void main() { return; } ってのをやってみたら
ビルドが通ることを発見して、改行コードに目をつけた

よく考えたら改行コードに問題があるなら、全ての行でエラーが出るはずだよな…
ファイルの末尾でだけエラーが出てたにも関わらず、なぜ改行コードを変えるとビルド出来るんだろう
514デフォルトの名無しさん:2009/01/26(月) 11:51:16
MinGW の stdio のバグじゃないかな。
EOF判定がおかしくて、最後の文字(または行)が読めてないか、
あるいは逆にごみを読み込んでしまってるかのどちらかじゃないかと思う。
515デフォルトの名無しさん:2009/01/26(月) 13:20:53
スクリプトを丸ごと読み込んでそのまま使った場合に、
EOFが無くてスクリプトを読み込んだ領域の後ろの部分まで
解析しようとしてエラー起こしたことがあったな。
516デフォルトの名無しさん:2009/01/26(月) 13:29:59
最後に空行かコメント行入れてみるとわかるかも?
517デフォルトの名無しさん:2009/01/26(月) 23:11:29
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
518デフォルトの名無しさん:2009/01/27(火) 00:40:38
まず最初にエラーの出るファイルをバイナリダンプすべきじゃね?
519デフォルトの名無しさん:2009/01/27(火) 08:39:12
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  Lua まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
520デフォルトの名無しさん:2009/01/27(火) 10:53:07
原因が分かった
freadでファイルを読み込んでたんだけど、そこでCR+LFが勝手にLFに変換されてた
そのせいでファイルの長さと文字列の長さでズレが生じて、
スクリプト読み込み時にその差分だけ余計な領域まで踏み込んでた
"r"じゃなくて"rb"で読み込むようにしたらエラー出なくなったよ

サンプルのユーティリティ関数をそのまま使ったのが悪かったのかもしれん
521デフォルトの名無しさん:2009/01/27(火) 11:14:18
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄

まあよくあることだなw

Rubyのライブラリでも何か読み込みの挙動がおかしいと思ったら、
ライブラリ側でWindows考慮してなくて、バイナリモードになってなかったり。
522デフォルトの名無しさん:2009/01/27(火) 13:27:29
テキストモードって何のために存在するの?
523デフォルトの名無しさん:2009/01/27(火) 13:40:23
fprintf(f, "Hello World\n");

ってコードの、\n を出力時に \r\n にむりやり変換するのと、fclose したときに
EOF をむりやりつけるために存在する。DOSの遺産。
524デフォルトの名無しさん:2009/01/27(火) 13:41:08
歴史的な経緯
タイプライターやTTY、CP/Mの歴史たどるといいかも。
525デフォルトの名無しさん:2009/02/05(木) 17:09:16
ttp://luaforge.net/projects/lualangpack/
これ使ってる人いない?
526デフォルトの名無しさん:2009/02/05(木) 17:18:06
527デフォルトの名無しさん:2009/02/05(木) 19:56:41
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

528デフォルトの名無しさん:2009/02/05(木) 22:23:10
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  Lua まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
529デフォルトの名無しさん:2009/02/05(木) 22:31:04
Luaのクマーさん
530デフォルトの名無しさん:2009/02/06(金) 11:43:23
>>525
まずお前が試して、ダメ出しした方がいいんじゃない?

俺は、ずっと秀丸で済ましてるな。
LuaEditも使える様にインストールはしたけど、
本当にテンパった時の保険として残してる感じ。
531デフォルトの名無しさん:2009/02/07(土) 18:18:29
>>530
今のところの感じでは、
・色分けされて便利
・文字入力するたびに候補でもない単語が出てくるのがウザイ
・プロジェクトの設定が分からない
 ググッて見たけど何処にも解説ないし、Raedmeが欲しかった。

環境を揃える所から入る性質で、
「コレはいいな」って思ったのにプロジェクトの設定が分からないから聞きたかったんだ。
(プロジェクトの設定できたらデバッグとか出来るのかと思うんだけどなぁ)
やっぱサクラエディタとか秀丸とかSciTEとか使った方がいいのかな・・・・。
取り合えずはLuaLanguagePackで勉強進めてみる。
532名無しさん:2009/02/07(土) 21:08:45
./lua
>
の状態で、Ctrl-C以外で終了する方法はありますか?
exit とか quit とかやってみましたがダメでした
533デフォルトの名無しさん:2009/02/07(土) 21:32:09
そこは Ctrl+Zだと思う。
標準入力を終了しない事には終われないのが正常なのでは?
534名無しさん:2009/02/07(土) 21:36:59
>>533
どうも
Linuxなので、 Ctrl-D でぬけられました。
535デフォルトの名無しさん:2009/02/09(月) 07:53:47
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
536デフォルトの名無しさん:2009/02/09(月) 13:00:58
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua まピョーん☆
 彡、   |∪|  /
/ __  ヽノ /
(___)   
537デフォルトの名無しさん:2009/02/12(木) 22:19:59
http://wiki.alliedmods.net/Introduction_to_SourcePawn

Pawnでこう、いい日本語のサイトありますかねぇ。
538デフォルトの名無しさん:2009/02/13(金) 08:44:59
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

539デフォルトの名無しさん:2009/02/14(土) 13:54:50
いまさらながらLua本買ってみた。スクリプト言語による〜〜ってやつ
アマチュア個人でゲーム作っててスクリプトはSquirrelでの実装を考えてたんだけど、Luaに気持ちが揺れる揺れる
嗚呼どうしよう!
540デフォルトの名無しさん:2009/02/14(土) 14:21:12
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
541デフォルトの名無しさん:2009/02/14(土) 14:30:54
おれは速度と軽さを求めないならSquirrelかな
それにLua本に書いてある考え方ってほとんどSquirrelにも応用できるんじゃない?
542デフォルトの名無しさん:2009/02/14(土) 15:12:47
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

543デフォルトの名無しさん:2009/02/14(土) 15:16:25
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  Lua まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
544デフォルトの名無しさん:2009/02/14(土) 20:34:36
>>539
ホントのオススメは、自分で何か実装してみてから選ぶことだけどな。
Lisp とか Forth ライクなものなら結構簡単だし、BASIC やアセンブラのような LL1 で行指向のものなら更に簡単だ。
545デフォルトの名無しさん:2009/02/15(日) 00:21:33
>>539
AngelScriptが使って欲しそうな目で見ている。
546デフォルトの名無しさん:2009/02/15(日) 00:55:33
AngelScript試してみたけどここのサンプルが動作しない
http://plaza.rakuten.co.jp/OldStyleFactory/diary/200902030000/
関数の取得までは出来ているぽいんだけどasPrintが呼び出されない
547デフォルトの名無しさん:2009/02/15(日) 08:45:40
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

548デフォルトの名無しさん:2009/02/15(日) 09:36:17
>>546
自分の所では普通に動いたなー。
環境はXPSP2、VisualStudio2005SP1、AngelScript2.15.1。
549デフォルトの名無しさん:2009/02/15(日) 11:43:06
Squirrelって重いんですか?
Luaにくらべてコードがシンプルそうだから、組み込んだ後のデバッグも楽だと思って、LuaじゃなくてSquirrelを採用しようかと思っていたのですが。

ちなみに、Squirrelって何であんなに不要なbreakやcontinueがあるんですかね?
550デフォルトの名無しさん:2009/02/15(日) 11:53:07
不要じゃないだろ。常識的に考えて。
551デフォルトの名無しさん:2009/02/15(日) 12:07:10
ボケは分かりやすくね
552デフォルトの名無しさん:2009/02/15(日) 12:36:48
>>549

298 名前:デフォルトの名無しさん[sage] 投稿日:2008/09/20(土) 02:25:07
速さと軽さならLua
基本的な演算とsuspendを行う処理を一億回ループさせたらLuaはSquirrelの1/3の時間ですんだ
553デフォルトの名無しさん:2009/02/15(日) 13:14:33
イメージとしてはLuaの方が早いって意外だよね
Luaもがんばってるな〜
554デフォルトの名無しさん:2009/02/15(日) 13:23:16
>>553
>イメージとしてはLuaの方が早いって意外だよね

お前だけな
555デフォルトの名無しさん:2009/02/15(日) 14:05:24
俺だけだったか
Luaは実際には使ったことないんで知らないんでイメージでしか語れんかったわ
すまん
556デフォルトの名無しさん:2009/02/15(日) 14:05:51
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

557デフォルトの名無しさん:2009/02/15(日) 20:02:42
JITでC++と同等の速度が出る組み込み言語
誰か作ってよ
558デフォルトの名無しさん:2009/02/15(日) 20:18:31
>>552
Squirrelでsuspendを使うということは、マイクロスレッドを切り替える処理があるということなんだが。
それが軽いはず無いだろう。

ただし、基本的な演算処理でSquirrelがLuaの半分くらいの速度しか出ないのは本当。
速さだけ求めるならXtalも有力。
559デフォルトの名無しさん:2009/02/15(日) 22:15:34
>>557
C++が速い理由には、言語仕様の差以上に、コンパイラに投入された労力が膨大なものだからというのもある。
LuaでもSquirrelでも、人月をかければC++以上に速くする事は可能だと思う。
逆に言うと、言語仕様だけではどうにもならない。

>>558
マイクロスレッドに関してはLuaも全く同じ。
Luaではコルーチンって呼ぶけどね。
298もそれはわかった上で比較してると思うよ。
560デフォルトの名無しさん:2009/02/15(日) 22:47:50
          ____
       / \  /\ キリッ
.     / (ー)  (ー)\    <C++が速い理由には、言語仕様の差以上に、コンパイラに投入された労力が膨大なものだからというのもある。
    /   ⌒(__人__)⌒ \ LuaでもSquirrelでも、人月をかければC++以上に速くする事は可能だと思う。
    |      |r┬-|    | 逆に言うと、言語仕様だけではどうにもならない。
     \     `ー’´   /
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一””””~~``’ー?、   -一”””’ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ   <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)   
| / / /     |r┬-|    | (⌒)/ / / //       
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/      
|     ノ     | |  |   \  /  )  /
ヽ    /     `ー’´      ヽ /    /
 |    |   l||l 从人 l||l      l||l 从人 l||l  バンバン
 ヽ    -一””””~~``’ー?、   -一”””’ー-、
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))
561デフォルトの名無しさん:2009/02/16(月) 00:22:41
その通りのことにそのAA使ってもな
562デフォルトの名無しさん:2009/02/16(月) 00:37:35
残念ながら経験10年のおそらく天才プログラマーが作ったJavaScriptが
学生が演習で作ったCのサブセット以下の速度なのよ
563デフォルトの名無しさん:2009/02/16(月) 00:49:05
>>562
CとJavaScriptで速度差が出るとしたらプロパティアクセス時の
ハッシュ計算だと思うんだけど、その差はJITすれば消せる。
JavaScriptはV8で比較した?
564デフォルトの名無しさん:2009/02/16(月) 01:26:05
そんなんで消せたら
誰も苦労しないだろw
565デフォルトの名無しさん:2009/02/16(月) 02:18:11
しかし、SquirrelにもLuaみたいなスクリプトのライブラリを置くリポジトリサイトが欲しいよな。
ネタは色々あるんだが。
566デフォルトの名無しさん:2009/02/16(月) 03:17:30
>>562
ベンチマークに使ったコードは、どんな内容だったのでしょうか?
興味があります。
567デフォルトの名無しさん:2009/02/16(月) 03:21:07
>>559
squirrel でも普通コルーチン。マニュアルの表記は「協調スレッド(コルーチン)」

「マイクロスレッド」だと、システムよりの機能を使ってるような誤解を招くから、
間違いじゃないけどふさわしくないと思う
568デフォルトの名無しさん:2009/02/16(月) 04:38:29
http://lucille.atso-net.jp/aobench/
誰かこれやってみて
569デフォルトの名無しさん:2009/02/16(月) 08:52:18
機械語に近い言語体系じゃないと、C並に早くならんだろうな
570デフォルトの名無しさん:2009/02/16(月) 08:59:47
559はJITが機械語を生成すると思ってんのかな?
571デフォルトの名無しさん:2009/02/16(月) 11:14:15
C++より速くできるって…夢でも見てたんだろうね
572デフォルトの名無しさん:2009/02/16(月) 12:05:33
          ____
       / \  /\ キリッ
.     / (ー)  (ー)\    <その通りのことにそのAA使ってもな
    /   ⌒(__人__)⌒ \
    |      |r┬-|    |
     \     `ー’´   /
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一””””~~``’ー?、   -一”””’ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ   <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)   
| / / /     |r┬-|    | (⌒)/ / / //       
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/      
|     ノ     | |  |   \  /  )  /
ヽ    /     `ー’´      ヽ /    /
 |    |   l||l 从人 l||l      l||l 从人 l||l  バンバン
 ヽ    -一””””~~``’ー?、   -一”””’ー-、
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))
573デフォルトの名無しさん:2009/02/16(月) 12:09:18
559はバイトコードと機械語を同じだと思っている、に一票。
574デフォルトの名無しさん:2009/02/16(月) 13:38:25
>>570に聞きたい。
じゃあ何を吐くんだ?
575デフォルトの名無しさん:2009/02/16(月) 13:43:00
>>564
V8では新たなプロパティが追加されるたびに
プロパティに対して定数時間でアクセスできるような
アセンブラコードが生成されるよ。
だからV8は速い。
576デフォルトの名無しさん:2009/02/16(月) 13:45:06
>>573
突然そんなことを言われても意味がわからない。
その根拠はいったい何さ?
577デフォルトの名無しさん:2009/02/16(月) 14:32:58
>>567
昔StacklessPythonの記事で、言語仕様上で実装したマイクロスレッドとOS側で実装されるネイティブスレッドの
使い勝手の違いの話があって、それで覚えてしまっていた。
確かにこの場合はコルーチンと呼ぶべきだね。勉強になった。

各種言語処理系の仮想マシンが一種の機械語をサポートする場合、
その機械語、もしくはソースコードからコンパイルして作られた(仮想マシン用の)機械語を一般的にバイトコードと呼ぶ。
これに変換してから実行する形態をバイトコード処理系、もしくはバイトコードインタプリタと呼ぶ。
一方、CPUが直接実行する機械語を生成するのがJITコンパイラだ。

ただし欧米人でもたまに間違えてたりするので記事読む時に注意がいる……。
578デフォルトの名無しさん:2009/02/16(月) 14:58:00
          ____
       / \  /\ キリッ
.     / (ー)  (ー)\    <一方、CPUが直接実行する機械語を生成するのがJITコンパイラだ。
    /   ⌒(__人__)⌒ \
    |      |r┬-|    |
     \     `ー’´   /
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一””””~~``’ー?、   -一”””’ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ   <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)   
| / / /     |r┬-|    | (⌒)/ / / //       
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/      
|     ノ     | |  |   \  /  )  /
ヽ    /     `ー’´      ヽ /    /
 |    |   l||l 从人 l||l      l||l 从人 l||l  バンバン
 ヽ    -一””””~~``’ー?、   -一”””’ー-、
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))
579デフォルトの名無しさん:2009/02/16(月) 15:02:17
で、人月をかければJITがC++に勝てるの?
580デフォルトの名無しさん:2009/02/16(月) 15:04:19
単に比較したって意味がないだろう
581デフォルトの名無しさん:2009/02/16(月) 15:13:24
C++も負けないようにJITにするんだ!
582デフォルトの名無しさん:2009/02/16(月) 15:13:52
茶化してるだけの人とマジな人と、マジにわかってない人と、いろいろいるな
583デフォルトの名無しさん:2009/02/16(月) 15:17:30
>581
LLVMとか
584デフォルトの名無しさん:2009/02/16(月) 17:12:36
>>575
プロパティに定数時間でアクセス出来るのと
JIT使っているっていうのは関係ないだろ
585デフォルトの名無しさん:2009/02/16(月) 17:41:53
JIT使ってもC/C++より早くなるわけねぇじゃん
現代のCコンパイラがどれぐらいの労力をかけて最適化コード吐くのか考えてみたことある?
586デフォルトの名無しさん:2009/02/16(月) 17:49:38
C++より速くなる病患者が
Javascriptにまでw
587デフォルトの名無しさん:2009/02/16(月) 17:52:39
コーディングにかかる時間は考慮しないんだな
588デフォルトの名無しさん:2009/02/16(月) 17:53:08
結局JITは怖くて使わないです。えぇハイ
589デフォルトの名無しさん:2009/02/16(月) 17:54:00
>>584
JavaScriptだとプロパティの追加や削除を実行時に
しなきゃならんことがある。
なので、普通はそれをプロパティに対するハッシュで実装するわけだけれど、
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.
590デフォルトの名無しさん:2009/02/16(月) 17:57:25
機械語を生成できたところで、コンパイラの性能差が大きすぎるでしょ
591デフォルトの名無しさん:2009/02/16(月) 18:19:21
プロパティの変化ごとにJITコンパイルするとか
意味不明
592デフォルトの名無しさん:2009/02/16(月) 18:37:03
現代のCコンパイラがgccの事であるなら
労力だけかけても間違った結果しか出てこないもんなんだなー とは考えてみた事がある
主にループ抜けなくなるとか
593デフォルトの名無しさん:2009/02/16(月) 18:45:52
gccについては、あの…その……うんゴメン
594デフォルトの名無しさん:2009/02/16(月) 18:48:15
>主にループ抜けなくなるとか

wwwww
595デフォルトの名無しさん:2009/02/16(月) 18:50:37
Squirrelを使おうとしているんだが、
バインダ(SqPlus)の更新が半年前から止まっていて、使おうかどうか躊躇してる。
みんなはバインダに頼らず直接実装した?
596デフォルトの名無しさん:2009/02/16(月) 18:57:43
優れたJIT技術者がいるとして
そいつが何の仕事を選ぶかだな
597デフォルトの名無しさん:2009/02/16(月) 20:01:23
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

598デフォルトの名無しさん:2009/02/16(月) 20:19:26
散々JITについて盛り上がっておいて、ここまでLuaJITに言及なし
599デフォルトの名無しさん:2009/02/16(月) 20:30:57
JIT使ったことねぇからわからねぇ が大半だと思います
600デフォルトの名無しさん:2009/02/16(月) 21:12:32
>>595
俺はjkBindに乗り換えようかと考えている。
既に作者とは連絡を取った。
Squirrel-2.2.2-stable向けのパッチがフォーラムにあがってる。
601デフォルトの名無しさん:2009/02/16(月) 21:22:04
jkBindについてkwsk
602デフォルトの名無しさん:2009/02/16(月) 21:31:40
>>600
ありがとう。jkBindも選択肢としてありなのか。なるほど。
ちょっと調べてみますね
603デフォルトの名無しさん:2009/02/16(月) 21:44:37
結局Luaなんて誰も使ってなくて
へんなクマが冷やかしに来るスレ?
604デフォルトの名無しさん:2009/02/16(月) 22:31:10
バリバリLua使ってるような人が中々来ないスレ
現在は使ってないけど「今後使ってみようかな」とか興味ある人が情報収集しにくるスレ
あとはクマスレ
605デフォルトの名無しさん:2009/02/16(月) 22:35:26
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  Lua まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
606デフォルトの名無しさん:2009/02/16(月) 23:01:53
//
/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ AngelScript!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
607デフォルトの名無しさん:2009/02/17(火) 00:38:30
ほっそいなAngelwwwww

Luaは使ってないけどXtalはバリバリ使ってるよ!
608デフォルトの名無しさん:2009/02/17(火) 00:40:39
AngelScriptをメインで使ってるのは俺だけですかそうですか。
609デフォルトの名無しさん:2009/02/17(火) 01:16:03
AngelScriptは不遇だよね〜
もうちょっとがんばれば2強に肩を並べるぐらいになってたかもしれないのに
610デフォルトの名無しさん:2009/02/17(火) 01:41:28
JITコンパイラが付いてC++並の速度で動くようになれば
AngelScriptも流行るよ
611デフォルトの名無しさん:2009/02/17(火) 02:15:47
なんかJITが好きな奴がいるけど、ゲームとかに組み込んで使用する
用途での言語処理系でJITなんて危なくて使えないだろw
612デフォルトの名無しさん:2009/02/17(火) 02:38:34
JIT の実装が進んでるシステムは、事前コンパイルできる場合があるので、
開発中は作業効率がいい動的スクリプト言語として使って、完成したら
コンパイルしてネイティブコード化するという方法もある。
613デフォルトの名無しさん:2009/02/17(火) 06:44:51
Pascalでいいやん
614デフォルトの名無しさん:2009/02/17(火) 06:57:19
CriScriptはベンチを見る限り割と良さそうなんだがなぜか話題にも上がらない
615デフォルトの名無しさん:2009/02/17(火) 09:24:13
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
616デフォルトの名無しさん:2009/02/17(火) 09:24:39
先月の IGDA の奴を聴きにいって以来、オレの中で CriScript 株は急上昇中。
617デフォルトの名無しさん:2009/02/17(火) 10:33:51
実際使ってみたなら感想よろ
618デフォルトの名無しさん:2009/02/17(火) 10:47:00
スクリプトって多々あるけど、
今後の展望を含め、どれか一派に絞らなけりゃならないのは賭けだよね
・言語仕様
・ライセンス
・動作環境
・速度
・メモリ量やGC問題
・安定性
・将来性
・国内外でのコミュニティの活性度
など複雑な素因が絡んでくるもんね。
自分はSquirrelを選んだが、将来残っているか不安っちゃ不安だわ。
磐石なスクリプトが存在するか、せめて機械的なコード置換があればいいんだがなぁ。
619デフォルトの名無しさん:2009/02/17(火) 11:05:29
コミュニティや作者のサポートが必要とはあまり思わないな
ソースコードが何百万行もあるソフトとは違う
620デフォルトの名無しさん:2009/02/17(火) 11:30:48
問題ってのは起ってほしくないときに起るもんだ
そのときに同じように余裕ぶっこいていられるかな?
621デフォルトの名無しさん:2009/02/17(火) 11:35:30
バグが見つかったら、自分の書いたソースだろうが利用しているオープンソースだろうが自力で直す。
直す手段が用意されているところがオープンソースの処理系のいいところじゃないか。
622デフォルトの名無しさん:2009/02/17(火) 11:50:11
お金とってサポートしてくれるところがあるといいなーと思う場合は無きにしもあらず
623デフォルトの名無しさん:2009/02/17(火) 11:50:42
Squirrelは辛うじて読めたが、Luaは読めなかった俺
今のところ自力で直す場面に出くわした事は無いが、これを直すとなると骨折れるだろうな…
624デフォルトの名無しさん:2009/02/17(火) 12:05:00
>>601
jkBindだが、SqPlusと比較してみる。

いいところ:
・ソースコードが遥かにきれいで簡潔
・グローバルスコープで余計なことをしない(main関数抜けるまで握ってるオブジェクト解放しないってなんだそれ>SqPlus)

わるいところ:
・テストコードが整備されていない
・マニュアルがない(簡単なサンプルコードのみ)
・Squirrel言語仕様への対応が古い(公式のはコンストラクタの登録に対応してない。要パッチ)
・DirectXのラッパーライブラリがない?(全然使わんよこんなもの)
・せめてソースコードにコメントくらいは書いてください

バインダとしての使い勝手はそう変わらないと思う。
どちらもtemplateを用いるし。
625デフォルトの名無しさん:2009/02/17(火) 15:14:24
http://plusd.itmedia.co.jp/pcuser/articles/0902/17/news046.html

キーカスタマイズ機能でLuaを使ってるそうな。
626デフォルトの名無しさん:2009/02/17(火) 20:15:03
Lua の言語仕様が好きって人いる?
JavaScript から prototype をなくしたような感じで、
しかも stackless。
なんかすごく気に入ったんだけど、そういう人いないかしら?
627デフォルトの名無しさん:2009/02/17(火) 20:34:28
pascalっぽいところが好き
628デフォルトの名無しさん:2009/02/17(火) 21:08:40
俺は pascal っぽいところが嫌いw
629デフォルトの名無しさん:2009/02/17(火) 22:28:38
end だけかYO!
630デフォルトの名無しさん:2009/02/17(火) 22:55:36
どうやっても--はコメントではなくて、デクリメントと認識してしまっている
631デフォルトの名無しさん:2009/02/18(水) 00:26:57
AngelScriptはなぜ広まらないんだろう。
かなり使いやすいと思うんだが、やっぱり日本語資料が少ないのがネックなんだろうか。
632デフォルトの名無しさん:2009/02/18(水) 01:57:11
  . ∩___∩ ;
  ; | ノ|||||||  ヽ `
 , / ●   ● |   
 ;, | \( _●_) / ミ  AngelScript…
; 彡、 | |∪|  |、\ ,
./    ヽノ/´> ) :
(_ニニ>  / (/ ;
; |     | ;
' \ ヽ/ / :
, / /\\ .  
; し’ ' `| | ;
633デフォルトの名無しさん:2009/02/18(水) 04:01:51
>>631
コルーチンが無いからスルーした記憶がある
「このサンプルは AngelScript でどうやったらコルーチンが実装できるか示してる」
って状態だとさっぱり嬉しくない
634デフォルトの名無しさん:2009/02/18(水) 08:03:15
ぅあ!
635デフォルトの名無しさん:2009/02/18(水) 08:54:02
過去スレを見たら、Lua で Yコンビネータを書いてる人とかいたけど、今は
いないのかな。
言語オタクの興味の対象から、実用フェーズに移ったということなのかなあ。

「スクリプト」で差がついた日米ゲーム開発の生産性 GDCを読む(2) デジタル家電&エンタメ-最新ニュース:IT-PLUS
http://it.nikkei.co.jp/digital/news/index.aspx?n=MMITew000006022009
636デフォルトの名無しさん:2009/02/18(水) 12:01:19
>>633
C++のバイナリ仕様に合わせて設計されてるわけだから、C++にできないことを実装するのは難しいのかもな。
ただJITコードですら中断可能なコルーチン化は実現できるので、やりようはあると思う。
637デフォルトの名無しさん:2009/02/18(水) 12:08:11
ほう
638デフォルトの名無しさん:2009/02/18(水) 12:12:47
>>633
普通にSuspendじゃだめなん?
lua_yieldと同じことはできるよ。
引数渡せないが。
639デフォルトの名無しさん:2009/02/18(水) 12:31:17
>>638
マニュアル眺めてまともに記述されてないってことでスルーしただけなのでつっこまれると困る。すまん
できるのならどんな記述でできるのかぐらい書いておいてほしい

640デフォルトの名無しさん:2009/02/18(水) 12:31:25
むしろ引数なんか要らないっていう
641デフォルトの名無しさん:2009/02/18(水) 13:37:22
>>639
void 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));
}
こんな感じかな?
642デフォルトの名無しさん:2009/02/20(金) 19:10:41
Squirrelのバインド操作が意味わからん……。
バインダ使わずその辺を自前で実装したいんだが、SqPlusのコードを読んでてTemplateの嵐だったので投げた。
次はjkBind読むしかないのか……。
SquirrelのC/C++への組み込み方法について、何か参考になるページありませんか?
643デフォルトの名無しさん:2009/02/20(金) 19:26:30
tolua++とか
644デフォルトの名無しさん:2009/02/20(金) 19:28:19
補足です。一般的なsqstd_dofileやsq_compileなどからsq_callすることは出来ております。
スタック操作については若干曖昧ですが、C++側からSquirrel内の関数を呼ぶことは出来ました。
特にBind操作(LuaからC++関数の呼び出しや定数/変数のBind)について、
グルーコードの自動化のような処理を探しています。(Luaで言うところのtolua++に相当する実装)
645デフォルトの名無しさん:2009/02/20(金) 19:34:35
>>642
>>644
それを処理するのに、C++ではtemplateが一番適しているわけだが?
SqPlusにはマクロ版も一応ある。お勧めはしないが。
646デフォルトの名無しさん:2009/02/20(金) 19:42:05
ttp://muffin.cias.osakafu-u.ac.jp/~matumoto/cgi-bin/xt.cgi?prog/squirrel

ここを全部読んで理解するべし。

C++ のクラスを squirrel のクラスとして登録する方法は
「C++オブジェクトでのメタメソッド使用」から先で解説されてる。
ポイントになるのは sq_newclass と、sq_setinstanceup/sq_getinstanceup

テンプレートはラッパー関数群の自動生成を行ってるだけで本質じゃないよ
647デフォルトの名無しさん:2009/02/20(金) 21:37:31
>>646
645だが、642は自前でバインド作業をやろうとしてたのか。
2行目の前半を読み飛ばしてた。スマン。

……まあ、そのページ読めば分かるだろう。
ClassオブジェクトをSquirrel中にこさえるのと、それをroottableに登録するのと、
Classオブジェクトにメソッドやらプロパティやらの諸情報を埋め込むのと大まかに3つに分かれる。
648デフォルトの名無しさん:2009/02/21(土) 02:18:49
そろそろ Squirrel の読み方考えようぜ!
649デフォルトの名無しさん:2009/02/21(土) 02:40:42
発音記号に照らせば スクァラル が近いが、俺はスクワールと呼ぶことにしている。
ちょうどそんな名前の喫茶店があるので。
650デフォルトの名無しさん:2009/02/21(土) 06:40:56
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
651デフォルトの名無しさん:2009/02/21(土) 07:08:30
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua まピョーん☆
 彡、   |∪|  /
/ __  ヽノ /
(___)   
652デフォルトの名無しさん:2009/02/21(土) 09:42:21
ちくしょうクマが可愛くなってきたw
653デフォルトの名無しさん:2009/02/21(土) 11:38:00
luaやsquirrelよりもgauche, ypsilon, moshのような国産schemeの方が速いらしいぜ
これからの組み込みスクリプト言語はschemeの時代かもしれない
654デフォルトの名無しさん:2009/02/21(土) 12:18:31
はいはい
655デフォルトの名無しさん:2009/02/21(土) 12:22:24
それは無い。残念ながら。
ありうるならもう来てないとおかしい>schemeの時代
656デフォルトの名無しさん:2009/02/21(土) 12:30:18
schemeの処理系がいくら性能がよくて、柔軟な性質を持っていても、
普通のスクリプタは括弧の嵐を見ただけでげんなりするからな
lisp系がメジャーになることは永遠にないだろう
657デフォルトの名無しさん:2009/02/21(土) 12:37:12
かなりいい線まで行って、おいしいところを非lisp系に取られるんだよなぁ
658デフォルトの名無しさん:2009/02/21(土) 13:20:30
それがLispの矜持でさぁ
659デフォルトの名無しさん:2009/02/21(土) 13:35:58
・・・・・・隠れlisp使い多い?w
660デフォルトの名無しさん:2009/02/21(土) 15:24:06
どっちでもいいよ。

組み込み言語の利点は、ただ1つ「コンパイルなしで改変、実行できる」
言ってしまうとこれだけだし。

デザイナが弄るなら、弄るデータなんてほとんどデータだし、
括弧が多少多くてもプロなら入力してくれる。

ロジックはどうせ、プログラマの仕事だから、schemeだろうが何だろうが、かまわん

661デフォルトの名無しさん:2009/02/21(土) 15:27:55
まあ、止めはしない。がんばれ。
662デフォルトの名無しさん:2009/02/21(土) 17:06:57
jkBindってどこにあるの?
663デフォルトの名無しさん:2009/02/21(土) 17:59:28
釣りか? ググれ。
664デフォルトの名無しさん:2009/02/21(土) 18:08:12
>>645-647
ありがとうございます。
教えてもらったサイトを見て実装してみました。大変助かりました。
665デフォルトの名無しさん:2009/02/21(土) 18:14:53
http://jk-pro.info/en/projects/jkbind/

2006年で更新止まっているけど
ここでいいのかな?
666デフォルトの名無しさん:2009/02/21(土) 20:35:55
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

667デフォルトの名無しさん:2009/02/21(土) 21:12:25
>luaやsquirrelよりもgauche, ypsilon, moshのような国産schemeの方が速いらしいぜ
「らしい」とかウゼェから死ねよ、クズ。
各言語のベンチマークに使ったコードを書き込んでから話せや。
668デフォルトの名無しさん:2009/02/21(土) 21:19:59
仮にそうだとしても
schemeなんか速くたってどうしようもないじゃないか
669デフォルトの名無しさん:2009/02/21(土) 22:16:56
Schemeは処理系を作るのは容易だが、それでプログラミングするのを
嫌うプログラマがかなり多い。非プログラマにも好まない言語だ。
昔を懐かしみ知識を得るだけしか役にたたないというのが常識。

その常識を無視して新規プロジェクトに導入しようとするのは無能マネー
ジャで、他にも間違いを多く侵してる。

学生が自分の勉強用に自作するにはとても良い言語とは思うが。
670デフォルトの名無しさん:2009/02/21(土) 22:22:00
Schemeは学生のとき
やらされたっきりだな
671デフォルトの名無しさん:2009/02/21(土) 22:35:22
Emacs使ってた時にelisp触ってたぐらいだなぁ。
この前エディタスレに行ってみたら、
「○○という機能があるエディタありませんか?」
「emacsなら出来る。Lispで自分で作ればいいよ」

と言う流れを未だにやっていて笑った。
672デフォルトの名無しさん:2009/02/21(土) 23:03:25
良い言語だと思うけど、学ぶのにコストがかかるから導入しにくい。
673デフォルトの名無しさん:2009/02/22(日) 00:20:44
>>618
いくつか齧ってたらなんとでもなるよ。 似てる概念や要素が多いから。
674デフォルトの名無しさん:2009/02/22(日) 00:44:48
|Д`)<AngelScriptも忘れないであげてください
|ミサッ
675デフォルトの名無しさん:2009/02/22(日) 00:47:10
//
/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ AngelScript!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
676デフォルトの名無しさん:2009/02/22(日) 02:44:06
スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践という書籍の
P.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 '\'のキーワードで検索しても期待した内容が出てきませんでした
無知な私にご教授いただければ幸いです
677デフォルトの名無しさん:2009/02/22(日) 02:47:02
678デフォルトの名無しさん:2009/02/22(日) 02:53:10
もはやDOSコマンドも知らないプログラマが存在する時代なんだな
そんなんでよくプログラム書けるな
679デフォルトの名無しさん:2009/02/22(日) 02:58:19
教えて頂きありがとうございました
「コマンドプロンプト 同じディレクトリ」では検索したのですが検索方法も悪かったようです
680デフォルトの名無しさん:2009/02/22(日) 03:00:12
前の職場にC++,JavaがめちゃくちゃできるのにDOSコマンド知らん人がいたわ
使う機会ないと覚えないもんだなと思った
681デフォルトの名無しさん:2009/02/22(日) 03:05:24
DOSコマンド知っているけど
使う機会が無くなったな
682デフォルトの名無しさん:2009/02/22(日) 03:25:52
ディレクトリの移動はできるようになったのですがLua起動後にhello.luaを実行しようとするとまた
stdin:1: '<name>' expected near '\'と表示されます
「stdin:1: '<name>' expected near '\'」はどのような意味を表しているのでしょうか?
683デフォルトの名無しさん:2009/02/22(日) 03:28:44
だから言ってるだろ無知な上に努力不足だって
お前はそうやって完成するまでずっと人に聞きつづけるのかっつーの
本でわからない事があるなら著者に聞けよ
684デフォルトの名無しさん:2009/02/22(日) 03:36:52
著者に聞いたら完成するまで人に聞き続けるだろwwww
試しに俺もそのワードでぐぐってみたが多分わからんと思う
わざわざここに書き込んでるのは反応が早いからって理由だろうに
まあ俺はドSだから教えないけどな
685デフォルトの名無しさん:2009/02/22(日) 03:37:17
不快にさせてすみません
著者にわざわざ連絡を取って聞くほどの問題ではないのだろうかと思い書き込みました
686デフォルトの名無しさん:2009/02/22(日) 03:51:25
Hello,World!が出来ないのを切り捨てるのは性格の悪さがうかがえるな
stdin〜はようわからんが俺も同じ内容で引っかかったから教えると
lua5.1を起動させずに(重要).exeと.luaを同じディレクトリに置いてlua5.1 hello.luaでいける
これは初歩の初歩からやってんのに重要な事書かない筆者が悪いわ
これさえわかりゃ後はスムーズに進むぜ
687デフォルトの名無しさん:2009/02/22(日) 03:54:13
ていうか
>Windowsのコマンドプロンプト上でhello.luaと同じディレクトリに移動し「lua5.1 hello.lua」と入力する部分がうまくいきません
って自分で書いてるのに
>Lua起動後にhello.luaを実行しようとすると
やってること違うじゃんよ。これぐらいさすがに気付いて欲しいよ
688デフォルトの名無しさん:2009/02/22(日) 03:58:08
DOSコマンド使った事ないならそんなもんだ
.lua形式のファイル開くんだからlua起動してないとって思ったんじゃね
689デフォルトの名無しさん:2009/02/22(日) 04:51:55
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
690デフォルトの名無しさん:2009/02/22(日) 05:12:51
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua まピョーん☆
 彡、   |∪|  /
/ __  ヽノ /
(___)   
691デフォルトの名無しさん:2009/02/22(日) 05:18:32
>>685
たぶんもう少し読んだら出てくるtolua++の解説箇所あたりでも
困ることになる予感がする。
でも苦労したり嫌な思いして覚えたことほど忘れにくいのでがんがれ。

ただその本にはWikiにサポート用のForumあるので、質問とかは
あちらに書いた方がいい気はする。
692デフォルトの名無しさん:2009/02/22(日) 07:47:20
まあ、ypsilon作った会社は社員一人しかいないからなw
693デフォルトの名無しさん:2009/02/22(日) 17:21:06
コマンドラインなんて使わないな。
バッチファイル作るのに少し教えて貰ったけど全然使う機会無いわ。
便利な世の中になったお陰で考える事が減って美味しいです^q^
694デフォルトの名無しさん:2009/02/22(日) 17:30:42
>>693
こういう奴がHDD全消去するようなインストーラー作るんだろうな
695デフォルトの名無しさん:2009/02/22(日) 18:06:17
ぎすぎすした流れをぶった切って申し訳ないが、
luaのイテレータを使用したfor文に渡す引数は
イマイチなじめない。
C++/STLのbegin/endになれた身としては最初に渡した
"_var"がfor内ブロックに渡されず、_f(_s,_var)の戻り値が
渡される所とか違和感を感じる。
他の言語のイテレータになれた人だとそうでもない?

696デフォルトの名無しさん:2009/02/22(日) 19:02:00
じゃあC++使ってればいいじゃん
697デフォルトの名無しさん:2009/02/22(日) 21:08:32
今時、コマンドラインも使わなきゃLINUX鯖も立てられない奴には仕事は来ないわなw
698デフォルトの名無しさん:2009/02/22(日) 21:35:39
はいはい挑発伝説挑発伝説
699デフォルトの名無しさん:2009/02/22(日) 22:27:30
俺なんか家も学校もUNIXだったし会社はいるまでWindows触ったこともなかったからなぁ。
DOS窓?ぷwなにそれ、って言ったら白い目で見られたよ。
Windowsが全てと思ってる奴もいるし世の中間違ってる。
700デフォルトの名無しさん:2009/02/22(日) 22:43:01
PowerShellはどうよ?
701デフォルトの名無しさん:2009/02/22(日) 22:44:34
>>695
Luaのことはほとんど知らないんだけど、w
組み込みでは、
・iteratorインスタンスをいちいち生成したくない。
・クロージャやジェネレータを扱いたくない。
という意図があると思う。
特に_s。クロージャ、ジェネレータ相当のことを自前で実装しろと。
単純なイタレータばかりなら、_varだけでいいけど。
そのトレードオフが_f(_s,_var)だと思う。
702デフォルトの名無しさん:2009/02/22(日) 23:13:50
先週toLua++更新されてるね。
703695:2009/02/22(日) 23:21:55
>>701
ごめん。理解できないで詳しくお願い。

ちなみに、私が求めていたのはこんな感じ
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の文法との整合性の問題?
704695:2009/02/22(日) 23:23:50
luabindも0.8にあがってる。
705デフォルトの名無しさん:2009/02/22(日) 23:58:15
C++しか知らんからそうなる
このイテレータの形は関数型言語やれば自然と判るよ
706デフォルトの名無しさん:2009/02/23(月) 01:57:47
なんでLua以外の言語人気ないんだろう?
707デフォルトの名無しさん:2009/02/23(月) 02:16:24
Squirrelの時代が来る!
…と信じている……
708デフォルトの名無しさん:2009/02/23(月) 08:13:23
スクエニが使った実績もあるしな!
俺も今度スクリプト使うときはSquirrelでいくぜ!



何か作る…暇さえあればな…
709デフォルトの名無しさん:2009/02/23(月) 08:46:39
710デフォルトの名無しさん:2009/02/23(月) 09:32:18
711デフォルトの名無しさん:2009/02/23(月) 11:36:53
というか、普通にPC向け商用ゲームで採用予定なんだが>Squirrel
……って、他に居ないのか。居ないのか!
712デフォルトの名無しさん:2009/02/23(月) 12:06:37
ここにいるよ
713デフォルトの名無しさん:2009/02/23(月) 13:13:11
ここにもいるよ。

PSPの案件でもテスト開始してる。スクエニ様々だね。
714デフォルトの名無しさん:2009/02/23(月) 14:18:10
よかった…。Squirrelが一躍有名になって。
スクエニのFFCCのプログラマーはGJです。
715デフォルトの名無しさん:2009/02/23(月) 17:25:16
DQ9はSquirrel採用?
716デフォルトの名無しさん:2009/02/23(月) 17:55:06
もし知っている人が居ても絶対教えてくれないと思いますよ
717デフォルトの名無しさん:2009/02/23(月) 18:14:38
いや、9は無理でしょ。DSだよ?
メモリ4Mくらいじゃなかったか?
718デフォルトの名無しさん:2009/02/23(月) 21:57:49
>>713
スクエニでPSP・・・・・パラsうわ何をするやめ(ry
719デフォルトの名無しさん:2009/02/23(月) 22:15:59
おいおいwネタなのか本当なのか知らんが笑ってしまったw
自分も案件提案して採択されそうだ。というわけでSquirrelは水面下で絶賛展開中だ
720デフォルトの名無しさん:2009/02/23(月) 23:50:06
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ 勝手に使えばいいだろw
 彡、   |∪|  / 日本人が発音できない言語lolololololol
/ __  ヽノ /
(___)   
721デフォルトの名無しさん:2009/02/24(火) 00:03:49
ロリロリロリロリ
722デフォルトの名無しさん:2009/02/24(火) 00:34:12
Luaにはクマが居るのに、SquirrelにはAAすらない。可哀相
723デフォルトの名無しさん:2009/02/24(火) 00:39:56
Xtal のインタプリンタとかデバッガーとかIDEとかってまだない系?
724デフォルトの名無しさん:2009/02/24(火) 01:16:53
>>723
以前(半年ぐらい前)ちょっと調べてたけど見つからなかったよ。
Xtalの中の人はかなりがんばっていると思うんだけど、いかんせん外野からの支援が無いよね。
725デフォルトの名無しさん:2009/02/24(火) 01:17:30
あれは何処の国の人が盛り上げるんだろうね
726デフォルトの名無しさん:2009/02/24(火) 01:34:28
Xtalは応援してやりたいが、sourceにほとんどコメントが無くて読めなかった。C++コーディングここに極まりって感じ。
言語仕様も定まってきているわけだし、ここいらで一旦仕様拡張を止めて、
導入方法について詳しく記述し、間口を広くすれば流行りそうな予感はしている。
欲を言えば作者自ら本出してほしい。そんな暇無いだろうけど。
727デフォルトの名無しさん:2009/02/24(火) 01:38:50
>>722
クマなんぞただの目障り。
728デフォルトの名無しさん:2009/02/24(火) 01:41:11
//
/ / パカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ AngelScript!!
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
729デフォルトの名無しさん:2009/02/24(火) 01:42:06
>>726
Squirrelより実行速度速いしな。おまけに使いやすいC++バインダも内蔵ときた。
ちょっと構文が変な感じするけど、
オープン界のPHPとRubyみたいな関係で、
互いに刺激を受けてcoolな発展してくれることを望むぜ。
730デフォルトの名無しさん:2009/02/24(火) 01:43:59
実行速度は後からなんとかなるけど
構文が変なのは致命的だなあ
731デフォルトの名無しさん:2009/02/24(火) 01:51:08
他のスクリプト言語とほぼ相互置換できるのなら無問題なんだけど、実際のところどうなんだろ?
Xtalを触りだけじゃなく、実際に使ってる人って居ないんかいねぇ?
732デフォルトの名無しさん:2009/02/24(火) 01:51:13
Luaの本は結構出てるんだけど
Squirrelの本って洋書でもまだ出てない?
733デフォルトの名無しさん:2009/02/24(火) 01:57:42
GDC2008 FFCCのSquirrel採用の件
http://game.watch.impress.co.jp/docs/20080224/ffcc.htm
たった1行だけ。
734デフォルトの名無しさん:2009/02/24(火) 02:07:27
洋書でもいいからSquirrel本ほしいよな
まとまって目ぼしい情報があるのが公式wikiぐらいだ
735デフォルトの名無しさん:2009/02/24(火) 09:48:36
SquirrelはAngelScriptよりはまだマシじゃないか。
AngelScript使ってるのは日本で自分含めて数名しかいないんじゃないかとすら思える。
736デフォルトの名無しさん:2009/02/24(火) 10:14:14
スクエニがFFCCで色々やった結果をSquirrel公式に提供してくれればなぁ
737デフォルトの名無しさん:2009/02/24(火) 10:18:45
>>735
詳しく調べたわけではないが、C++の制約をそのまま受けてしまう仕様ではなぁ……。
738デフォルトの名無しさん:2009/02/24(火) 11:14:45
>>700
> PowerShellはどうよ?
UNICODE文字だけなので普段使いにはムリがあった
739デフォルトの名無しさん:2009/02/24(火) 14:48:35
>>736
んだな。SquirrelにLuaにあるような動的リロードをどう実装したのかが知りたい。
おそらくdelegateじゃないんだよな。
740デフォルトの名無しさん:2009/02/24(火) 16:56:00
>731
ノシ使ってるよ

741デフォルトの名無しさん:2009/02/24(火) 18:44:09
せめてインタプリンタやデバッガやIDEがあればなあ・・・>Xtal
Pythonからの移行を考えてる今日この頃
LuaやSquirrelも考慮してみるか・・・
742デフォルトの名無しさん:2009/02/24(火) 20:41:59
>>741
Python止めようと思ってる理由は?
743デフォルトの名無しさん:2009/02/24(火) 21:01:21
止める気はないよ、機能も手軽さも文句ないし
ただちょっと飽きてきたとかそんな理由
744デフォルトの名無しさん:2009/02/24(火) 21:50:51
あーしいて言うなら処理速度だな
あと、ゲームを作る用に作った言語ってのも
まだ、完成してないし詳しく知らんwスマソ
745デフォルトの名無しさん:2009/02/25(水) 04:30:52
>>739
どうなんだろねー。delegate はあまり凝ったことできないし、ユーザデータかテーブルでしか
使えないので別の方法だろうとは思う。

思いついた方法その1 メタメソッドを使ってプロトタイプもどきを実装

・「クラス名」は文字列で保持しておく
・_get/_set のメタメソッドを使って、「クラスのメソッドテーブル」を毎回「クラス名」を使って
 引いてきてメソッドはそこから引き出して使うようにする
・「クラスのメソッドテーブル」の中身を書き換えると、同種のオブジェクトのメソッドを一斉にさしかえたことになる

思いついた方法その2 弱参照でインスタンスを全部おぼえておく

・クラスはメソッドを別のテーブルとして持つ(クラスは一度インスタンス化すると書き換えできないため)
・コンストラクタでそのメソッドテーブルの内容をインスタンスに自力でコピーする
・クラスはインスタンスリストも持つ。コンストラクタでインスタンスの弱参照をリストに追加する
・メソッドを書き換えるときは、新規オブジェクト用にメソッドテーブルの中身を置き換えると同時に、
 インスタンスリストに登録されてる全インスタンスの該当メソッドも置き換えてしまう
・インスタンスリストは適当なタイミングで掃除

こんなとこじゃないかなー
746デフォルトの名無しさん:2009/02/25(水) 08:54:06
>>706
Luaがユーザー多くなった→情報を増える→ユーザー増える→(以下繰り返し)

日本でユーザー増やすなら、>>708みたいな実績増やして、
スクエニが導入の手引きみたいなリソースを公開してくれたら
祭りになるかもしれんが(公開は)多分ない

やっぱり情報を一杯出さないとな

747デフォルトの名無しさん:2009/02/25(水) 09:39:42
Squirrelを動的リロードできるようにソース改造したとか。
zlib/libpngライセンスだから問題ないだろうし。
他のスクリプトのShiftJIS対応版みたいな感じで。
748デフォルトの名無しさん:2009/02/25(水) 09:49:42
Squirrelの動的リロードは、ソースファイルを読み直すだけでそのままできるんだが?
ファーストクラスオブジェクトというのはそういうものだ。
シリアライズ・デシリアライズ機構を用意するだけ。
749デフォルトの名無しさん:2009/02/25(水) 09:50:54
      nn
  _ γ・ ̄\
 γΞミvヽ _r・
 ( r-、i (゚Д゚)
  ヽノ (ノ ミ)  ミ Squirrel!!
  ヾ_(つノノつ
750デフォルトの名無しさん:2009/02/25(水) 10:38:57
>>748
「ソースファイルを読み直すだけ」じゃないじゃん
751デフォルトの名無しさん:2009/02/25(水) 14:43:12
BSDやMIT等の重要な部分に記載しろというのが嫌い
でもzlib系は書かなくてもいいのに記載します
なのでSquirrel使い
752デフォルトの名無しさん:2009/02/25(水) 14:57:07
>ソフトウェアのすべての複製または重要な部分に記載するものとします。
MITのこれって、全体もしくは部分的な複製に記載しろという意味じゃなかったっけ?
753デフォルトの名無しさん:2009/02/25(水) 15:09:09
>>750
シリアライズ機構を、インスタンスの再構築を行うソースファイルを生成するように設計すればいい。
フォーラムに例が挙がってる。
754デフォルトの名無しさん:2009/02/25(水) 16:03:26
Xtalはよさげなんだが食指が動かんな。何故だろう?個人がせっせとやってるからかなー。

2月24日の日記によるとよりC++らしい記法が出来るようになるみたいだが、
やっぱりC++チックな記法が世の中的には好まれるんだろうか?
755デフォルトの名無しさん:2009/02/25(水) 16:06:48
おそらくね。
endはメンドクサイんで嫌いだ
756デフォルトの名無しさん:2009/02/25(水) 16:17:04
元々xtalはC++ライクな軽量言語ってのをウリにしてるからな
757デフォルトの名無しさん:2009/02/25(水) 17:32:44
zlibライセンスでC++チックな記法といえばAngelScriptだな。
MITならCINTってのもあるが。
758デフォルトの名無しさん:2009/02/25(水) 17:39:51
ちょっとしたゲーム製作にSquirrelを使いたかったが、挫折した。
日曜プログラマには無理だった。
もっと勉強してからにします。
759デフォルトの名無しさん:2009/02/25(水) 17:56:28
Squirrel内の関数をCから呼び出すときに可変長引数で引き渡したいが、上手くいかないです。
bool 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と関係なくてすいません。助言をください。
760デフォルトの名無しさん:2009/02/25(水) 18:07:11
>>759
わかってるんじゃん。Cは言語仕様的に引数の型情報を取得する手段がないので、
型指定情報をなんらかの形で渡すか、全部 Variant な型を使うようにするかのどちらかしか無理。

型指定は別に printf みたく文字列にする必然性はないよ。

func("funcName", TYPE_INT, a, TYPE_FLOAT, b, TYPE_STR, c, TYPE_END)

とかこんなかんじで順次型情報とあわせて渡すとかでいいんじゃね?
761デフォルトの名無しさん:2009/02/25(水) 18:32:27
>>760
すばやい返信ありがとうございます。うーん。Cの仕様上どうしようもないんですね。
型情報も合わせて引数に送ることで、対処しようと思います。
ありがとうござました。
762デフォルトの名無しさん:2009/02/25(水) 21:07:44
ま、そもそもC言語で今更、自前の可変長引数関数を
(ログ出力等以外の目的で)で整備する利点は薄いので、
正直に他の方法による実装を考えた方がいいと思うけどな。
763デフォルトの名無しさん:2009/02/25(水) 21:28:52
C++にしてboost::tupleとか使えばうまく書けるかもしれない
764デフォルトの名無しさん:2009/02/26(木) 09:55:45
C++だと、boost::functionみたいに、

template<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用意してスクリプト内の関数呼び出す仕組み用意した。
結構便利。
765デフォルトの名無しさん:2009/02/28(土) 22:53:47
Squirrel3.0の安定版っていつ出るのさ
766デフォルトの名無しさん:2009/02/28(土) 23:02:24
>>765
そもそも3.0というほどの変更箇所があるように見えないんだが、
ずっと黙って2.2.2-stableを使ってるな。
767デフォルトの名無しさん:2009/03/01(日) 18:51:08
剰余の計算をするとエラーが出るのですが、どうしてでしょうか?

x = 10 y = 3
print("余りは" .. x % y .. "です")

これを実行すると、
stdin:1: `)' expected near `%'
と表示されてしまいます。
768デフォルトの名無しさん:2009/03/01(日) 19:03:51
何語で書いてるのか書け。まずはそれからだ。
769デフォルトの名無しさん:2009/03/01(日) 19:08:52
演算子の優先順位の問題じゃね?
770デフォルトの名無しさん:2009/03/01(日) 19:21:57
Lua5.1.4で再現無いことだけ確認したw
771デフォルトの名無しさん:2009/03/01(日) 19:33:50
Lua使ってないからしらんが、
括弧付ければ無問題だと予想
772デフォルトの名無しさん:2009/03/01(日) 22:16:06
>>767
使ってるLuaが5.0系(%演算子が無い)なんだろう。
5.1にするか、math.modを使うかしろ。
ただしmath.modと%演算子は、負数のときの挙動が違うので注意。
773デフォルトの名無しさん:2009/03/04(水) 08:05:29
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
774デフォルトの名無しさん:2009/03/04(水) 18:06:00
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  / <●> <●>|  /
  |    ( _●_)  ミ/ Lua?
 彡、   |∪|  /
/ __  ヽノ /
(___)   
775デフォルトの名無しさん:2009/03/04(水) 21:35:40
いいえKumaです。
776デフォルトの名無しさん:2009/03/04(水) 22:31:36
Luaってもしかして、++iとか--iとかない?
777デフォルトの名無しさん:2009/03/04(水) 22:51:12
忘れたけど、基本floatだからないんじゃないの?
778デフォルトの名無しさん:2009/03/04(水) 23:16:53
-- はコメントだしなあ
779デフォルトの名無しさん:2009/03/05(木) 00:17:05
>>777,778
ないのか、残念
レスありがとう
780デフォルトの名無しさん:2009/03/05(木) 21:09:28
i += 1 もないお
781デフォルトの名無しさん:2009/03/05(木) 21:18:53
//は何なの
782デフォルトの名無しさん:2009/03/07(土) 01:20:44
>>781
「**」がべき乗として使われる言語がたまにあるけど、
// はその除算版。
つまり、a // b = a ** -b = pow(a, -b)
783デフォルトの名無しさん:2009/03/07(土) 08:14:31
冪根ことか累乗根とかだっけ
784デフォルトの名無しさん:2009/03/07(土) 14:01:59
& と && の関係みたいなもんか
785デフォルトの名無しさん:2009/03/07(土) 20:35:46
全然違わないか? それ
786デフォルトの名無しさん:2009/03/07(土) 21:46:34
いや、=と==みたいなもんだろ
787デフォルトの名無しさん:2009/03/07(土) 22:34:53
*hoge と**hogeよりは違わないだろう
788デフォルトの名無しさん:2009/03/08(日) 10:43:16
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
789デフォルトの名無しさん:2009/03/09(月) 23:40:40
Squirrelでルートテーブルに対しての、定数のバインドってどうやってやるか分かりますか?
sq_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;
となるよううなコーディングを実装したいです。
やっぱ、定数はコンパイル時決定だから無理なのかな?
790デフォルトの名無しさん:2009/03/09(月) 23:56:03
自己解決しました。
sq_pushconsttableとsq_setconsttableで上手くいきました。
仕様に目を通してないことが丸分かりで恥ずかしい……。

これでやっと
・定数・変数・クラスのバインド
・C++⇒Squirrel関数の呼び出し
・Squirrel⇒C++関数の呼び出し
まで完成しました。
あとは、デバッガと動的リロードだ。先が長いぞ。
791デフォルトの名無しさん:2009/03/10(火) 10:35:48
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

792デフォルトの名無しさん:2009/03/10(火) 13:37:15
>>782
Lua だとそーいう演算子ないみたいだけど、それってどの言語で使えるの?
c++系統だとコメントだし、Python3.0とかだと余りを切り捨てる除算に使うしあんまり一般的じゃない気がする

793デフォルトの名無しさん:2009/03/11(水) 01:20:20
// でググってみれば?
俺はどうでもいいからやらないけど。
794デフォルトの名無しさん:2009/03/11(水) 01:46:26
>>793
あほか、ぐぐってみろw
795デフォルトの名無しさん:2009/03/11(水) 02:59:28
double slash operator
796デフォルトの名無しさん:2009/03/11(水) 09:03:27
組み込み言語Pawn
The 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/
797デフォルトの名無しさん:2009/03/11(水) 09:04:01
>>793-794
だめぽ。見つかりませんでした
// - Google 検索
http://www.google.com/search?hl=ja&safe=off&num=50&q=%2F%2F&btnG=%E6%A4%9C%E7%B4%A2&lr=
798デフォルトの名無しさん:2009/03/11(水) 09:13:14
LuaInterface 2.0.3
http://code.google.com/p/luainterface/
Luaから.NETの機能を使ったり、.NETな言語からLuaを利用したりできるやつ。

LuaInterface Debugger
http://code.google.com/p/luainterface-debugger/
ステップ実行とかできるLuaのデバッガ。非GUI
799デフォルトの名無しさん:2009/03/11(水) 10:59:05
>>798
これ何がやりたいのかわからん
Luaはネーティブなんだから、只のラッパーに徹するか、
既存のLuaでも使える、.NETをラップしたモジュールにしてくれれば良かったのに

自分はC++/CLIに馴染みが無いから、只のラッパーを自作する参考に
コードを読む程度の利用しかしてね
800デフォルトの名無しさん:2009/03/14(土) 11:26:37
は?
801デフォルトの名無しさん:2009/03/14(土) 15:46:24
ひ?
802デフォルトの名無しさん:2009/03/14(土) 21:45:18
803デフォルトの名無しさん:2009/03/14(土) 21:54:28
804デフォルトの名無しさん:2009/03/14(土) 21:57:40
805デフォルトの名無しさん:2009/03/14(土) 22:01:58
ハルビンの親戚か?
806デフォルトの名無しさん:2009/03/15(日) 00:19:44
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
807デフォルトの名無しさん:2009/03/15(日) 10:34:54
ちょw
808デフォルトの名無しさん:2009/03/15(日) 11:09:28
809デフォルトの名無しさん:2009/03/15(日) 13:16:17
次スレはいらないな・・
810デフォルトの名無しさん:2009/03/15(日) 16:32:12
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

811デフォルトの名無しさん:2009/03/16(月) 11:37:16
>>800-806
AVで本当にあって吹いた

TMA 涼宮ハヒルの憂鬱 レビュー | 丁dai Blog
http://tyodai.blog47.fc2.com/blog-entry-65.html
812デフォルトの名無しさん:2009/03/16(月) 12:59:07
そりゃ、あるから書いてるんだろう
813デフォルトの名無しさん:2009/03/16(月) 20:05:17
Luaを実装したプログラムのソースコードください。
814デフォルトの名無しさん:2009/03/16(月) 20:12:32
815デフォルトの名無しさん:2009/03/18(水) 08:32:52
乳揉みてぇ
816デフォルトの名無しさん:2009/03/19(木) 01:43:27
817デフォルトの名無しさん:2009/03/21(土) 12:59:13
LuaのテーブルをXMLに保存する
http://homepage3.nifty.com/akaho/program/lua/xml.html

見つけたので、貼っとく。
818デフォルトの名無しさん:2009/03/21(土) 17:09:25
じゃあ俺はSquirrelのテーブルをJSONに保存する
819デフォルトの名無しさん:2009/03/21(土) 18:09:36
YAMLじゃなくて?
820デフォルトの名無しさん:2009/03/22(日) 06:14:06
S式で
821デフォルトの名無しさん:2009/03/22(日) 17:56:26
根性です
822デフォルトの名無しさん:2009/03/23(月) 22:38:00
ttp://haxe.org/

NekoVM 用として使えば組み込み系もいけるかも?
でも Nekoランタイムは LGPLかー

823デフォルトの名無しさん:2009/03/24(火) 17:56:07
haxeでlua出せないかなぁ
824デフォルトの名無しさん:2009/03/28(土) 15:37:52
NekoVM LGPLが痛い
825デフォルトの名無しさん:2009/03/29(日) 07:59:07
他の言語処理系にコンパイルしてから使うという割り切った仕様が興味深いな。
同じような仕様のコンパイラは今まで何回か書いてきたが、
このようにたくさんのライブラリが公開されるというのはさすがオープンソースだな、と思う。
826デフォルトの名無しさん:2009/03/29(日) 11:18:30
>>824
L付きだからいいじゃん
827デフォルトの名無しさん:2009/03/29(日) 12:11:16
このスレ的にはかなり痛いだろw LだろうがGPL系は
828デフォルトの名無しさん:2009/03/29(日) 12:16:15
LGPLならライセンスは問題せずに
目的に合った方、実績のある方選ぶ。
GPLは社内ルール上駄目。
829デフォルトの名無しさん:2009/03/29(日) 12:26:55
PCで使うならLGPLで全然問題ないんだけどねぇ
830デフォルトの名無しさん:2009/03/29(日) 12:36:49
PCで使う・・・?
831デフォルトの名無しさん:2009/03/29(日) 12:46:02
趣味のプログラマーでも、実装の下手さの為に
バックドア的な穴を開けたようなソースを公開したくないな

ライブラリに変更を要する時に格好いい理由とかないだろ
832デフォルトの名無しさん:2009/03/29(日) 13:26:55
PCでもLGPLは面倒
833デフォルトの名無しさん:2009/03/29(日) 13:33:57
>>831
LGPLなら公開しなくていいじゃん
834デフォルトの名無しさん:2009/03/29(日) 15:12:21
>>831は公開しなきゃいけない場合、ライブラリその物を変更した時の話だよ
835デフォルトの名無しさん:2009/03/29(日) 15:15:22
修正BSDとかMITならなあ・・・・
836デフォルトの名無しさん:2009/03/29(日) 15:21:39
>>834
うまくライブラリと分離すりゃいいだけでしょ?
837デフォルトの名無しさん:2009/03/29(日) 15:44:09
自分のプログラムと静的リンクした場合は、全体を公開しないといけない。
wikipediaを読めば大雑把だが把握できる。
838デフォルトの名無しさん:2009/03/29(日) 17:19:27
会話も危うい奴が自分は何でも出来る様な事を書くとか


春だな
839デフォルトの名無しさん:2009/03/29(日) 17:20:22
LGPLだとパッカー系(アーカイブ形式で配布するタイプ)、コンシューマ系が封じられるんだよな。
結構痛い。
840デフォルトの名無しさん:2009/03/29(日) 17:25:45
>>839
パッカー系ってzipやlzh?それともexe?
841デフォルトの名無しさん:2009/03/29(日) 20:30:38
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ○   ○ |  /
  |    ( _●_)  ミ/ <……
 彡、   |∪|  /
/ __  ヽノ /
(___)   
842デフォルトの名無しさん:2009/03/29(日) 20:33:48
zip同梱でソース開示義務が及ぶなんて聞いたことないな。
843デフォルトの名無しさん:2009/03/30(月) 07:38:40
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

844デフォルトの名無しさん:2009/03/30(月) 09:25:06
俺もGPLもLGPLも敬遠してるわ。LGPLは839の理由で。
845デフォルトの名無しさん:2009/03/30(月) 09:33:45
だからなんで?
同梱するだけのものにはソース開示は及ばないのに。
846デフォルトの名無しさん:2009/03/30(月) 09:37:51
LGPLライセンスで配布されたライブラリAについて、

* ライブラリAにリンクしたプログラムBを配布する場合、Bのライセンスにリバースエンジニアリングを禁止する条項を含めてはならない。(LGPLv2-6、LGPLv3-4)
* ライブラリAに静的リンクしたプログラムBを配布する場合、Bのソースコードまたはオブジェクトコードの配布を拒否してはならない。(LGPLv2-6a、LGPLv3-4d0)
* ライブラリAを改変して作成されたライブラリA'を配布する場合、A'のライセンスはLGPLまたはGPLである必要がある。

847デフォルトの名無しさん:2009/03/30(月) 13:43:43
Lがついてようとやっぱり汚染は免れないんだな
848デフォルトの名無しさん:2009/03/30(月) 20:01:34
ほんとGPLはゴミだな
849デフォルトの名無しさん:2009/03/30(月) 20:16:53
ようは静的リンク=直接実行できるexeにしなけりゃいいっとこか。
じゃあパッカー系は大丈夫だな。ほっとした。
.jarも.airも影響受けず大丈夫なのね…
850デフォルトの名無しさん:2009/03/30(月) 20:18:09
exeでも、rubyscript2exeとか中身は実質パッカー系だから大丈夫だよな?
851デフォルトの名無しさん:2009/03/30(月) 20:22:32
俺なら黒に近いグレーと判断する>>850

要するに「入手した人がライブラリだけさしかえて再構築できるか」
がライセンスの想定なので、一般的にばらす手段が認知されて
ないようなものは基本的にダメだと思う
852デフォルトの名無しさん:2009/03/30(月) 20:26:10
そうしたら、.jar .airはバラせるからOKで、rubyscript2exeは駄目ぽだな
853デフォルトの名無しさん:2009/03/30(月) 21:34:29
>* ライブラリAにリンクしたプログラムBを配布する場合、Bのライセンスにリバースエンジニアリングを禁止する条項を含めてはならない。(LGPLv2-6、LGPLv3-4)
コンシューマだとサードパーティライセンスの関係でこれをクリアできないってことか
854デフォルトの名無しさん:2009/03/30(月) 23:48:29
ライセンスネタは大抵荒れてスレを浪費してしまうからそろそろ次スレの話も。

>4はXtal以外全く話がないからXtal関係を>3に移して4を削除してよくね?

このスレでは幸いにして問題にならなかったけど>10-12も配慮お願い。

関連スレの中で移行済のもの。 LLスレは流れが速いからスレ立て時に確認お願い。

「コンパイラ・スクリプトエンジン」相談室13
http://pc12.2ch.net/test/read.cgi/tech/1233143342/
855デフォルトの名無しさん:2009/03/31(火) 07:20:26
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
856デフォルトの名無しさん:2009/04/01(水) 08:35:50
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ

857デフォルトの名無しさん:2009/04/01(水) 08:41:41
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Luaまピョーん☆
 彡、   |∪|  /
/ __  ヽノ /
(___)   
858デフォルトの名無しさん:2009/04/02(木) 16:22:42
IGDA Japan chapter - ニュース
http://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ウェア 小さな王様と約束の国 ファイナルファンタジー・クリスタルクロニクル 等の開発に関わる。
859デフォルトの名無しさん:2009/04/02(木) 17:13:42
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

860デフォルトの名無しさん:2009/04/02(木) 17:16:30
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Luaまピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

861デフォルトの名無しさん:2009/04/03(金) 20:33:21
そうか。Xtalの作者は現役のゲームプログラマだったのか。
仕様、ソースのできもなかなかいいし、
今後日本ではやって行く可能性もあるなぁ……。
862デフォルトの名無しさん:2009/04/03(金) 20:40:29
schemeが流行るよりは可能性高いと思う
863デフォルトの名無しさん:2009/04/03(金) 20:47:29
誰が流行らすのかという問題がな……。
LuaとSquirrelの2強を打破してくれることを祈る。
864デフォルトの名無しさん:2009/04/03(金) 21:05:22
>>851
> 要するに「入手した人がライブラリだけさしかえて再構築できるか」
> がライセンスの想定なので、

都合のいい風に読み替えるなよw
865デフォルトの名無しさん:2009/04/03(金) 21:12:56
>>863
Squirrelは2強というほど普及もしてないぞ。

いろいろ話聞いた感じでは、Luaが圧倒的に強くてPAWN、Squirrel、StacklessPythonがポストLuaな感じ。
XtalやCRIScriptはまだ産声あげたぐらいだしなぁ・・・もう数年必要かな。
866デフォルトの名無しさん:2009/04/03(金) 22:24:28
Xtalタンには頑張って欲しいね
俺では有効活用できないんだけどね…
867デフォルトの名無しさん:2009/04/03(金) 23:41:09
>>864
どのへんが間違えてるか解説きぼん
ソース公開 / リンク用OBJの公開 / ダイナミックリンク から選べる、
ってのは平たくいえばそういうことだという認識なんだが。
868デフォルトの名無しさん:2009/04/03(金) 23:51:54
>>865
スレ違い。

『GPL/LGPL等ライセンスとゲーム製作_2』
http://pc11.2ch.net/test/read.cgi/gamedev/1036512390/
869デフォルトの名無しさん:2009/04/03(金) 23:53:27
865 -> 867 ね。スマン。
870デフォルトの名無しさん:2009/04/04(土) 17:58:59
LuaInterfaceって使っている人あまりいないのかな?
871デフォルトの名無しさん:2009/04/04(土) 18:33:33
これから使おうと調べてるところだ
872デフォルトの名無しさん:2009/04/05(日) 09:40:18
SexlessPythonのゲームの組み込み向け解説ってどこかにない?
873デフォルトの名無しさん:2009/04/05(日) 09:41:46
ごめん、オナ禁してたから間違えた Stackless Pythonね
874デフォルトの名無しさん:2009/04/05(日) 12:40:48
ちょセックスレスってw
875デフォルトの名無しさん:2009/04/05(日) 12:46:55
>>873
GameDeveloperの2009年2月号にちょっと特集されてるよ
876デフォルトの名無しさん:2009/04/05(日) 16:31:11
>>875
おお、これか。ちょっくら読んでみるぜ

> 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
877デフォルトの名無しさん:2009/04/05(日) 18:18:08
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ

878デフォルトの名無しさん:2009/04/05(日) 18:29:28
OBAMA思ったより強気だw
879デフォルトの名無しさん:2009/04/05(日) 18:30:50
すまん誤爆した
880デフォルトの名無しさん:2009/04/06(月) 14:34:48
SIG-GTでのCriScriptの講演資料(2009年1月17日)がおいてあった
http://www.cri-mw.co.jp/event/2009/sig-gt-12.html
881デフォルトの名無しさん:2009/04/07(火) 09:21:56
>>865
俺の大好きなAngelScriptはダメですかそうですか。
882デフォルトの名無しさん:2009/04/07(火) 10:22:16
これってgta4のアレ?
883デフォルトの名無しさん:2009/04/07(火) 16:04:28
>>881
いや、悪くはないと思うよ。
ただ情報が本当に少ないので、布教も兼ねてCEDECとかもっと小さいセミナーでもなんでも講演してくれる人がいると、
使い手も増える思うんだよなぁ・・・
そういった草の根的な活動を担ってくれる人がいないと組み込みスクリプトはなかなか盛り上がらないと思う。
884デフォルトの名無しさん:2009/04/08(水) 01:46:45
Xtalは作ってる人が飽きてきてるかんじなんだよな

885デフォルトの名無しさん:2009/04/08(水) 07:42:04
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

886デフォルトの名無しさん:2009/04/09(木) 14:22:19
RubyとかJavaじゃないけど、10年は開発続ける気じゃないと広まらないよ。
Luaは言語仕様がどうとか言われているけど、よく続けたナーって幹事。
887デフォルトの名無しさん:2009/04/10(金) 05:31:36
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

888デフォルトの名無しさん:2009/04/10(金) 07:48:17
>>886
たしかに言語ってだいたい10年ぐらいしてから普及しはじめるからなー
javaもいじってた頃はまだまだ普及しそうになかったし
889デフォルトの名無しさん:2009/04/10(金) 09:56:11
Javaは登場当初から流行る雰囲気に満ち満ちてましたよ。
890デフォルトの名無しさん:2009/04/10(金) 10:01:26
Javaは、その当時使ってた環境がSolarisかWindowsかLinuxかで、
印象がだいぶ違うと思う。
891デフォルトの名無しさん:2009/04/10(金) 10:54:49
それは関係ないんじゃないかな。
892デフォルトの名無しさん:2009/04/10(金) 11:05:46
当時使ってた環境が98か286かで、印象がだいぶ違うと思う
893デフォルトの名無しさん:2009/04/10(金) 11:07:58
Javaはアップレットをプッシュしていた頃は正直ただのオモチャに見えたな
が、流行るのに10年はかかってないっしょ
894デフォルトの名無しさん:2009/04/10(金) 11:17:15
あの薄い灰色の背景がなんかダサかった
895デフォルトの名無しさん:2009/04/10(金) 11:55:55
昔はオモチャに見えたといえばJavaScriptの方だろ。
896デフォルトの名無しさん:2009/04/10(金) 13:54:14
Windowsだったからか、JavaもFlashもwebで重いサイトに使われているくらいにしか思ってなくて
(WindowsでJava=Java appletの時代w)
こんなの流行るわけないだろ!と思ってたら、このありさまだよ!

まあ、Windowsでは今でもJavaは、金融関係(証券会社とかトレード関係とか)しかみない気がするけどさ
897デフォルトの名無しさん:2009/04/10(金) 21:49:47
昔:Javaって(動作が)重いよな
今:Javaって(言語仕様が)重いよな
898デフォルトの名無しさん:2009/04/10(金) 22:02:59
言語仕様はそんなに膨れてないだろ。

もしかしてGenericsに挫折しちゃった人?
899デフォルトの名無しさん:2009/04/10(金) 22:44:23
>>896
どんだけ見る目ないんだw
900デフォルトの名無しさん:2009/04/11(土) 16:29:46
Java Applicationは携帯ゲームで花開いたな。今は使い物にならないJavaFXもそのうち化けるかな?
901デフォルトの名無しさん:2009/04/12(日) 02:30:32
どちらかっちゅうと、考えるべきはAIRやAndroidじゃね?
まあ、そろそろスレ違いかもしれんが。
902デフォルトの名無しさん:2009/04/12(日) 06:25:14
翻訳 - Python製のソーシャルブックマークエンジンRedditはなぜLispをやめてPythonを使うようになったのか ? TRIVIAL TECHNOLOGIES 2.0
http://coreblog.org/ats/japanese-translation-why-reddit-uses-python

> Pythonを使い続ける最も大きな理由... そうだなあ,大きな理由が2つあるよ。
> ひとつめの理由はライブラリ。Pythonには全部のライブラリがそろっている。
> 僕たちは開発を進めてきた課程で,たくさんの技術や,たくさんのアーキテクチャを学んできた。
> たとえば,僕がコネクションプールについて理解していなかったとしても,
> 僕はただ単にライブラリを探してきて使うことができる。それからコネクションプールについて理解して,
> 自分たちでライブラリを書けばいい。Webフレームワークについても理解する必要はない。
> 自分たちのフレームワークを作る時が来るまで,他の人が作ったフレームワークを使うだけだ。
> その他の多くの技術を使う前に学ぶ必要はないんだ。
> だってPythonにはほとんど全ての種類のライブラリが備わっているのだから。
> これからも,僕たちはもっと多くの技術を学び続ける。
> そして自分たちの手でライブラリを作る。技術を自分たち流に変えるためにね。
> このような手法を使うことで,自分流に変換する作業をとってもとっても簡単にすることができるんだ。
>
>
> もうひとつ,僕たちをPythonにつなぎ止めておく理由は,これは最も大きな理由なんだけど,
> Pythonのコードが読みやすく書きやすい,ということなんだ。
> たとえば僕たちが新しい技術者を雇うとき。Pythonが書ける技術者を雇うことはまずないわけだけど。
> 僕はただ「ぜんぶPythonで書いてね」と言うだけだ。
> そう言うだけで,彼らの書いたコードを僕は読むことができる。
> これはすごいことなんだけど,僕は部屋越しにコードが良いか悪いかを見分けることができるんだ。
> というのは,良質なPythonのコードはとても明確な構造を持っているから。
> これが僕の仕事をより楽にしてくれるんだ。Pythonのコードはとんでもなく表情豊かで,
> とんでもなく読みやすく,そしてとんでもなく書きやすい。
> だから僕は仕事をスムーズに運べるというわけさ。
903デフォルトの名無しさん:2009/04/12(日) 06:46:47
便利なツールとしてのスクリプト・・・あるいはWeb用スクリプトとして言語を選択するのと、
組み込み用スクリプトとして言語を選択するのは視点が若干違うと思うな。

もちろん、手馴れた言語でスクリプトが記述できるのであれば大きなプラスポイントだとは思うけど、
実行速度やメモリ使用量、組み込みやすさ、本体とのやりとりの容易さ、デバッガetc...
と単独で実行するときとは事情がけっこう変わってくるので、そのスクリプト言語の仕様が素晴らしいからといって、
採用するかどうかは考えどころだったりするね。
904デフォルトの名無しさん:2009/04/12(日) 07:26:48
Squirrelで基本的な部分に詰まっちゃて、知ってる人いたら教えてもらえませんか?
C言語と同じように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側の書き方が悪いんでしょうかね?
905デフォルトの名無しさん:2009/04/12(日) 08:20:55
> そして自分たちの手でライブラリを作る。技術を自分たち流に変えるためにね。
906902:2009/04/12(日) 08:59:48
誤爆・・・・まじスマソ
907デフォルトの名無しさん:2009/04/12(日) 09:27:52
ここはクマスレじゃないぞ
908デフォルトの名無しさん:2009/04/12(日) 10:55:13
>>902
キニスルナ

プログラム作るのに何の言語を使うかは絶対的なものではなく相対的なものでしかないわけで、
日ごろ使わない他の言語の良さを語ってくれるテキストは参考になる。
それが実績のある開発者の言葉ならなおさらのことだ。
909902:2009/04/12(日) 10:57:22
Pythonは組み込み言語につかわれているし、趣旨の1つにライブラリたくさんある言語いいよねー
って話だから、あながちネタフリとしてはスレ違いでもないかw
910デフォルトの名無しさん:2009/04/12(日) 13:08:55
>>904
sqstd_loadfile はスクリプトをロードしてスタックの先頭にのせるだけ。
その中身の function main() を登録するにはまずそれ自体を sq_call する必要がある。

sqstd_dofile にすれば思い通り動くと思われ。
911デフォルトの名無しさん:2009/04/12(日) 14:30:01
まあ、同封されたSquirrelインタプリタの挙動を真似することからはじめることだな。
912デフォルトの名無しさん:2009/04/12(日) 15:09:46
>組み込みやすさ、本体とのやりとりの容易さ
この2点に関してはAngelScriptが一番だと思うんだがどうだろう。
913デフォルトの名無しさん:2009/04/12(日) 15:13:08
COM用のスマートポインタがそのまま使えたのにはびっくりした
914デフォルトの名無しさん:2009/04/12(日) 15:25:51
>>912
C/C++とイディオム的に同じことしかできないんじゃなぁ。
無名クロージャーとかコルーチンとかのサポートはあるんだろうか。
915デフォルトの名無しさん:2009/04/12(日) 15:33:59
>>914
コルーチンは言語的にはサポートされておらず、C++側でそれのための仕組み作ってやらないとダメ。
簡単にできるけど。
916デフォルトの名無しさん:2009/04/12(日) 17:10:01
じゃあ駄目じゃん
917デフォルトの名無しさん:2009/04/13(月) 23:38:07
本屋で「はじめてのLuaプログラミング」って本見かけたんだけど、全然話題になってないね。
もしかして地雷?
918デフォルトの名無しさん:2009/04/13(月) 23:48:15
ところで914の言うコルーチンは、Luaでいうところの、
・スクリプト側でcoroutine.createで作るやつ
・C++側でlua_yield呼び出して止めるやつ
のどっち指してるんだろう。
919デフォルトの名無しさん:2009/04/13(月) 23:48:25
スクリプト言語による効率的なんたらの方を買って読んだ。
そっちの薄いのは言語仕様を書いてあったな。入門用っぽかった。地雷ではないだろう。
920デフォルトの名無しさん:2009/04/14(火) 01:55:58
個人的には、
・はじめてのLuaプログラミング は地雷
・入門Luaプログラミング は良書
・スクリプト言語による、効率的ゲーム開発C/C++へのLua組み込み実践 は
 地雷ともまでは行かないが、そう受け取れる。
 パン食い競争でぶら下げられてるフランスパンって感じ。
 一部の実装の例に一貫性がない。しかも大事なところ。
 ゲーム作りを謳ってるのに、徐々に作りながらじゃないくて、
 「こういう時は、こんな感じでいいでしょう」みたいに書かれていて、
 実際に積み重ねてく訳じゃないから使いたい時に使えない。
 自分で考えて実装しろって事なんだろうけど、全体的に動かないもの見せられてる感は個人的には困り所。
 だけど、Cへ実装の例に関しては一番詳しいのも事実。
 入門Luaプログラミングと合わせて使うといい感じに分からない所同士を補ってくれたりするような関係。
921デフォルトの名無しさん:2009/04/14(火) 03:58:47
>>920
>スクリプト言語による
そっかなー。動作するゲームのソースコードは入手できるわけだし。
コラムなんかを見てもなかなか参考になることが書いてあるように思える。
動くか動かないかはソースコードを読めばいいわけで、必ずしも本で全体を解説する必要はないんじゃないかしら。
別に作者の回し者ではないが、一通り目を通したものとして。
922デフォルトの名無しさん:2009/04/14(火) 07:44:16
ちと質問
Luaってgotoある?
スコープ違うとwhileやifで逃げるのは面倒なんだよな〜

>スクリプト言語による
これの不満点はLuaで全部やる必要ないじゃんというところ

toluaはクラスのポインタを渡してやってLua側で制御するために使ってて
管理そのものはC側でやった方がいろいろと楽だと思うんだよね
俺は一部のメンバ関数をLuaで書き換えるみたいな使い方してる
923デフォルトの名無しさん:2009/04/14(火) 09:20:20
調べてすぐに分かることは、人に聞くほうが時間の無駄だと思うんだが。
924デフォルトの名無しさん:2009/04/14(火) 23:21:45
スルー推奨
925デフォルトの名無しさん:2009/04/20(月) 11:36:10
Squirrel on Flash Player

ttp://ruriko.denpa.org/200904b.html#2001
926デフォルトの名無しさん:2009/04/21(火) 06:04:10
>>925
Adobe AlchemyでSquirrelがFlash上でうごくのかー。すげえw
927デフォルトの名無しさん:2009/04/22(水) 02:45:52
ちょっと詳しい人教えて欲しいんだけど
Luaを組み込んだコンシューマゲームの製作の際に、
Luaのライセンス(MIT License)ってどういう風に処理したらいいのかな?

ソースのどっかにライセンス表記するのでいいのか、
それとも取説とかに明記する必要がある?
928デフォルトの名無しさん:2009/04/22(水) 02:54:01
>>927
ソースだけじゃダメ。取説の類に記載が必要。っていうかライセンス嫁。
929デフォルトの名無しさん:2009/04/22(水) 06:52:41
>>928
    ∧__∧
    (´・ω・)   いやどす
    ハ∨/^ヽ
   ノ::[三ノ :.、
   i)、_;|*く;  ノ
     |!: ::.".T~
     ハ、___|
"""~""""""~"""~"""~"
930デフォルトの名無しさん:2009/04/22(水) 08:48:53
>>928
ありがとう
調べはしたんだけど、ヘッダにでも書いときゃOKとか
言ってるサイトもあって混乱してたわ
931デフォルトの名無しさん:2009/04/22(水) 08:54:16
>>930
それはソース配布の場合の条件

バイナリ配布時は取説か、あるいは実行ファイルそのものでユーザが参照できる状態にしておく必要がある。
932デフォルトの名無しさん:2009/04/22(水) 10:40:36
バイナリを入手したユーザーが参照できるってのがポイントだよな
ユーザーが見られるなら、CD内にreadme.txtでも置いてインストーラーでリンクはっておけばいいのかも試練が、
家庭用なら誰も見ないし(or 見れないし)、鳥説が自然でしょう
933デフォルトの名無しさん:2009/04/22(水) 10:41:42
と書いて、思ったけど、中古だとどうなるん?
あとダウンロード販売は。

・中古は無視
・ダウンロード販売は、ゲーム内クレジットをつくってそこに記述
って感じでしょうか
934デフォルトの名無しさん:2009/04/22(水) 20:19:56
Xtalがもうすぐ1.0か
935デフォルトの名無しさん:2009/04/22(水) 22:22:00
洋ゲーとかでタイトルロゴの下にいっぱいコピーライトが羅列してあるじゃん
あれみたいにしたら
936デフォルトの名無しさん:2009/04/22(水) 22:47:51
洋ゲー風にするなら、クレジット表示をメニューの中に入れてしまう手もあるな。
選択するとスタッフロールとかが流れるようにしておく。
937デフォルトの名無しさん:2009/04/22(水) 23:11:47
へーそれいいね
938デフォルトの名無しさん:2009/04/23(木) 03:14:16
それって、取説に載せずにゲーム中に表示してしまうってこと?
そんなんでもいいのか
939デフォルトの名無しさん:2009/04/23(木) 12:14:35
ゲーム起動時のデモで、Luaのサイトにある、青い丸に「Lua」って書かれた画像を出すのはOKなんだろうか。
940デフォルトの名無しさん:2009/04/23(木) 12:27:51
ライセンスのページには必須じゃないけどいれてくれるとうれしいな的なかんじでかかれてるね>ロゴ
941デフォルトの名無しさん:2009/04/24(金) 17:08:17
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

942デフォルトの名無しさん: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デフォルトの名無しさん:2009/05/05(火) 11:31:29
とおもったけど関数呼び出しをハンドルに対して行うのは非常に無駄が多いな…
やっぱりスタック操作かOTL
944デフォルトの名無しさん:2009/05/05(火) 22:13:00
ごめん、何がいいたいかサッパリだわw

自前で実装するんだった、luabindとかxtalみたいにバインダがあると直感的で楽だと思うけど。
C++じゃなくて純粋なC言語でインターフェース作りたいの?
945デフォルトの名無しさん:2009/05/05(火) 22:47:39
>>942
LuaではluaL_refとluaL_unrefでハンドルを使えるよ
946デフォルトの名無しさん:2009/05/06(水) 14:25:22
>>945
ああ、そういやそうだった。やっぱり両方用意するのが得策か。
Pythonではハンドルしか扱えないようだったから、どうかなーと思ったんだけど。
ありがd
947デフォルトの名無しさん:2009/05/06(水) 17:02:58
Luaって非OOの動的型付言語ですけど、
AWKやBASICと何が違うんですか?

なんか、単なる先祖帰りのような・・・

Cとの連携が楽とか、
そういう違いは分かるんですけど。
AWKやBASICを拡張しただけでも代わり映えしないんじゃないですか?
948デフォルトの名無しさん:2009/05/06(水) 17:11:36
>>947
ttp://www.lua.org/about.html

ここに全部書いてあるから読んでこい。納得しなければそれはそれで
949デフォルトの名無しさん:2009/05/06(水) 21:01:08
>>947
>Luaって非OOの動的型付言語ですけど、
Luaはオブジェクト指向言語として十分な機能は備えてる。

言語のパワーなんて口で説明するよりも実際に触ったほうが理解がはやいと思う。
もし触った上での疑問なら、もうちょっと詳細に違和感を説明したほうがいいんじゃないかな。

自分がLuaを使ってるのは単純明快、

Luaでドメインを書くコスト+C++でその他を書くコスト < C++ですべて書くコスト

という不等式が(自分の場合)成り立つから。
お前さんもAWKやBASICがC++より生産性が高いと思ってて、かつそれが組み込み可能
ならば、それを使えばいいんじゃないの?
950デフォルトの名無しさん:2009/05/06(水) 23:26:00
|Д゚)ジー
|Д゚)ノ<AngelScriptもよろしく!
|ミサッ
951デフォルトの名無しさん:2009/05/06(水) 23:46:11
単なる先祖返りなわけないだろ

ちゃんと計算されてる。アングルとか
952デフォルトの名無しさん:2009/05/07(木) 00:47:42
最近、Squirrelはポロポロと新しいバインダが出回るな。
953デフォルトの名無しさん:2009/05/07(木) 01:49:18
>>952
そうなん?みてみたいからポインタよろ
954デフォルトの名無しさん:2009/05/07(木) 02:11:32
>>953
事件は2ちゃんねるで起こってるんじゃない。公式フォーラムで起こってるんだ!
955デフォルトの名無しさん:2009/05/07(木) 03:14:51
ttp://squirrel-lang.org/forums/thread/3198.aspx

これか。コードが整理されてて sqplus よりはるかにわかりやすいですな
getter/setter の実装がちょっとトリッキーなのが要注意なかんじ。
956デフォルトの名無しさん:2009/05/07(木) 03:17:58
ttp://squirrel-lang.org/forums/thread/3129.aspx

すぐ下にもう一つあった^^; なるほどぽろぽろだな
957デフォルトの名無しさん:2009/05/09(土) 23:57:59
scratイイ!luaから乗り換えようかな
958デフォルトの名無しさん:2009/05/10(日) 09:14:24

           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
959デフォルトの名無しさん:2009/05/20(水) 12:32:10
lua_tointeger の unsgined int バージョンが欲しいんだけど、
strtoul(lua_tostring(L, -1), NULL, 0) みたいにするしかないの?
960デフォルトの名無しさん:2009/05/20(水) 12:36:11
(unsigned int)lua_tonumber(L,-1) じゃだめなん?
961デフォルトの名無しさん:2009/05/20(水) 17:20:34
C/C++とバインドするときの話なら別の論となるが、
スクリプト上のプログラミングならunsigned整数など考えないで済むコードを書いた方が楽だぞ。
962デフォルトの名無しさん:2009/05/20(水) 21:01:47
色コードが書いてあるテキストファイルを読み込みたいんだけど、
"0xAARRGGBB" の形式で書いてあるから lua_tointeger だと読めないんだよね

そうか lua_tonumber は double だから 32ビット符号なしでもちゃんと変換できるのかな?
試してみます
963962:2009/05/20(水) 21:34:17
テキストファイルというか lua でかいた設定ファイルという感じね
964デフォルトの名無しさん:2009/05/21(木) 07:26:38
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

965デフォルトの名無しさん:2009/05/21(木) 07:42:45
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Luaまピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
966デフォルトの名無しさん:2009/05/21(木) 13:39:45
Luaのコメントが//か#だったら最高だったんだが...
-- だと構文ハイライトされないエディタで見たときにコードに埋もれてよく見えん。
967デフォルトの名無しさん:2009/05/21(木) 14:21:38
そういう人は squirrel にうつると精神衛生的には楽になるよ!
968デフォルトの名無しさん:2009/05/21(木) 15:29:42
Luaの向上心のなさは最低レベルだから
宗教論争の火種になりそうな「改良」は、いくら提案してもむだだと思う。
969デフォルトの名無しさん:2009/05/21(木) 22:07:43
-- は伝統的な構文だからもっと賢いエディタを使えばよろし
970デフォルトの名無しさん:2009/05/21(木) 23:01:14
>>968
向上心のなさ、というか後方互換性が最大限に考慮されている気がする。
だから、商用プロダクトにも安心して採用できるんだろうけど。

最近、web周りでRubyとかRailsとかも使っているんだが
バージョン上がると全然違う挙動とか、書き方換わったりするのがザラだったりするんだが、これが結構キツイ
書籍が出ても、すぐ陳腐化しちゃったり…書籍の日本語訳が出たころには、次のかなり変わったバージョンがなんて
(Ruby 1.8はいいんだけど、Railsは本当にヒドイw
しかも次期バージョンで他のフレームワークと統合されるのが決定しててちょオマ…)
971デフォルトの名無しさん:2009/05/21(木) 23:49:52
//でコメントか。
AngelScriptの出番だな!
972デフォルトの名無しさん:2009/05/21(木) 23:57:55
いやさ、エディタにあわせてライブラリ諸々変更なんて
誰も本気で言わないから
973デフォルトの名無しさん:2009/05/22(金) 00:29:20
つーかそんな程度もカスタマイズできないエディタを持っていることと
そんな程度も我慢できない根性でLuaを選んだ自分の浅はかさを呪うがいい
974デフォルトの名無しさん:2009/05/22(金) 09:56:26
我慢しないで、カスタマイズができる「普通の」テキストエディタを使ってください
975デフォルトの名無しさん:2009/05/22(金) 12:52:22
自分は普通にエディタ使うけど、客が使ってくれるとは限らないじゃない。
メモ帳で開けないから、設定ファイルの拡張子は xml じゃなくて txt にしてくれと言われたのに。
976デフォルトの名無しさん:2009/05/22(金) 12:58:22
メモ帳で開くような設定ファイルを XML にする時点で仕様バグといってもいい。まじで。
977デフォルトの名無しさん:2009/05/22(金) 13:02:46
それは拡張子xmlをメモ帳に関連付けるだけで良かったんじゃないか
978デフォルトの名無しさん:2009/05/22(金) 13:33:11
細かく設定したいから、可能な限り設定項目多くしてくれといわれたので、
ini形式よりもxmlのほうが楽だったんだよね。

メモ帳に関連付けるだけで終わりだし、そもそもxmlエディタいれればそれで終わりなのに。
979デフォルトの名無しさん:2009/05/22(金) 14:35:22
xmlなんかは1行目に文字コードセットが定義されているから、
下手にメモ帳で開いて保存すると、文字コード変わっちゃうしメンドクサイことになりますよね
あと、xmlはMSからエディタ出てるけど微妙に使いづらいのが難点

個人的に、スクリプト言語で使うオススメの設定フォーマットはJSONだと思う
980デフォルトの名無しさん:2009/05/22(金) 14:37:08
素人さんにさわらせる場合は CSV 以上のものは使っちゃダメだってのが経験則
981デフォルトの名無しさん:2009/05/22(金) 14:41:20
>>980
同感ですな
xmlは素人には無理
フォーマット決めうちなtxtか、ini程度でokな気がする
982デフォルトの名無しさん: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デフォルトの名無しさん:2009/05/22(金) 17:09:08
>>982
Lua はオブジェクトを直接C側で参照する機構を持たない。よって単純には出来ない。

一般的には luaL_ref を使ってオブジェクトのリファレンス(絶対重ならないint値)をとって、
それをつかってレジストリテーブルにつっこんでおいて、必要になったらそのリファレンスを
つかってレジストリテーブルから引っ張り出してくる、という手法がとられる。

そんなややこしいのはいやじゃって人は、リファレンスを C側で保持できる squirrel オススメ
984デフォルトの名無しさん:2009/05/22(金) 17:58:18
いまのプロジェクトにはC縛りがあるのでC++なsqurrelはダメなんです。
luaL_ref が一番素直そうなのでそれでやってみます。どうもありがとう。
985デフォルトの名無しさん:2009/05/23(土) 00:58:12
SquirrelってC++だっけ?
bindは確かにC++だが、直叩きだったらCの範疇でいけたような・・・
986デフォルトの名無しさん:2009/05/23(土) 01:07:48
squirrel のソース自体は c++ だよ。
class でなくて struct なのは趣味かね。

ただ、インターフェース的には全部C合わせなので、普通にリンクして使える。
例外とかも全く使ってないから問題になるところはどこにもない。
プロジェクトが C縛りってのがいまどきだと意味不明だねぇ
987デフォルトの名無しさん:2009/05/23(土) 08:11:35
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

988デフォルトの名無しさん:2009/05/23(土) 09:07:00
テーブルAのメソッドBを引数Cで呼んで戻り値D, Eを得たいんだけど、

// スタック初期化
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で返した値が入らないんだけど、どうしてですか???

989デフォルトの名無しさん:2009/05/23(土) 09:35:28
最初に lua_getglobal(L, "A") したときのAがスタックに残ってる。
lua_gettable(L, -2) の後に lua_remove(L,-2) を入れるか、
その後の lua_getglobal(L, "A") を消せばいいと思うよ
990デフォルトの名無しさん:2009/05/23(土) 11:43:43
>>989 後者の方法だと self が消えない?
991デフォルトの名無しさん:2009/05/23(土) 22:44:35
>>986
C++がぜんぜんわからないってのがいまだに上にいたりするからな…
自分がそういう上司に当たって死にかけてからもうずいぶんになるが、
いまだにそういう人はちょくちょく見かける。
992デフォルトの名無しさん:2009/05/23(土) 22:52:55
CとC#しか仕事で使ってません
てかつかえません
サーセン
993デフォルトの名無しさん:2009/05/24(日) 03:45:08
>>984
Cオンリーなら、
// 一行コメント
も使っちゃダメなんだろうな、大変だな。
994デフォルトの名無しさん:2009/05/24(日) 04:28:06
C99
995デフォルトの名無しさん:2009/05/24(日) 04:37:28
C++ダメなプロジェクトが、C99を(ry
996デフォルトの名無しさん:2009/05/24(日) 05:00:50
MSVCがC99に準拠することは今後も無いんだろうな
//は使えるけど
997デフォルトの名無しさん:2009/05/24(日) 11:00:21
うめ
998デフォルトの名無しさん:2009/05/24(日) 11:29:17
次スレ立ってないのに埋めんなw
テンプレに、大きな変更ないよね?
999デフォルトの名無しさん:2009/05/24(日) 21:29:00
1000デフォルトの名無しさん:2009/05/24(日) 21:29:53
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。