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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
http://wikiwiki.jp/lua/

その他の参考URLは>2から

■前スレ
【Lua】組み込み系言語総合 その5【Squirrel】
http://toro.2ch.net/test/read.cgi/tech/1321063450/
■過去スレ
その4 http://hibari.2ch.net/test/read.cgi/tech/1301414458/
その3 http://hibari.2ch.net/test/read.cgi/tech/1272643397/
その2 http://pc12.2ch.net/test/read.cgi/tech/1243210301/
その1 http://pc12.2ch.net/test/read.cgi/tech/1205208141/
プログラミング言語 Lua
その3 http://pc11.2ch.net/test/read.cgi/tech/1160799232/
2デフォルトの名無しさん:2013/03/10(日) 15:12:03.71
3デフォルトの名無しさん:2013/03/10(日) 15:15:41.30
■関連してるかもしれないスレ
Io Language
http://hibari.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 デス 4
http://toro.2ch.net/test/read.cgi/tech/1325448978/
各種ライブラリ紹介スレ2(ゲ制作)
http://pc11.2ch.net/test/read.cgi/gamedev/1177886529/
Eclipse統合M34【Java/C++/Ruby/Python/Scala】
http://toro.2ch.net/test/read.cgi/tech/1361510049/
「コンパイラ・スクリプトエンジン」相談室15
http://hibari.2ch.net/test/read.cgi/tech/1296214398/
Garbage Collection (GC)について語るスレ(DAT落ち)
http://pc11.2ch.net/test/read.cgi/tech/1141646850/
4デフォルトの名無しさん:2013/03/10(日) 15:18:19.66
誰も立てないから同じテンプレで立ててみた
いつ立てるの?今でしょ!
5デフォルトの名無しさん:2013/03/11(月) 00:44:45.26
6デフォルトの名無しさん:2013/03/11(月) 01:15:20.59

次スレは>>980あたりが立てればいいか?
7デフォルトの名無しさん:2013/03/11(月) 09:56:54.76
AngelScript|Д`)<新スレ乙
8デフォルトの名無しさん:2013/03/11(月) 18:39:51.97
LuaJIT 2.0.1
Update 2013-03-08: Please apply Hotfix#1 to the 2.0.1 download.
9デフォルトの名無しさん:2013/03/13(水) 21:01:52.29
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ
10デフォルトの名無しさん:2013/03/19(火) 08:31:39.53
Programming in Lua 第3版おめ
11デフォルトの名無しさん:2013/03/19(火) 20:43:32.77
いつ?
12デフォルトの名無しさん:2013/03/19(火) 20:54:19.77
なぜluaを使うのですか?
13デフォルトの名無しさん:2013/03/19(火) 21:21:41.59
>>12
小さくて密度の高い事は美しいことだから。
14デフォルトの名無しさん:2013/03/19(火) 23:18:07.76
スタックダンプが快感
15デフォルトの名無しさん:2013/03/20(水) 05:44:19.66
テーブルの威力がすごすぎるから
16デフォルトの名無しさん:2013/03/20(水) 07:12:07.39
めたたbぇ
17デフォルトの名無しさん:2013/03/20(水) 09:54:07.19
luaを使うことを強いられているんだ!
18デフォルトの名無しさん:2013/03/20(水) 14:50:07.03
luaにはC#のLINQやPythonのリスト内包表記は無いんですか?
19デフォルトの名無しさん:2013/03/22(金) 15:29:50.19
metatableってクソじゃないか?
コードを難解にするだけじゃん
20デフォルトの名無しさん:2013/03/22(金) 17:52:56.00
確かにリスト内包表記は可読性を著しく損なう糞だな。
21デフォルトの名無しさん:2013/03/22(金) 19:55:31.63
>>20
あれほど簡潔なものはないとおもうが?
22デフォルトの名無しさん:2013/03/22(金) 20:16:28.69
論点をずらすなよ
23デフォルトの名無しさん:2013/03/22(金) 21:49:15.12
metatableはクソって話だったな
24デフォルトの名無しさん:2013/03/22(金) 23:37:53.28
めたたbぇprpr
25デフォルトの名無しさん:2013/03/23(土) 00:31:02.17
たとえば DATETIME というクラスを定義したときに
演算子をメタテーブルで与える。
これはC++のoperatorとかRubyの def 演算子()
に該当するなんのへんてつもないただの定義でないのん?
26デフォルトの名無しさん:2013/03/23(土) 00:32:36.87
そもそもoperator再定義自体が下品で破廉恥な行為だ
27デフォルトの名無しさん:2013/03/23(土) 00:53:51.29
せやな
28デフォルトの名無しさん:2013/03/23(土) 09:28:32.81
確かに
29デフォルトの名無しさん:2013/03/23(土) 17:16:41.74
リスト内包表記はいいものだ
30デフォルトの名無しさん:2013/03/23(土) 17:50:15.62
あっそ
31デフォルトの名無しさん:2013/03/23(土) 19:47:34.80
Luaにはなぜないのだろうね
32デフォルトの名無しさん:2013/03/23(土) 21:38:19.50
クロージャとコルーチンで同じことできるし…
33デフォルトの名無しさん:2013/03/24(日) 09:41:18.14
内包表記のためにそんなもん使うのは大袈裟だろ
34デフォルトの名無しさん:2013/03/24(日) 16:32:17.84
内包表記っぽいものを作るのにコルーチンは使わんだろ
generatorじゃないんだから
35デフォルトの名無しさん:2013/03/24(日) 16:35:10.57
pythonはジェネレーターだよ
36デフォルトの名無しさん:2013/03/24(日) 16:48:46.24
いいね
37デフォルトの名無しさん:2013/03/24(日) 17:42:15.18
>>35
ん?
pythonの内包表記は即座にリストとして展開されるよ
[ x ** 2 for x in range(10) if x%2 == 0 ] みたいに角かっこで書くやつね
( x ** 2 for x in range(10) if x%2 == 0 ) みたいに丸かっこで書くとgenerator式になる
38デフォルトの名無しさん:2013/03/24(日) 17:46:46.83
Luaは関数の末尾呼び出しを最適化してくれるのがいいね
39デフォルトの名無しさん:2013/03/24(日) 18:13:24.43
そんなんどこでもやってますよ・・?
40デフォルトの名無しさん:2013/03/24(日) 18:34:00.43
JVM!JVM!
41デフォルトの名無しさん:2013/03/24(日) 19:27:34.14
Luaはとにかく組み込みやすいのがいい。
逆に言えばLuaだけで何でもできると思ってる奴はアフォ
42デフォルトの名無しさん:2013/03/24(日) 20:05:41.56
メタテーブルとcoroutineもすき
43デフォルトの名無しさん:2013/03/24(日) 20:12:10.70
>39
関数型言語では当たり前だけど、pythonとかメジャーなスクリプトではスタックがあふれるだろ?
44デフォルトの名無しさん:2013/03/24(日) 20:15:13.57
単なる末尾呼び出しの最適化は最適化の中でも初歩の初歩だしやってないわけないと思う・・・んだけどなあ
45デフォルトの名無しさん:2013/03/24(日) 20:31:15.66
Luaで真似事しようとするとこんな感じ?

function LC(f)
 local t = {}
 for x in coroutine.wrap(f) do
  table.insert(t, x)
 end
 return t
end

-- rangeの実装は省略
local t = LC(function () for x in range(10) do coroutine.yield(x ^ 2) end end)
46デフォルトの名無しさん:2013/03/24(日) 20:32:18.04
最適化の理論とかはよく知らんけど
pythonの関数呼び出しは単純にC言語のコールスタックに依存してるので、どんどん積み上がっていくよ
47デフォルトの名無しさん:2013/03/24(日) 20:33:56.31
>>45
これはキモイな
やはりpythonには勝てないか
48デフォルトの名無しさん:2013/03/24(日) 20:43:35.17
Pythonはlambdaとdefが異なるのがガン。
Luaは区別無し。名前の無いfunctionがlambda
49デフォルトの名無しさん:2013/03/24(日) 20:57:01.13
>45
やるとしたらそんな感じだろうね
でも、内包表記って言うよりはmapみたいな雰囲気になっちゃうよね

内包表記って数学の集合みたいに宣言的に記述できるってところがメリットのひとつだからなぁ
数学だとこんな感じ? S = { x^2 | x ∈ N, x < 10, x mod 2 = 0 }
やっぱり言語としてサポートしないとつらそう
50デフォルトの名無しさん:2013/03/24(日) 21:05:14.50
>>48
すごく同意
pythonのlambdaは中途半端だね

Luaは文法がコンパクトですっきりしていて、すごく便利って感じではないが
でもコルーチンをサポートしてたり、末尾呼び出し最適化してたりで
ちょうどいい塩梅
51デフォルトの名無しさん:2013/03/24(日) 21:14:17.85
しかし内包表記がないと一行が数倍にふくれあがるし見た目も悪い
52デフォルトの名無しさん:2013/03/24(日) 21:27:46.25
単なるシンタックスシュガーだからパーサを弄ればできそうだけど
lispのリーダーマクロっぽいのほしいな
53デフォルトの名無しさん:2013/03/24(日) 21:31:07.63
有志でlua#つくろうず
54デフォルトの名無しさん:2013/03/24(日) 21:33:14.06
mrubyでいいじゃん
もっと欲張るならPythonも比較的組み込みやすい
55デフォルトの名無しさん:2013/03/24(日) 21:59:26.75
mrubyの実行速度ってどんなもん?
なおrubyも内包表記はない模様
56デフォルトの名無しさん:2013/03/24(日) 22:59:45.74
Luaとの比較だと、スクリプト自体の実行速度はちょっと遅めだけど誤差レベル
実行時のメモリのフットプリントが数倍くらい多い
APIがスタックベースじゃないため拡張は幾分書きやすいけど
そのせいでネイティブとの行き来が増えると実行コストは大きくなる傾向がある
JITはまだ実用レベルじゃない

みたいな感じ(俺調べ)

Luaに取って代わるかは知らんけど、二番煎じ処理系(Sq*とかxta*とか)は駆逐できそうな感じではある
57デフォルトの名無しさん:2013/03/25(月) 00:06:08.81
mrubyの問題は .cのソースコードの行数でLuaの1.5倍ある。
1万6千行に対し二万四千行。
んで、LuaのソースコードはCでもC++でも
どちらでもコンパイル可能なので
Luaの関数の内部からC++のライブラリが使える
(ただしthrowが外側に貫通してはいけないけどね)
yaccとかも不要。
なんというか、最近のbisonとかは内部でm4使ってるとか
いろいろとめんどくさい仕様に改悪されてるから助かるw
58デフォルトの名無しさん:2013/03/25(月) 03:30:49.12
Luaも確かv3.0くらいまではyacc使ってたんだけどね

今のパーサはシンプルな手書き再帰下降でLL(2)だから
内包表記の対応は難しいんじゃないかな
59デフォルトの名無しさん:2013/03/25(月) 07:51:15.04
内包表記みたいなのの解析は、luaの場合パーサがLLかLRかよりも
構文木を介さず直接コード生成してるところが逆にネックになりそう
60デフォルトの名無しさん:2013/03/25(月) 17:54:00.04
Luaのソースコード見てみたら他の言語に比べて超短いな
全部でこれだけかよってびっくりしたわ
これなら個人で解析出来るな、今日から読んでみるわ
61デフォルトの名無しさん:2013/03/25(月) 21:59:44.09
パーサいじるんなら
ついでに「:」か「.」を別の記号に変えたくなるけどね
62デフォルトの名無しさん:2013/03/26(火) 01:13:30.00
metaluaみたいにluaのパーサー上書きする方法はあるみたいだぞ。
luajitでは動かないみたいだが。
63デフォルトの名無しさん:2013/03/27(水) 21:52:23.47
パーサー弄ってわざわざ「->」演算子を追加した事があるな俺
64デフォルトの名無しさん:2013/03/28(木) 08:20:38.05
記念していつもの
lua-5.2.2
http://www1.axfc.net/uploader/so/2847097
65デフォルトの名無しさん:2013/03/28(木) 08:36:16.34
おめ
66デフォルトの名無しさん:2013/04/02(火) 21:46:57.64
AngelScript|Д`)<AngelScript2.26.2記念カキコ
67デフォルトの名無しさん:2013/04/02(火) 22:04:23.95
おめ
68デフォルトの名無しさん:2013/04/02(火) 22:09:38.32
>>64

依存関係がMSVCRT.DLLってことはMingW?
69デフォルトの名無しさん:2013/04/02(火) 22:16:19.20
いいえ
70デフォルトの名無しさん:2013/04/02(火) 22:26:09.11
んん VC6?
71デフォルトの名無しさん:2013/04/02(火) 22:27:32.44
いいえ
72デフォルトの名無しさん:2013/04/02(火) 23:20:37.81
てかコンパイル環境とか書いてないと
DLLって公開する意味あるの?
不整合とか気にするジャン。
73デフォルトの名無しさん:2013/04/02(火) 23:24:16.56
いいえ
74デフォルトの名無しさん:2013/04/03(水) 00:02:33.52
そうすっと たとえばEXEのランタイムと
DLL側のランタイムでデータフォーマットや
整列条件違ったら困ったことにならないの?
75デフォルトの名無しさん:2013/04/03(水) 00:15:02.91
そういえばSquirrelだけ記念カキコがない
76デフォルトの名無しさん:2013/04/03(水) 00:31:33.85
はい
77デフォルトの名無しさん:2013/04/03(水) 01:20:18.06
Luaの場合はヘッダに構造体定義してるのがlua_Debugくらいだし
DLLの境界問題出にくいけどな

ちゅーかどこぞの馬の骨が捨て置いたバイナリに喰いつく暇があったら
自分のプロジェクトにLuaのソースコード突っ込んだ方が建設的かと
78デフォルトの名無しさん:2013/04/03(水) 01:22:27.16
はい
79デフォルトの名無しさん:2013/04/03(水) 20:17:59.94
Luaはなぜ早いのですか?
中の妖精さんと高額契約したのですか?
80デフォルトの名無しさん:2013/04/03(水) 21:11:29.32
       /|
       |/__
       ヽ| l l│<ハーイ
       ┷┷┷
81デフォルトの名無しさん:2013/04/03(水) 21:37:47.94
コアにVMを置いて中間コードを実行していること
(この方式は他も追従し追いつかれつつある)
VMがレジスタマシンであること
設計の合理性
(整数演算の切捨てなど、ボトルネックの分析が良かった)
JITなど速い方式の実装も行われている

かな
82デフォルトの名無しさん:2013/04/03(水) 21:55:44.63
整数演算がボトルネックというのが分かりません
doubleのほうが百万倍遅いじゃないですか気持ち的に
83デフォルトの名無しさん:2013/04/03(水) 22:05:29.72
うん、だからその理屈だと整数演算を切り捨ててはいけないんだけど
Luaはそれを切り捨てたのよ。
それでもベンチマーク成績は高かった。
つまり、演算以外の部分が問題だったわけね。
84デフォルトの名無しさん:2013/04/03(水) 22:11:56.98
doubleそれほど遅くないよ。割り算を除けばせいぜい2倍位じゃないの?
intとdoubleの変換が遅かったりして。
85デフォルトの名無しさん:2013/04/03(水) 22:14:30.36
doubleの処理は、今時のそこそこのデスクトップマシンと、
そこいらへんにたくさんあるARMとで、天と地ほどの差があるなw
86デフォルトの名無しさん:2013/04/03(水) 22:16:23.31
整数演算がないと困るのはビット演算
が5.2でライブラリが追加されたからそれもほぼ解消
87デフォルトの名無しさん:2013/04/03(水) 22:19:25.09
>>83
浮動小数演算がボトルネックにはならなかったって話と、整数演算が
ボトルネックだったって話は関係ないじゃん。
88デフォルトの名無しさん:2013/04/03(水) 22:28:42.34
その辺のことはこのあたりかな
http://lua-users.org/wiki/FloatingPoint
89デフォルトの名無しさん:2013/04/03(水) 22:31:35.75
そもそも誰も「整数演算がボトルネック」なんて話してないし
90デフォルトの名無しさん:2013/04/03(水) 22:52:19.88
整数演算がボトルネックといっているのではなく、
浮動小数点演算の遅さは実は問題ではなかったという判断
だから整数演算いらんというデザイン
91デフォルトの名無しさん:2013/04/03(水) 22:53:39.83
速くなればなるほど問題が表面化するというわけだな
92デフォルトの名無しさん:2013/04/03(水) 23:01:32.81
JIT版の実装が良くなればたぶんね
93デフォルトの名無しさん:2013/04/03(水) 23:14:14.82
>>89
つまり、整数演算切り捨てたこととLuaが速いことは関係ないってことだろ。
>>81はボトルネックと言っているが。
94デフォルトの名無しさん:2013/04/03(水) 23:25:40.76
>>81はLuaが速い一因として設計の合理性を挙げていて
整数演算がボトルネックとは言ってないし
>>83>>90のフォローもそれを補強していると思うんだが
読解力がないのならしょうがない
95デフォルトの名無しさん:2013/04/03(水) 23:31:28.29
言語仕様そのものが速さ目的で設計されてるってのもあるんでないか
ローカル変数をわざわざ指定しなきゃならんとか
書く側からすれば面倒な仕様だけど多分これだとGCがやりやすいんだろうなとか
ソース見たわけじゃないから分からんけどね
96デフォルトの名無しさん:2013/04/04(木) 20:48:23.65
AngelScript|Д`)<みんなでtemplate触ろうぜ
97デフォルトの名無しさん:2013/04/04(木) 20:55:01.09
Squirrel |Д`)<Squirrel 3.0.4記念カキコ
98デフォルトの名無しさん:2013/04/05(金) 20:50:30.10
Squirrel更新か!?
と思ったのに!
99デフォルトの名無しさん:2013/04/10(水) 01:40:40.27
AngelScriptにDelegate対応が来てた
100デフォルトの名無しさん:2013/04/12(金) 20:39:39.69
今度のはfuncdefとかの関数ポインタが無くなってデリゲートに置き換わるのか。
101デフォルトの名無しさん:2013/04/13(土) 06:03:24.53
どんどん実務向きじゃなくなってくな
102デフォルトの名無しさん:2013/04/13(土) 10:14:35.22
出たよ実務厨
103デフォルトの名無しさん:2013/04/13(土) 12:50:15.63
AngelScript、C++もどきからC#もどきになっていっちゃうのかな
104デフォルトの名無しさん:2013/04/13(土) 16:49:05.32
同じC#もどきならTypeScript使いたい
JSとの互換性をある程度制限したサブセットならluaのVMで動かせるんじゃないか
105デフォルトの名無しさん:2013/04/13(土) 21:56:15.10
V8じゃダメなのかな。
106デフォルトの名無しさん:2013/04/13(土) 23:11:15.34
V8ってサイズでかいし不安定だし組み込むのめんどくさい
107デフォルトの名無しさん:2013/04/13(土) 23:24:25.01
エンジンだけに
108デフォルトの名無しさん:2013/04/14(日) 08:39:34.90
http://www.infoq.com/jp/news/2013/04/eclipsecon-2013
EclipseのM2M開発環境

> EclipseはArduinoとRasberry Piデバイスの開発のチュートリアルを提供している。
> これには組み込みLuaランタイム(Mihini)とLuaの開発環境(Koneki)のセットアップ方法も含まれている。

Luaがセンサーネットワークの世界に旅立っていった。
109デフォルトの名無しさん:2013/04/14(日) 08:43:24.10
栗鼠月天使
110デフォルトの名無しさん:2013/04/14(日) 10:19:21.31
ぅあってお仕事ではどんな場面でちゅかうんですか?
111デフォルトの名無しさん:2013/04/14(日) 10:23:03.29
ぅあきねんぱぴこ
112デフォルトの名無しさん:2013/04/15(月) 14:31:12.59
AngelScriptのデリゲートって
オブジェクトのインスタンスとメソッドから関数ポインタを作る機能のようだ
普通の関数もクラスメソッドも関数ポインタに代入できる

3.0では値型のオブジェクトは使えなくなって
参照型のオブジェクトのみになるらしい
そうなるといっそうC#やJavaっぽくなる
113デフォルトの名無しさん:2013/04/17(水) 19:02:58.71
地道にブログの記事を参考にさせていただいていますが(感謝しております)
大々的にLuaBindのことを日本語で語ってるような場所ってないですかね?
114デフォルトの名無しさん:2013/04/21(日) 06:56:41.22
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン
115デフォルトの名無しさん:2013/04/24(水) 18:36:10.04
なんかみっけたので

MarmaladeがRADツールMarmalade Quickを正式リリース 2013-02-11 14:14
ttp://www.madewithmarmalade.com/node/60359
またMarmalade Quickは“ZeroBrane Studio” IDEと統合されており、Luaスクリプトの容易なオーサリング、デバッグが可能です。
116デフォルトの名無しさん:2013/04/30(火) 22:06:32.31
squirrel で Direct3D の Vertex みたいな、
状況に応じて構造体の中身が変わる物を
squirrel から C++ 側に送りたい時って
何かいい方法はあるのでしょうか。
ディフューズ色が DWORD なのが問題なのですよね…。
他は殆どが FLOAT なのに…。
117デフォルトの名無しさん:2013/05/01(水) 02:36:38.25
JSの世界はブラウザの中で戦争していてるせいか、FFI使えないからGCやJIT切ってVM上にアセンブラ載せてみたりなんか凄いね。
http://www.publickey1.jp/blog/13/asmjsjavascript.html
118デフォルトの名無しさん:2013/05/01(水) 02:41:19.59
まあブラウザ上でLuaというかHTMLにLuaを埋め込むとかよくある中二病の扉ががが
119デフォルトの名無しさん:2013/05/01(水) 15:59:59.18
>>116
普通にフラグ判定して値を代入しなおすだけではないの?
float も dword も4byte で領域的には同じだからあとは
解釈次第だと思うんだけど何にはまってるんだろう
120デフォルトの名無しさん:2013/05/01(水) 16:51:43.21
>>116
バインダはSqrat?
121デフォルトの名無しさん:2013/05/01(水) 22:59:00.95
>>119 >>120 すみません、確かにそうですね。 メモリ確保して memcpy でコピーする事にしました。

それと追加で質問なのですが、 C++側でSqrat::Classで登録したクラスを、 SquirrelからC++関数の呼び出しの引数に指定した際に、 C++関数内からクラスの実体を得る方法はあるのでしょうか?

RootTable(vm).GetSlotを使えばメンバ関数・変数にはアクセス出来るのですが、 クラスのポインタを取得して普通のC++のクラスのように扱えたらなと思ったので。
122デフォルトの名無しさん:2013/05/02(木) 23:32:28.39
自己解決しました、何度も失礼しました
123デフォルトの名無しさん:2013/05/03(金) 02:38:40.28
5.2.2きた
124デフォルトの名無しさん:2013/05/03(金) 14:30:49.45
>>121
AngelScript|Д`)ノ<きたわよ

そういうのはAngelScriptでやると簡単。
125デフォルトの名無しさん:2013/05/03(金) 14:40:55.38
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン
126デフォルトの名無しさん:2013/05/03(金) 18:36:39.38
来ると思ってました
127デフォルトの名無しさん:2013/05/08(水) 22:07:08.55
luaでバインダを使わずにC++クラスのメンバ変数をバインドする
方法を解説してる所ってありませんか?
メンバ関数経由でset getするのしか見つからず…
128デフォルトの名無しさん:2013/05/08(水) 23:56:32.38
バインダのソース読めばいいのでは

ラッピング関数作ってると思うけど
129デフォルトの名無しさん:2013/05/09(木) 00:59:43.08
__index/__newindexメタメソッドを関数にして、その中でメンバ変数にバインドしたいキーが指定されたら
対応するC++のメンバ変数をそのまま返す/設定するってのできるっちゃできるけどね

メンバ関数でやるより逆にコストかかる仕組みになるし多値返しできないしで
ぶっちゃけ言語サポート無しに無理するもんじゃねーなという結論に達した
130デフォルトの名無しさん:2013/05/09(木) 05:31:19.08
131デフォルトの名無しさん:2013/05/09(木) 05:46:34.65
ぅあ?
132デフォルトの名無しさん:2013/05/09(木) 18:39:34.03
>>127
AngelScript|Д`)ノ<きたわよ
133デフォルトの名無しさん:2013/05/09(木) 18:43:49.69
luaは永遠に不滅です!
134デフォルトの名無しさん:2013/05/09(木) 22:03:41.56
>>128-129
なるほど、やはりその方法しかないのですね。
教えて頂きありがとうございました。
135デフォルトの名無しさん:2013/05/10(金) 21:30:02.44
AngelScript|Д`)<AngelScript2.26.3記念カキコ
136デフォルトの名無しさん:2013/05/10(金) 22:11:42.38
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン
137デフォルトの名無しさん:2013/05/16(木) 18:07:30.53
Squirrelでsq_setnativeclosurenameでバインドしたクラスの
メンバ変数にアクセスする場合の話なのですが、
obj.menba は __get や __set でアクセスすればいいのですが、
obj.menba.var という風なメンバにアクセスしようとしたら、
[the index 'var' does not exist] というエラーが出てしまいました。
こういった使い方をしたい場合はどうやって登録すればいいのでしょうか。
138デフォルトの名無しさん:2013/05/17(金) 00:17:43.29
>>137
AngelScript|Д`)ノ<きたわよ

AngelScriptはその辺得意だよ。
139デフォルトの名無しさん:2013/06/08(土) 18:40:11.38
Game Monkey Script ってどうなんでしょう
ttp://www.gmscript.com/

Q-Games の新作 PixelJunk, Inc. で使われているそうな…
ttp://pixeljunk.jp/inc/%E4%B8%BB%E3%81%AB%E7%8C%BF%E3%81%A8%E5%83%8D%E3%81%84%E3%81%A6%E3%81%BE%E3%81%99%E3%80%82/
140デフォルトの名無しさん:2013/06/08(土) 19:25:57.51
なんか懐かしい名前だ
141デフォルトの名無しさん:2013/06/08(土) 19:42:34.92
GameMonkeyの名前自体は1スレ目からたまに挙がってるけど、踏み込んだ話題は…
142デフォルトの名無しさん:2013/06/08(土) 20:01:20.72
>>139
どう「いい」やつが欲しいのかによる・・・んじゃね
143デフォルトの名無しさん:2013/06/08(土) 20:49:05.20
CEDEC2010でGameMonkeyScript(とXtal)を使ってゲーム作った人らが講演してる。

その資料がここにある
ttp://cedil.cesa.or.jp/session/detail/301
無料だが登録が必要

日本語だとこれ関係しか見当たらぬ…
144デフォルトの名無しさん:2013/06/09(日) 15:47:26.83
GameMonkeyってバンナムが採用してなかったっけ
145139:2013/06/10(月) 11:39:34.51
>>140-143 ありがとうございます。

>>144
>>143 がバンナムの人の講演記事で
業務用ゲーム機で利用した例が紹介されてました。
146デフォルトの名無しさん:2013/06/11(火) 22:38:34.29
以前スレで出てたスクリプト言語の比較してたサイトで、GameMonkeyは結構いい性能叩き出してた気がする。
147デフォルトの名無しさん:2013/07/01(月) NY:AN:NY.AN
decoda便利すぎ
148デフォルトの名無しさん:2013/07/01(月) NY:AN:NY.AN
>>147
AngelScriptにもそういうのが欲しい…
デバッグ用の情報取ってきたりするのは簡単なんだけど
149デフォルトの名無しさん:2013/07/02(火) NY:AN:NY.AN
asPEEKは?

http://www.angelcode.com/angelscript/resources.html

asPEEK - Remote debugger
saejox has implemented a remote debugger for AngelScript projects. By integrating asPEEK into your application you will be able to use an ordinary web browser to remote debug your scripts with a nice graphical interface.

Download asPEEK from Bitbucket

Note: Code uses boost and websocket
150149:2013/07/02(火) NY:AN:NY.AN
asにブラウザで動くリモートデバッガがあるのは知っていたけど使ったことなかった
151デフォルトの名無しさん:2013/07/05(金) NY:AN:NY.AN
luabind使ってC側の型とか関数とか登録しまくってたら、
lua_Stateの使用メモリがKB単位でモリモリ増えてって
消費メモリ量が無視できない量になりつつあるんだけどもそういうもんなの?
152デフォルトの名無しさん:2013/07/06(土) NY:AN:NY.AN
とりあえずソースぐらいは出しましょう。
他の言語も含め生でゴリゴリと各種バインダの差異など含めベンチとりましょう。
簡単なものでいいですよ。
お題が楽しければ暇な人も参戦し実のある内容になるでしょう。
153デフォルトの名無しさん:2013/07/06(土) NY:AN:NY.AN
luaのバインダって結構あるんだね。
知らないだけでtolua++やluabindより良いバインダが存在しているような気がする。
154デフォルトの名無しさん:2013/07/11(木) NY:AN:NY.AN
>>149
ダウンロードしたけど、Demoのやつの動かし方が分からなかった…
155デフォルトの名無しさん:2013/07/12(金) NY:AN:NY.AN
昔、Pascalのbegin/endを、C言語で#defineしようとした人がいたらしい
今度は、mallocとかfreeとかをスクリプト言語にバインドする人が出てくる
強力なバインダは良いバインダではない
弱い方が良い
156デフォルトの名無しさん:2013/07/12(金) NY:AN:NY.AN
何を言っているのかよくわからんが、
#define begin { は、以下のような奴だな。
ttp://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh/mac.h
ttp://www.pro.or.jp/~fuji/computerbooks/c/c.modula2.html

なんか全然違う話だと俺は思うのだが
157デフォルトの名無しさん:2013/07/12(金) NY:AN:NY.AN
よくわからん側の主導で推進してるっぽいのが不安だ
158デフォルトの名無しさん:2013/07/12(金) NY:AN:NY.AN
>>155
>昔、Pascalのbegin/endを、C言語で#defineしようとした人がいたらしい

マクロの使い方としてK&Rにも書かれてる方法であり、取り立てて驚くような話ではない。
159デフォルトの名無しさん:2013/07/12(金) NY:AN:NY.AN
条件付きにて同意する
160デフォルトの名無しさん:2013/07/12(金) NY:AN:NY.AN
そもそもスクリプトでmallocやfreeを直接使うような事ってある?
161デフォルトの名無しさん:2013/07/13(土) NY:AN:NY.AN
Cの関数を忠実に再現するツールを使うと、スクリプトでmallocやfreeを使う事になる
忠実にしたくない場合はツールに丸投げできないと考えるのが自然
162デフォルトの名無しさん:2013/07/15(月) NY:AN:NY.AN
そういや、CriScriptって、今どうなってるんだろう?
163デフォルトの名無しさん:2013/07/15(月) NY:AN:NY.AN
>>162
CriScript作ってた人がgoogleかどっかに入ってプロジェクト終了、じゃなかったっけ
164デフォルトの名無しさん:2013/07/16(火) NY:AN:NY.AN
そこそこ良いものだったような気もするが、残念な話だな
165デフォルトの名無しさん:2013/07/26(金) NY:AN:NY.AN
Luaのコルーチンのように、スクリプト内で呼び出すと関数が終わるかSuspend(Luaだとyield)するまで実行して戻ってくるAngelScript用のコルーチンを作ってみたら、
自分のメソッドを呼び出すコルーチンをインスタンスとして持たせたら、循環参照が起こって解放されずにメモリリークに。

class&nbsp;A
{
coroutine&nbsp;c;

void&nbsp;coFunc()
{

Suspend();

}

void&nbsp;Init()
{

c.SetFunction(cFUNC(this.coFunc));

}

void&nbsp;Update()
{
c.Execute();
}
};

こんな感じでやると、cが循環参照になっちゃった。
166デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
あるある
その手の処理には弱参照が必要
167デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
AngelScript2.27.0のWorkInProgressに、「weak&nbsp;references」とかあるから、次のバージョンだと解決できそう。
168デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
AngelScript 2.27.0 is out - AngelCode - GameDev.net
http://www.gamedev.net/topic/645977-angelscript-2270-is-out/

・デリゲートを作ったりデリゲートの情報を取得できる
・関数の引数や戻り値がconst参照か調べられる
・GCが把握しているオブジェクトを列挙してパフォーマンス改善に役立てられる
・弱参照 スクリプトのクラスでもアプリケーションのクラスでも使える
169デフォルトの名無しさん:2013/07/29(月) NY:AN:NY.AN
Angelscriptは参照カウントとGCを併用しているから
一応GCフラグのあるクラスであれば、弱参照を使っていなくて循環参照になっても、最終的にGCで解放されるはずなんだが
弱参照を使っていればもっと早いタイミングで解放されるので使うといいと思ふ
170デフォルトの名無しさん:2013/07/31(水) NY:AN:NY.AN
AngelScript2.27.0でやってみたが、循環参照の問題解決できなかった。
弱参照やら

>・デリゲートを作ったりデリゲートの情報を取得できる

の機能を利用してみたがダメだった。
C++側でasIScriptFunctionを保持するやり方を間違えているのかも知れない。
171デフォルトの名無しさん:2013/08/06(火) NY:AN:NY.AN
AS、さらに調べてみたところ、

「スクリプト内のクラスAにC++側で定義したクラスBをメンバ変数として持たせて、Bのインスタンスに
this.〜でAのメンバ関数のdelegateを渡して保持する」

と循環参照が発生して解放されない、という状態になってるっぽい。

「AにBとスクリプト内のクラスCをメンバ変数として持たせて、Cのインスタンスのdelegateを渡して保持する」

場合は大丈夫っぽいんだが、さてどうしたものか。
172デフォルトの名無しさん:2013/08/07(水) NY:AN:NY.AN
いや、C++のクラスを弱参照かGCフラグに対応させろよ?
173デフォルトの名無しさん:2013/08/07(水) NY:AN:NY.AN
弱参照って何?
174デフォルトの名無しさん:2013/08/07(水) NY:AN:NY.AN
ぬるぽするかもしれない可能性が存在することが保障されてるぽ
175デフォルトの名無しさん:2013/08/07(水) NY:AN:NY.AN
>>172
一応、asBEHAVE_GET_WEAKREF_FLAGを使って弱参照にしてみたり、
asOBJ_GCつけてメソッド入れてやってみたんだけど上手く行かないんだ。
asIScriptFunctionが内部で持ってるデリゲート用のオブジェクトが上手く解放できないみたい。
176デフォルトの名無しさん:2013/08/08(木) NY:AN:NY.AN
コードも無いのに分からない

循環参照にはならない筈なのに解放漏れがあるならそれは
何処かで参照カウント減らして解放するのを忘れているだけなんじゃないか
としか言えない
177デフォルトの名無しさん:2013/08/08(木) NY:AN:NY.AN
 
\\
\\\
\  ∧_∧
   ( ´・ω・)
   G   と) ガッ >>174
    ヽ⌒)、 \人∧__∧
      ̄ (_) >`д´)')
         ∨つ   /
178デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
AngelScript 2.27.1 is here (so soon? yes)
http://www.gamedev.net/topic/646723-angelscript-2271-is-here-so-soon-yes/

バグフィックス
メモリフットプリントの減少
void expressionで関数の出力引数を省略できる
デフォルト引数を匿名に出来る
179デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
素人だけど勉強がてらにAngel Scriptの解説見てたらめっちゃコンパイル言語でワロタ
180デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
181デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
enum大好きな俺はAngelScriptも大好き。
182デフォルトの名無しさん:2013/09/01(日) 10:45:33.66
コード補完とか開発環境の恩恵受けられる組み込みスクリプトってある?
183デフォルトの名無しさん:2013/09/01(日) 12:16:25.91
開発環境の恩恵と言えば最近はJavaScript (V8)じゃないの?

ほとんどが動的型付けだから
コード補完の性能はどれも似たようなもの

むしろ使い慣れた開発環境・エディタが対応しているかの方が重要だと思う
184デフォルトの名無しさん:2013/09/01(日) 13:52:27.44
luaにはIDEがあるけど、他でも探せばあるんじゃないか
185デフォルトの名無しさん:2013/09/01(日) 15:20:57.01
>>182
VS&C#にC#だな。
186デフォルトの名無しさん:2013/09/01(日) 15:56:48.03
30億のデバイスで走るJavaを差し置いてC#が組み込み言語とか!

みたいなツッコミでOK?
187デフォルトの名無しさん:2013/09/01(日) 16:01:13.71
30億のデバイスでデバッグできるね(ニッコリ)

って感じでさらに脱線させればOK?
188デフォルトの名無しさん:2013/09/01(日) 18:35:17.50
なにがライトワンスランエニホェアだよ
絵空事ばかり
世迷い言に人々を巻き込みやがって
太平妖術だよ
189デフォルトの名無しさん:2013/09/01(日) 18:36:18.64
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン
190デフォルトの名無しさん:2013/09/01(日) 20:38:37.26
JavaScriptは言語仕様が黒魔術のようだ
191デフォルトの名無しさん:2013/09/02(月) 00:35:21.08
AngelScriptはほぼC++かC#なんで、C++やC#用の補完とか使えた気がする。
192デフォルトの名無しさん:2013/09/02(月) 22:27:39.45
SWIGってLuaでも使えたのか知らなかった
ラッパーとインタフェースの自動生成が捗る?
193デフォルトの名無しさん:2013/09/02(月) 22:41:22.04
そもそもSWIGで捗った記憶がない
最近のは知らんが
194デフォルトの名無しさん:2013/09/04(水) 16:57:01.01
SWIGだめなん?
195デフォルトの名無しさん:2013/09/04(水) 17:20:42.93
パターンファイル作ってクソ重いコンパイルでコケて修正して…
を繰り返してるうちに嫌になるな

生成されたシンボル名が1000文字突破してるの見て
めまいがしたのもいい思い出だ
196デフォルトの名無しさん:2013/09/04(水) 18:12:40.97
この手のタイプは元ソース次第だね
luabindより楽なケースもあればバインダ使わず生で書いたほうが楽なケースもある
その上で、SWIGを選択するような状況でダメだというなら
他の選択肢はtoluaぐらいしかない
で、SWIGとtoluaを比べると
冗長なのはデメリットだが依存せずピュアコードを吐くのはメリットなので好みの問題として
多言語対応でつぶしが効くという1点においてSWIGの勝ちかなと思うよ
197デフォルトの名無しさん:2013/09/10(火) 19:15:01.41
userdataってなんだ・・・
198デフォルトの名無しさん:2013/09/10(火) 19:36:31.38
好きなもの入れちゃっていいんだよ?
199デフォルトの名無しさん:2013/09/11(水) 08:36:58.96
ズブ…
200デフォルトの名無しさん:2013/09/11(水) 16:59:49.05
アーッ!
201デフォルトの名無しさん:2013/09/11(水) 22:45:42.73
UserDataは、スクリプトで操作したいオブジェクトのポインタとか入れるのが一般的かね。
202デフォルトの名無しさん:2013/09/11(水) 22:51:01.71
Cでやったほうが速いとか外部ライブラリ用の構造体へのポインタを突っ込んだり
203デフォルトの名無しさん:2013/09/11(水) 23:26:48.79
ゲームの殆どをAngelScriptで組み
時間のかかる処理だけをネイティブコードに
の方が開発しやすいかもしれない
204デフォルトの名無しさん:2013/09/11(水) 23:30:18.16
何と比較してだ
205デフォルトの名無しさん:2013/09/14(土) 03:21:57.79
横からだが、C++オンリーで組むのと比べて、って事じゃね
206デフォルトの名無しさん:2013/09/15(日) 07:46:57.16
スクワールはもういらんこなの?
207デフォルトの名無しさん:2013/09/15(日) 08:12:11.62
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
208デフォルトの名無しさん:2013/09/15(日) 12:52:09.81
Angelscript見てるとdllで良いんじゃないかと思えてくる
てかそういう用途としてdll使うのってもう流行ってないんかな?(昔のエロゲとか)
呼び出し元を変更したらコンパイルし直しになるのはスクリプトだって同じだし、バインダも必要ない。
もっぱらLGPLの回避法としてしか見なくなった
209デフォルトの名無しさん:2013/09/15(日) 13:28:21.98
ライターにC++で直接書けとでも?
210デフォルトの名無しさん:2013/09/15(日) 14:55:12.13
ライターにAngelScriptで直接書けとでも?
211デフォルトの名無しさん:2013/09/15(日) 16:54:49.61
何でAngelScriptなの
212デフォルトの名無しさん:2013/09/15(日) 17:45:32.19
目指してる、未来がちがうからでしょ
213デフォルトの名無しさん:2013/09/15(日) 21:06:15.98
C++ではコルーチンがなくてゲームに使うには困るかと思ったが
fiberやlongjmpを使ったら出来ない事はないな

だがライターにVisuaStudio入れてもらうとか出来ないだろ?
ライターには簡単にプログラムをインストール・実行できる環境が必要だ

プログラマーにも
・コンパイルから実行までが速い(実行前にネイティブコード生成とか最適化をしないから)
・リフレクションが使える
等のメリットはある

ラムダ式やデリゲートはC++11で使えることは使えるな
214デフォルトの名無しさん:2013/09/15(日) 22:55:54.12
スクリプトの場合、yieldやSuspendで途中で一時停止できるのはでかいと思うよ。
215デフォルトの名無しさん:2013/09/15(日) 23:44:33.85
コルーチンなんて
boost他、標準ライブラリオンリーのイディオムも腐るほどあるし
メリットが感じられない
216デフォルトの名無しさん:2013/09/16(月) 12:08:37.51
それよりGCが自動なところ
217デフォルトの名無しさん:2013/09/16(月) 16:39:52.89
Javaは一つのコードがあらゆる環境で動作する素晴らしい言語だった。
しかし、マイクロソフトが行ったCOM拡張によって互換性が失われ、パソコン用アプリが
スマホでは動かないといったトラブルが起こるようになった。
218デフォルトの名無しさん:2013/09/16(月) 16:50:37.98
C#とかの.NET系環境でのスクリプトっていうと
やっぱりIronPython/IronRubyとかになるんでしょうか?
できればLuaを使いたいのですが、LuaDowNetは随分長い間止まってますし

と質問しようと思って検索したら、AluminiumLua(2008年更新)ってのがあったので
これ試してから出直します。
すみませんでした。
ttps://github.com/chkn/AluminumLua
219デフォルトの名無しさん:2013/09/16(月) 16:52:25.96
2008年は誤りで、今現在もアクティブなプロジェクトでした
たびたびすみません
220デフォルトの名無しさん:2013/09/18(水) 12:01:03.07
C++ではヘッダーとソースそれぞれに関数宣言・定義を書かないといけないが
スクリプトだと一つのファイルに書ける
C++で何でもヘッダーに関数定義を書いたらコンパイル時間が大変な事になる
221デフォルトの名無しさん:2013/09/18(水) 12:09:19.32
そこかよ
222デフォルトの名無しさん:2013/09/18(水) 12:16:26.38
宣言と定義で分けたりせず
一つのファイルに書けてありがたいだろ?
223デフォルトの名無しさん:2013/09/18(水) 12:57:45.99
そのくらいなら JavaでもC#でもDでもできる
224デフォルトの名無しさん:2013/09/18(水) 13:45:40.90
全部C++で書くのでなければ別に良いんだけどな

Javaで書くとAndroidには移植しやすいかもしれないがiPhoneにはそのまま持っていけない
MonoはAndroid、iPhoneでも動くけど無料の開発環境なし

PCでも、未だにXPを使っている様な人はVMを入れていなかったり
その点スクリプト言語のVMは小さいから同梱しやすい

Dとか知らん!
225デフォルトの名無しさん:2013/09/18(水) 14:47:00.98
>>218
コミュニティの規模が小さいのでJScript一択
保守まで考えるとhackはproductとして採用できない
226デフォルトの名無しさん:2013/09/18(水) 22:41:41.90
>>225
Luaの方がスクリプトを書きなれているので、できればそっちを使いたいと思っていました。
JScriptの利用も少し考えましたが、利用方法がいまいちパッとしなかったので見送りました。

保守性は、個人/小規模利用なので大して気にしていません。
227デフォルトの名無しさん:2013/09/19(木) 06:18:34.30
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   
228デフォルトの名無しさん:2013/09/24(火) 01:30:13.90
mrubyはここでOK?
229デフォルトの名無しさん:2013/09/24(火) 19:59:45.11
組み込みだからOKだけど、話題にできる人はいないかも
230デフォルトの名無しさん:2013/09/24(火) 21:03:42.63
mrubyの組み込みは、アプリケーション組み込みじゃなくて、家電とかへの組み込みのほうだと思うんだ。
アプリケーション組み込みなら、mrubyでなくとも本家のrubyでもできるし
231デフォルトの名無しさん:2013/09/24(火) 23:53:45.13
べつに、rubyもmrubyもここでやればいいじゃん。
232デフォルトの名無しさん:2013/09/25(水) 00:47:43.99
Rubyはテキストの変換に使う事が多いな。
CSVファイルからスクリプトに変換したりとか。
233デフォルトの名無しさん:2013/09/27(金) 11:18:33.53
luabindを使おうとしたら、lua_openで未解決の外部シンボルがでたー。ちゃんとライブラリ設定してるのに。。。
234デフォルトの名無しさん:2013/09/27(金) 12:04:12.82
バインダーなど使わないでスタック方式に慣れるのが結局は一番だよ
235デフォルトの名無しさん:2013/09/27(金) 18:18:42.84
やっとコンパイル出来た。今から初めて組み込むのでどの処理をluaにもっていこうか全然決まってない。みんなどういう感じで組み込んでるの?
236デフォルトの名無しさん:2013/09/27(金) 18:33:15.82
アプリ完成後にもカスタマイズしたりする部分
237デフォルトの名無しさん:2013/09/27(金) 23:10:20.40
ゲームとしてのエンジン部分を全部Lua側から呼び出せるようにして、
あとはLuaでアルゴリズム組むだけでゲームを作れるようにしておくとすごい快適
個人的には各種パラメータを、数値をイジるだけじゃなく
定義を修正しまくっても余裕なのが最高
238デフォルトの名無しさん:2013/09/28(土) 09:12:16.18
逆に言うとそれだけなんだからLuaで十分なんだよな。
Luaだと辛いなーな部分はCで書きゃいいだけ。
239デフォルトの名無しさん:2013/09/28(土) 11:19:10.07
マインクラフトでJRubyやってたんだけどluajなんてのもあったんだね
Cのバインディングに挫折しそうになってた頃に出会ってたら危なかった
240デフォルトの名無しさん:2013/09/28(土) 15:57:45.92
俺はそこまでやるなら端からもっと高機能な言語使えばいいと思うけどなあ
241デフォルトの名無しさん:2013/09/29(日) 00:13:43.34
AngelScript|Д`)ノ<きたわよ

C++側のクラスとかもそのままスクリプトで使えるよ。
242デフォルトの名無しさん:2013/09/29(日) 02:20:08.22
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン
243デフォルトの名無しさん:2013/10/10(木) 19:31:49.27
244デフォルトの名無しさん:2013/10/10(木) 19:33:12.35
gobak
245デフォルトの名無しさん:2013/10/13(日) 01:54:16.74
Luaでちょっと質問なんだけど

Luaの無名関数をC関数で受け取って、
それを、C側から任意のタイミングでコールしたいんだけど、どうしたらいいの?

lua_type()の戻り値を見ると、LUA_TFUNCTION型みたいなんだけど、これはどう扱ったらいいんだろう…
246デフォルトの名無しさん:2013/10/13(日) 06:06:13.41
自己解決
luaL_refとluaL_unrefで参照数を操作して、生かして、
生かしておいたのを lua_rawgetiでスタックにプッシュして
lua_call系でいいんだね
247デフォルトの名無しさん:2013/10/25(金) 14:27:11.51
Luaスクリプトについての質問なんですが、
Luaにエラー関数を設定する場合は
lua_pcallにてエラー関数のスタックを設定しますが、
これをコルーチンで行う場合、
lua_resumeを呼びだすのですがエラー関数の設定が見当たらないです。
どこで設定すると呼びだされるようになるのでしょうか…。

お願いします!
248デフォルトの名無しさん:2013/10/25(金) 15:45:29.07
保護モード事態が特殊な動作なわけだから resume を pcall すれば?
249デフォルトの名無しさん:2013/11/02(土) 00:38:50.34
クラスの中にlua_stateを作っておいて、値の更新とかをlua側でしたいんですけど、
luaに自分自身を渡して、lua側で値を更新させて、自分自身に反映させるのは
どうすればいいでしょう。lua_pushlightuserdataじゃインスタンスは別になる?
250デフォルトの名無しさん:2013/11/02(土) 01:04:30.61
まずC++側とC側に分けて
値の更新をC側でできるようにしてから
C側の内部でLuaを使う
251デフォルトの名無しさん:2013/11/02(土) 01:06:57.46
C++でsetter作って、luaでそれを呼ぶってことですか?
すみません。C++とCで分けるという所はどういう感じで分けるのでしょうか。
252デフォルトの名無しさん:2013/11/02(土) 10:59:08.34
luaで何かアクションをするとC++側の値が書き換わるようにしたい?
userdataにメタテーブルを仕込んでやればできる。他のやり方も
あると思うけど。
例えばuserdataにthisや関数へのポインタを入れておいてメタテーブルに
cfunctionを登録しておく。登録したcfuntcionではuserdataから
thisとかを取り出して何かすればいい。
253デフォルトの名無しさん:2013/11/02(土) 12:43:26.03
>>252
やりたいことは、リコンパイルしなくても値を変更できるようにしたいです。
そこで、luaにオブジェクトの初期処理や更新処理を持っていって、描画はC++で
しようと思ってます。
教えていただいた内容を調べながら試してみます。
254デフォルトの名無しさん:2013/11/02(土) 12:55:58.52
それだったら、C++からLuaの変数を読み出すだけでもいいんじゃない?
C++でLuaチャンク実行→Luaチャンク実行終了→変数の値を読み出して利用する。
LuaのプログラムからCallbackさせながら、C++プログラムと協調動作させる
必要があれば、252のようにする必要があるけど。
255デフォルトの名無しさん:2013/11/02(土) 13:10:44.93
>>254
初期処理でクラスの各項目値は、luaのメソッドを呼び出してその戻り値を受けるので
出来たのですが、更新処理となるとロジックがあって、単純に戻り値を受け取るだけだと
中々難しいなーと思って、ロジックもluaに移そうと思っていました。
そういうのはやっぱり、lua⇒C++の関数⇒luaみたいな感じになるんですね。
自分のイメージとしてはC++でインスタンスをluaに渡す⇒luaで引数のインスタンスに対して
色々な処理を行い値を変更する⇒luaメソッド終了⇒C++に処理が戻るみたいな感じです。
256デフォルトの名無しさん:2013/11/03(日) 10:39:57.23
スクリプト内の変数の値をC/C++側から操作したいって事なのかな。
257デフォルトの名無しさん:2013/11/03(日) 11:14:19.88
C++のポインタはキャストするとどうなるか調べるのが面倒臭いって事でしょ
Cならlua_pushlightuserdataでいいよ
258デフォルトの名無しさん:2013/11/03(日) 11:24:38.17
制御権の受け渡しをどうするかってことでしょ。
Lua側の記述とLuaチャンクの実行の仕方を工夫するしかないんじゃないか?
259デフォルトの名無しさん:2013/11/03(日) 12:00:06.70
C++でnewで確保した領域のポインタを
lua_pushlightuserdata等でlua内の変数に渡しているときに、
このlua内の変数のスコープがはずれたりしたときに、
このポインタをdeleteしたいのだけどできますか?
260デフォルトの名無しさん:2013/11/03(日) 14:45:33.09
基本的に無理じゃね。メタメソッド持てないし
可能ならuserdataで確保したメモリそのものに割り当てるか
スマポとかで包んでからuserdataに突っ込む感じになるかと
261デフォルトの名無しさん:2013/11/03(日) 18:17:24.79
やった事ないけど、tableに突っ込んで__gcイベント捕まえれば逝けない?
262デフォルトの名無しさん:2013/11/03(日) 21:02:45.16
lightuserdataのuserdataに対するメリットって何?
リファレンス見ても機能が少ないだけで何が嬉しいか分からなかった。
263デフォルトの名無しさん:2013/11/04(月) 00:14:11.47
>>259
そこまでやるならもうAngelScriptの方がいいような気がする。
264デフォルトの名無しさん:2013/11/04(月) 00:19:18.11
>>262
ポインタもってるだけだから圧倒的にシンプルだよ。luaがわでは寿命管理しないけどとにかくデータの参照を維持したい場合に使う
265デフォルトの名無しさん:2013/11/04(月) 00:23:01.58
>>259
tableじゃなくてuserdataのmetatable使うのか。面白そうなのでやってみた
配置newを定義して__gcをセットしたmetatableを設定する. gcでデストラクタを明示的に呼ぶ
class a{
void *operator new(size_t size, lua_State *L) {
void *p =lua_newuserdata(L, size);
lua_newtable(L);
lua_pushcfunction(L, gc);
lua_setfield(L, -2, "__gc");
lua_setmetatable(L, -2);
return p;
}
static int gc(lua_State *L) {
a *p = static_cast<a *>(lua_touserdata(L, -1));
p->~a();
return 0;
}
};

// newと同時にLUAスタックにプッシュされる
a *a1 = new(L) a;
266デフォルトの名無しさん:2013/11/04(月) 01:05:41.10
変数がスコープから消えるときは__gcでイベントをとれるとして、
lua内の変数のコピーも認識できないとdeleteしていいかわからないなぁ。
267266:2013/11/04(月) 01:11:07.79
と思ったけど、__gc呼ばれるときは問答無用でdeleteしていいのかな?
268デフォルトの名無しさん:2013/11/04(月) 01:56:57.82
そもそもスコープぬけてすぐgcよばれる保証あるの?という素朴な疑問
269デフォルトの名無しさん:2013/11/04(月) 02:42:16.33
無いです!
270デフォルトの名無しさん:2013/11/04(月) 03:46:09.89
参照カウンタではないGCを使う言語は、
あんまりそういう作りになってないなぁ
271デフォルトの名無しさん:2013/11/04(月) 09:52:17.93
スコープぬけてすぐってのは
newではないコンストラクタを使うからできるんだよ
newを使わない保証があるなら参照カウンタもいらないよ
272デフォルトの名無しさん:2013/11/04(月) 15:21:11.51
スコープ抜けてすぐなんて制約条件を勝手に厳しくするなよ
> このlua内の変数のスコープがはずれたりしたときに、
273デフォルトの名無しさん:2013/11/04(月) 15:38:02.02
質問者の意図はたぶんそれで合ってると思うの。C++使う人がluaで嵌まる典型的ポイントだよね

明示的なリソース廃棄処理つくらないと回避できない
274デフォルトの名無しさん:2013/11/04(月) 16:24:50.58
>>272
あはは、たしかにw
スコープがはずれたとき
ではなく
スコープがはずれたりしたとき
であるから
結局GCで事足りるなw
275デフォルトの名無しさん:2013/11/04(月) 18:42:33.31
リソースの解放(例えばファイルのクローズ)をデストラクタで
行うなんてのはGC備えてる言語じゃ禁じ手じゃん。
C++オブジェクトに限らず、Luaオブジェクトでもスコープ外れた
タイミングで即解放なんて無理でしょ。
C++と同じようなスコープ外れて即廃棄は無理なので、それの寿命
をLuaオブジェクトで管理しようというなら設計が間違ってる。
276274:2013/11/04(月) 19:39:14.73
やらない ってのと やれない っては大きな違いがある。
このケースは前者でやる必要がないからやらないだけなんだよ。
やればやれるよ?
metatableのdestructorで
時限付きにhookONしてそこでcollectすればいいだけでしょ?

で、それがなんだよって話。
277デフォルトの名無しさん:2013/11/04(月) 22:38:46.70
AngelScript|Д`)<俺の出番だな

いやマジで
278デフォルトの名無しさん:2013/11/04(月) 23:06:44.14
JavaでGC避けようとするとこんな感じのがある。
http://www.javafesta.jp/2007/pdf/C1.pdf
http://www.infoq.com/jp/news/2010/11/tc-bigmemory
279デフォルトの名無しさん:2013/11/04(月) 23:17:12.73
squirrelがリファレンスカウントなのもgc動作を嫌ってだな
280デフォルトの名無しさん:2013/11/05(火) 00:28:39.93
リファレンスカウンタの方がマーク&スイープよりも安いからな。
281デフォルトの名無しさん:2013/11/05(火) 08:03:02.46
Javaや.NETのGCくらいになると無茶苦茶高性能だよ
Javaはチューニングがサーバー用だからアレだが
まあそこまでいかないと性能が出ないなら個人レベルでは無理があるわな
282デフォルトの名無しさん:2013/11/05(火) 12:38:56.98
AngelScriptは基本的には参照カウントのようだが循環参照時などはGCをする模様
283デフォルトの名無しさん:2013/11/05(火) 20:08:05.76
AngelScript|Д`)<AngelScript2.28.0記念カキコ
284デフォルトの名無しさん:2013/11/05(火) 20:24:10.43
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン
285デフォルトの名無しさん:2013/11/05(火) 23:42:30.14
参照カウントってGCとちがうものなの?
286デフォルトの名無しさん:2013/11/06(水) 09:10:15.25
知ったかに構うなよ
287デフォルトの名無しさん:2013/11/07(木) 07:39:13.29
でもまあ一般的にGCと言えばマーク&スイープじゃね
参照カウンタって単なるコーディングテクニックみたいなもんだから注釈なしでGCと呼ぶのは抵抗ある
288デフォルトの名無しさん:2013/11/07(木) 09:59:04.25
全然違う
289デフォルトの名無しさん:2013/11/07(木) 12:43:45.41
>>285
GCの実装の仕方の一つとして、参照カウントを使うものがある、といった感じ
290デフォルトの名無しさん:2013/11/07(木) 15:16:54.50
広義ではGCに含まれる。
狭義では参照カウントとtracingに分けて、tracing型のみをGCとすることもある。

まだ一般的ではないが "A unified theory of garbage collection" という論文によれば、
参照カウントとtracingは双対なんだそうだ。
291デフォルトの名無しさん:2013/11/07(木) 20:06:48.85
Squirrelの人が熱弁してたなあ
292デフォルトの名無しさん:2013/11/15(金) 18:43:55.94
当方素人で疑問なのですが、スクリプトでゲームを作るということが、
つまりどういうことなのかっていうのがイマイチ掴めません

例えば、C/C++コード(DxLibやSDLなど)で適当にゲームウインドウを表示したら
あとはスクリプトコードを呼び出すだけ、という状態のことなのでしょうか?

このときに、最低限としてスクリプト側からC側の
・メインループ毎に必要な処理(DxLibのProcessMessageなど)
・キーボード・マウス・ジョイパッドなどの入力を取得する機能
・画像を表示する機能
など、呼び出すことができれば最低限ゲームっぽいことはできそうでしょうか?
そして、速度の問題がある処理はその都度C側で記述していく、とか

あるいは、あるタイミングの数値計算処理であるとか、RPGのイベントだとか
再コンパイルせずに調節したい場合にスクリプトを用いるということもあると思いますが
この場合、スクリプトを実行するVMをどのインスタンスで保持するのが良いのでしょうか
293デフォルトの名無しさん:2013/11/15(金) 19:49:12.61
ネイティブで書きにくいところをスクリプトで書く
それだけの話であって何から何までスクリプトということは無い
294デフォルトの名無しさん:2013/11/15(金) 20:47:11.59
自分はゲーム内のオブジェクトの動きや描画の指定にスクリプト使ってるよ。
295デフォルトの名無しさん:2013/11/15(金) 21:58:13.61
スクリプト言語による効率的ゲーム開発 新訂版 (LuaとC/C++連携プログラミング)
とか、luaとゲームみたいな本には序章あたりにそういうこと書いてあるから、何冊か本屋でみてみたら?
296デフォルトの名無しさん:2013/11/15(金) 22:02:34.14
>>293 >>294 >>295
どうもありがとうございます!
いつもいつもプログラミングのみでミニゲーム作る止まりなので
スクリプト組み込みを勉強してに中規模以上のゲームを作れるようにがんばります
297デフォルトの名無しさん:2013/12/04(水) 01:39:29.32
iPadで動くCodeaって、内部でLua使ってるみたいだね。
298デフォルトの名無しさん:2013/12/15(日) 20:30:59.57
ゲームの会話シーン(ノベルゲーム風)をスクリプトで記述したいんですが、
やり口としてはどういうのが良いでしょうか?

今考えているのは
・会話イベントのひとまとまりごとに1ファイルで記述する
・文章を記述する前に置換文字や会話に使用するキャラクターを定義できる
・会話シーンに必要なアクション(立ち位置、表情変更など)を記述できる

想像してるイメージとしては↓な感じです
(使用スクリプト未定なので文法やメソッド名は適当です。雰囲気が伝わればいいですが・・・)

//event1.txt
//最初に置換文字や、使用キャラクターを定義
player = data.getCharacter("主人公"); //キャラ自体を取得
sub = data.getCharacter("サブキャラ");

city = data.getString("街の名前"); //置換文字として定義

//イベント開始
startEvent();

setCharacter(sub);
message(
"いらっしゃい " + player + "さん。" + BR +
city + "にようこそ。");
//キャラクタークラスはそのまま文字置換にも使えるようにする。
//BRには改行を定義しておく。

endEvent();
//

これだとダブルクォーテーションがクドい気がするので "ようこそ$[player]さん" みたいなやり方にすべきでしょうか?
299デフォルトの名無しさん:2013/12/15(日) 20:51:22.29
そんなのは簡単な独自言語のほうが使いやすいしツールも作りやすい
安直に汎用スクリプト使おうじゃなくて、まずはユースケースを洗い出してみろ
それほどいろんな機能も自由度もいらないことがわかるはず
300デフォルトの名無しさん:2013/12/16(月) 00:21:21.85
セーブの実現性考えてつくるべし
下手に高級言語にすると死ぬ

人に使わせること考えると、プレーンテキストにタグ埋めるスタイル以外はあり得ない
301デフォルトの名無しさん:2013/12/16(月) 00:49:52.86
同意
セーブや細かい制御のことを考えると、汎用言語を使っても結局
言語内DSL的なものでデータとして埋め込むような形にしかならん
汎用言語の機能をほとんど活かせず、インタプリタを作る手間も無くならず、
ただスクリプトを書くのが面倒になるだけ
302デフォルトの名無しさん:2013/12/16(月) 01:33:50.36
途中セーブって鬼門だしな…
303デフォルトの名無しさん:2013/12/16(月) 18:01:34.83
>>299-302
ありがとうございます、セーブ完全に考えてませんでした。
途中セーブ考えると難易度かなり上がりますね。
304デフォルトの名無しさん:2013/12/16(月) 21:48:48.52
独自スクリプトなら好きなように出来るから、どうとでもなるよ
ADVゲームなんて保存しておくデータは少ないしな
305デフォルトの名無しさん:2013/12/19(木) 20:06:48.55
if文の中のwhile文の中のif文のさらに中のwhileの途中でスクリプトを停止してセーブ、ロードしてそこから再開、とか。
306デフォルトの名無しさん:2013/12/19(木) 21:22:15.85
stateパターンでも使えば?
307デフォルトの名無しさん:2013/12/19(木) 21:35:40.70
>>305
ADVは普通そんなとこでセーブする必要ないよ
もし必要になってしまってるなら設計がおかしい
308デフォルトの名無しさん:2013/12/19(木) 21:54:56.69
DSL専用の言語ってあってもいいのにな
ADVのスクリプトみたいなプル型のインタプリタを作りやすい簡単な言語仕様で
ライブラリにソース渡したら構文解析だけやってくれればいい
309デフォルトの名無しさん:2013/12/19(木) 22:41:18.53
「設計がおかしい」ってさ、
言うのは簡単だしいかにもそれっぽいけど単なる思考停止くさいよね
310デフォルトの名無しさん:2013/12/19(木) 23:00:23.25
>>308
EclipseのXtext/Xtendみたいなのでネイティブアプリに組み込める
ものがあったら俺も欲しいな。
311デフォルトの名無しさん:2013/12/19(木) 23:01:36.14
ターン制と言うか、区切りよく設計しない?
大枠のwhileループとifはあるにせよ、更にその中のwhileの中でセーブはともかくロードはやろうと思わない。
312デフォルトの名無しさん:2013/12/19(木) 23:38:35.63
任意のObjectをセーブ、ロード

Object is a String ←設計がおかしい
313デフォルトの名無しさん:2013/12/20(金) 01:55:56.71
>>305
フラグでメッセージが変わる、とかいうのを複雑にしちゃったらそういうのが発生しそう。
314デフォルトの名無しさん:2013/12/20(金) 12:14:01.98
フラグで文章が変わるなら、変わる文章の手前で条件分岐するだけじゃね?
315デフォルトの名無しさん:2013/12/20(金) 17:12:52.37
変わるのがメッセージだけなら、

flg ? "msg-a" : "msg-b"

って書けるならそのほうがシンプル。
316デフォルトの名無しさん:2013/12/20(金) 21:11:54.76
それだと既読フラグがめんどい
317デフォルトの名無しさん:2013/12/21(土) 08:21:18.69
シンプルだけど読みにくい
318デフォルトの名無しさん:2013/12/22(日) 12:54:39.25
慣れの問題
319デフォルトの名無しさん:2013/12/23(月) 08:32:10.39
慣れないとダメというのがそもそもおかしい
320デフォルトの名無しさん:2013/12/23(月) 11:28:02.04
逆だよ
時間がかかってはダメというのがおかしい
だからゆっくり時間をかけて慣れることが許される
321デフォルトの名無しさん:2013/12/23(月) 12:34:02.63
>>319
俺が慣れてないからforもwhileも禁止、全部ifとgotoで、って言ってた人が昔いたぞ。

>>316
既読を管理する関数 mng_read ってのを作って、
flg ? mng_read("msg-a") : mng_read("msg-b")
とするのはどう?
322デフォルトの名無しさん:2013/12/23(月) 22:24:13.34
>>321
ADVで文章部分に関数使うとか論外だろ…
それにスクリプト打つのはド素人も想定するもんだ
323デフォルトの名無しさん:2013/12/23(月) 22:49:00.75
>>321
そんなBASICでプログラミングを覚えたジジイなんて、
玉切り落としてグズの家系を根絶やしにしてしまえ。
GOTO LESSが推奨されて何年立ってると思っているんだ
324デフォルトの名無しさん:2013/12/24(火) 09:54:37.59
IFとGOTO以外理解できないド素人も想定しなきゃダメですよw
325デフォルトの名無しさん:2013/12/24(火) 13:19:00.89
そりゃシステムの部分でわざわざGOTO使う事はないけど
シナリオスクリプトとして考えたらはGOTOは大事だろ
IFとGOTOだけで書けばセーブデータの問題も解決するわけだし
326デフォルトの名無しさん:2013/12/24(火) 13:43:33.10
チャートの類をつくろうとすると、たとえADVのスクリプトでもgotoもifも禁止だね。バグの温床になる
そういった場合は、遷移は別ファイルにまとめて定義が妥当
327デフォルトの名無しさん:2013/12/24(火) 17:08:31.18
プログラムではまずありえないけど、ループのド真ん中に外から飛び込むジャンプって、
ゲームのシナリオ的にはありそうじゃない。そういうのってどうしてるの?
328デフォルトの名無しさん:2013/12/24(火) 19:11:38.28
gotoは、終了タグを省略したhtmlとか、breakしないswitchと同じだと思う
逆に言えば終了タグを必ず書くgotoなら使っていいんじゃね
329デフォルトの名無しさん:2013/12/24(火) 19:40:46.56
come from文?
330デフォルトの名無しさん:2013/12/24(火) 20:16:45.26
途中でセーブしてそこから続きが出来るようにしないのなら、どんな組み方してもOKだけどな。
331デフォルトの名無しさん:2013/12/24(火) 21:28:56.06
>>326
条件分岐使わずどうやってフラグ分岐するんだ?

>>327
そんなの見たことないが、どういうのだよ?
332デフォルトの名無しさん:2013/12/24(火) 23:30:35.65
>>331
だから別ファイル
どのシーンの次にどのシーンになるのかの
状態遷移だけを記述する言語というか
データ構造を別に準備するのさ
333デフォルトの名無しさん:2013/12/24(火) 23:50:48.99
想定してるのがどういうゲームかで違うのかも

例えばLiveMakerのシナリオ部分は文章とか画像とかの指定で
条件分岐は別になってる
シナリオ書き変えたら分岐も変わってた…なんてことはない
単純に選択肢で話が大きく分岐していくノベル用にはわかりやすくていい

でも細かいフラグ管理やパラメータ要素を入れると難しい
分岐ごとにいちいち分けて考えてたら
バグは出ない以前に途中で投げ出す可能性大
334デフォルトの名無しさん:2013/12/25(水) 01:12:07.86
適当にシナリオ用のVM作ってステートセーブさせれば良いんじゃないかな・・
335デフォルトの名無しさん:2013/12/25(水) 07:14:27.71
プレーンテキストに命令タグを挟む方式だとあかんのですか
ノベルゲーって基本テキスト主体でしょ?
逐次処理できるし、ステートの保存はフラグ一式と行番号の保存でいいし
ループ処理の構文をわざわざ用意する必要ないと思うんだけど・・・
336デフォルトの名無しさん:2013/12/25(水) 10:33:19.18
>>332
あぁ、なるほどね。
確かにそういう作り方をしてるゲームを見た事があるわ。
337デフォルトの名無しさん:2013/12/26(木) 01:56:07.59
ノベルゲーのスクリプトに、Cレベルの制御構文、クラスやコルーチンとかまで入れて欲しいとか言われた事あるわ。
338デフォルトの名無しさん:2013/12/26(木) 10:34:40.60
文章やマクロを使う部分のスクリプトはオリジナルで
クラスやコルーチンのスクリプトは組み込み言語使えば良かろ
339デフォルトの名無しさん:2013/12/26(木) 10:38:32.16
プログラミング知識がある奴用なら
爆速コンパイルのFPCでいいと思うな
340デフォルトの名無しさん:2013/12/26(木) 10:48:29.28
コルーチンはプログラミング言語では直接のサポートがない言語も多いけど、
ゲームのスクリプトとしては需要あるんじゃないかな。

たとえば、ある場所に来るたびに、その場所での「さっきの続き」とか。
341デフォルトの名無しさん:2013/12/26(木) 11:18:48.57
stateパターンでいいじゃん
オーソドックスにフラグ立てていくなりstackでやるなりでいけるでしょ
342デフォルトの名無しさん:2013/12/26(木) 11:41:00.70
手続き的なものは、スクリプトの手続きとして直接記述したいじゃない。
stateパターンというかインタプリタパターンで、その場用のミニ言語を作るんじゃなくて。
343デフォルトの名無しさん:2013/12/26(木) 11:56:29.21
コルーチンのことをIteratorと言う人とStateと言う人とInterpreterと言う人がいるけど
気分で名前が変わるくらいなら名前つけない方がよいよね
344デフォルトの名無しさん:2013/12/26(木) 12:15:58.74
いきなりどうした
345デフォルトの名無しさん:2013/12/26(木) 12:24:14.01
いや全部別のものだし
346デフォルトの名無しさん:2013/12/26(木) 12:28:28.45
>>342
> 手続き的なものは、スクリプトの手続きとして直接記述したいじゃない。
すればいいじゃない
> stateパターンというかインタプリタパターンで、その場用のミニ言語を作るんじゃなくて。
フラグ立てていくだけだからeval出来るものなら既存の言語で簡単に出来るよ

記述が冗長でという話ならpegかなんかでちょろっとgeneratorを書いてやらいい
347デフォルトの名無しさん:2013/12/28(土) 02:26:08.74
動的型のスクリプトの凄さわからなかったんだけど
クラスじゃなくって、インスタンスをバインドして
そいつがファクトリ的な関数いっぱい持ってたら
もうスクリプトの中でやりたい放題なんだね
348デフォルトの名無しさん:2013/12/28(土) 13:42:09.78
リモートでバッグが容易
かつ、お作法も確立してるので楽ちんなんだよな
349デフォルトの名無しさん:2013/12/29(日) 23:59:20.84
最近VLCビデオプレイヤの機能拡張言語がLuaだったのにやっと気づいた
350デフォルトの名無しさん:2013/12/30(月) 00:02:51.79
おめ
351デフォルトの名無しさん:2013/12/30(月) 00:32:29.40
DXライブラリでゲーム作ってて、スクリプトを組み込んでみたいんですが、
メインループ中にスクリプトをどのように組み込んでいけばいいのかまったく検討がつきません。
RPGのマップ上のイベントであれば、マップロード時にスクリプトファイルを読み込んで
イベントを関数化しておく、などは想像できるのですが・・・

それとも、主要クラスをスクリプトエンジンへバインドしてしまって
メインループ自体をスクリプト側で記述するという方法なのでしょうか?
352デフォルトの名無しさん:2013/12/30(月) 01:54:24.29
一般的には各オブジェクトのフレーム毎処理なり、メインループの段階ごとなりにスクリプト用のフックを準備して、それ経由で呼び出しされるようなイベントドリブンな書き方をすればいい。これは別に普通にCで書くのと特に変わらない

luaとかsquirrelのようなコルーチンありのスクリプトなら、メインループから、実行中のコルーチンスレッドのresumeを個別に呼び出しする形も作れる
それぞれのスレッドで suspend()するたびに
次のフレームに処理が継続されるので、UI処理書くのにとても便利

両方実装して使い分けるのも有り。いずれの場合も、参照するオブジェクトはスクリプトから見えるようにバインドする必要はでてくる
353デフォルトの名無しさん:2013/12/30(月) 17:04:01.21
>>352
ありがとうございます!
コルーチン勉強しようと思います
354デフォルトの名無しさん:2014/01/15(水) 01:28:40.37
AngelScript|Д`)ノ<遅くなったけどあけおめ。今年もスクリプトエンジョイしよう
355デフォルトの名無しさん:2014/01/15(水) 01:32:56.88
おっそーい
356デフォルトの名無しさん:2014/01/15(水) 18:55:31.97
ZekamasiScriptの登場が待たれる
357デフォルトの名無しさん:2014/01/16(木) 23:05:15.79
C++でクラス定義を公開してバインド。
Suirrelでインスタンスを生成したとき、
boost::shared_ptrを用いたインスタンスにするにはどうすればいいでしょうか。

C++とSquirrelとで共通の参照カウンタを持たせたいと考えています
358デフォルトの名無しさん:2014/01/16(木) 23:29:03.57
luaならレジストリを使ってやるから同様の逃げ道はあるだろうけど
そういうのが必要なケースってあるのかな?
設計を見なおしたほうがいいかも
359デフォルトの名無しさん:2014/01/17(金) 00:50:30.25
luabind使ってる時は自然と出来たものですから、
こっちでも使いたいなーと思ってました。
・C++でHogeクラス定義、公開
・Squirrelでインスタンス生成
・C++から公開しているオブジェクトマネージャへ登録
・C++側でさっきのHogeインスタンスを更新
みたいな構造を考えてました。
Hogeを継承したFooクラスとかも登録したいと考えてました。
設計考えてきます。
360デフォルトの名無しさん:2014/01/17(金) 02:10:14.78
対応したバインダかくだけじゃね?
squirrel側の参照カウンタとはダブるだけで共通にはならんけど動作自体は問題ない
361デフォルトの名無しさん:2014/01/17(金) 04:46:37.29
HogeをC++で定義、公開。
g_HogeManagerをC++で定義、インスタンスをSquirrelへ公開。
で、次のスクリプト関数実行。

function Func(){
local inst = Hoge()
g_HogeManager.add(inst)
}
で、C++側でg_HogeManagerの要素に対してupdateとか呼び出したいです。
Funcのスコープ抜けた時点でSquirrel側のinstの参照カウンタが0になり、
望まない形でインスタンスが破棄されてるようです。
ので、共通の形を取りたいと考えてました。
設計が悪いってのは、この周りの考え方が怪しいのかと。
362デフォルトの名無しさん:2014/01/17(金) 04:48:04.70
 
363デフォルトの名無しさん:2014/01/17(金) 08:09:28.29
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
364デフォルトの名無しさん:2014/01/17(金) 16:23:55.46
>>361
そりやsquirrel側はC++側の参照を知らないもの。当然かと

squirrelから渡されたものは、HSQOBJECT のかたちで取得して、保持するときには sq_addref()して、不要になったら sq_release() するのが正解
365デフォルトの名無しさん:2014/01/17(金) 18:31:37.39
あ、gHogeManagerがなんのためのものかにもよるけど、addrefしたものは当然C++側でもreleaseしないと消えなくなるから注意な

メモリリークの原因になりやすい
366デフォルトの名無しさん:2014/01/22(水) 20:05:40.98
AngelScript|Д`)<ASの得意分野の話をしてると聞いて
367デフォルトの名無しさん:2014/01/31(金) 16:55:15.38
squirrelって文字列比較できないんでしょうか?
自分で関数を作るしかない?
368デフォルトの名無しさん:2014/02/01(土) 23:19:13.62
Squirrelのthreadを外部からidle状態にさせることはできるのでしょうか。
現在、threadをidle状態にさせるために、wakeupで終了条件を渡して
threadとして実行する関数内でreturnなりさせてidle状態にさせていますが面倒です。
369368:2014/02/02(日) 00:01:58.47
手法変えて自己解決しました
370デフォルトの名無しさん:2014/02/02(日) 00:31:12.85
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン
371デフォルトの名無しさん:2014/02/03(月) 05:51:52.94
Cocos2dx + lua が最強
372デフォルトの名無しさん:2014/02/05(水) 23:25:39.46
Squirrelでthreadの実行関数内でスタックダンプってどうやってとるの?
sqstd_printcallstackをラップしたのをバインドしてthreadの関数内で呼び出しても、
thread.callとかthread.wakeupんとこまでのスタックしか見れなくてデバッグが面倒
373デフォルトの名無しさん:2014/02/06(木) 01:00:28.57
そこから上は別のVMだから当然では
374デフォルトの名無しさん:2014/02/06(木) 13:14:51.80
あ、なるほど。
ってことはsq_getthreadとかと組み合わせれば出来んのかな。
助かったよ、ありがとう
375デフォルトの名無しさん:2014/02/06(木) 16:31:10.12
AngelScript|Д`)<AngelScript2.28.1記念カキコ&nbsp;
376デフォルトの名無しさん:2014/02/06(木) 16:34:11.87
>>374
スレッド制御してるVMがグローバルに一つなら、そのwakeup呼び出ししてる間は
とくに変化無いから、もうグローバルに直接参照して表示してしまうってのも一つの手だね

俺はそれぞれのスレッドのwakeupは、全部C++のメインの一カ所からしか呼ばない(親VMは登録とかにしか使わない)から上をたぐる必要は特に無い
377デフォルトの名無しさん:2014/02/06(木) 19:41:13.19
なるほど、そういう方法もあるのか。検討します。

で、早速また分からんことが。
・スクリプトでnewthreadで生成したスレッドをC++にてsq_getthreadで取得
・取得したvmに対してsq_newclosure,sq_seterrorhandlerで
ランタイムエラーハンドラを設定したんだけど、
スレッド実行中にエラー出ても呼ばれないんですが原因なんでしょう。
同じノリでC++からsq_setprintfuncで出力関数をセットすると期待通りに動作するんだけど。
378デフォルトの名無しさん:2014/02/06(木) 20:13:41.72
sq_notifyallexception しとかないと常にはよばれなかったような記憶
379デフォルトの名無しさん:2014/02/06(木) 20:42:06.75
おぉ、呼ばれた!ありがとう!
380デフォルトの名無しさん:2014/02/10(月) 11:35:20.59
スレチか悩んだがココで。
トゥイッターで「#squirrel」を検索するとマジもんのリスばっか出てくる。
どのハッシュタグならココで扱ってるSquirrel拾えるの?
381デフォルトの名無しさん:2014/02/10(月) 11:43:35.22
本家で聞けよ…
382デフォルトの名無しさん:2014/02/28(金) 21:55:32.80
ゲーム用途のスクリプトのことを学べば学ぶほど、最終的にはマップエディタや、
アイテムデータを打ち込むためのフォームなどを自作しておかないと、
スクリプトの良さを生かせないなぁ、というところに行き着いてしまうのですが、
個人製作の方々はそういったものを自作していたりするんでしょうか?

むしろ、そんなところに拘るくらいならUnityや他のゲーム製作ツールについて
勉強してた方がマシでしょうか?
383デフォルトの名無しさん:2014/02/28(金) 22:11:10.98
まず、自作するまでもなく
一般的なものならinport/exportで定番どころのフォーマットは対応してるので困ることはないのではないかな
対応してないとしてもconverterを書くだけだから簡単に書ける
384デフォルトの名無しさん:2014/02/28(金) 22:15:28.12
スクリプトの良さを生かそうという発想が生まれる時点で
既に道を踏み外している

ゲームを完成させたいなら計画を立て直せ
そうでないなら合理性なんか考えず好きなように楽しめ
385デフォルトの名無しさん:2014/02/28(金) 22:17:33.95
スペルミスってるな
まあいいや
386デフォルトの名無しさん:2014/02/28(金) 22:31:38.48
>>383
既存のモノで、マップエディタならJsonあたりで出力できるものや、
データ入力ならCSVエディタや、既存DB用ファイルを出力するエディタあたりでしょうか?

>>384
確かに、そうですね・・・
まだ数回しかチャレンジしてないのですが、どうしても毎回、
「プログラムで直書きしたのと変わらんやんけ!」か、
「CSVで十分やんけ!」という状況ばかりになってしまって、
そこから一歩ステップアップできない感じなのです
387デフォルトの名無しさん:2014/02/28(金) 23:01:28.08
AngelScripterさんがいたら教えてほしい
RegisterObjectType に asOBJ_POD を渡すとコンストラクタ、
代入演算子その他諸々が自動生成されるって話だけど、
asOBJ_POD | asOBJ_APP_CLASS_CONSTRUCTOR みたいにして
コンストラクタだけ独自拡張する使い方は仕様的にできるようになってるの?
388デフォルトの名無しさん:2014/03/01(土) 07:44:24.61
>>386
目的と手段が逆になってんじゃないの?
389デフォルトの名無しさん:2014/03/01(土) 10:43:43.37
>>387
普通にコンストラクタも登録できるから
公式リファレンス見ろ
390デフォルトの名無しさん:2014/03/01(土) 11:25:09.70
Lua自体はC++を使ってなくて「Cで十分やんけ!」という状況なので
もしC++を使ってる人がLuaは不要だと言えば、C++の方が不要だと言い返される気がする
391デフォルトの名無しさん:2014/03/01(土) 12:09:22.88
>>382
コンシューマだったり、プログラマ以外の作業員がいたり
アドベンチャーゲームみたいなジャンルだったらメリットが大きいと思うけど
個人製作だったら別に無理して活かす必要は無いような
392デフォルトの名無しさん:2014/03/01(土) 13:21:37.93
スクリプト使えば最コンパイルなしで高速に微調整ができるっていうけど
個人製作だとスクリプトファイルとかその他リソースを再読み込みする時間の方が
長かったりするのは俺だけ?てかみんなはスクリプトファイルどれくらい分割してる?
393デフォルトの名無しさん:2014/03/01(土) 15:07:27.08
>>392
ゲームは再起動するんだから、
他のリソースふくめたロード時間は
スクリプトつかっててもつかってなくても大差ないかと

スクリプト単体のロード時間は誤差の範囲だよ。確実にコンパイル&リンク時間のが長い
394デフォルトの名無しさん:2014/03/01(土) 15:08:56.52
LOVE使っててそれは思った
395デフォルトの名無しさん:2014/03/01(土) 15:29:29.09
>>392
修正したファイルだけ再読み込みできるようにしておくといい感じ
396デフォルトの名無しさん:2014/03/01(土) 15:29:47.45
>>393
392じゃないけど
どのリソースを読み込むかスクリプトで指示されているから
スクリプトの再読み込みはその他リソースの再読み込みとほぼ同義で
時間がかかるって話じゃないの

だから
スクリプト単体のロード時間が誤差の範囲なのは自明で
それをコンパイル&リンク時間と比較するのはこの文脈ではナンセンス
397デフォルトの名無しさん:2014/03/01(土) 15:47:17.62
>>396
スクリプトがコンパイル時間がかからなくて便利って話は、そもそもその単純比較の場合の話だから、そのメリットが得られてないならそれは作りが悪いってことだよね。結局のところ
398デフォルトの名無しさん:2014/03/01(土) 15:47:27.35
>>395
それを実現するためには副作用を減らす設計が重要で
とりあえずスクリプトで実装して
重い処理はホスト言語で実装しなおす
みたいなボトムアップな作り方してると困っちゃうんだよね
というか困った
399デフォルトの名無しさん:2014/03/01(土) 15:57:47.84
>>397
それは「スクリプトがコンパイル時間がかからなくて便利」ってのが
真である前提の結論だろ
実際は単なる謳い文句だよねって話じゃないの?

てかスクリプト言語使う動機なんて一つじゃないんだから
そんなことで作りの良し悪し評価されたくないよな
400デフォルトの名無しさん:2014/03/01(土) 16:47:42.14
>>389
リファレンス見てもPODで自動生成されたコンストラクタに
独自拡張のコンストラクタが上書きされるとか書いてなくね?


スレの趣旨には反するけどAlcantarea使えば諸々の問題解決できるよね。
実行中のプログラムの関数を再コンパイルして差し替えてくれるVSのアドイン
ttp://alcantarea-cpp.com/
401デフォルトの名無しさん:2014/03/01(土) 16:57:41.84
>>398
副作用を減らすんじゃなくて寿命を減らせばいいと思う
修正前の古いデータが生き残らないようにする
402デフォルトの名無しさん:2014/03/01(土) 17:09:03.44
>>399
良い悪いって言葉が気に入らないなら、
設計思想が合ってない、ってことでひとつ

宝の持ち腐れにしてまで使う意味はないな
403デフォルトの名無しさん:2014/03/05(水) 17:03:30.70
今から始めようと思うんですけど
C++で使えますか?
Cでの導入方法を教えて下さい
404デフォルトの名無しさん:2014/03/05(水) 23:29:20.69
>>403
冷やし中華を?
405デフォルトの名無しさん:2014/03/06(木) 03:15:58.29
>>403
何を?
406デフォルトの名無しさん:2014/03/06(木) 04:44:07.89
get started からダウンロードして
インクルードファイルとライブラリファイルを設定して、プロジェクトのプロパティで追加の依存ファイルにlua5.1.libを追加すればいいんですね。

後、クラスのメンバ関数をLuaから使う方法が理解できない
local 変数に関数を代入するの?
407デフォルトの名無しさん:2014/03/06(木) 06:38:39.31
lua では C でいうところの関数名=変数名となってるから大体合ってる
408デフォルトの名無しさん:2014/03/20(木) 17:29:02.65 ID:Moc5bE7b
AngelScript|Д`)<AngelScript2.28.1記念カキコ
409デフォルトの名無しさん:2014/03/20(木) 17:29:20.35 ID:Moc5bE7b
ごめん2.28.2だ
410デフォルトの名無しさん:2014/03/20(木) 17:38:01.94 ID:cnVVzBAE
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン
411デフォルトの名無しさん:2014/04/06(日) 22:57:21.17 ID:OYl5erDz
cocos2d-x3.0 Luaバインディング使ってるんだけど
コード補完が出来るオススメエディタありませんか?
cocos2d-x2.x 時代は tolua++のpkgファイルあったから
Eclipseプラグインでコード補完出来たけど
3.x は探してもpkgみつからないの・・
412デフォルトの名無しさん:2014/04/07(月) 00:09:17.03 ID:wNleVxO3
Squirrel 3.0.6 stable
413デフォルトの名無しさん:2014/04/08(火) 23:44:03.23 ID:tbmdAmxp
>>411
intypeってテキストエディタではダメ?
414デフォルトの名無しさん:2014/05/11(日) 10:08:02.17 ID:w7YBCIUP
Luajit等でバイトコードにしたものを
コードに戻す方法しらない?
415デフォルトの名無しさん:2014/05/11(日) 11:14:07.30 ID:FPHyRsPY
>>414
ない
416デフォルトの名無しさん:2014/05/11(日) 12:58:32.06 ID:ahIxA60o
417デフォルトの名無しさん:2014/05/12(月) 21:27:31.11 ID:Jr9LnoLr
Lua って 5.3 で整数型が導入されるのか。
整数型なんていらんかったんや! というこれまでの解説は間違いだったのか?
それとも、ゲームだけでなく、カーネルに近いところでも使われ始めたからなのか?
418デフォルトの名無しさん:2014/05/12(月) 22:45:02.79 ID:rRKhLlHV
内部では結構前からあった気がする
テーブルの整数添え字の要素を特殊化したりとかその関係で
記憶違いだったらごめん
419デフォルトの名無しさん:2014/05/12(月) 23:06:44.25 ID:fjbQFkov
それはインデックスとして使われるときに整数に変換されるだけで、値として整数を保持してるわけじゃないよ
満を持して登場したと思ったらさっそくdeprecatedにされたbit32ライブラリさんかわいそう
420デフォルトの名無しさん:2014/05/12(月) 23:22:03.10 ID:fjbQFkov
ああひょっとして特殊化ってのはテーブルのarray partのことを言ってるのかな
421デフォルトの名無しさん:2014/05/13(火) 01:10:36.92 ID:1hVKdVzY
>>417
NetBSDはカーネル内部でLua使えるらしいぞ
それの関係かどうかまでは知らんが
ttp://news.mynavi.jp/news/2013/10/21/016/
422デフォルトの名無しさん:2014/05/13(火) 09:56:07.37 ID:htOfSQyE
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
423デフォルトの名無しさん:2014/05/18(日) 06:43:02.86 ID:cy7ef2kl
整数型導入でさらに速くなるみたいね
424デフォルトの名無しさん:2014/05/18(日) 14:03:13.72 ID:HDWDipXQ
eLuaという、マイクロコントローラ向けのさらに軽量なLuaもあるらしい
http://www.eluaproject.net
425デフォルトの名無しさん:2014/06/08(日) 18:05:42.02 ID:3LWaPBPW
Xtalってもう更新してないのかな
GoogleCodeのは2008年で止まってるし
426デフォルトの名無しさん:2014/06/08(日) 20:03:09.73 ID:RRJgBzCO
>>425
ttps://code.google.com/p/xtal-language/source/list
履歴見たら2013年11月13日が最終更新日だけど、どこ見てるんだ?
427デフォルトの名無しさん:2014/06/08(日) 22:43:44.01 ID:3LWaPBPW
>>426
本当だ・・・
Downloadsのパッケージしか見てませんでした
ごめんなさい
428デフォルトの名無しさん:2014/06/11(水) 12:26:03.22 ID:nbPEp42H
AngelScript|Д`)<AngelScript2.29.0記念カキコ
429デフォルトの名無しさん:2014/06/11(水) 16:57:16.91 ID:mGpoQXd/
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン
430デフォルトの名無しさん:2014/06/19(木) 01:32:25.81 ID:wnpllGmU
C#コンソールアプリにLuaを組み込みたくてNLuaライブラリを使おうと考えてるんですが、
NLuaをSJISに対応させる方法はないでしょうか?

NLua同梱のlua52.dllをSJIS対応版に差し替えればいいかと思ったんですが、
このdllは公式配布のものとは違うようで、ビルド方法が分かりませんでした。

dllのビルドさえできれば、Luaの字句解析部(llex.c)へのパッチの当て方は分かっているんですが…
431デフォルトの名無しさん:2014/06/19(木) 13:05:43.69 ID:CumbCiDK
>>430
https://github.com/NLua/lua
これでしょ?
cmake->buildするだけでは?
432デフォルトの名無しさん:2014/06/20(金) 17:24:54.94 ID:N64lKT9J
ありがとう!
ビルドできました。
https://github.com/NLua/NLuaしか見てなかった・・・
433デフォルトの名無しさん:2014/06/20(金) 17:32:59.29 ID:TUABdWdO
リンクが貼られてるから
git clone https://github.com/NLua/NLua.git
cd NLua
git submodule update --init --recursive
で入るんだけどね
434デフォルトの名無しさん:2014/06/29(日) 14:59:39.60 ID:SaBki4ZJ
C++プログラムへのmrubyの組み込みで教えてください。
mrubyのprint出力をホスト側で受けるにはmrb_define_methodで"__printstr__"に
関数を設定すればいいと聞いたのでそのようにしているのですが、標準出力と
標準エラー出力の区別ってできないんでしょうか?
435デフォルトの名無しさん:2014/06/30(月) 15:10:51.45 ID:02CSsGE4
>>434
mruby-print/src/print.c 内の printstr で stdout とハードコーディングされてるので、stderr に出したいときはここを書き換えるか、新たに stderr に出すメソッドを追加すればいいのでは?
436デフォルトの名無しさん:2014/06/30(月) 23:03:22.29 ID:FuMPZ5KZ
ありがとうございます。
printstrのフックでは受け取れないメッセージがあったのでエラー出力には別のフックがあるのかと
思ったんですが、ソース見てみたらそこかしこでfwrite使って直接出力してますね。
確かにこれだと自分でソースいじらないとならないですね。
437デフォルトの名無しさん:2014/07/02(水) 16:59:10.88 ID:JkuzDLMY
最近の lua とか squirrel とか python の実行速度を比較したページってないかね?
4、5年ぐらい前の奴なら英語サイトの奴があるけど、最近はどうなのかなと思って。
438デフォルトの名無しさん:2014/07/02(水) 21:40:33.67 ID:z0TOEu0h
速さはjit環境の有無で大分違うよね
pythonだとpypy?

luajitは今後5.3移行にちゃんと追従してくれるか心配だね。
組み込み用としてのメリットはluaには他にもいろいろあるだろうけど
jit環境が追従していかないとmrubyあたりに追い抜かれる?
439デフォルトの名無しさん:2014/07/03(木) 07:39:27.54 ID:FjTkZ2C1
jit関係ないっしょ
440デフォルトの名無しさん:2014/07/05(土) 14:29:38.02 ID:MeYLeon+
AngelScript|Д`)<AngelScriptJITは2.27に対応してるな
441デフォルトの名無しさん:2014/07/05(土) 21:54:08.81 ID:K5ikJkFl
>>440
ASがのけ者にされてたからちょっと安心した
442デフォルトの名無しさん:2014/07/06(日) 06:19:08.04 ID:xkFVsdDO
angelscript今までなぜか無視してたけど言語仕様見てきたら結構よさそうだな
これコンパイル時に全部型チェックしてくれるの?
443デフォルトの名無しさん:2014/07/06(日) 12:38:13.11 ID:uyyLiQuX
angelscriptの最大の問題はこれならC++直接書くのとかわらなくね?
という疑問が拭えないことだ
444デフォルトの名無しさん:2014/07/07(月) 01:12:10.12 ID:KmCWtuSa
>>443
どうしてもスクリプトにしないといけない箇所があったときは
慣れ親しんだC++に近い文法でスクリプト書けるってのは凄い利点だよ
445デフォルトの名無しさん:2014/07/07(月) 01:43:37.99 ID:PzOLkwtR
そもそも「どうしてもスクリプトにしないといけない箇所」なんてものは
思い込み以外では存在しない訳で
446デフォルトの名無しさん:2014/07/07(月) 01:49:05.61 ID:X/HL5rf/
(゚Д゚) ハア??
447デフォルトの名無しさん:2014/07/07(月) 02:26:29.42 ID:amtUtvKD
>>443
組み込みやすくもないし
書きやすくもないんだよね
しいて言えば
スクリプタを管理する立場の人にとっては
手間が減り楽が出来るのかもしれないね

現実社会でもよく見られる構図だけど
奴隷頭ってやつだな
448デフォルトの名無しさん:2014/07/07(月) 07:47:10.67 ID:3MsBFfON
その点Luaはプログラマではない者が使いやすいことを理念としているからな。
ただし英語程度はできることが前提だが。
449デフォルトの名無しさん:2014/07/07(月) 09:42:19.00 ID:n/CZjLr0
[要出典]
450デフォルトの名無しさん:2014/07/07(月) 10:01:11.88 ID:kMcKP8+6
実行時コンパイルできるC++って考えるといろいろと悪用法ありそうなんだけどな
451デフォルトの名無しさん:2014/07/07(月) 10:23:10.27 ID:KmCWtuSa
>>445
C++で作ったMOD前提のM.U.G.E.Nみたいな2Dゲーム
キャラクターの描画・行動全て自由に作れるようにするとしたら
スクリプトじゃなくて何にすればいい?
452デフォルトの名無しさん:2014/07/07(月) 11:08:37.90 ID:m9tAIraA
「C++でつくったMOD前提」ならそれこそスクリプトでなくてもいいのでは
制御のインターフェースが外部に全部公開されてるってことだよね
453デフォルトの名無しさん:2014/07/07(月) 22:51:51.30 ID:KmCWtuSa
>>452
書き方が悪かったな
MOD前提のC++で作った・・・だわ
454デフォルトの名無しさん:2014/07/08(火) 14:33:11.22 ID:x77uNS3E
AngelScript|Д`)<AngelScriptは組み込み簡単だぞ。
ヘッダ1個インクルードしてライブラリファイル1個リンクするだけでOK。
455デフォルトの名無しさん:2014/07/08(火) 15:54:28.60 ID:t9t2Zfam
AngelScriptはEnvironment-Module-Contextっていう構成がすごくわかりやすくて好きになったな
456デフォルトの名無しさん:2014/07/08(火) 15:56:54.46 ID:t9t2Zfam
まちがえた
×Environment → ○Engine
457デフォルトの名無しさん:2014/07/08(火) 23:53:13.46 ID:jARkErFj
C++が好きな人にとってはいいのかもしれないが
C++に特に思い入れのない人にとっては
何でC++の持つ恩恵が受けられる訳でもないスクリプトにまで
C++の流儀を持ち込まねばならんのだ
という感情があるということを
AngelScript推進派は意識した方がいいと思う

AngelScriptに懐疑的な人に対して
>>444みたいなアピールは無意味どころか逆撫でしてるんじゃない?
458デフォルトの名無しさん:2014/07/08(火) 23:55:23.17 ID:jARkErFj
勿論AngelScriptの有用性を否定してる訳じゃなくて
人にモノを薦めるときは相手の考えも尊重してね
という話
459デフォルトの名無しさん:2014/07/09(水) 00:01:15.25 ID:yWtVDAf2
C++構文とかどうでもいいからさ
コンパイル時型チェックしてくれる組み込めるスクリプト言語って他にないの?
460デフォルトの名無しさん:2014/07/09(水) 00:02:36.15 ID:6stlqCZC
なぜそこまで言われなければならないんだ・・・
じゃ今度からAngelScriptの話をするときは「(個人の感想です)」って末尾に付けるわ
461デフォルトの名無しさん:2014/07/09(水) 00:08:24.48 ID:HW4kwc6W
JavaやC#なんかとおなじで、ドカタに使わせる言語としては良さそうなんじゃないかと思う。
462デフォルトの名無しさん:2014/07/09(水) 00:27:27.75 ID:q6W6WKLr
AngelScript|Д`)さんってさぁ
Botや荒らしの類にしか見えないんだよ
本気で貢献したい、広めたいと思うなら
リファレンスの翻訳したり
サンプルコードを提示したりと
やることはいくらでもあるでしょ?
どっかの国のじゃないんだからさぁ

ま、流行らないと思うけども
463デフォルトの名無しさん:2014/07/09(水) 00:43:58.35 ID:ay8R5j5j
静的と動的を二刀流したら面白そうなのは分かるけど
同じ系統の言語を二個使ったら何ができるのかが分からない
464デフォルトの名無しさん:2014/07/09(水) 00:55:53.38 ID:Pn1IATNt
ASって存在価値ないんじゃね?ってレスに
こういう場面で使えるよって返したつもりだったけど

無意識のうちに、C++すら理解できない能無しの劣等感を煽っちゃったんだね。
ごめんね。
465デフォルトの名無しさん:2014/07/09(水) 01:03:57.02 ID:6stlqCZC
動的型付け言語はコーディングミスをしない超人向け言語ですので
その超人様がコンパイル時型チェックに頼る凡人を見下すのは当然ですね
466デフォルトの名無しさん:2014/07/09(水) 01:15:00.10 ID:q6W6WKLr
>>464
誰だよお前はw
467デフォルトの名無しさん:2014/07/09(水) 07:00:19.88 ID:D5g6nYoo
俺だよ俺
468デフォルトの名無しさん:2014/07/09(水) 08:20:34.04 ID:dnhlgLoJ
AS信者ってキモいな・・・
469デフォルトの名無しさん:2014/07/09(水) 08:35:39.86 ID:dUvUmdvT
信者とか言い出すやつは荒らし。
みんな知ってるね。
470デフォルトの名無しさん:2014/07/09(水) 19:01:55.74 ID:r8cQgObV
AngelScriptは何も悪くない
悪いのはソレを使う人間だよ
471デフォルトの名無しさん:2014/07/09(水) 19:50:22.95 ID:ay8R5j5j
静的と動的の争いが無駄すぎるおかげで、二刀流の生産性が非常に高く感じられる
472デフォルトの名無しさん:2014/07/09(水) 20:24:17.88 ID:yWtVDAf2
お前らが言ってる静的動的ってどういう意味で言ってんの?
型付けが?それとも実行環境が?
473デフォルトの名無しさん:2014/07/10(木) 14:37:45.84 ID:QqTFR8Ev
AngelScript使ってる男の人って・・・・・
474デフォルトの名無しさん:2014/07/10(木) 16:01:45.19 ID:iwrqfwZm
TreeBoa?
475デフォルトの名無しさん:2014/07/11(金) 01:37:33.79 ID:hJn+b6B7
luaのmodule, requireの使い方がイマイチよく分からないんだけど
a.luaとb.luaというファイルがあったとして、a.luaにmodule("a")って書いておけばb.luaからrequire("a")でa.luaを参照で生きるってのは分かるんだけど
a.luaもb.luaもアーカイブ内にあって(例えばZIPにスクリプトが固めてある状態で)アーカイブから直接
スクリプト文字列をロードしてlua_Stateつくったとするじゃん?そしたらb.luaからa.luaってどうやって参照するの??
a.luaをロードしたlua_Stateと、b.luaをロードしたlua_Stateはそれぞれ完全に独立してるわけじゃん?
a.lua内でmodule("a")とかやっても、それはb.luaにとっては全く無関係な話しじゃね?っていう
476デフォルトの名無しさん:2014/07/11(金) 02:45:06.27 ID:Mxpl8CKX
>>475
dostring

はい

はい
477デフォルトの名無しさん:2014/07/11(金) 04:09:49.02 ID:D40A4FPH
>>475
requireの公式マニュアル読めばモジュールの検索手順載ってるからそれ読んどいてね
require経由で独自のアーカイブからファイルを読みたいなら
package.preloadのメタメソッドに自前のローダを仕込むとかトリックを使うことになるよ
478デフォルトの名無しさん:2014/07/11(金) 07:07:35.10 ID:TT3tD9Ot
>>475
スクリプトをロードすると関数がつくられる (lua_Stateではない)
各々の関数はグローバル変数を共有できる (完全に独立してない)

モジュールの使い方はバージョン毎に改善されているが
グローバル変数の使い方はあまり変わってないので使い方が分からない人はいないと思う
479デフォルトの名無しさん:2014/07/11(金) 07:47:48.30 ID:XCAXgxw4
module は廃止されたよね?
ttp://p-monster.hatenablog.com/entry/2013/02/13/205419
480デフォルトの名無しさん:2014/07/11(金) 07:50:22.67 ID:XCAXgxw4
こちらの方がよいかも
ttp://ar.aichi-u.ac.jp/blog/lua/lua.html#id.2.2.0
481475:2014/07/11(金) 14:00:17.28 ID:snzc4mzL
ああ、なにか根本的に間違ってたんだな
package.preloadとかの説明は読んでたけど、このテーブルが異なる lua_State 間で共有される
情報だとは思っていなかった

結局メタテーブルいじるのは面倒なので、単に

int lua_include(lua_State *ls) {
 const char *scriptname = lua_tostring(ls, 1);
 const char *source = GetStringFromArchive("data.zip", scriptname);
 lua_dostring(ls, source)
 return 0;
}

みたいな関数を登録して、スクリプト内から include("a.lua") って呼んで使うことにしたよ。みんなありがとう
482デフォルトの名無しさん:2014/07/13(日) 17:10:55.13 ID:kuvdsVq2
luaでiosアプリを操作するスクリプトを作ってます
ランダム変数を使って、タッチする位置とタイミングを微妙に変えつつ、
位置とタイミングをある程度の範囲内に抑えたいのですが、

x1=math.random(14,134);
y1=math.random(280,314);
a1=math.random(-1,+1);
a2=math.random(-1,+1);
t0=math.random(80000,85000);
t1=math.random;(50000,50100);
touchdown(0,x1,y1);
usleep(t0);
touchup(0,x1+a1,y1+a2);
usleep(t1);
usleep(300000);

まったく反応しません
どうしてでしょうか
483デフォルトの名無しさん:2014/07/13(日) 17:13:44.99 ID:kuvdsVq2
× t1=math.random;(50000,50100);
◯ t1=math.random(50000,50100);

直したけど動きません
484デフォルトの名無しさん:2014/07/13(日) 17:20:13.38 ID:kuvdsVq2
お騒がせしてすいません
+が余計でした
485デフォルトの名無しさん:2014/07/13(日) 23:51:22.63 ID:oRazOMf+
関係ないけどluaは命令末尾にセミコロン要らないよ。
まあ、同じ行に命令を並べる時は必要になるから、念のため常につけておくってのはアリだと思うけど。
486デフォルトの名無しさん:2014/07/15(火) 22:41:15.80 ID:4Hk/aMI9
lua_getuservalue, lua_setuservalueってどういう使い方するの?
というかどういう風に使うもんなの?
487デフォルトの名無しさん:2014/07/18(金) 07:19:05.42 ID:MNjetX+m
>>486
マニュアルやら
http://sceneryandfish.withnotes.net/?p=1908
などでも触れてるけど
数十行レベルでしょのシンプルなソース見ちゃうのが手っ取り早いと思うよ
488デフォルトの名無しさん:2014/07/21(月) 12:06:25.68 ID:MDGKsYd9
AngelScript|Д`)<AngelScript2.29.1記念カキコ
何か重要なバグフィックスらしい。
489デフォルトの名無しさん:2014/07/21(月) 16:26:34.64 ID:CPAJhmyk
ttp://www.angelcode.com/angelscript/changes.php
これか
メモリ関連のバグフィクスと、出力されるバイトコードがおかしくなるバグの修正かな
490デフォルトの名無しさん:2014/08/11(月) 22:58:35.99 ID:xLVZtjTF
何気に痛いな
バージョン番号がいまいちわからないんだけど
stable版ってどれなんだろ
491デフォルトの名無しさん:2014/08/12(火) 02:19:26.71 ID:Hfmn/cHa
auto touchっていうアプリのスクリプトがLua言語でちんぷんかんぷんで。
ここで質問してもいい?
492デフォルトの名無しさん:2014/08/12(火) 02:55:05.48 ID:QZJQGyIx
>>491
いいよ
寂れてるし。
493デフォルトの名無しさん:2014/08/12(火) 05:31:01.87 ID:7nSDT24w
Lua,Squirrelの簡単な本がない
あれば買うが、難しい本はいらん
494デフォルトの名無しさん:2014/08/12(火) 06:24:10.22 ID:FZ4QQEE/
用途を考えればド素人向けの本はもっといっぱいほしいよな
495デフォルトの名無しさん:2014/08/12(火) 08:49:45.55 ID:Hfmn/cHa
質問しておきながら爆睡してしまった。申し訳ない。
auto touchの関数についてhttp://autotouch.me/?page_id=269

alert("Hello world!"); hello world!と表示する
vibrate(); -- 一回振動する.
tap(100, 200); -- 座標(100, 200)をクリックする.このあたりは実際にauto touchで実行できたんだ。

画像aがあるときにaをタップ
っていうのはfindImageTap {imagePath="/var/A.png", count=1};
だと思うんだけど出来なくて困ってる。
496デフォルトの名無しさん:2014/08/12(火) 09:06:36.78 ID:5U2rS/IR
面白そうなツールだな
497デフォルトの名無しさん:2014/08/12(火) 14:26:34.31 ID:Hfmn/cHa
UWSCみたいな感じで動かせそうだな〜って思ってる。
別過去スレでやってる人がいて、その人のスクリプトはこんな感じなのね。↓

まだボタン一つ押せただけで大した事できてないけど、、、
スクリーンショットとって、PCで画像切り抜き、サイズ変えないで保存して上手くいった。
あいぽんで編集するとサイズ変わってしまって上手くいかなかった。
あとはマニュアル通り

ボタンの画像を少し小さめに切抜き、find image
すると、ボタンの中の座標返すからそのままtouchdown
してあげると良いみたい

local ok;

ok = findImage{imagePath="/var/mobile/Library/AutoTouch/Scripts/IMG/ok.png", count=1};
for i, v in pairs(ok) do
touchDown(0,v[1],v[2]);
usleep(100000.00);
touchUp(0,v[1],v[2]);
end
画像はこんな感じ。カメラロールに保存しちゃうと拡大されちゃうけど、ホントは等倍ね
http://i.imgur.com/nJymDHf.jpg

とのことなんよ。画像を見つけたらfor以下をループってことなのかな?
498デフォルトの名無しさん:2014/08/12(火) 18:35:02.04 ID:XJm7PWEz
書いてあることそのままじゃね?
何が分からないんだろ
499デフォルトの名無しさん:2014/08/12(火) 20:58:16.89 ID:Hfmn/cHa
上手く認識してくれないんだわ。。
angeっていう画像を見つけたらタップっていう動作を組む方が簡単そうなので
findImageTap{imagePath="/var/mobile/Library/AutoTouch/Scripts/IMG/ange.png", count=1};
っていうのに変えてもうまくいかない。

iphoneでスクショ撮る→PC繋いで画像ダブルクリック。スクショしてペイントに貼り付け。4×4ドットで切り取りしてange.pngで保存。
iexplorer経由でIMGフォルダに保存。
そもそもの画像の保存方法がダメなのかな?
500デフォルトの名無しさん:2014/08/12(火) 21:54:52.06 ID:XJm7PWEz
findImageTapじゃなくてfindImageを使って
マッチしてるか確認
local result = findImage{imagePath="/var/mobile/Library/AutoTouch/Scripts/IMG/ange.png", count=1}
alert(#result)
これが0なら拾えていないので画像に問題ありなので画像作成に工夫する
1なら拾えているので他に問題あり
考えられるのはtap対象自体がイベントを処理していないか
当たり判定の範囲外
前者は手動でtapして反応するか確認
後者はresultの中身に入った座標を参考にしながらtap関数で確認

alertの仕様が分からないので
alert(tostring(#result)) や
alert(""...#result)などとする必要が有るかも知れない
501デフォルトの名無しさん:2014/08/12(火) 22:22:09.25 ID:Hfmn/cHa
丁寧にありがとう。
local result = findImage{imagePath="/var/mobile/Library/AutoTouch/Scripts/IMG/ange.png", count=1}
alert("#result")
で反応無かったので画像の保存の仕方がいけなかったみたい。
ちょっと保存方法変えてみます。
502デフォルトの名無しさん:2014/08/12(火) 22:37:13.67 ID:XJm7PWEz
>>501
>alert("#result")
誰がそんな事言ったよ
てかそれで反応がないならおかしいぞ
503デフォルトの名無しさん:2014/08/12(火) 22:38:29.15 ID:wYq/8Bw7
ホスト環境側の制限なんかで、コード通りに動いてくれないときのデバッグが一番面倒だよね。
504デフォルトの名無しさん:2014/08/12(火) 23:01:41.48 ID:XJm7PWEz
エミュもなく実機テストオンリーじゃ地獄だね
https://teachme.jp/contents/16546
見る限りリモートデバッグも出来るようだから
そっちの環境を作るのが先かもね
505デフォルトの名無しさん:2014/08/25(月) 10:39:27.72 ID:BL3IV/EG
ChaiScript ( http://chaiscript.com/ ) って試した人います?
組み込みの文字列、配列、連想配列に std::string, vector, map を
そのまま使っているほどには、C++のクラスをバインドするには親和性が高そう。
比較的、型の扱いが厳密なのが特徴かな。 クロージャは無いかも。
506デフォルトの名無しさん:2014/08/25(月) 18:26:32.35 ID:eFSdMsqd
イラネ
507デフォルトの名無しさん:2014/08/25(月) 19:18:08.37 ID:8RrIpfE5
>>505
割とオーソドックスな文法だね
defでの関数定義時に、annotationとguardを設定できるのはちょっと面白い
(いまいち使い道は思いつかない)
バージョン5.3まで行ってる割にはドキュメントが弱そうに(個人的には)見えるけど
それだけシンプルって事なのか、それともdoxygenの使用にこだわっているせいなのか
508デフォルトの名無しさん:2014/08/25(月) 21:14:31.71 ID:wLUoTrN4
>>507
C++による仮想コードでスクリプトのドキュメントを生成していて、
doxygenの中にスクリプトとC++ APIの両方が書かれているみたい。
ただ、":=" と "=" の動作の違いとか、基本的なことが書かれてない気がする。

割り切った設計はなかなか面白いのだけど、いろいろと惜しいな。
509デフォルトの名無しさん:2014/08/26(火) 09:41:08.11 ID:laXhI8kB
マニュアル酷いなぁ

Function Definition ::= [annotation + CR/LF] "def" identifier "(" [arg ("," arg)*] ")" [":" guard] block

annotation ::= ???
CR/LF ::= ???
identifier ::= ???
arg ::= ???
guard ::= ???
block ::= ???

訳わからん
510デフォルトの名無しさん:2014/08/26(火) 12:16:11.13 ID:c1R9OiEG
ん? そこは数少ない「訳わかる」ところじゃないのか?
関数定義のシンタックスが書いてあるだけだぞ。

annotation: meta-annotation on function, currently used as documentation. Optional.
identifier: name of function. Required.
args: comma-delimited list of parameter names. Optional.
guards: guarding statement that act as a prerequisite for the function. Optional.
{ }: scoped block as function body. Required.
511デフォルトの名無しさん:2014/08/26(火) 21:00:26.29 ID:CrpVQ0De
>>509
これが訳分からんならお前には色々と難しいな
512デフォルトの名無しさん:2014/08/26(火) 21:58:18.18 ID:laXhI8kB
>>510
非終端記号混じりで定義するなら
それらの定義もしっかりやれよって話

>>511
俺には無理
annotation
1行目のみ#までの空白タブは読み捨てるが2行目移行は読み捨てない
Annotationとキーワード"def"がある行の間に空行はいくら入ってもいいが空白行やコメントは不可
こんなソース見なきゃ分かんねーよ
513デフォルトの名無しさん:2014/08/27(水) 06:44:36.56 ID:4iKpxsh4
>>512
確かにannotationは説明不足だな
他のコメントは // でも /* */ でもいいのに、ここは # のみだし
複数行の扱いとか、get_annotation() で先頭の # が除外されないのも微妙

マニュアルがどうこう以前に、annotationの仕様がこなれていないんじゃないかな
「関数の直前のコメントは、その説明とみなす」というアイデアは嫌いじゃないが
514デフォルトの名無しさん:2014/08/27(水) 07:39:39.64 ID:3/KZIqq3
イラネ
515デフォルトの名無しさん:2014/08/27(水) 07:50:51.23 ID:EpvBGjSy
Lua原理主義者さん鬱陶しいな・・・
516デフォルトの名無しさん:2014/08/27(水) 09:13:33.41 ID:6IT+XF7c
ライバルにストレスを与えるのは当たり前だ
競争原理が鬱陶しいなら競争をやめればいい
517デフォルトの名無しさん:2014/08/27(水) 15:44:42.46 ID:4iKpxsh4
>>505
多少複雑なことをやろうとすると segfault で落ちる。
GCがC++任せ(参照カウント)なのに、オブジェクトの生存期間の制御が甘いようだ。
良いバインダではあるけど、良いエンジンではないな。
518デフォルトの名無しさん:2014/08/28(木) 13:22:05.82 ID:wsbnD5TY
>>495と同じようにauto touchで動かすLuaの質問してもいいかな?
519デフォルトの名無しさん:2014/09/01(月) 03:56:01.22 ID:ruMjAUJp
>>518
いいよ
寂れてるし。
520デフォルトの名無しさん:2014/09/07(日) 20:51:30.64 ID:ppGxj2XK
と言っても質問なしw
521デフォルトの名無しさん:2014/09/07(日) 21:16:45.63 ID:V4yJXxP4
もしかしたら行間を読み取ってダメだって言われたと思ったのかもしれない
522デフォルトの名無しさん:2014/09/08(月) 08:36:00.81 ID:YMBZ0Z5D
> 491 名前:デフォルトの名無しさん[] 投稿日:2014/08/12(火) 02:19:26.71 ID:Hfmn/cHa [1/5]
> auto touchっていうアプリのスクリプトがLua言語でちんぷんかんぷんで。
> ここで質問してもいい?
>
> 492 自分:デフォルトの名無しさん[sage] 投稿日:2014/08/12(火) 02:55:05.48 ID:QZJQGyIx
> >>491
> いいよ
> 寂れてるし。

> 518 名前:デフォルトの名無しさん[sage] 投稿日:2014/08/28(木) 13:22:05.82 ID:wsbnD5TY
> >>495と同じようにauto touchで動かすLuaの質問してもいいかな?
>
> 519 自分:デフォルトの名無しさん[sage] 投稿日:2014/09/01(月) 03:56:01.22 ID:ruMjAUJp
> >>518
> いいよ
> 寂れてるし。
523デフォルトの名無しさん:2014/09/08(月) 08:43:07.21 ID:YMBZ0Z5D
同じ文面でスルーされるってのはちと悲しかった
524デフォルトの名無しさん:2014/09/09(火) 08:11:02.05 ID:2JmvO9sZ
2度あることは3度ある!
525デフォルトの名無しさん:2014/09/13(土) 13:49:43.66 ID:HQ53r6lE
Luaの文法は組み込みじゃなくてLLとしても十分使えると思うんだよなぁ。
クロージャをなくして関数束縛とラムダに分離したらRubyよりも手軽に使えそう。
526デフォルトの名無しさん:2014/09/13(土) 14:34:10.13 ID:xYGMnmOJ
LLとして利用するのにコンセンサスがいるのか?

というか規模から考えて現状でもRubyより手軽に使えるはずだし
ちょっと文法変えた程度じゃ手軽さの関係は変わらんだろう

ついでに文法だけならもっとマシな言語いくらでもあるだろ
Luaは処理系実装・実績を含めて初めて評価される類だと思う
527デフォルトの名無しさん:2014/09/13(土) 14:59:46.23 ID:2mQgH8ds
localの宣言はLLじゃないな。
528デフォルトの名無しさん:2014/09/13(土) 15:33:20.77 ID:y8nlksus
「LLとして使う」ってどういう文脈なんだろう?
一般業務なら Battery Included な環境のほうが便利なんじゃないか?
組み込み言語のライブラリの貧弱さは、サンドボックス内で使われるからこそ許される(し、好まれる)のでは。
529デフォルトの名無しさん:2014/09/13(土) 17:15:36.86 ID:CqCzoC9O
local宣言はブロックの途中から終わりまでのスコープを作る
つまり宣言の内容より位置に意味があるから省略できない
530デフォルトの名無しさん:2014/09/13(土) 17:22:33.96 ID:xYGMnmOJ
宣言した位置で意味が変わるようなコードはクソだから
配慮しなくてもいいような
531デフォルトの名無しさん:2014/09/13(土) 17:39:51.70 ID:y8nlksus
>>529
Luaではlocalを省略するとグローバル変数になるから、位置以前の問題では。

>>530
C++だと変数の宣言位置によって、そのコンストラクタが走るタイミングが変わるぞ。
532デフォルトの名無しさん:2014/09/13(土) 17:40:19.61 ID:CqCzoC9O
gotoは行き先の名前を考えるけど構造化プログラミングは位置を考える
これが大成功してしまったから
位置の考え方は間違ってないと思う
533デフォルトの名無しさん:2014/09/13(土) 17:58:11.94 ID:xYGMnmOJ
>>531
C++でもコンストラクタが走るタイミングで結果が変わるコードは
クソに分類されると思うが

菱形継承がタブーなのを見れば明らか

>>532
構造化プログラミングで考える「位置」は
階層で十分であって「行」ではないような
534デフォルトの名無しさん:2014/09/13(土) 18:13:48.15 ID:2iAULK/t
「クロージャを関数束縛とラムダに分離」ってどういう意味?
function宣言ってそもそもクロージャの作成と変数への代入のシンタックスシュガーに過ぎないんじゃなかったっけ?
535デフォルトの名無しさん:2014/09/13(土) 18:52:34.79 ID:y8nlksus
>>533
コンストラクタにも実行コストがあるから、必要になるまでは遅らせるのが常識。
例えばその変数の初期化前に分岐があるような場合。
また、ロック/アンロックに RAII を使うようなイディオムは、当然ながら「コンストラクタが走るタイミングで結果が変わる」。

もちろん、Luaではコンストラクタのような自動的に実行されるコードはないから関係ないが。

あと、この文脈では菱形継承はまったく関係ない。
話がC++への批判に摩り替わっていないか?
536デフォルトの名無しさん:2014/09/13(土) 19:14:15.92 ID:xYGMnmOJ
コンストラクタが走るタイミングが読めない
極端な例として菱形継承を挙げただけだよ

とりあえずここLuaと愉快な仲間たちのスレなんで
537デフォルトの名無しさん:2014/09/13(土) 19:15:15.01 ID:CqCzoC9O
>>534
関係ないかもしれないけど
関数束縛が代入の構文糖である言語は
前方参照をすると失敗する場合がある
538デフォルトの名無しさん:2014/10/03(金) 07:43:15.70 ID:lGjxzjS9
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ
539デフォルトの名無しさん:2014/10/11(土) 11:25:02.83 ID:9ZTN9fQf
luaを知るのに既存のスクリプトをいくつかみてるんだけど
lua.eっていう拡張子のものがいくつかあって開けない
ググッてもわからないんだけどlua.eの形のものは何なんだろう
見れるエディタも教えてもらえるとありがたい
540デフォルトの名無しさん:2014/10/11(土) 11:30:28.22 ID:9ZTN9fQf
スマン・・独自ソフトで暗号化されてるだけだったわ
541デフォルトの名無しさん:2014/10/12(日) 05:12:57.70 ID:94OdN8X7
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >
542sage:2014/10/12(日) 13:45:43.55 ID:i7kDtML/
長文失礼します あるサイトを参考にしてソートプログラムを書いているのですが
local function main()

NUM_DATA = 10
x = {9,4,6,2,1,8,0,3,7,5}

function BubSort(x,n)
for i=1,i<=n do--エラー
for j=n,j>i do
if(x[j-1] > x[j+1]) then --前の要素が大きかったら
x[j],x[j-1] = x[j-1],x[j]--交換
end
end
end
end

function ShowData(x,n)
for i,v in pairs(x) do
print(v)
end
end

--s print("ソート前")
ShowData(x,NUM_DATA)
print("\n\n")
BubSort(x,NUMDATA)
-- print("\nソート後\n")
ShowData(x,NUM_DATA)
end
main()
と書いた時に7行目でattempt to compare two nil valuesと出てしまいます
解決策がありましたらご享受していただけないでしょうか
543デフォルトの名無しさん:2014/10/12(日) 14:10:33.80 ID:UZYaSt7F
for i=1,n do
544542:2014/10/12(日) 14:32:29.24 ID:i7kDtML/
回答ありがとうございます。 試してみたところ7行目で
'for' limit must be a number
と出ました 自分のほうでもいろいろ試してみます
回答ありがとうございました
545デフォルトの名無しさん:2014/10/12(日) 14:40:16.19 ID:UZYaSt7F
BubSort(x,NUMDATA)

BubSort(x,NUM_DATA)
546542:2014/10/12(日) 14:48:18.55 ID:i7kDtML/
ケアレスミスごめんなさい;;
ありがとうございます、今度は八行目で
attempt to compare number with nil
で出ました、、何度もすみません 自分でも試行錯誤してみます
547デフォルトの名無しさん:2014/10/12(日) 14:59:53.88 ID:UZYaSt7F
for j=n,j>i do
if(x[j-1] > x[j+1]) then

for j=n,i+1,-1 do
if(x[j-1] > x[j]) then
548542:2014/10/12(日) 15:02:46.29 ID:i7kDtML/
for j=n,j>i doをfor j=n,j>i,-1 do
に書き換えました
549542:2014/10/12(日) 15:06:31.21 ID:i7kDtML/
解決しましたありがとうございます!!
550デフォルトの名無しさん:2014/10/12(日) 20:01:27.77 ID:e2Gzikyq
すんごい優しい人がいるなあw
俺が勝手に褒めておいてやるよ

ただ、プログラミング言語だけでなく日本語でも会話して欲しい
551デフォルトの名無しさん:2014/10/13(月) 01:38:05.54 ID:B15n5qdA
cocos2d-xで素直にLua使うのもなんか悔しかったから
mrubyを組み込んでみた
肝心のLuaとの比較だけどLuaもrubyも素人の俺には
よくわんないっていう
ただスクリプトでのゲーム開発ってのは楽しいな
552デフォルトの名無しさん:2014/10/17(金) 23:51:55.26 ID:9a/zPdtM
juliaがembedできると聞いて試してみようと思ったが、なんか面倒くさい。
プログラミング言語のくせになんでネットワークライブラリ必須なんだよ。
553デフォルトの名無しさん:2014/10/18(土) 06:17:24.91 ID:0zghehpU
並列実行、数値計算が売りでFortranを比較対象にしている言語に
デフォルトでネットワーク処理を持っているのを期待するのはさすがに酷だ
554デフォルトの名無しさん:2014/10/20(月) 02:20:43.02 ID:9ZZuBDyz
luajitっていつまで5.1で足踏みするんだろ
本家は5.3αまで進んだのに
555デフォルトの名無しさん:2014/10/20(月) 07:51:24.76 ID:887X5tQi
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
556デフォルトの名無しさん:2014/10/20(月) 14:01:39.85 ID:XKh/BlSi
>>552-553
単に分散が売りの一つだからでは?
トラブってるなら環境明記するといいよ
557デフォルトの名無しさん:2014/10/20(月) 14:28:44.63 ID:YmKa11RJ
juliaって面白そうだけどスレとか建ってないのかな
558デフォルトの名無しさん:2014/10/24(金) 22:05:25.23 ID:LtvHolRf
Lua 5.3.0 (beta) released
559デフォルトの名無しさん:2014/10/31(金) 08:02:57.83 ID:b+WwLJWx
The big features for Lua 5.3 are:
- Basic UTF-8 library
- Bitwise operators
- Integers
560デフォルトの名無しさん:2014/10/31(金) 21:03:36.77 ID:tMdLNX3k
正規表現マッチャとか手が入ってない
5.2以降からすでに文字列にバイナリデータが入るからUTF8を保持できる

stringのソース斜め読みした感じだとあんまし変化ない
Windows版とかにするにはかなり手を入れないといけないね
561デフォルトの名無しさん:2014/11/02(日) 22:58:25.53 ID:uPMt2D9i
>>560
手が入ったのはutf8モジュール。 例えば string.len() はバイト数だが、utf8.len() は文字数になる。
「Windows版」がutf16を指すなら、適当にエンコード変換して、別の文字列かuserdataで保持するのは簡単。
もし、内部のcharをwchar_tに変更する改造する意味なら、確かに手間がかかる。
562デフォルトの名無しさん:2014/11/02(日) 23:54:52.14 ID:TF4Q/5Ab
_TCHAR「きたわよ」
563デフォルトの名無しさん:2014/11/03(月) 00:57:50.97 ID:ZMCFj896
windowsのwchar_tは2byte固定じゃなかった?
という曖昧な前提で申し訳ないけど
1文字==1文字型の表現できず可変長になるから
結局sjis,utf8を扱うのと同じでメリットないんだよね
A/Wだけでなく8/DなどAPIレベルで対応しないとどうにもならないんじゃないかな
間違えてたらすまん
564デフォルトの名無しさん:2014/11/03(月) 02:05:27.09 ID:7uHWyuXV
んんと、UTF-8からUTF-16の変換のコストは低く、
変換結果をGCの管理情報と関連付けてキャッシュすれば
最小限の回数になるので問題はない。
http://sourceforge.jp/projects/lua-naka/

あとはutf8というクラスやfile関係検討して
どの程度の手間が掛かるか検討だね
beta外れるまで待ったほうがいいかどうかとね。
565デフォルトの名無しさん:2014/11/03(月) 03:29:16.31 ID:ZMCFj896
話が通じてないな
566デフォルトの名無しさん:2014/11/03(月) 08:35:18.03 ID:7uHWyuXV
>>565

XP以降のWindowsのUNICODEは16bitの可変長。
1文字==1文字になってしまうのはそのライブラリが対応できてないだけ。
対応できてなければ、たとえばフォントの名前が文字化けするとか
変なところで不具合が発生する。
ダウンロードしたファイルの中身にどんな言語が使われているか
予想できない時代だしねえ。
567デフォルトの名無しさん:2014/11/03(月) 09:03:59.77 ID:gXKeHKY3
きっちりUTF-16に対応したところで、BMP以外はろくにフォントも用意されてないから
あんまり使いどころがないんだよなぁ。
568デフォルトの名無しさん:2014/11/03(月) 09:44:26.28 ID:TIQQD+z7
SquirrelならコンパイルオプションだけでWCHARに対応できるぞ!
WCHARだからマルチバイト文字だし、ダウンロードしたファイルの中身はどうしようもないのは同じだけどな!
569デフォルトの名無しさん:2014/11/03(月) 11:48:44.03 ID:T6nh4Wfv
ゲーム程度なら昔の流儀でmblen とか作って
マルチバイトのまま処理するのでだいたい事足りるけど、
絵文字ニーズがでてきてしまって困ってる

サロゲートペアとかをシンプルに処理できる手頃で小さめなライブラリどっかにないかな
570デフォルトの名無しさん:2014/11/04(火) 09:05:41.39 ID:bzlUuRTb
>>569
サロゲートペアってUTF-8なら、単なる「バイト数が多いマルチバイト1文字」じゃなかった?
UTF-8を適切に扱えるライブラリを探せば良いのでは?
UTF-16ベースで、1文字=1wcharで処理するものはダメだね。
571デフォルトの名無しさん:2014/11/04(火) 09:14:34.96 ID:lCpWe+1k
基本内部処理はUTF-8オンリーでやって、
WINAPIまたはWINDOWSアプリに渡す場合だけ変換するってのが無難だろう。
572デフォルトの名無しさん:2014/11/04(火) 12:26:39.85 ID:JSkttuhx
>>570
それが正式な仕様なんだけど、
世の中にはUTF16をべたにUTF8展開しただけ、
というファイルがあふれてて、UTF-8的に二文字になってることのが多くていかんともしがたいのん
573デフォルトの名無しさん:2014/11/04(火) 13:23:26.98 ID:99dxtSJ/
というかそれはUTF-8とは言わないことになっとるw
574デフォルトの名無しさん:2014/11/04(火) 16:39:35.13 ID:8lAd+EdW
そういうことになってるけど、実際使われてるのはそうだよね。たぶんだいたいJavaが悪い
575デフォルトの名無しさん:2014/11/04(火) 18:02:59.37 ID:OadM+d9h
で、Luaで何がしたいの?
576デフォルトの名無しさん:2014/11/04(火) 18:40:40.27 ID:lCpWe+1k
内部文字コードをUCS2にしてしまえば、
Windowsのwstringと互換だからホストから見て扱いやすいという判断でないの?
Windows用のC++のランタイムがサロゲート対応できてないわけだし。

それはそれとして
自分的にはUTF16とUTF8の変換はコストが低いと考えている。
なんでかというと、マルチバイトのアプリケーションが末尾AのAPIを呼んだ時に
カーネル側での変換の対象になっていると考えるし、
それでいて今まで問題になっていないから。
577デフォルトの名無しさん:2014/11/05(水) 07:35:22.74 ID:9E/cXL42
マルチプラットフォームならUTF8やろね。
Windows氏ね
578デフォルトの名無しさん:2014/11/05(水) 14:55:13.19 ID:C/jbA3HR
Windows、UTF8がデフォの文字コードになればかなり楽になりそうだな。
579デフォルトの名無しさん:2014/11/05(水) 17:30:58.35 ID:5alChkxa
コンソールに関してはUTF8化も不可能ではないらしい。
ただ、既存のコマンドとかの整合性が問題。
580デフォルトの名無しさん:2014/11/05(水) 17:32:35.49 ID:9E/cXL42
「楽さ」ではなく気になるのは「速さ」では?
Windows氏ね
581デフォルトの名無しさん:2014/11/05(水) 21:07:16.47 ID:pM6wUNVX
>>577
特定のプラットフォームに「氏ね」言う奴がマルチプラットフォーム語るか。
582デフォルトの名無しさん:2014/11/05(水) 21:42:16.61 ID:5alChkxa
WindowsユーザーはWindowsが好きで使っているわけではない。
Macユーザーは宗教で使っている。
Linux/bsdユーザーはソースコードを蹂躙するために使っている。
583デフォルトの名無しさん:2014/11/05(水) 23:18:38.50 ID:hGDSCPPH
サロゲートペアなんかよりUnicode正規化の方が
よっぽど実際的な問題だと思うんだが
584デフォルトの名無しさん:2014/11/05(水) 23:28:46.45 ID:5iseFbl1
濁点を分割するOSXは死んでほしいよね
585デフォルトの名無しさん:2014/11/06(木) 11:07:16.22 ID:ElrQPnL2
辞書順の文字列比較さえできないlocaleの実装がクソなLinuxは死んで欲しいよね
586デフォルトの名無しさん:2014/11/06(木) 11:37:03.69 ID:5j6hC+wL
サロゲートなんとか「シフトなんとかがやられたようだな・・・」
587デフォルトの名無しさん:2014/11/06(木) 12:48:03.08 ID:QHCs9rG1
マルチプラットフォーム目指すと全ての環境に死ねって思うようになる悲劇
588デフォルトの名無しさん:2014/11/06(木) 16:09:06.32 ID:M2Yo7uIT
つまり日本語が敗戦とともに氏ねばよかったんだよ
589デフォルトの名無しさん:2014/11/06(木) 16:14:45.84 ID:pZw/zM7a
志賀直哉かよ
590デフォルトの名無しさん:2014/11/06(木) 22:56:57.44 ID:Lo7NS+Dz
UTF8対応はリテラルと基本操作だけ。
ここらへんは5.4とかからかなあ。
そうするとC++でコンパイルしつつ外付けで
boost_regex.matchというような関数を用意しろって感じかなあ。

↓これだもんね。
static int singlematch (MatchState *ms, const char *s, const char *p,
const char *ep) {
if (s >= ms->src_end)
return 0;
else {
int c = uchar(*s);
switch (*p) {
case '.': return 1; /* matches any char */
case L_ESC: return match_class(c, uchar(*(p+1)));
case '[': return matchbracketclass(c, p, ep-1);
default: return (uchar(*p) == c);
}
}
}
591デフォルトの名無しさん:2014/11/07(金) 07:19:30.78 ID:m1y+Jxyj
>>590
UTF-8だからこそsinglematchでもなんとか実用になるんじゃないかな?
utf8.charpattern も一応は用意はされているし。
もちろん、string.reverseとか使えないのもあるけど。
592デフォルトの名無しさん:2014/11/07(金) 08:11:23.32 ID:TOsxLUmk
欧米の2chでは、濁点だの絵文字だの
日本人は余計なことばかりしやがるよな、とかいわれてんだろうな
593デフォルトの名無しさん:2014/11/07(金) 12:46:24.98 ID:s2pGHogx
濁点で余計なことしたのは外人やで
594デフォルトの名無しさん:2014/11/08(土) 17:07:11.07 ID:OPiyaoeS
余計なことをする原因は八方美人
595デフォルトの名無しさん:2014/11/12(水) 00:46:15.46 ID:0RjVbG4l
autotouchで画像を探してタップさせたいのですが、上にあるfindImageを使ってもうまくいかないです。
他に画像を探す方法はないでしょうか?
596デフォルトの名無しさん:2014/12/10(水) 00:35:14.86 ID:If47AJ4g
LuaとかSquirrel、AngelScriptが使える環境で、boost使えない環境ってあるのかな?
597デフォルトの名無しさん:2014/12/10(水) 09:29:30.82 ID:5IiOJn2a
ソフトウェア環境の問題で使えないケースは少ないだろうが
開発チームのルールの面で使わせないケースはありそうだ
598デフォルトの名無しさん:2014/12/11(木) 12:44:17.85 ID:vUqbLqkU
>>597
boostが使えない環境じゃなくて、色々な都合でboost使っちゃダメな環境があるわけか…
599デフォルトの名無しさん:2014/12/15(月) 08:18:50.09 ID:njR4rCHR
Lua 5.3.0 (rc0) released
600デフォルトの名無しさん:2014/12/19(金) 02:51:01.25 ID:ouKpIS27
moonsharpというluaを入れてみたんですが、
c#のnamespaceやstaticなクラスをバインドするにはどうすればいいのでしょうか?

関数であれば以下のように登録できたのですが、
lua.Globals["Log"] = (Action<string>)UnityEngine.Debug.Log;

UnityEngineのようなnamespaceを渡し、
script内で UnityEngine.GameObject.Find("obj")
みたいに使いたいのですが
601デフォルトの名無しさん:2014/12/22(月) 00:19:17.53 ID:ZmRaQmm9
>>600
ざっと眺めてみたけど
その程度の事は同じように出来る

ただ
foo()
foo(int)
foo(string)
などのオーバーロードはどうするのかが疑問
動的に型チェックして振り分けてとかだと正直使い物にならないと思う
602デフォルトの名無しさん:2014/12/22(月) 01:19:08.37 ID:D1rmXNgC
>>601
使いながらマニュアル読んで使い方が分かってきました。

オーバーロードに対応してないクラスは扱うことができませんでした。
いくつか制約があるようです。

C#のオブジェクトを簡単にluaから使えるのかと思ったら、
そう簡単にはいかないのですかね。

そういうのはラッパークラスを用意して、
MoonSharpを意識した設計しないといけないようです。

つい新しいものに手を出したけど、他のC#系のluaはどんな感じなのかしら
603デフォルトの名無しさん:2014/12/22(月) 01:19:52.78 ID:D1rmXNgC
× オーバーロードに対応してないクラスは扱うことができませんでした。
オーバーロードに対応してませんでした。
604デフォルトの名無しさん:2014/12/26(金) 08:14:14.37 ID:aFXoC3vZ
Lua 5.3.0 (rc2) released
605デフォルトの名無しさん:2015/01/03(土) 21:35:53.41 ID:x6OMspk0
Lua 5.3.0 (rc3) released
606デフォルトの名無しさん:2015/01/03(土) 22:19:20.82 ID:FqikSySO
更新内容に少しでも触れてくれると嬉しいんだけど・・・
607デフォルトの名無しさん:2015/01/03(土) 23:14:01.09 ID:KF2R3l6f
RCの段階で特筆に値する更新なんてないだろ
というかあったら困る
608デフォルトの名無しさん:2015/01/04(日) 02:23:10.16 ID:AdLaa9R2
5.3楽しみどすね
609デフォルトの名無しさん:2015/01/04(日) 06:44:30.95 ID:FkvmMkr7
RCでの更新はコンパイル警告を無くした、とかばっかり。 安定してるんじゃないかな。
新C-APIの lua_rotate() が地味に便利。
610デフォルトの名無しさん:2015/01/04(日) 08:29:47.65 ID:LjhOLja4
611デフォルトの名無しさん:2015/01/08(木) 07:02:44.50 ID:HB0/eqgI
Lua 5.3.0 (rc4) released Happy New Year!
612デフォルトの名無しさん:2015/01/13(火) 08:21:09.63 ID:rG5Z7jyu
Lua 5.3.0 released ? Happy New Year!
613デフォルトの名無しさん:2015/01/14(水) 08:19:11.90 ID:G/8s1bPT
おめでとうございます。
614デフォルトの名無しさん:2015/01/19(月) 13:17:04.98 ID:i0MAuzuq
Windows系なら JsRT でブラウザ無しの js が使えるな。 node.js でもいいけどさ。
組み込みも js で十分な気がしてきた。
615デフォルトの名無しさん:2015/01/19(月) 19:23:58.96 ID:ax3bxEw/
JsRTではどうやってCからスクリプト内の変数とか操作するの?
616デフォルトの名無しさん:2015/01/19(月) 20:11:10.33 ID:i0MAuzuq
node.js と比べるのはおかしいな。比べるなら v8 単体か。

>>615
ハンドル (voidポインタ) 経由。 グローバル変数のテーブルもCから操作できる。
API は v8 と似ているけど、さらに簡略化されている感じ。
Luaとは違ってスタック操作を意識する必要は無い。 Cスタックを舐める系のGCっぽい。
C関数や、生データをファイナライザ付きでスクリプトに登録もできるし、
スクリプトの変数をCからキープしたいときの AddRef() もある。

後発なだけあって、いい感じに整理されているように見えるよ。
617デフォルトの名無しさん:2015/01/19(月) 22:22:42.69 ID:XVOLeUIA
スタック操作は不要で参照カウントは必要という案は何回も聞いた
みんなLuaと比較した情報は出すけど何個もある代案同士で比較した情報がまだ出ない
だからまだ時期が悪いかなと思う
618デフォルトの名無しさん:2015/01/20(火) 06:19:15.63 ID:MIZOkYTq
スタック操作は覚えることが少ないから習得が早くて便利だけどね
619デフォルトの名無しさん:2015/01/20(火) 07:11:39.79 ID:Qwim/1/Y
LuaのC APIへの不満って、スタック操作と、スクリプトオブジェクトの寿命延長 (luaL_ref)
の2つが大きいいんじゃないの? 止められるんなら止めたいでしょ。
もちろん、Luaはスタック操作が明示的だからこそ、移植性が高いんだけど。

>>617
参照カウントはあくまでCからのキープ用で、スクリプト内だけならマーク&スイープ系のGCのはず。
620デフォルトの名無しさん:2015/01/20(火) 17:48:36.34 ID:MIZOkYTq
奇しくも自分で述べてるように、
スクリプト側からは死んでるようにみえる値を
C側では使ってるから生きてるよ、ということにするには
参照カウントよりもLuaL_refの方が考え方として分かりやすいと思うけど。
621デフォルトの名無しさん:2015/01/20(火) 18:44:09.44 ID:GWZYH+JO
スクリプトオブジェクトの寿命延長って?

Luaは知らないけど
V8ではC++関数のスコープから抜けた時点でJavaScriptのオブジェクトを解放出来るようになっている

だからV8ではC++関数内で使ったオブジェクトが中々解放されなくなるという事はない

関数を終えてもずっと保持したい場合はPersistentにコピーするようになっている
622デフォルトの名無しさん:2015/01/20(火) 18:56:01.81 ID:MIZOkYTq
いや、つまり嫌いと思う人は嫌い、好きと思う人は好きというだけの話。
623デフォルトの名無しさん:2015/01/20(火) 19:33:29.39 ID:Qwim/1/Y
確かに大した差ではなかったな。
自分はどうもオブジェクトそのものではなくCookieを保持している感に戸惑ったが、
気になるならラッパーを一枚噛ませば十分だしな。
624デフォルトの名無しさん:2015/01/22(木) 18:40:30.34 ID:dZXZ9W3g
整数型がデフォルトになったからより速くなったな
625デフォルトの名無しさん:2015/01/22(木) 19:34:31.74 ID:QfKlzsaM
JsRTで遊んでみているが、
IDispatchをVARIANT経由でJavaScript側に公開できることがわかった。
COMの資産を手間無く使えるので、その手の再利用が必要な場合は便利かもしれない。

なお、WebBrowserコントロールが使っていると思われるスクリプト環境はさすがに取得できないようだ。
無理やり連携されるなら window.external を介してこれも IDispatch 経由でやり取りすることになる。

悪くない。 Microsoft も .NET とか捨てて、JsRTとTypeSciptで行けばいいんじゃないかな・・・?
626デフォルトの名無しさん:2015/01/26(月) 19:41:40.28 ID:+446Cocf
Squirrel 3.0.7 stable
Squirrel 3.1 RC1
Released January 10, 2015

さっき気付いた。
627デフォルトの名無しさん:2015/01/26(月) 20:46:44.47 ID:5nfZyfP4
lua5.3の日本語マヌエルマダー?
628デフォルトの名無しさん:2015/01/26(月) 21:34:59.26 ID:Sajs+zmm
言い出しっぺの法則
629デフォルトの名無しさん:2015/01/28(水) 05:31:27.96 ID:SR5teQWH
俺が翻訳するかもしれないからあと100年くらい待ってくれ
630デフォルトの名無しさん:2015/01/28(水) 23:18:45.09 ID:arg2MK+/
「日本語マニュアル出ないかなー」と言いながらずっと使ってるとそのうち英語でも普通に読めるようになって必要なくなる罠。
631デフォルトの名無しさん:2015/01/29(木) 08:12:30.79 ID:FQssNh0T
5.3対応の書籍マダー?
632デフォルトの名無しさん:2015/01/29(木) 08:16:42.32 ID:vMBFyrLx
「マニュアルだけじゃわからんなー」と言いながらずっとソースコードを読んでいるとそのうち先にソースにあたるようになって書籍が必要なくなる罠。
633デフォルトの名無しさん:2015/01/29(木) 08:43:48.85 ID:FQssNh0T
それらで得た知識を書籍にして印税生活をするにだ
634デフォルトの名無しさん:2015/02/01(日) 00:18:48.30 ID:ARaZzTfJ
android版のautotouch使い物にならんなあ
lua部分はともかく独自追加した所のデバッグやってるんだろうか
findimage使った瞬間に落ちる、サンプルのスクリプトを使っても落ちる…
635デフォルトの名無しさん:2015/02/03(火) 08:45:44.97 ID:AqPQb7sP
このスレで既に紹介されたか知らないけど

ObjectScript
https://github.com/unitpoint/objectscript
http://objectscript.org/
http://www.codeproject.com/Articles/466907/ObjectScript-A-new-programming-language

Luaっぽい作りで構文はC/JavaScript系で、Squirrelとキャラが被ってる。
単純な整数計算ベンチの速度だと Lua : Squirrel : ObjectScript = 3 : 2 : 1 (遅い) くらい。
実行バイナリのサイズは Lua : Squirrel : ObjectScript = 2 : 3 : 4 (でかい) くらい。
安定性や採用事例はよくわかんない。ちなみにCachéとは何の関係も無い。
636デフォルトの名無しさん:2015/02/04(水) 06:17:03.56 ID:Eqb0TJqD
CoreCLR がオープンソースになったけど簡単に組み込めたりするのかな
637デフォルトの名無しさん:2015/02/07(土) 10:47:45.90 ID:3mcYxCt2
perlのkeysみたいなの 無いの?
638デフォルトの名無しさん:2015/02/07(土) 11:10:55.67 ID:kuZAKFeA
>>637
Luaの話? いちおう組み込み系全般のスレなので……

標準では用意されていない。 言語機能系の追加ライブラリを使えば良いんじゃない?
まぁ、自作しても for ループを廻せば済むけど。
- stdlib : http://lua-stdlib.github.io/lua-stdlib/modules/std.table.html#keys
- Underscore.lua : http://mirven.github.io/underscore.lua/#keys
639デフォルトの名無しさん:2015/02/08(日) 11:46:47.96 ID:8cE0HyuH
Lua書く時のエディタって何使ってるの? Lightroomのプラグイン書きなんだけど。
640デフォルトの名無しさん:2015/02/08(日) 12:28:55.31 ID:5UGjVIn5
641デフォルトの名無しさん:2015/02/08(日) 17:36:40.20 ID:zqGmBD5H
Intypeってのはどうなん?
642デフォルトの名無しさん:2015/02/16(月) 22:29:33.28 ID:JBQ+Owrp
luaでファイル保存の時に日付.txtみたいに自動でするのはどうすればいいですか?
643デフォルトの名無しさん:2015/02/16(月) 22:40:47.19 ID:yzFhOePD
>>642
Luaからファイルを作っているなら os.date(書式) .. ".txt" でファイル名を生成すれば良いのでは
644デフォルトの名無しさん:2015/02/16(月) 23:48:51.20 ID:JBQ+Owrp
出来ました、ありがとうございます。
645デフォルトの名無しさん:2015/02/19(木) 19:51:04.59 ID:Qw0v9eHu
Luaって存在今日知った。
自作計算プログラム用のスクリプトとしてTclを組み込んで使ってきたけど、
Luaってもう仕様安定してるの?
浮動小数点の実装はちゃんとバイナリ?
646デフォルトの名無しさん:2015/02/19(木) 20:22:48.55 ID:YKDWyqEz
>>645
本体の仕様は概ね安定している。 他の言語と比べてもそれほど差は無いと思う。

Lua 5.3 では、普通にビルドすると、浮動小数点は double、整数は int64 になる。
内部的な値の表現は タグ + union { double; int64; void* } という素直な実装だよ。

正規表現だけは注意がいるかもしれない。 文字の並びを ( ) で扱えない。
自分は C++ regex を使う別実装を自前で追加してる。
647デフォルトの名無しさん:2015/02/21(土) 12:07:52.58 ID:ftMcKIol
>>646
ありがとう。
awkみたいな実数=文字列みたいなダサ実装じゃないか、さすがに。
ちょっと活用を検討してみます。
648デフォルトの名無しさん:2015/02/23(月) 19:05:53.37 ID:PUEtXCiM
AngelScript|Д`)<AngelScript2.30.0記念カキコ&nbsp;
メモリ管理の改良とか、キャスト用メソッドの登録方法が変わったとか色々変更あるっぽい。
649デフォルトの名無しさん
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン