1 名前:デフォルトの名無しさん mailto:sage [2013/03/10(日) 15:10:32.28 .net] LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で 使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■前スレ 【Lua】組み込み系言語総合 その5【Squirrel】 toro.2ch.net/test/read.cgi/tech/1321063450/ ■過去スレ その4 hibari.2ch.net/test/read.cgi/tech/1301414458/ その3 hibari.2ch.net/test/read.cgi/tech/1272643397/ その2 pc12.2ch.net/test/read.cgi/tech/1243210301/ その1 pc12.2ch.net/test/read.cgi/tech/1205208141/ プログラミング言語 Lua その3 pc11.2ch.net/test/read.cgi/tech/1160799232/
2 名前:デフォルトの名無しさん mailto:sage [2013/03/10(日) 15:12:03.71 .net] □Lua ttp://www.lua.org/ (本家) ttp://lua-users.org/ (lua-users) ttp://luaforge.net/ (LuaForge) sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html (5.1マニュアル和訳) Lua言語の紹介 staff.aist.go.jp/yutaka.ueno/lua/docsjp.html 入門Luaプログラミング www.amazon.co.jp/dp/4797342722/ □Lua as an Effect File Format for OpenGL prideout.net/blog/?p=1 □Squirrel www.squirrel-lang.org/ (本家) sourceforge.net/projects/squirrel/ sourceforge.net/projects/sqplus/ (SqPlus) sourceforge.net/projects/squirrelsh/ (Squirrel Shell) wikiwiki.jp/lua/?Squirrel_Lang%2Ftoc (wiki内2.1マニュアル和訳) □AngelScript www.angelcode.com/angelscript/ □Xtal(ゲーム向け。スタックを意識しなくていい?) d.hatena.ne.jp/xtalco/ code.google.com/p/xtal-language/ blog.livedoor.jp/dankogai/archives/50836939.html □elastiC www.elasticworld.org/
3 名前:デフォルトの名無しさん mailto:sage [2013/03/10(日) 15:15:41.30 .net] ■関連してるかもしれないスレ Io Language hibari.2ch.net/test/read.cgi/tech/1201100624/ 2 part forth pc11.2ch.net/test/read.cgi/tech/1073673931/ ●●●●TCL/TKなら俺に聞け 2●●●● pc11.2ch.net/test/read.cgi/tech/1177998764/ ECMAScript デス 4 toro.2ch.net/test/read.cgi/tech/1325448978/ 各種ライブラリ紹介スレ2(ゲ制作) pc11.2ch.net/test/read.cgi/gamedev/1177886529/ Eclipse統合M34【Java/C++/Ruby/Python/Scala】 toro.2ch.net/test/read.cgi/tech/1361510049/ 「コンパイラ・スクリプトエンジン」相談室15 hibari.2ch.net/test/read.cgi/tech/1296214398/ Garbage Collection (GC)について語るスレ(DAT落ち) pc11.2ch.net/test/read.cgi/tech/1141646850/
4 名前:デフォルトの名無しさん mailto:sage [2013/03/10(日) 15:18:19.66 .net] 誰も立てないから同じテンプレで立ててみた いつ立てるの?今でしょ!
5 名前:デフォルトの名無しさん mailto:sage [2013/03/11(月) 00:44:45.26 .net] 乙
6 名前:デフォルトの名無しさん mailto:sage [2013/03/11(月) 01:15:20.59 .net] 乙 次スレは>>980 あたりが立てればいいか?
7 名前:デフォルトの名無しさん mailto:sage [2013/03/11(月) 09:56:54.76 .net] AngelScript|Д`)<新スレ乙
8 名前:デフォルトの名無しさん mailto:sage [2013/03/11(月) 18:39:51.97 .net] LuaJIT 2.0.1 Update 2013-03-08: Please apply Hotfix#1 to the 2.0.1 download.
9 名前:デフォルトの名無しさん mailto:sage [2013/03/13(水) 21:01:52.29 .net] \ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
10 名前:デフォルトの名無しさん mailto:sage [2013/03/19(火) 08:31:39.53 .net] Programming in Lua 第3版おめ
11 名前:デフォルトの名無しさん mailto:sage [2013/03/19(火) 20:43:32.77 .net] いつ?
12 名前:デフォルトの名無しさん mailto:sage [2013/03/19(火) 20:54:19.77 .net] なぜluaを使うのですか?
13 名前:デフォルトの名無しさん mailto:sage [2013/03/19(火) 21:21:41.59 .net] >>12 小さくて密度の高い事は美しいことだから。
14 名前:デフォルトの名無しさん mailto:sage [2013/03/19(火) 23:18:07.76 .net] スタックダンプが快感
15 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 05:44:19.66 .net] テーブルの威力がすごすぎるから
16 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 07:12:07.39 .net] めたたbぇ
17 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 09:54:07.19 .net] luaを使うことを強いられているんだ!
18 名前:デフォルトの名無しさん mailto:sage [2013/03/20(水) 14:50:07.03 .net] luaにはC#のLINQやPythonのリスト内包表記は無いんですか?
19 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 15:29:50.19 .net] metatableってクソじゃないか? コードを難解にするだけじゃん
20 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 17:52:56.00 .net] 確かにリスト内包表記は可読性を著しく損なう糞だな。
21 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 19:55:31.63 .net] >>20 あれほど簡潔なものはないとおもうが?
22 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 20:16:28.69 .net] 論点をずらすなよ
23 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 21:49:15.12 .net] metatableはクソって話だったな
24 名前:デフォルトの名無しさん mailto:sage [2013/03/22(金) 23:37:53.28 .net] めたたbぇprpr
25 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 00:31:02.17 .net] たとえば DATETIME というクラスを定義したときに 演算子をメタテーブルで与える。 これはC++のoperatorとかRubyの def 演算子() に該当するなんのへんてつもないただの定義でないのん?
26 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 00:32:36.87 .net] そもそもoperator再定義自体が下品で破廉恥な行為だ
27 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 00:53:51.29 .net] せやな
28 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 09:28:32.81 .net] 確かに
29 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 17:16:41.74 .net] リスト内包表記はいいものだ
30 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 17:50:15.62 .net] あっそ
31 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 19:47:34.80 .net] Luaにはなぜないのだろうね
32 名前:デフォルトの名無しさん mailto:sage [2013/03/23(土) 21:38:19.50 .net] クロージャとコルーチンで同じことできるし…
33 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 09:41:18.14 .net] 内包表記のためにそんなもん使うのは大袈裟だろ
34 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 16:32:17.84 .net] 内包表記っぽいものを作るのにコルーチンは使わんだろ generatorじゃないんだから
35 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 16:35:10.57 .net] pythonはジェネレーターだよ
36 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 16:48:46.24 .net] いいね
37 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 17:42:15.18 .net] >>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 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 17:46:46.83 .net] Luaは関数の末尾呼び出しを最適化してくれるのがいいね
39 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 18:13:24.43 .net] そんなんどこでもやってますよ・・?
40 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 18:34:00.43 .net] JVM!JVM!
41 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 19:27:34.14 .net] Luaはとにかく組み込みやすいのがいい。 逆に言えばLuaだけで何でもできると思ってる奴はアフォ
42 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:05:41.56 .net] メタテーブルとcoroutineもすき
43 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:12:10.70 .net] >39 関数型言語では当たり前だけど、pythonとかメジャーなスクリプトではスタックがあふれるだろ?
44 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:15:13.57 .net] 単なる末尾呼び出しの最適化は最適化の中でも初歩の初歩だしやってないわけないと思う・・・んだけどなあ
45 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:31:15.66 .net] 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 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:32:18.04 .net] 最適化の理論とかはよく知らんけど pythonの関数呼び出しは単純にC言語のコールスタックに依存してるので、どんどん積み上がっていくよ
47 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:33:56.31 .net] >>45 これはキモイな やはりpythonには勝てないか
48 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:43:35.17 .net] Pythonはlambdaとdefが異なるのがガン。 Luaは区別無し。名前の無いfunctionがlambda
49 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 20:57:01.13 .net] >45 やるとしたらそんな感じだろうね でも、内包表記って言うよりはmapみたいな雰囲気になっちゃうよね 内包表記って数学の集合みたいに宣言的に記述できるってところがメリットのひとつだからなぁ 数学だとこんな感じ? S = { x^2 | x ∈ N, x < 10, x mod 2 = 0 } やっぱり言語としてサポートしないとつらそう
50 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 21:05:14.50 .net] >>48 すごく同意 pythonのlambdaは中途半端だね Luaは文法がコンパクトですっきりしていて、すごく便利って感じではないが でもコルーチンをサポートしてたり、末尾呼び出し最適化してたりで ちょうどいい塩梅
51 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 21:14:17.85 .net] しかし内包表記がないと一行が数倍にふくれあがるし見た目も悪い
52 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 21:27:46.25 .net] 単なるシンタックスシュガーだからパーサを弄ればできそうだけど lispのリーダーマクロっぽいのほしいな
53 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 21:31:07.63 .net] 有志でlua#つくろうず
54 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 21:33:14.06 .net] mrubyでいいじゃん もっと欲張るならPythonも比較的組み込みやすい
55 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 21:59:26.75 .net] mrubyの実行速度ってどんなもん? なおrubyも内包表記はない模様
56 名前:デフォルトの名無しさん mailto:sage [2013/03/24(日) 22:59:45.74 .net] Luaとの比較だと、スクリプト自体の実行速度はちょっと遅めだけど誤差レベル 実行時のメモリのフットプリントが数倍くらい多い APIがスタックベースじゃないため拡張は幾分書きやすいけど そのせいでネイティブとの行き来が増えると実行コストは大きくなる傾向がある JITはまだ実用レベルじゃない みたいな感じ(俺調べ) Luaに取って代わるかは知らんけど、二番煎じ処理系(Sq*とかxta*とか)は駆逐できそうな感じではある
57 名前:デフォルトの名無しさん mailto:sage [2013/03/25(月) 00:06:08.81 .net] mrubyの問題は .cのソースコードの行数でLuaの1.5倍ある。 1万6千行に対し二万四千行。 んで、LuaのソースコードはCでもC++でも どちらでもコンパイル可能なので Luaの関数の内部からC++のライブラリが使える (ただしthrowが外側に貫通してはいけないけどね) yaccとかも不要。 なんというか、最近のbisonとかは内部でm4使ってるとか いろいろとめんどくさい仕様に改悪されてるから助かるw
58 名前:デフォルトの名無しさん mailto:sage [2013/03/25(月) 03:30:49.12 .net] Luaも確かv3.0くらいまではyacc使ってたんだけどね 今のパーサはシンプルな手書き再帰下降でLL(2)だから 内包表記の対応は難しいんじゃないかな
59 名前:デフォルトの名無しさん mailto:sage [2013/03/25(月) 07:51:15.04 .net] 内包表記みたいなのの解析は、luaの場合パーサがLLかLRかよりも 構文木を介さず直接コード生成してるところが逆にネックになりそう
60 名前:デフォルトの名無しさん mailto:sage [2013/03/25(月) 17:54:00.04 .net] Luaのソースコード見てみたら他の言語に比べて超短いな 全部でこれだけかよってびっくりしたわ これなら個人で解析出来るな、今日から読んでみるわ
61 名前:デフォルトの名無しさん mailto:sage [2013/03/25(月) 21:59:44.09 .net] パーサいじるんなら ついでに「:」か「.」を別の記号に変えたくなるけどね
62 名前:デフォルトの名無しさん mailto:sage [2013/03/26(火) 01:13:30.00 .net] metaluaみたいにluaのパーサー上書きする方法はあるみたいだぞ。 luajitでは動かないみたいだが。
63 名前:デフォルトの名無しさん mailto:sage [2013/03/27(水) 21:52:23.47 .net] パーサー弄ってわざわざ「->」演算子を追加した事があるな俺
64 名前:デフォルトの名無しさん mailto:sage [2013/03/28(木) 08:20:38.05 .net] 記念していつもの lua-5.2.2 www1.axfc.net/uploader/so/2847097
65 名前:デフォルトの名無しさん mailto:sage [2013/03/28(木) 08:36:16.34 .net] おめ
66 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 21:46:57.64 .net] AngelScript|Д`)<AngelScript2.26.2記念カキコ
67 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:04:23.95 .net] おめ
68 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:09:38.32 .net] >>64 依存関係がMSVCRT.DLLってことはMingW?
69 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:16:19.20 .net] いいえ
70 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:26:09.11 .net] んん VC6?
71 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 22:27:32.44 .net] いいえ
72 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 23:20:37.81 .net] てかコンパイル環境とか書いてないと DLLって公開する意味あるの? 不整合とか気にするジャン。
73 名前:デフォルトの名無しさん mailto:sage [2013/04/02(火) 23:24:16.56 .net] いいえ
74 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 00:02:33.52 .net] そうすっと たとえばEXEのランタイムと DLL側のランタイムでデータフォーマットや 整列条件違ったら困ったことにならないの?
75 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 00:15:02.91 .net] そういえばSquirrelだけ記念カキコがない
76 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 00:31:33.85 .net] はい
77 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 01:20:18.06 .net] Luaの場合はヘッダに構造体定義してるのがlua_Debugくらいだし DLLの境界問題出にくいけどな ちゅーかどこぞの馬の骨が捨て置いたバイナリに喰いつく暇があったら 自分のプロジェクトにLuaのソースコード突っ込んだ方が建設的かと
78 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 01:22:27.16 .net] はい
79 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 20:17:59.94 .net] Luaはなぜ早いのですか? 中の妖精さんと高額契約したのですか?
80 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 21:11:29.32 .net] /| |/__ ヽ| l l│<ハーイ ┷┷┷
81 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 21:37:47.94 .net] コアにVMを置いて中間コードを実行していること (この方式は他も追従し追いつかれつつある) VMがレジスタマシンであること 設計の合理性 (整数演算の切捨てなど、ボトルネックの分析が良かった) JITなど速い方式の実装も行われている かな
82 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 21:55:44.63 .net] 整数演算がボトルネックというのが分かりません doubleのほうが百万倍遅いじゃないですか気持ち的に
83 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:05:29.72 .net] うん、だからその理屈だと整数演算を切り捨ててはいけないんだけど Luaはそれを切り捨てたのよ。 それでもベンチマーク成績は高かった。 つまり、演算以外の部分が問題だったわけね。
84 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:11:56.98 .net] doubleそれほど遅くないよ。割り算を除けばせいぜい2倍位じゃないの? intとdoubleの変換が遅かったりして。
85 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:14:30.36 .net] doubleの処理は、今時のそこそこのデスクトップマシンと、 そこいらへんにたくさんあるARMとで、天と地ほどの差があるなw
86 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:16:23.31 .net] 整数演算がないと困るのはビット演算 が5.2でライブラリが追加されたからそれもほぼ解消
87 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:19:25.09 .net] >>83 浮動小数演算がボトルネックにはならなかったって話と、整数演算が ボトルネックだったって話は関係ないじゃん。
88 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:28:42.34 .net] その辺のことはこのあたりかな lua-users.org/wiki/FloatingPoint
89 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:31:35.75 .net] そもそも誰も「整数演算がボトルネック」なんて話してないし
90 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:52:19.88 .net] 整数演算がボトルネックといっているのではなく、 浮動小数点演算の遅さは実は問題ではなかったという判断 だから整数演算いらんというデザイン
91 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 22:53:39.83 .net] 速くなればなるほど問題が表面化するというわけだな
92 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 23:01:32.81 .net] JIT版の実装が良くなればたぶんね
93 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 23:14:14.82 .net] >>89 つまり、整数演算切り捨てたこととLuaが速いことは関係ないってことだろ。 >>81 はボトルネックと言っているが。
94 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 23:25:40.76 .net] >>81 はLuaが速い一因として設計の合理性を挙げていて 整数演算がボトルネックとは言ってないし >>83 や>>90 のフォローもそれを補強していると思うんだが 読解力がないのならしょうがない
95 名前:デフォルトの名無しさん mailto:sage [2013/04/03(水) 23:31:28.29 .net] 言語仕様そのものが速さ目的で設計されてるってのもあるんでないか ローカル変数をわざわざ指定しなきゃならんとか 書く側からすれば面倒な仕様だけど多分これだとGCがやりやすいんだろうなとか ソース見たわけじゃないから分からんけどね
96 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 20:48:23.65 .net] AngelScript|Д`)<みんなでtemplate触ろうぜ
97 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 20:55:01.09 .net] Squirrel |Д`)<Squirrel 3.0.4記念カキコ
98 名前:デフォルトの名無しさん mailto:sage [2013/04/05(金) 20:50:30.10 .net] Squirrel更新か!? と思ったのに!
99 名前:デフォルトの名無しさん mailto:sage [2013/04/10(水) 01:40:40.27 .net] AngelScriptにDelegate対応が来てた
100 名前:デフォルトの名無しさん mailto:sage [2013/04/12(金) 20:39:39.69 .net] 今度のはfuncdefとかの関数ポインタが無くなってデリゲートに置き換わるのか。
101 名前:デフォルトの名無しさん mailto:sage [2013/04/13(土) 06:03:24.53 .net] どんどん実務向きじゃなくなってくな
102 名前:デフォルトの名無しさん mailto:sage [2013/04/13(土) 10:14:35.22 .net] 出たよ実務厨
103 名前:デフォルトの名無しさん mailto:sage [2013/04/13(土) 12:50:15.63 .net] AngelScript、C++もどきからC#もどきになっていっちゃうのかな
104 名前:デフォルトの名無しさん mailto:sage [2013/04/13(土) 16:49:05.32 .net] 同じC#もどきならTypeScript使いたい JSとの互換性をある程度制限したサブセットならluaのVMで動かせるんじゃないか
105 名前:デフォルトの名無しさん mailto:sage [2013/04/13(土) 21:56:15.10 .net] V8じゃダメなのかな。
106 名前:デフォルトの名無しさん mailto:sage [2013/04/13(土) 23:11:15.34 .net] V8ってサイズでかいし不安定だし組み込むのめんどくさい
107 名前:デフォルトの名無しさん mailto:sage [2013/04/13(土) 23:24:25.01 .net] エンジンだけに
108 名前:デフォルトの名無しさん mailto:sage [2013/04/14(日) 08:39:34.90 .net] www.infoq.com/jp/news/2013/04/eclipsecon-2013 EclipseのM2M開発環境 > EclipseはArduinoとRasberry Piデバイスの開発のチュートリアルを提供している。 > これには組み込みLuaランタイム(Mihini)とLuaの開発環境(Koneki)のセットアップ方法も含まれている。 Luaがセンサーネットワークの世界に旅立っていった。
109 名前:デフォルトの名無しさん mailto:sage [2013/04/14(日) 08:43:24.10 .net] 栗鼠月天使
110 名前:デフォルトの名無しさん mailto:sage [2013/04/14(日) 10:19:21.31 .net] ぅあってお仕事ではどんな場面でちゅかうんですか?
111 名前:デフォルトの名無しさん mailto:sage [2013/04/14(日) 10:23:03.29 .net] ぅあきねんぱぴこ
112 名前:デフォルトの名無しさん mailto:sage [2013/04/15(月) 14:31:12.59 .net] AngelScriptのデリゲートって オブジェクトのインスタンスとメソッドから関数ポインタを作る機能のようだ 普通の関数もクラスメソッドも関数ポインタに代入できる 3.0では値型のオブジェクトは使えなくなって 参照型のオブジェクトのみになるらしい そうなるといっそうC#やJavaっぽくなる
113 名前:デフォルトの名無しさん mailto:sage [2013/04/17(水) 19:02:58.71 .net] 地道にブログの記事を参考にさせていただいていますが(感謝しております) 大々的にLuaBindのことを日本語で語ってるような場所ってないですかね?
114 名前:デフォルトの名無しさん mailto:sage [2013/04/21(日) 06:56:41.22 .net] (´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
115 名前:デフォルトの名無しさん mailto:sage [2013/04/24(水) 18:36:10.04 .net] なんかみっけたので MarmaladeがRADツールMarmalade Quickを正式リリース 2013-02-11 14:14 ttp://www.madewithmarmalade.com/node/60359 またMarmalade Quickは“ZeroBrane Studio” IDEと統合されており、Luaスクリプトの容易なオーサリング、デバッグが可能です。
116 名前:デフォルトの名無しさん mailto:sage [2013/04/30(火) 22:06:32.31 .net] squirrel で Direct3D の Vertex みたいな、 状況に応じて構造体の中身が変わる物を squirrel から C++ 側に送りたい時って 何かいい方法はあるのでしょうか。 ディフューズ色が DWORD なのが問題なのですよね…。 他は殆どが FLOAT なのに…。
117 名前:デフォルトの名無しさん mailto:sage [2013/05/01(水) 02:36:38.25 .net] JSの世界はブラウザの中で戦争していてるせいか、FFI使えないからGCやJIT切ってVM上にアセンブラ載せてみたりなんか凄いね。 www.publickey1.jp/blog/13/asmjsjavascript.html
118 名前:デフォルトの名無しさん mailto:sage [2013/05/01(水) 02:41:19.59 .net] まあブラウザ上でLuaというかHTMLにLuaを埋め込むとかよくある中二病の扉ががが
119 名前:デフォルトの名無しさん mailto:sage [2013/05/01(水) 15:59:59.18 .net] >>116 普通にフラグ判定して値を代入しなおすだけではないの? float も dword も4byte で領域的には同じだからあとは 解釈次第だと思うんだけど何にはまってるんだろう
120 名前:デフォルトの名無しさん mailto:sage [2013/05/01(水) 16:51:43.21 .net] >>116 バインダはSqrat?
121 名前:デフォルトの名無しさん mailto:sage [2013/05/01(水) 22:59:00.95 .net] >>119 >>120 すみません、確かにそうですね。 メモリ確保して memcpy でコピーする事にしました。 それと追加で質問なのですが、 C++側でSqrat::Classで登録したクラスを、 SquirrelからC++関数の呼び出しの引数に指定した際に、 C++関数内からクラスの実体を得る方法はあるのでしょうか? RootTable(vm).GetSlotを使えばメンバ関数・変数にはアクセス出来るのですが、 クラスのポインタを取得して普通のC++のクラスのように扱えたらなと思ったので。
122 名前:デフォルトの名無しさん mailto:sage [2013/05/02(木) 23:32:28.39 .net] 自己解決しました、何度も失礼しました
123 名前:デフォルトの名無しさん mailto:sage [2013/05/03(金) 02:38:40.28 .net] 5.2.2きた
124 名前:デフォルトの名無しさん mailto:sage [2013/05/03(金) 14:30:49.45 .net] >>121 AngelScript|Д`)ノ<きたわよ そういうのはAngelScriptでやると簡単。
125 名前:デフォルトの名無しさん mailto:sage [2013/05/03(金) 14:40:55.38 .net] (´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
126 名前:デフォルトの名無しさん mailto:sage [2013/05/03(金) 18:36:39.38 .net] 来ると思ってました
127 名前:デフォルトの名無しさん mailto:sage [2013/05/08(水) 22:07:08.55 .net] luaでバインダを使わずにC++クラスのメンバ変数をバインドする 方法を解説してる所ってありませんか? メンバ関数経由でset getするのしか見つからず…
128 名前:デフォルトの名無しさん mailto:sage [2013/05/08(水) 23:56:32.38 .net] バインダのソース読めばいいのでは ラッピング関数作ってると思うけど
129 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 00:59:43.08 .net] __index/__newindexメタメソッドを関数にして、その中でメンバ変数にバインドしたいキーが指定されたら 対応するC++のメンバ変数をそのまま返す/設定するってのできるっちゃできるけどね メンバ関数でやるより逆にコストかかる仕組みになるし多値返しできないしで ぶっちゃけ言語サポート無しに無理するもんじゃねーなという結論に達した
130 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 05:31:19.08 .net] ?
131 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 05:46:34.65 .net] ぅあ?
132 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 18:39:34.03 .net] >>127 AngelScript|Д`)ノ<きたわよ
133 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 18:43:49.69 .net] luaは永遠に不滅です!
134 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 22:03:41.56 .net] >>128-129 なるほど、やはりその方法しかないのですね。 教えて頂きありがとうございました。
135 名前:デフォルトの名無しさん mailto:sage [2013/05/10(金) 21:30:02.44 .net] AngelScript|Д`)<AngelScript2.26.3記念カキコ
136 名前:デフォルトの名無しさん mailto:sage [2013/05/10(金) 22:11:42.38 .net] (´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
137 名前:デフォルトの名無しさん mailto:sage [2013/05/16(木) 18:07:30.53 .net] Squirrelでsq_setnativeclosurenameでバインドしたクラスの メンバ変数にアクセスする場合の話なのですが、 obj.menba は __get や __set でアクセスすればいいのですが、 obj.menba.var という風なメンバにアクセスしようとしたら、 [the index 'var' does not exist] というエラーが出てしまいました。 こういった使い方をしたい場合はどうやって登録すればいいのでしょうか。
138 名前:デフォルトの名無しさん mailto:sage [2013/05/17(金) 00:17:43.29 .net] >>137 AngelScript|Д`)ノ<きたわよ AngelScriptはその辺得意だよ。
139 名前:デフォルトの名無しさん mailto:sage [2013/06/08(土) 18:40:11.38 .net] 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 名前:デフォルトの名無しさん mailto:sage [2013/06/08(土) 19:25:57.51 .net] なんか懐かしい名前だ
141 名前:デフォルトの名無しさん mailto:sage [2013/06/08(土) 19:42:34.92 .net] GameMonkeyの名前自体は1スレ目からたまに挙がってるけど、踏み込んだ話題は…
142 名前:デフォルトの名無しさん mailto:sage [2013/06/08(土) 20:01:20.72 .net] >>139 どう「いい」やつが欲しいのかによる・・・んじゃね
143 名前:デフォルトの名無しさん mailto:sage [2013/06/08(土) 20:49:05.20 .net] CEDEC2010でGameMonkeyScript(とXtal)を使ってゲーム作った人らが講演してる。 その資料がここにある ttp://cedil.cesa.or.jp/session/detail/301 無料だが登録が必要 日本語だとこれ関係しか見当たらぬ…
144 名前:デフォルトの名無しさん mailto:sage [2013/06/09(日) 15:47:26.83 .net] GameMonkeyってバンナムが採用してなかったっけ
145 名前:139 mailto:sage [2013/06/10(月) 11:39:34.51 .net] >>140-143 ありがとうございます。 >>144 >>143 がバンナムの人の講演記事で 業務用ゲーム機で利用した例が紹介されてました。
146 名前:デフォルトの名無しさん mailto:sage [2013/06/11(火) 22:38:34.29 .net] 以前スレで出てたスクリプト言語の比較してたサイトで、GameMonkeyは結構いい性能叩き出してた気がする。
147 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) NY:AN:NY.AN .net] decoda便利すぎ
148 名前:デフォルトの名無しさん mailto:sage [2013/07/01(月) NY:AN:NY.AN .net] >>147 AngelScriptにもそういうのが欲しい… デバッグ用の情報取ってきたりするのは簡単なんだけど
149 名前:デフォルトの名無しさん mailto:sage [2013/07/02(火) NY:AN:NY.AN .net] asPEEKは? 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
150 名前:149 mailto:sage [2013/07/02(火) NY:AN:NY.AN .net] asにブラウザで動くリモートデバッガがあるのは知っていたけど使ったことなかった
151 名前:デフォルトの名無しさん mailto:sage [2013/07/05(金) NY:AN:NY.AN .net] luabind使ってC側の型とか関数とか登録しまくってたら、 lua_Stateの使用メモリがKB単位でモリモリ増えてって 消費メモリ量が無視できない量になりつつある
152 名前:だけどもそういうもんなの? [] [ここ壊れてます]
153 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) NY:AN:NY.AN .net] とりあえずソースぐらいは出しましょう。 他の言語も含め生でゴリゴリと各種バインダの差異など含めベンチとりましょう。 簡単なものでいいですよ。 お題が楽しければ暇な人も参戦し実のある内容になるでしょう。
154 名前:デフォルトの名無しさん mailto:sage [2013/07/06(土) NY:AN:NY.AN .net] luaのバインダって結構あるんだね。 知らないだけでtolua++やluabindより良いバインダが存在しているような気がする。
155 名前:デフォルトの名無しさん mailto:sage [2013/07/11(木) NY:AN:NY.AN .net] >>149 ダウンロードしたけど、Demoのやつの動かし方が分からなかった…
156 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) NY:AN:NY.AN .net] 昔、Pascalのbegin/endを、C言語で#defineしようとした人がいたらしい 今度は、mallocとかfreeとかをスクリプト言語にバインドする人が出てくる 強力なバインダは良いバインダではない 弱い方が良い
157 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) NY:AN:NY.AN .net] 何を言っているのかよくわからんが、 #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 なんか全然違う話だと俺は思うのだが
158 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) NY:AN:NY.AN .net] よくわからん側の主導で推進してるっぽいのが不安だ
159 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) NY:AN:NY.AN .net] >>155 >昔、Pascalのbegin/endを、C言語で#defineしようとした人がいたらしい マクロの使い方としてK&Rにも書かれてる方法であり、取り立てて驚くような話ではない。
160 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) NY:AN:NY.AN .net] 条件付きにて同意する
161 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) NY:AN:NY.AN .net] そもそもスクリプトでmallocやfreeを直接使うような事ってある?
162 名前:デフォルトの名無しさん mailto:sage [2013/07/13(土) NY:AN:NY.AN .net] Cの関数を忠実に再現するツールを使うと、スクリプトでmallocやfreeを使う事になる 忠実にしたくない場合はツールに丸投げできないと考えるのが自然
163 名前:デフォルトの名無しさん mailto:sage [2013/07/15(月) NY:AN:NY.AN .net] そういや、CriScriptって、今どうなってるんだろう?
164 名前:デフォルトの名無しさん mailto:sage [2013/07/15(月) NY:AN:NY.AN .net] >>162 CriScript作ってた人がgoogleかどっかに入ってプロジェクト終了、じゃなかったっけ
165 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN .net] そこそこ良いものだったような気もするが、残念な話だな
166 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN .net] Luaのコルーチンのように、スクリプト内で呼び出すと関数が終わるかSuspend(Luaだとyield)するまで実行して戻ってくるAngelScript用のコルーチンを作ってみたら、 自分のメソッドを呼び出すコルーチンをインスタンスとして持たせたら、循環参照が起こって解放されずにメモリリークに。 class A { coroutine c; void coFunc() { … Suspend(); … } void Init() { … c.SetFunction(cFUNC(this.coFunc)); … } void Update() { c.Execute(); } }; こんな感じでやると、cが循環参照になっちゃった。
167 名前:デフォルトの名無しさん mailto:sage [2013/07/27(土) NY:AN:NY.AN .net] あるある その手の処理には弱参照が必要
168 名前:デフォルトの名無しさん mailto:sage [2013/07/27(土) NY:AN:NY.AN .net] AngelScript2.27.0のWorkInProgressに、「weak references」とかあるから、次のバージョンだと解決できそう。
169 名前:デフォルトの名無しさん mailto:sage [2013/07/29(月) NY:AN:NY.AN .net] AngelScript 2.27.0 is out - AngelCode - GameDev.net www.gamedev.net/topic/645977-angelscript-2270-is-out/ ・デリゲートを作ったりデリゲートの情報を取得できる ・関数の引数や戻り値がconst参照か調べられる ・GCが把握しているオブジェクトを列挙してパフォーマンス改善に役立てられる ・弱参照 スクリプトのクラスでもアプリケーションのクラスでも使える
170 名前:デフォルトの名無しさん [2013/07/29(月) NY:AN:NY.AN .net] Angelscriptは参照カウントとGCを併用しているから 一応GCフラグのあるクラスであれば、弱参照を使っていなくて循環参照になっても、最終的にGCで解放されるはずなんだが 弱参照を使っていればもっと早いタイミングで解放されるので使うといいと思ふ
171 名前:デフォルトの名無しさん mailto:sage [2013/07/31(水) NY:AN:NY.AN .net] AngelScript2.27.0でやってみたが、循環参照の問題解決できなかった。 弱参照やら >・デリゲートを作ったりデリゲートの情報を取得できる の機能を利用してみたがダメだった。 C++側でasIScriptFunctionを保持するやり方を間違えているのかも知れない。
172 名前:デフォルトの名無しさん mailto:sage [2013/08/06(火) NY:AN:NY.AN .net] AS、さらに調べてみたところ、 「スクリプト内のクラスAにC++側で定義したクラスBをメンバ変数として持たせて、Bのインスタンスに this.〜でAのメンバ関数のdelegateを渡して保持する」 と循環参照が発生して解放されない、という状態になってるっぽい。 「AにBとスクリプト内のクラスCをメンバ変数として持たせて、Cのインスタンスのdelegateを渡して保持する」 場合は大丈夫っぽいんだが、さてどうしたものか。
173 名前:デフォルトの名無しさん [2013/08/07(水) NY:AN:NY.AN .net] いや、C++のクラスを弱参照かGCフラグに対応させろよ?
174 名前:デフォルトの名無しさん mailto:sage [2013/08/07(水) NY:AN:NY.AN .net] 弱参照って何?
175 名前:デフォルトの名無しさん mailto:sage [2013/08/07(水) NY:AN:NY.AN .net] ぬるぽするかもしれない可能性が存在することが保障されてるぽ
176 名前:デフォルトの名無しさん mailto:sage [2013/08/07(水) NY:AN:NY.AN .net] >>172 一応、asBEHAVE_GET_WEAKREF_FLAGを使って弱参照にしてみたり、 asOBJ_GCつけてメソッド入れてやってみたんだけど上手く行かないんだ。 asIScriptFunctionが内部で持ってるデリゲート用のオブジェクトが上手く解放できないみたい。
177 名前:デフォルトの名無しさん [2013/08/08(木) NY:AN:NY.AN .net] コードも無いのに分からない 循環参照にはならない筈なのに解放漏れがあるならそれは 何処かで参照カウント減らして解放するのを忘れているだけなんじゃないか としか言えない
178 名前:デフォルトの名無しさん [2013/08/08(木) NY:AN:NY.AN .net] \\ \\\ \ ∧_∧ ( ´・ω・) G と) ガッ >>174 ヽ⌒)、 \人∧__∧  ̄ (_) >`д´)') ∨つ /
179 名前:デフォルトの名無しさん [2013/08/18(日) NY:AN:NY.AN .net] AngelScript 2.27.1 is here (so soon? yes) www.gamedev.net/topic/646723-angelscript-2271-is-here-so-soon-yes/ バグフィックス メモリフットプリントの減少 void expressionで関数の出力引数を省略できる デフォルト引数を匿名に出来る
180 名前:デフォルトの名無しさん mailto:sage [2013/08/29(木) NY:AN:NY.AN .net] 素人だけど勉強がてらにAngel Scriptの解説見てたらめっちゃコンパイル言語でワロタ
181 名前:デフォルトの名無しさん mailto:sage [2013/08/30(金) NY:AN:NY.AN .net] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
182 名前:デフォルトの名無しさん mailto:sage [2013/08/31(土) NY:AN:NY.AN .net] enum大好きな俺はAngelScriptも大好き。
183 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 10:45:33.66 .net] コード補完とか開発環境の恩恵受けられる組み込みスクリプトってある?
184 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 12:16:25.91 .net] 開発環境の恩恵と言えば最近はJavaScript (V8)じゃないの? ほとんどが動的型付けだから コード補完の性能はどれも似たようなもの むしろ使い慣れた開発環境・エディタが対応しているかの方が重要だと思う
185 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 13:52:27.44 .net] luaにはIDEがあるけど、他でも探せばあるんじゃないか
186 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 15:20:57.01 .net] >>182 VS&C#にC#だな。
187 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 15:56:48.03 .net] 30億のデバイスで走るJavaを差し置いてC#が組み込み言語とか! みたいなツッコミでOK?
188 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 16:01:13.71 .net] 30億のデバイスでデバッグできるね(ニッコリ) って感じでさらに脱線させればOK?
189 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 18:35:17.50 .net] なにがライトワンスランエニ
190 名前:zェアだよ 絵空事ばかり 世迷い言に人々を巻き込みやがって 太平妖術だよ [] [ここ壊れてます]
191 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 18:36:18.64 .net] (´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
192 名前:デフォルトの名無しさん [2013/09/01(日) 20:38:37.26 .net] JavaScriptは言語仕様が黒魔術のようだ
193 名前:デフォルトの名無しさん mailto:sage [2013/09/02(月) 00:35:21.08 .net] AngelScriptはほぼC++かC#なんで、C++やC#用の補完とか使えた気がする。
194 名前:デフォルトの名無しさん [2013/09/02(月) 22:27:39.45 .net] SWIGってLuaでも使えたのか知らなかった ラッパーとインタフェースの自動生成が捗る?
195 名前:デフォルトの名無しさん mailto:sage [2013/09/02(月) 22:41:22.04 .net] そもそもSWIGで捗った記憶がない 最近のは知らんが
196 名前:デフォルトの名無しさん [2013/09/04(水) 16:57:01.01 .net] SWIGだめなん?
197 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 17:20:42.93 .net] パターンファイル作ってクソ重いコンパイルでコケて修正して… を繰り返してるうちに嫌になるな 生成されたシンボル名が1000文字突破してるの見て めまいがしたのもいい思い出だ
198 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 18:12:40.97 .net] この手のタイプは元ソース次第だね luabindより楽なケースもあればバインダ使わず生で書いたほうが楽なケースもある その上で、SWIGを選択するような状況でダメだというなら 他の選択肢はtoluaぐらいしかない で、SWIGとtoluaを比べると 冗長なのはデメリットだが依存せずピュアコードを吐くのはメリットなので好みの問題として 多言語対応でつぶしが効くという1点においてSWIGの勝ちかなと思うよ
199 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 19:15:01.41 .net] userdataってなんだ・・・
200 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 19:36:31.38 .net] 好きなもの入れちゃっていいんだよ?
201 名前:デフォルトの名無しさん mailto:sage [2013/09/11(水) 08:36:58.96 .net] ズブ…
202 名前:デフォルトの名無しさん mailto:sage [2013/09/11(水) 16:59:49.05 .net] アーッ!
203 名前:デフォルトの名無しさん mailto:sage [2013/09/11(水) 22:45:42.73 .net] UserDataは、スクリプトで操作したいオブジェクトのポインタとか入れるのが一般的かね。
204 名前:デフォルトの名無しさん mailto:sage [2013/09/11(水) 22:51:01.71 .net] Cでやったほうが速いとか外部ライブラリ用の構造体へのポインタを突っ込んだり
205 名前:デフォルトの名無しさん [2013/09/11(水) 23:26:48.79 .net] ゲームの殆どをAngelScriptで組み 時間のかかる処理だけをネイティブコードに の方が開発しやすいかもしれない
206 名前:デフォルトの名無しさん mailto:sage [2013/09/11(水) 23:30:18.16 .net] 何と比較してだ
207 名前:デフォルトの名無しさん mailto:sage [2013/09/14(土) 03:21:57.79 .net] 横からだが、C++オンリーで組むのと比べて、って事じゃね
208 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 07:46:57.16 .net] スクワールはもういらんこなの?
209 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 08:12:11.62 .net] ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
210 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 12:52:09.81 .net] Angelscript見てるとdllで良いんじゃないかと思えてくる てかそういう用途としてdll使うのってもう流行ってないんかな?(昔のエロゲとか) 呼び出し元を変更したらコンパイルし直しになるのはスクリプトだって同じだし、バインダも必要ない。 もっぱらLGPLの回避法としてしか見なくなった
211 名前:デフォルトの名無しさん [2013/09/15(日) 13:28:21.98 .net] ライターにC++で直接書けとでも?
212 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 14:55:12.13 .net] ライターにAngelScriptで直接書けとでも?
213 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 16:54:49.61 .net] 何でAngelScriptなの
214 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 17:45:32.19 .net] 目指してる、未来がちがうからでしょ
215 名前:デフォルトの名無しさん [2013/09/15(日) 21:06:15.98 .net] C++ではコルーチンがなくてゲームに使うには困るかと思ったが fiberやlongjmpを使ったら出来ない事はないな だがライターにVisuaStudio入れてもらうとか出来ないだろ? ライターには簡単にプログラムをインストール・実行できる環境が必要だ プログラマーにも ・コンパイルから実行までが速い(実行前にネイティブコード生成とか最適化をしないから) ・リフレクションが使える 等のメリットはある ラムダ式やデリゲートはC++11で使えることは使えるな
216 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 22:55:54.12 .net] スクリプトの場合、yieldやSuspendで途中で一時停止できるのはでかいと思うよ。
217 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 23:44:33.85 .net] コルーチンなんて boost他、標準ライブラリオンリーのイディオムも腐るほどあるし メリットが感じられない
218 名前:デフォルトの名無しさん [2013/09/16(月) 12:08:37.51 .net] それよりGCが自動なところ
219 名前:デフォルトの名無しさん [2013/09/16(月) 16:39:52.89 .net] Javaは一つのコードがあらゆる環境で動作する素晴らしい言語だった。 しかし、マイクロソフトが行ったCOM拡張によって互換性が失われ、パソコン用アプリが スマホでは動かないといったトラブルが起こるようになった。
220 名前:デフォルトの名無しさん mailto:sage [2013/09/16(月) 16:50:37.98 .net] C#とかの.NET系環境でのスクリプトっていうと やっぱりIronPython/IronRubyとかになるんでしょうか? できればLuaを使いたいのですが、LuaDowNetは随分長い間止まってますし と質問しようと思って検索したら、AluminiumLua(2008年更新)ってのがあったので これ試してから出直します。 すみませんでした。 ttps://github.com/chkn/AluminumLua
221 名前:デフォルトの名無しさん mailto:sage [2013/09/16(月) 16:52:25.96 .net] 2008年は誤りで、今現在もアクティブなプロジェクトでした たびたびすみません
222 名前:デフォルトの名無しさん [2013/09/18(水) 12:01:03.07 .net] C++ではヘッダーとソースそれぞれに関数宣言・定義を書かないといけないが スクリプトだと一つのファイルに書ける C++で何でもヘッダーに関数定義を書いたらコンパイル時間が大変な事になる
223 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 12:09:19.32 .net] そこかよ
224 名前:デフォルトの名無しさん [2013/09/18(水) 12:16:26.38 .net] 宣言と定義で分けたりせず 一つのファイルに書けてありがたいだろ?
225 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 12:57:45.99 .net] そのくらいなら JavaでもC#でもDでもできる
226 名前:デフォルトの名無しさん [2013/09/18(水) 13:45:40.90 .net] 全部C++で書くのでなければ別に良いんだけどな Javaで書くとAndroidには移植しやすいかもしれないがiPhoneにはそのまま持っていけない MonoはAndroid、iPhoneでも動くけど無料の開発環境なし PCでも、未だにXPを使っている様な人はVMを入れていなかったり その点スクリプト言語のVMは小さいから同梱しやすい Dとか知らん!
227 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 14:47:00.98 .net] >>218 コミュニティの規模が小さいのでJScript一択 保守まで考えるとhackはproductとして採用できない
228 名前:デフォルトの名無しさん mailto:sage hack(笑) product(笑) [2013/09/18(水) 22:41:41.90 .net] >>225 Luaの方がスクリプトを書きなれているので、できればそっちを使いたいと思っていました。 JScriptの利用も少し考えましたが、利用方法がいまいちパッとしなかったので見送りました。 保守性は、個人/小規模利用なので大して気にしていません。
229 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 06:18:34.30 .net] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
230 名前:デフォルトの名無しさん mailto:sage [2013/09/24(火) 01:30:13.90 .net] mrubyはここでOK?
231 名前:デフォルトの名無しさん mailto:sage [2013/09/24(火) 19:59:45.11 .net] 組み込みだからOKだけど、話題にできる人はいないかも
232 名前:デフォルトの名無しさん mailto:sage [2013/09/24(火) 21:03:42.63 .net] mrubyの組み込みは、アプリケーション組み込みじゃなくて、家電とかへの組み込みのほうだと思うんだ。 アプリケーション組み込みなら、mrubyでなくとも本家のrubyでもできるし
233 名前:デフォルトの名無しさん mailto:sage [2013/09/24(火) 23:53:45.13 .net] べつに、rubyもmrubyもここでやればいいじゃん。
234 名前:デフォルトの名無しさん mailto:sage [2013/09/25(水) 00:47:43.99 .net] Rubyはテキストの変換に使う事が多いな。 CSVファイルからスクリプトに変換したりとか。
235 名前:デフォルトの名無しさん mailto:sage [2013/09/27(金) 11:18:33.53 .net] luabindを使おうとしたら、lua_openで未解決の外部シンボルがでたー。ちゃんとライブラリ設定してるのに。。。
236 名前:デフォルトの名無しさん mailto:sage [2013/09/27(金) 12:04:12.82 .net] バインダーなど使わないでスタック方式に慣れるのが結局は一番だよ
237 名前:デフォルトの名無しさん mailto:sage [2013/09/27(金) 18:18:42.84 .net] やっとコンパイル出来た。今から初めて組み込むのでどの処理をluaにもっていこうか全然決まってない。みんなどういう感じで組み込んでるの?
238 名前:デフォルトの名無しさん mailto:sage [2013/09/27(金) 18:33:15.82 .net] アプリ完成後にもカスタマイズしたりする部分
239 名前:デフォルトの名無しさん mailto:sage [2013/09/27(金) 23:10:20.40 .net] ゲームとしてのエンジン部分を全部Lua側から呼び出せるようにして、 あとはLuaでアルゴリズム組むだけでゲームを作れるようにしておくとすごい快適 個人的には各種パラメータを、数値をイジるだけじゃなく 定義を修正しまくっても余裕なのが最高
240 名前:デフォルトの名無しさん mailto:sage [2013/09/28(土) 09:12:16.18 .net] 逆に言うとそれだけなんだからLuaで十分なんだよな。 Luaだと辛いなーな部分はCで書きゃいいだけ。
241 名前:デフォルトの名無しさん mailto:sage [2013/09/28(土) 11:19:10.07 .net] マインクラフトでJRubyやってたんだけどluajなんてのもあったんだね Cのバインディングに挫折しそうになってた頃に出会ってたら危なかった
242 名前:デフォルトの名無しさん mailto:sage [2013/09/28(土) 15:57:45.92 .net] 俺はそこまでやるなら端からもっと高機能な言語使えばいいと思うけどなあ
243 名前:デフォルトの名無しさん mailto:sage [2013/09/29(日) 00:13:43.34 .net] AngelScript|Д`)ノ<きたわよ C++側のクラスとかもそのままスクリプトで使えるよ。
244 名前:デフォルトの名無しさん mailto:sage [2013/09/29(日) 02:20:08.22 .net] (´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
245 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 19:31:49.27 .net] >>635 www.lua.org/
246 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 19:33:12.35 .net] gobak
247 名前:デフォルトの名無しさん mailto:sage [2013/10/13(日) 01:54:16.74 .net] Luaでちょっと質問なんだけど Luaの無名関数をC関数で受け取って、 それを、C側から任意のタイミングでコールしたいんだけど、どうしたらいいの? lua_type()の戻り値を見ると、LUA_TFUNCTION型みたいなんだけど、これはどう扱ったらいいんだろう…
248 名前:デフォルトの名無しさん mailto:sage [2013/10/13(日) 06:06:13.41 .net] 自己解決 luaL_refとluaL_unrefで参照数を操作して、生かして、 生かしておいたのを lua_rawgetiでスタックにプッシュして lua_call系でいいんだね
249 名前:デフォルトの名無しさん [2013/10/25(金) 14:27:11.51 .net] Luaスクリプトについての質問なんですが、 Luaにエラー関数を設定する場合は lua_pcallにてエラー関数のスタックを設定しますが、 これをコルーチンで行う場合、 lua_resumeを呼びだすのですがエラー関数の設定が見当たらないです。 どこで設定すると呼びだされるようになるのでしょうか…。 お願いします!
250 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 15:45:29.07 .net] 保護モード事態が特殊な動作なわけだから resume を pcall すれば?
251 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 00:38:50.34 .net] クラスの中にlua_stateを作っておいて、値の更新とかをlua側でしたいんですけど、 luaに自分自身を渡して、lua側で値を更新させて、自分自身に反映させるのは どうすればいいでしょう。lua_pushlightuserdataじゃインスタンスは別になる?
252 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 01:04:30.61 .net] まずC++側とC側に分けて 値の更新をC側でできるようにしてから C側の内部でLuaを使う
253 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 01:06:57.46 .net] C++でsetter作って、luaでそれを呼ぶってことですか? すみません。C++とCで分けるという所はどういう感じで分けるのでしょうか。
254 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 10:59:08.34 .net] luaで何かアクションをするとC++側の値が書き換わるようにしたい? userdataにメタテーブルを仕込んでやればできる。他のやり方も あると思うけど。 例えばuserdataにthisや関数へのポインタを入れておいてメタテーブルに cfunctionを登録しておく。登録したcfuntcionではuserdataから thisとかを取り出して何かすればいい。
255 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 12:43:26.03 .net] >>252 やりたいことは、リコンパイルしなくても値を変更できるようにしたいです。 そこで、luaにオブジェクトの初期処理や更新処理を持っていって、描画はC++で しようと思ってます。 教えていただいた内容を調べながら試してみます。
256 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 12:55:58.52 .net] それだったら、C++からLuaの変数を読み出すだけでもいいんじゃない? C++でLuaチャンク実行→Luaチャンク実行終了→変数の値を読み出して利用する。 LuaのプログラムからCallbackさせながら、C++プログラムと協調動作させる 必要があれば、252のようにする必要があるけど。
257 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 13:10:44.93 .net] >>254 初期処理でクラスの各項目値は、luaのメソッドを呼び出してその戻り値を受けるので 出来たのですが、更新処理となるとロジックがあって、単純に戻り値を受け取るだけだと 中々難しいなーと思って、ロジックもluaに移そうと思っていました。 そういうのはやっぱり、lua⇒C++の関数⇒luaみたいな感じになるんですね。 自分のイメージとしてはC++でインスタンスをluaに渡す⇒luaで引数のインスタンスに対して 色々な処理を行い値を変更する⇒luaメソッド終了⇒C++に処理が戻るみたいな感じです。
258 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 10:39:57.23 .net] スクリプト内の変数の値をC/C++側から操作したいって事なのかな。
259 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 11:14:19.88 .net] C++のポインタはキャストするとどうなるか調べるのが面倒臭いって事でしょ Cならlua_pushlightuserdataでいいよ
260 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 11:24:38.17 .net] 制御権の受け渡しをどうするかってことでしょ。 Lua側の記述とLuaチャンクの実行の仕方を工夫するしかないんじゃないか?
261 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 12:00:06.70 .net] C++でnewで確保した領域のポインタを lua_pushlightuserdata等でlua内の変数に渡しているときに、 このlua内の変数のスコープがはずれたりしたときに、 このポインタをdeleteしたいのだけどできますか?
262 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 14:45:33.09 .net] 基本的に無理じゃね。メタメソッド持てないし 可能ならuserdataで確保したメモリそのものに割り当てるか スマポとかで包んでからuserdataに突っ込む感じになるかと
263 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 18:17:24.79 .net] やった事ないけど、tableに突っ込んで__gcイベント捕まえれば逝けない?
264 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 21:02:45.16 .net] lightuserdataのuserdataに対するメリットって何? リファレンス見ても機能が少ないだけで何が嬉しいか分からなかった。
265 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 00:14:11.47 .net] >>259 そこまでやるならもうAngelScriptの方がいいような気がする。
266 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 00:19:18.11 .net] >>262 ポインタもってるだけだから圧倒的にシンプルだよ。luaがわでは寿命管理しないけどとにかくデータの参照を維持したい場合に使う
267 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 00:23:01.58 .net] >>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;
268 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 01:05:41.10 .net] 変数がスコープから消えるときは__gcでイベントをとれるとして、 lua内の変数のコピーも認識できないとdeleteしていいかわからないなぁ。
269 名前:266 mailto:sage [2013/11/04(月) 01:11:07.79 .net] と思ったけど、__gc呼ばれるときは問答無用でdeleteしていいのかな?
270 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 01:56:57.82 .net] そもそもスコープぬけてすぐgcよばれる保証あるの?という素朴な疑問
271 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 02:42:16.33 .net] 無いです!
272 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 03:46:09.89 .net] 参照カウンタではないGCを使う言語は、 あんまりそういう作りになってないなぁ
273 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 09:52:17.93 .net] スコープぬけてすぐってのは newではないコンストラクタを使うからできるんだよ newを使わない保証があるなら参照カウンタもいらないよ
274 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 15:21:11.51 .net] スコープ抜けてすぐなんて制約条件を勝手に厳しくするなよ > このlua内の変数のスコープがはずれたりしたときに、
275 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 15:38:02.02 .net] 質問者の意図はたぶんそれで合ってると思うの。C++使う人がluaで嵌まる典型的ポイントだよね 明示的なリソース廃棄処理つくらないと回避できない
276 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 16:24:50.58 .net] >>272 あはは、たしかにw スコープがはずれたとき ではなく スコープがはずれたりしたとき であるから 結局GCで事足りるなw
277 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 18:42:33.31 .net] リソースの解放(例えばファイルのクローズ)をデストラクタで 行うなんてのはGC備えてる言語じゃ禁じ手じゃん。 C++オブジェクトに限らず、Luaオブジェクトでもスコープ外れた タイミングで即解放なんて無理でしょ。 C++と同じようなスコープ外れて即廃棄は無理なので、それの寿命 をLuaオブジェクトで管理しようというなら設計が間違ってる。
278 名前:274 mailto:sage [2013/11/04(月) 19:39:14.73 .net] やらない ってのと やれない っては大きな違いがある。 このケースは前者でやる必要がないからやらないだけなんだよ。 やればやれるよ? metatableのdestructorで 時限付きにhookONしてそこでcollectすればいいだけでしょ? で、それがなんだよって話。
279 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 22:38:46.70 .net] AngelScript|Д`)<俺の出番だな いやマジで
280 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 23:06:44.14 .net] JavaでGC避けようとするとこんな感じのがある。 www.javafesta.jp/2007/pdf/C1.pdf www.infoq.com/jp/news/2010/11/tc-bigmemory
281 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 23:17:12.73 .net] squirrelがリファレンスカウントなのもgc動作を嫌ってだな
282 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 00:28:39.93 .net] リファレンスカウンタの方がマーク&スイープよりも安いからな。
283 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 08:03:02.46 .net] Javaや.NETのGCくらいになると無茶苦茶高性能だよ Javaはチューニングがサーバー用だからアレだが まあそこまでいかないと性能が出ないなら個人レベルでは無理があるわな
284 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 12:38:56.98 .net] AngelScriptは基本的には参照カウントのようだが循環参照時などはGCをする模様
285 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 20:08:05.76 .net] AngelScript|Д`)<AngelScript2.28.0記念カキコ
286 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 20:24:10.43 .net] (´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
287 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 23:42:30.14 .net] 参照カウントってGCとちがうものなの?
288 名前:デフォルトの名無しさん mailto:sage [2013/11/06(水) 09:10:15.25 .net] 知ったかに構うなよ
289 名前:デフォルトの名無しさん mailto:sage [2013/11/07(木) 07:39:13.29 .net] でもまあ一般的にGCと言えばマーク&スイープじゃね 参照カウンタって単なるコーディングテクニックみたいなもんだから注釈なしでGCと呼ぶのは抵抗ある
290 名前:デフォルトの名無しさん mailto:sage [2013/11/07(木) 09:59:04.25 .net] 全然違う
291 名前:デフォルトの名無しさん mailto:sage [2013/11/07(木) 12:43:45.41 .net] >>285 GCの実装の仕方の一つとして、参照カウントを使うものがある、といった感じ
292 名前:デフォルトの名無しさん mailto:sage [2013/11/07(木) 15:16:54.50 .net] 広義ではGCに含まれる。 狭義では参照カウントとtracingに分けて、tracing型のみをGCとすることもある。 まだ一般的ではないが "A unified theory of garbage collection" という論文によれば、 参照カウントとtracingは双対なんだそうだ。
293 名前:デフォルトの名無しさん mailto:sage [2013/11/07(木) 20:06:48.85 .net] Squirrelの人が熱弁してたなあ
294 名前:デフォルトの名無しさん mailto:sage [2013/11/15(金) 18:43:55.94 .net] 当方素人で疑問なのですが、スクリプトでゲームを作るということが、 つまりどういうことなのかっていうのがイマイチ掴めません 例えば、C/C++コード(DxLibやSDLなど)で適当にゲームウインドウを表示したら あとはスクリプトコードを呼び出すだけ、という状態のことなのでしょうか? このときに、最低限としてスクリプト側からC側の ・メインループ毎に必要な処理(DxLibのProcessMessageなど) ・キーボード・マウス・ジョイパッドなどの入力を取得する機能 ・画像を表示する機能 など、呼び出すことができれば最低限ゲームっぽいことはできそうでしょうか? そして、速度の問題がある処理はその都度C側で記述していく、とか あるいは、あるタイミングの数値計算処理であるとか、RPGのイベントだとか 再コンパイルせずに調節したい場合にスクリプトを用いるということもあると思いますが この場合、スクリプトを実行するVMをどのインスタンスで保持するのが良いのでしょうか
295 名前:デフォルトの名無しさん mailto:sage [2013/11/15(金) 19:49:12.61 .net] ネイティブで書きにくいところをスクリプトで書く それだけの話であって何から何までスクリプトということは無い
296 名前:デフォルトの名無しさん mailto:sage [2013/11/15(金) 20:47:11.59 .net] 自分はゲーム内のオブジェクトの動きや描画の指定にスクリプト使ってるよ。
297 名前:デフォルトの名無しさん mailto:sage [2013/11/15(金) 21:58:13.61 .net] スクリプト言語による効率的ゲーム開発 新訂版 (LuaとC/C++連携プログラミング) とか、luaとゲームみたいな本には序章あたりにそういうこと書いてあるから、何冊か本屋でみてみたら?
298 名前:デフォルトの名無しさん mailto:sage [2013/11/15(金) 22:02:34.14 .net] >>293 >>294 >>295 どうもありがとうございます! いつもいつもプログラミングのみでミニゲーム作る止まりなので スクリプト組み込みを勉強してに中規模以上のゲームを作れるようにがんばります
299 名前:デフォルトの名無しさん mailto:sage [2013/12/04(水) 01:39:29.32 .net] iPadで動くCodeaって、内部でLua使ってるみたいだね。
300 名前:デフォルトの名無しさん mailto:sage [2013/12/15(日) 20:30:59.57 .net] ゲームの会話シーン(ノベルゲーム風)をスクリプトで記述したいんですが、 やり口としてはどういうのが良いでしょうか? 今考えているのは ・会話イベントのひとまとまりごとに1ファイルで記述する ・文章を記述する前に置換文字や会話に使用するキャラクターを定義できる ・会話シーンに必要なアクション(立ち位置、表情変更など)を記述できる 想像してるイメージとしては↓な感じです (使用スクリプト未定なので文法やメソッド名は適当です。雰囲気が伝わればいいですが・・・) //event1.txt //最初に置換文字や、使用キャラクターを定義 player = data.getCharacter("主人公"); //キャラ自体を取得 sub = data.getCharacter("サブキャラ"); city = data.getString("街の名前"); //置換文字として定義 //イベント開始 startEvent(); setCharacter(sub); message( "いらっしゃい " + player + "さん。" + BR + city + "にようこそ。"); //キャラクタークラスはそのまま文字置換にも使えるようにする。 //BRには改行を定義しておく。 endEvent(); // これだとダブルクォーテーションがクドい気がするので "ようこそ$[player]さん" みたいなやり方にすべきでしょうか?
301 名前:デフォルトの名無しさん mailto:sage [2013/12/15(日) 20:51:22.29 .net] そんなのは簡単な独自言語のほうが使いやすいしツールも作りやすい 安直に汎用スクリプト使おうじゃなくて、まずはユースケースを洗い出してみろ それほどいろんな機能も自由度もいらないことがわかるはず
302 名前:デフォルトの名無しさん mailto:sage [2013/12/16(月) 00:21:21.85 .net] セーブの実現性考えてつくるべし 下手に高級言語にすると死ぬ 人に使わせること考えると、プレーンテキストにタグ埋めるスタイル以外はあり得ない
303 名前:デフォルトの名無しさん [2013/12/16(月) 00:49:52.86 .net] 同意 セーブや細かい制御のことを考えると、汎用言語を使っても結局 言語内DSL的なものでデータとして埋め込むような形にしかならん 汎用言語の機能をほとんど活かせず、インタプリタを作る手間も無くならず、 ただスクリプトを書くのが面倒になるだけ
304 名前:デフォルトの名無しさん mailto:sage [2013/12/16(月) 01:33:50.36 .net] 途中セーブって鬼門だしな…
305 名前:デフォルトの名無しさん mailto:sage [2013/12/16(月) 18:01:34.83 .net] >>299-302 ありがとうございます、セーブ完全に考えてませんでした。 途中セーブ考えると難易度かなり上がりますね。
306 名前:デフォルトの名無しさん mailto:sage [2013/12/16(月) 21:48:48.52 .net] 独自スクリプトなら好きなように出来るから、どうとでもなるよ ADVゲームなんて保存しておくデータは少ないしな
307 名前:デフォルトの名無しさん mailto:sage [2013/12/19(木) 20:06:48.55 .net] if文の中のwhile文の中のif文のさらに中のwhileの途中でスクリプトを停止してセーブ、ロードしてそこから再開、とか。
308 名前:デフォルトの名無しさん mailto:sage [2013/12/19(木) 21:22:15.85 .net] stateパターンでも使えば?
309 名前:デフォルトの名無しさん mailto:sage [2013/12/19(木) 21:35:40.70 .net] >>305 ADVは普通そんなとこでセーブする必要ないよ もし必要になってしまってるなら設計がおかしい
310 名前:デフォルトの名無しさん mailto:sage [2013/12/19(木) 21:54:56.69 .net] DSL専用の言語ってあってもいいのにな ADVのスクリプトみたいなプル型のインタプリタを作りやすい簡単な言語仕様で ライブラリにソース渡したら構文解析だけやってくれればいい
311 名前:デフォルトの名無しさん mailto:sage [2013/12/19(木) 22:41:18.53 .net] 「設計がおかしい」ってさ、 言うのは簡単だしいかにもそれっぽいけど単なる思考停止くさいよね
312 名前:デフォルトの名無しさん mailto:sage [2013/12/19(木) 23:00:23.25 .net] >>308 EclipseのXtext/Xtendみたいなのでネイティブアプリに組み込める ものがあったら俺も欲しいな。
313 名前:デフォルトの名無しさん mailto:sage [2013/12/19(木) 23:01:36.14 .net] ターン制と言うか、区切りよく設計しない? 大枠のwhileループとifはあるにせよ、更にその中のwhileの中でセーブはともかくロードはやろうと思わない。
314 名前:デフォルトの名無しさん mailto:sage [2013/12/19(木) 23:38:35.63 .net] 任意のObjectをセーブ、ロード ↓ Object is a String ←設計がおかしい
315 名前:デフォルトの名無しさん mailto:sage [2013/12/20(金) 01:55:56.71 .net] >>305 フラグでメッセージが変わる、とかいうのを複雑にしちゃったらそういうのが発生しそう。
316 名前:デフォルトの名無しさん mailto:sage [2013/12/20(金) 12:14:01.98 .net] フラグで文章が変わるなら、変わる文章の手前で条件分岐するだけじゃね?
317 名前:デフォルトの名無しさん mailto:sage [2013/12/20(金) 17:12:52.37 .net] 変わるのがメッセージだけなら、 flg ? "msg-a" : "msg-b" って書けるならそのほうがシンプル。
318 名前:デフォルトの名無しさん mailto:sage [2013/12/20(金) 21:11:54.76 .net] それだと既読フラグがめんどい
319 名前:デフォルトの名無しさん mailto:sage [2013/12/21(土) 08:21:18.69 .net] シンプルだけど読みにくい
320 名前:デフォルトの名無しさん mailto:sage [2013/12/22(日) 12:54:39.25 .net] 慣れの問題
321 名前:デフォルトの名無しさん mailto:sage [2013/12/23(月) 08:32:10.39 .net] 慣れないとダメというのがそもそもおかしい
322 名前:デフォルトの名無しさん mailto:sage [2013/12/23(月) 11:28:02.04 .net] 逆だよ 時間がかかってはダメというのがおかしい だからゆっくり時間をかけて慣れることが許される
323 名前:デフォルトの名無しさん mailto:sage [2013/12/23(月) 12:34:02.63 .net] >>319 俺が慣れてないからforもwhileも禁止、全部ifとgotoで、って言ってた人が昔いたぞ。 >>316 既読を管理する関数 mng_read ってのを作って、 flg ? mng_read("msg-a") : mng_read("msg-b") とするのはどう?
324 名前:デフォルトの名無しさん mailto:sage [2013/12/23(月) 22:24:13.34 .net] >>321 ADVで文章部分に関数使うとか論外だろ… それにスクリプト打つのはド素人も想定するもんだ
325 名前:デフォルトの名無しさん mailto:sage [2013/12/23(月) 22:49:00.75 .net] >>321 そんなBASICでプログラミングを覚えたジジイなんて、 玉切り落としてグズの家系を根絶やしにしてしまえ。 GOTO LESSが推奨されて何年立ってると思っているんだ
326 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 09:54:37.59 .net] IFとGOTO以外理解できないド素人も想定しなきゃダメですよw
327 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 13:19:00.89 .net] そりゃシステムの部分でわざわざGOTO使う事はないけど シナリオスクリプトと
328 名前:オて考えたらはGOTOは大事だろ IFとGOTOだけで書けばセーブデータの問題も解決するわけだし [] [ここ壊れてます]
329 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 13:43:33.10 .net] チャートの類をつくろうとすると、たとえADVのスクリプトでもgotoもifも禁止だね。バグの温床になる そういった場合は、遷移は別ファイルにまとめて定義が妥当
330 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 17:08:31.18 .net] プログラムではまずありえないけど、ループのド真ん中に外から飛び込むジャンプって、 ゲームのシナリオ的にはありそうじゃない。そういうのってどうしてるの?
331 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 19:11:38.28 .net] gotoは、終了タグを省略したhtmlとか、breakしないswitchと同じだと思う 逆に言えば終了タグを必ず書くgotoなら使っていいんじゃね
332 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 19:40:46.56 .net] come from文?
333 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 20:16:45.26 .net] 途中でセーブしてそこから続きが出来るようにしないのなら、どんな組み方してもOKだけどな。
334 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 21:28:56.06 .net] >>326 条件分岐使わずどうやってフラグ分岐するんだ? >>327 そんなの見たことないが、どういうのだよ?
335 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 23:30:35.65 .net] >>331 だから別ファイル どのシーンの次にどのシーンになるのかの 状態遷移だけを記述する言語というか データ構造を別に準備するのさ
336 名前:デフォルトの名無しさん mailto:sage [2013/12/24(火) 23:50:48.99 .net] 想定してるのがどういうゲームかで違うのかも 例えばLiveMakerのシナリオ部分は文章とか画像とかの指定で 条件分岐は別になってる シナリオ書き変えたら分岐も変わってた…なんてことはない 単純に選択肢で話が大きく分岐していくノベル用にはわかりやすくていい でも細かいフラグ管理やパラメータ要素を入れると難しい 分岐ごとにいちいち分けて考えてたら バグは出ない以前に途中で投げ出す可能性大
337 名前:デフォルトの名無しさん mailto:sage [2013/12/25(水) 01:12:07.86 .net] 適当にシナリオ用のVM作ってステートセーブさせれば良いんじゃないかな・・
338 名前:デフォルトの名無しさん mailto:sage [2013/12/25(水) 07:14:27.71 .net] プレーンテキストに命令タグを挟む方式だとあかんのですか ノベルゲーって基本テキスト主体でしょ? 逐次処理できるし、ステートの保存はフラグ一式と行番号の保存でいいし ループ処理の構文をわざわざ用意する必要ないと思うんだけど・・・
339 名前:デフォルトの名無しさん mailto:sage [2013/12/25(水) 10:33:19.18 .net] >>332 あぁ、なるほどね。 確かにそういう作り方をしてるゲームを見た事があるわ。
340 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 01:56:07.59 .net] ノベルゲーのスクリプトに、Cレベルの制御構文、クラスやコルーチンとかまで入れて欲しいとか言われた事あるわ。
341 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 10:34:40.60 .net] 文章やマクロを使う部分のスクリプトはオリジナルで クラスやコルーチンのスクリプトは組み込み言語使えば良かろ
342 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 10:38:32.16 .net] プログラミング知識がある奴用なら 爆速コンパイルのFPCでいいと思うな
343 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 10:48:29.28 .net] コルーチンはプログラミング言語では直接のサポートがない言語も多いけど、 ゲームのスクリプトとしては需要あるんじゃないかな。 たとえば、ある場所に来るたびに、その場所での「さっきの続き」とか。
344 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 11:18:48.57 .net] stateパターンでいいじゃん オーソドックスにフラグ立てていくなりstackでやるなりでいけるでしょ
345 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 11:41:00.70 .net] 手続き的なものは、スクリプトの手続きとして直接記述したいじゃない。 stateパターンというかインタプリタパターンで、その場用のミニ言語を作るんじゃなくて。
346 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 11:56:29.21 .net] コルーチンのことをIteratorと言う人とStateと言う人とInterpreterと言う人がいるけど 気分で名前が変わるくらいなら名前つけない方がよいよね
347 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 12:15:58.74 .net] いきなりどうした
348 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 12:24:14.01 .net] いや全部別のものだし
349 名前:デフォルトの名無しさん mailto:sage [2013/12/26(木) 12:28:28.45 .net] >>342 > 手続き的なものは、スクリプトの手続きとして直接記述したいじゃない。 すればいいじゃない > stateパターンというかインタプリタパターンで、その場用のミニ言語を作るんじゃなくて。 フラグ立てていくだけだからeval出来るものなら既存の言語で簡単に出来るよ 記述が冗長でという話ならpegかなんかでちょろっとgeneratorを書いてやらいい
350 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 02:26:08.74 .net] 動的型のスクリプトの凄さわからなかったんだけど クラスじゃなくって、インスタンスをバインドして そいつがファクトリ的な関数いっぱい持ってたら もうスクリプトの中でやりたい放題なんだね
351 名前:デフォルトの名無しさん mailto:sage [2013/12/28(土) 13:42:09.78 .net] リモートでバッグが容易 かつ、お作法も確立してるので楽ちんなんだよな
352 名前:デフォルトの名無しさん mailto:sage [2013/12/29(日) 23:59:20.84 .net] 最近VLCビデオプレイヤの機能拡張言語がLuaだったのにやっと気づいた
353 名前:デフォルトの名無しさん mailto:sage [2013/12/30(月) 00:02:51.79 .net] おめ
354 名前:デフォルトの名無しさん mailto:sage [2013/12/30(月) 00:32:29.40 .net] DXライブラリでゲーム作ってて、スクリプトを組み込んでみたいんですが、 メインループ中にスクリプトをどのように組み込んでいけばいいのかまったく検討がつきません。 RPGのマップ上のイベントであれば、マップロード時にスクリプトファイルを読み込んで イベントを関数化しておく、などは想像できるのですが・・・ それとも、主要クラスをスクリプトエンジンへバインドしてしまって メインループ自体をスクリプト側で記述するという方法なのでしょうか?
355 名前:デフォルトの名無しさん mailto:sage [2013/12/30(月) 01:54:24.29 .net] 一般的には各オブジェクトのフレーム毎処理なり、メインループの段階ごとなりにスクリプト用のフックを準備して、それ経由で呼び出しされるようなイベントドリブンな書き方をすればいい。これは別に普通にCで書くのと特に変わらない luaとかsquirrelのようなコルーチンありのスクリプトなら、メインループから、実行中のコルーチンスレッドのresumeを個別に呼び出しする形も作れる それぞれのスレッドで suspend()するたびに 次のフレームに処理が継続されるので、UI処理書くのにとても便利 両方実装して使い分けるのも有り。いずれの場合も、参照するオブジェクトはスクリプトから見えるようにバインドする必要はでてくる
356 名前:デフォルトの名無しさん mailto:sage [2013/12/30(月) 17:04:01.21 .net] >>352 ありがとうございます! コルーチン勉強しようと思います
357 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 01:28:40.37 .net] AngelScript|Д`)ノ<遅くなったけどあけおめ。今年もスクリプトエンジョイしよう
358 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 01:32:56.88 .net] おっそーい
359 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 18:55:31.97 .net] ZekamasiScriptの登場が待たれる
360 名前:デフォルトの名無しさん [2014/01/16(木) 23:05:15.79 .net] C++でクラス定義を公開してバインド。 Suirrelでインスタンスを生成したとき、 boost::shared_ptrを用いたインスタンスにするにはどうすればいいでしょうか。 C++とSquirrelとで共通の参照カウンタを持たせたいと考えています
361 名前:デフォルトの名無しさん mailto:sage [2014/01/16(木) 23:29:03.57 .net] luaならレジストリを使ってやるから同様の逃げ道はあるだろうけど そういうのが必要なケースってあるのかな? 設計を見なおしたほうがいいかも
362 名前:デフォルトの名無しさん [2014/01/17(金) 00:50:30.25 .net] luabind使ってる時は自然と出来たものですから、 こっちでも使いたいなーと思ってました。 ・C++でHogeクラス定義、公開 ・Squirrelでインスタンス生成 ・C++から公開しているオブジェクトマネージャへ登録 ・C++側でさっきのHogeインスタンスを更新 みたいな構造を考えてました。 Hogeを継承したFooクラスとかも登録したいと考えてました。 設計考えてきます。
363 名前:デフォルトの名無しさん mailto:sage [2014/01/17(金) 02:10:14.78 .net] 対応したバインダかくだけじゃね? squirrel側の参照カウンタとはダブるだけで共通にはならんけど動作自体は問題ない
364 名前:デフォルトの名無しさん mailto:sage [2014/01/17(金) 04:46:37.29 .net] HogeをC++で定義、公開。 g_HogeManagerをC++で定義、インスタンスをSquirrelへ公開。 で、次のスクリプト関数実行。 function Func(){ local inst = Hoge() g_HogeManager.add(inst) } で、C++側でg_HogeManagerの要素に対してupdateとか呼び出したいです。 Funcのスコープ抜けた時点でSquirrel側のinstの参照カウンタが0になり、 望まない形でインスタンスが破棄されてるようです。 ので、共通の形を取りたいと考えてました。 設計が悪いってのは、この周りの考え方が怪しいのかと。
365 名前:デフォルトの名無しさん mailto:sage [2014/01/17(金) 04:48:04.70 .net]
366 名前:デフォルトの名無しさん mailto:sage [2014/01/17(金) 08:09:28.29 .net] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
367 名前:デフォルトの名無しさん mailto:sage [2014/01/17(金) 16:23:55.46 .net] >>361 そりやsquirrel側はC++側の参照を知らないもの。当然かと squirrelから渡されたものは、HSQOBJECT のかたちで取得して、保持するときには sq_addref()して、不要になったら sq_release() するのが正解
368 名前:デフォルトの名無しさん mailto:sage [2014/01/17(金) 18:31:37.39 .net] あ、gHogeManagerがなんのためのものかにもよるけど、addrefしたものは当然C++側でもreleaseしないと消えなくなるから注意な メモリリークの原因になりやすい
369 名前:デフォルトの名無しさん mailto:sage [2014/01/22(水) 20:05:40.98 .net] AngelScript|Д`)<ASの得意分野の話をしてると聞いて
370 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 16:55:15.38 .net] squirrelって文字列比較できないんでしょうか? 自分で関数を作るしかない?
371 名前:デフォルトの名無しさん mailto:sage [2014/02/01(土) 23:19:13.62 .net] Squirrelのthreadを外部からidle状態にさせることはできるのでしょうか。 現在、threadをidle状態にさせるために、wakeupで終了条件を渡して threadとして実行する関数内でreturnなりさせてidle状態にさせていますが面倒です。
372 名前:368 mailto:sage [2014/02/02(日) 00:01:58.47 .net] 手法変えて自己解決しました
373 名前:デフォルトの名無しさん mailto:sage [2014/02/02(日) 00:31:12.85 .net] (´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
374 名前:デフォルトの名無しさん mailto:sage [2014/02/03(月) 05:51:52.94 .net] Cocos2dx + lua が最強
375 名前:デフォルトの名無しさん mailto:sage [2014/02/05(水) 23:25:39.46 .net] Squirrelでthreadの実行関数内でスタックダンプってどうやってとるの? sqstd_printcallstackをラップしたのをバインドしてthreadの関数内で呼び出しても、 thread.callとかthread.wakeupんとこまでのスタックしか見れなくてデバッグが面倒
376 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 01:00:28.57 .net] そこから上は別のVMだから当然では
377 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 13:14:51.80 .net] あ、なるほど。 ってことはsq_getthreadとかと組み合わせれば出来んのかな。 助かったよ、ありがとう
378 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 16:31:10.12 .net] AngelScript|Д`)<AngelScript2.28.1記念カキコ
379 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 16:34:11.87 .net] >>374 スレッド制御してるVMがグローバルに一つなら、そのwakeup呼び出ししてる間は とくに変化無いから、もうグローバルに直接参照して表示してしまうってのも一つの手だね 俺はそれぞれのスレッドのwakeupは、全部C++のメインの一カ所からしか呼ばない(親VMは登録とかにしか使わない)から上をたぐる必要は特に無い
380 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 19:41:13.19 .net] なるほど、そういう方法もあるのか。検討します。 で、早速また分からんことが。 ・スクリプトでnewthreadで生成したスレッドをC++にてsq_getthreadで取得 ・取得したvmに対してsq_newclosure,sq_seterrorhandlerで ランタイムエラーハンドラを設定したんだけど、 スレッド実行中にエラー出ても呼ばれないんですが原因なんでしょう。 同じノリでC++からsq_setprintfuncで出力関数をセットすると期待通りに動作するんだけど。
381 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 20:13:41.72 .net] sq_notifyallexception しとかないと常にはよばれなかったような記憶
382 名前:デフォルトの名無しさん mailto:sage [2014/02/06(木) 20:42:06.75 .net] おぉ、呼ばれた!ありがとう!
383 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 11:35:20.59 .net] スレチか悩んだがココで。 トゥイッターで「#squirrel」を検索するとマジもんのリスばっか出てくる。 どのハッシュタグならココで扱ってるSquirrel拾えるの?
384 名前:デフォルトの名無しさん mailto:sage [2014/02/10(月) 11:43:35.22 .net] 本家で聞けよ…
385 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 21:55:32.80 .net] ゲーム用途のスクリプトのことを学べば学ぶほど、最終的にはマップエディタや、 アイテムデータを打ち込むためのフォームなどを自作しておかないと、 スクリプトの良さを生かせないなぁ、というところに行き着いてしまうのですが、 個人製作の方々はそういったものを自作していたりするんでしょうか? むしろ、そんなところに拘るくらいならUnityや他のゲーム製作ツールについて 勉強してた方がマシでしょうか?
386 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 22:11:10.98 .net] まず、自作するまでもなく 一般的なものならinport/exportで定番どころのフォーマットは対応してるので困ることはないのではないかな 対応してないとしてもconverterを書くだけだから簡単に書ける
387 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 22:15:28.12 .net] スクリプトの良さを生かそうという発想が生まれる時点で 既に道を踏み外している ゲームを完成させたいなら計画を立て直せ そうでないなら合理性なんか考えず好きなように楽しめ
388 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 22:17:33.95 .net] スペルミスってるな まあいいや
389 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 22:31:38.48 .net] >>383 既存のモノで、マップエディタならJsonあたりで出力できるものや、 データ入力ならCSVエディタや、既存DB用ファイルを出力するエディタあたりでしょうか? >>384 確かに、そうですね・・・ まだ数回しかチャレンジしてないのですが、どうしても毎回、 「プログラムで直書きしたのと変わらんやんけ!」か、 「CSVで十分やんけ!」という状況ばかりになってしまって、 そこから一歩ステップアップできない感じなのです
390 名前:デフォルトの名無しさん mailto:sage [2014/02/28(金) 23:01:28.08 .net] AngelScripterさんがいたら教えてほしい RegisterObjectType に asOBJ_POD を渡すとコンストラクタ、 代入演算子その他諸々が自動生成されるって話だけど、 asOBJ_POD | asOBJ_APP_CLASS_CONSTRUCTOR みたいにして コンストラクタだけ独自拡張する使い方は仕様的にできるようになってるの?
391 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 07:44:24.61 .net] >>386 目的と手段が逆になってんじゃないの?
392 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 10:43:43.37 .net] >>387 普通にコンストラクタも登録できるから 公式リファレンス見ろ
393 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 11:25:09.70 .net] Lua自体はC++を使ってなくて「Cで十分やんけ!」という状況なので もしC++を使ってる人がLuaは不要だと言えば、C++の方が不要だと言い返される気がする
394 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 12:09:22.88 .net] >>382 コンシューマだったり、プログラマ以外の作業員がいたり アドベンチャーゲームみたいなジャンルだったらメリットが大きいと思うけど 個人製作だったら別に無理して活かす必要は無いような
395 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 13:21:37.93 .net] スクリプト使えば最コンパイルなしで高速に微調整ができるっていうけど 個人製作だとスクリプトファイルとかその他リソースを再読み込みする時間の方が 長かったりするのは俺だけ?てかみんなはスクリプトファイルどれくらい分割してる?
396 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 15:07:27.08 .net] >>392 ゲームは再起動するんだから、 他のリソースふくめたロード時間は スクリプトつかっててもつかってなくても大差ないかと スクリプト単体のロード時間は誤差の範囲だよ。確実にコンパイル&リンク時間のが長い
397 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 15:08:56.52 .net] LOVE使っててそれは思った
398 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 15:29:29.09 .net] >>392 修正したファイルだけ再読み込みできるようにしておくといい感じ
399 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 15:29:47.45 .net] >>393 392じゃないけど どのリソースを読み込むかスクリプトで指示されているから スクリプトの再読み込みはその他リソースの再読み込みとほぼ同義で 時間がかかるって話じゃないの だから スクリプト単体のロード時間が誤差の範囲なのは自明で それをコンパイル&リンク時間と比較するのはこの文脈ではナンセンス
400 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 15:47:17.62 .net] >>396 スクリプトがコンパイル時間がかからなくて便利って話は、そもそもその単純比較の場合の話だから、そのメリットが得られてないならそれは作りが悪いってことだよね。結局のところ
401 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 15:47:27.35 .net] >>395 それを実現するためには副作用を減らす設計が重要で とりあえずスクリプトで実装して 重い処理はホスト言語で実装しなおす みたいなボトムアップな作り方してると困っちゃうんだよね というか困った
402 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 15:57:47.84 .net] >>397 それは「スクリプトがコンパイル時間がかからなくて便利」ってのが 真である前提の結論だろ 実際は単なる謳い文句だよねって話じゃないの? てかスクリプト言語使う動機なんて一つじゃないんだから そんなことで作りの良し悪し評価されたくないよな
403 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 16:47:42.14 .net] >>389 リファレンス見てもPODで自動生成されたコンストラクタに 独自拡張のコンストラクタが上書きされるとか書いてなくね? スレの趣旨には反するけどAlcantarea使えば諸々の問題解決できるよね。 実行中のプログラムの関数を再コンパイルして差し替えてくれるVSのアドイン ttp://alcantarea-cpp.com/
404 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 16:57:41.84 .net] >>398 副作用を減らすんじゃなくて寿命を減らせばいいと思う 修正前の古いデータが生き残らないようにする
405 名前:デフォルトの名無しさん mailto:sage [2014/03/01(土) 17:09:03.44 .net] >>399 良い悪いって言葉が気に入らないなら、 設計思想が合ってない、ってことでひとつ 宝の持ち腐れにしてまで使う意味はないな
406 名前:デフォルトの名無しさん mailto:sage [2014/03/05(水) 17:03:30.70 .net] 今から始めようと思うんですけど C++で使えますか? Cでの導入方法を教えて下さい
407 名前:デフォルトの名無しさん mailto:sage [2014/03/05(水) 23:29:20.69 .net] >>403 冷やし中華を?
408 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 03:15:58.29 .net] >>403 何を?
409 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 04:44:07.89 .net] get started からダウンロードして インクルードファイルとライブラリファイルを設定して、プロジェクトのプロパティで追加の依存ファイルにlua5.1.libを追加すればいいんですね。 後、クラスのメンバ関数をLuaから使う方法が理解できない local 変数に関数を代入するの?
410 名前:デフォルトの名無しさん mailto:sage [2014/03/06(木) 06:38:39.31 .net] lua では C でいうところの関数名=変数名となってるから大体合ってる
411 名前:デフォルトの名無しさん mailto:sage [2014/03/20(木) 17:29:02.65 ID:Moc5bE7b.net] AngelScript|Д`)<AngelScript2.28.1記念カキコ
412 名前:デフォルトの名無しさん mailto:sage [2014/03/20(木) 17:29:20.35 ID:Moc5bE7b.net] ごめん2.28.2だ
413 名前:デフォルトの名無しさん mailto:sage [2014/03/20(木) 17:38:01.94 ID:cnVVzBAE.net] (´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
414 名前:デフォルトの名無しさん mailto:sage [2014/04/06(日) 22:57:21.17 ID:OYl5erDz.net] cocos2d-x3.0 Luaバインディング使ってるんだけど コード補完が出来るオススメエディタありませんか? cocos2d-x2.x 時代は tolua++のpkgファイルあったから Eclipseプラグインでコード補完出来たけど 3.x は探してもpkgみつからないの・・
415 名前:デフォルトの名無しさん mailto:sage [2014/04/07(月) 00:09:17.03 ID:wNleVxO3.net] Squirrel 3.0.6 stable
416 名前:デフォルトの名無しさん mailto:sage [2014/04/08(火) 23:44:03.23 ID:tbmdAmxp.net] >>411 intypeってテキストエディタではダメ?
417 名前:デフォルトの名無しさん mailto:sage [2014/05/11(日) 11:14:07.30 ID:FPHyRsPY.net] >>414 ない
418 名前:デフォルトの名無しさん mailto:sage [2014/05/11(日) 12:58:32.06 ID:ahIxA60o.net] 作りかけならあるみたい https://github.com/bobsayshilol/luajit-decomp https://github.com/NightNord/ljd
419 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 21:27:31.11 ID:Jr9LnoLr.net] Lua って 5.3 で整数型が導入されるのか。 整数型なんていらんかったんや! というこれまでの解説は間違いだったのか? それとも、ゲームだけでなく、カーネルに近いところでも使われ始めたからなのか?
420 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 22:45:02.79 ID:rRKhLlHV.net] 内部では結構前からあった気がする テーブルの整数添え字の要素を特殊化したりとかその関係で 記憶違いだったらごめん
421 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 23:06:44.25 ID:fjbQFkov.net] それはインデックスとして使われるときに整数に変換されるだけで、値として整数を保持してるわけじゃないよ 満を持して登場したと思ったらさっそくdeprecatedにされたbit32ライブラリさんかわいそう
422 名前:デフォルトの名無しさん mailto:sage [2014/05/12(月) 23:22:03.10 ID:fjbQFkov.net] ああひょっとして特殊化ってのはテーブルのarray partのことを言ってるのかな
423 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 01:10:36.92 ID:1hVKdVzY.net] >>416 NetBSDはカーネル内部でLua使えるらしいぞ それの関係かどうかまでは知らんが ttp://news.mynavi.jp/news/2013/10/21/016/
424 名前:デフォルトの名無しさん mailto:sage [2014/05/13(火) 09:56:07.37 ID:htOfSQyE.net] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
425 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 06:43:02.86 ID:cy7ef2kl.net] 整数型導入でさらに速くなるみたいね
426 名前:デフォルトの名無しさん mailto:sage [2014/05/18(日) 14:03:13.72 ID:HDWDipXQ.net] eLuaという、マイクロコントローラ向けのさらに軽量なLuaもあるらしい www.eluaproject.net
427 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 18:05:42.02 ID:3LWaPBPW.net] Xtalってもう更新してないのかな GoogleCodeのは2008年で止まってるし
428 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 20:03:09.73 ID:RRJgBzCO.net] >>424 ttps://code.google.com/p/xtal-language/source/list 履歴見たら2013年11月13日が最終更新日だけど、どこ見てるんだ?
429 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 22:43:44.01 ID:3LWaPBPW.net] >>425 本当だ・・・ Downloadsのパッケージしか見てませんでした ごめんなさい
430 名前:デフォルトの名無しさん mailto:sage [2014/06/11(水) 12:26:03.22 ID:nbPEp42H.net] AngelScript|Д`)<AngelScript2.29.0記念カキコ
431 名前:デフォルトの名無しさん mailto:sage [2014/06/11(水) 16:57:16.91 ID:mGpoQXd/.net] (´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
432 名前:デフォルトの名無しさん mailto:sage [2014/06/19(木) 01:32:25.81 ID:wnpllGmU.net] C#コンソールアプリにLuaを組み込みたくてNLuaライブラリを使おうと考えてるんですが、 NLuaをSJISに対応させる方法はないでしょうか? NLua同梱のlua52.dllをSJIS対応版に差し替えればいいかと思ったんですが、 このdllは公式配布のものとは違うようで、ビルド方法が分かりませんでした。 dllのビルドさえできれば、Luaの字句解析部(llex.c)へのパッチの当て方は分かっているんですが…
433 名前:デフォルトの名無しさん mailto:sage [2014/06/19(木) 13:05:43.69 ID:CumbCiDK.net] >>429 https://github.com/NLua/lua これでしょ? cmake->buildするだけでは?
434 名前:デフォルトの名無しさん mailto:sage [2014/06/20(金) 17:24:54.94 ID:N64lKT9J.net] ありがとう! ビルドできました。 https://github.com/NLua/NLuaしか見てなかった・・・
435 名前:デフォルトの名無しさん mailto:sage [2014/06/20(金) 17:32:59.29 ID:TUABdWdO.net] リンクが貼られてるから git clone https://github.com/NLua/NLua.git cd NLua git submodule update --init --recursive で入るんだけどね
436 名前:デフォルトの名無しさん mailto:sage [2014/06/29(日) 14:59:39.60 ID:SaBki4ZJ.net] C++プログラムへのmrubyの組み込みで教えてください。 mrubyのprint出力をホスト側で受けるにはmrb_define_methodで"__printstr__"に 関数を設定すればいいと聞いたのでそのようにしているのですが、標準出力と 標準エラー出力の区別ってできないんでしょうか?
437 名前:デフォルトの名無しさん mailto:sage [2014/06/30(月) 15:10:51.45 ID:02CSsGE4.net] >>433 mruby-print/src/print.c 内の printstr で stdout とハードコーディングされてるので、stderr に出したいときはここを書き換えるか、新たに stderr に出すメソッドを追加すればいいのでは?
438 名前:デフォルトの名無しさん mailto:sage [2014/06/30(月) 23:03:22.29 ID:FuMPZ5KZ.net] ありがとうございます。 printstrのフックでは受け取れないメッセージがあったのでエラー出力には別のフックがあるのかと 思ったんですが、ソース見てみたらそこかしこでfwrite使って直接出力してますね。 確かにこれだと自分でソースいじらないとならないですね。
439 名前:デフォルトの名無しさん mailto:sage [2014/07/02(水) 16:59:10.88 ID:JkuzDLMY.net] 最近の lua とか squirrel とか python の実行速度を比較したページってないかね? 4、5年ぐらい前の奴なら英語サイトの奴があるけど、最近はどうなのかなと思って。
440 名前:デフォルトの名無しさん mailto:sage [2014/07/02(水) 21:40:33.67 ID:z0TOEu0h.net] 速さはjit環境の有無で大分違うよね pythonだとpypy? luajitは今後5.3移行にちゃんと追従してくれるか心配だね。 組み込み用としてのメリットはluaには他にもいろいろあるだろうけど jit環境が追従していかないとmrubyあたりに追い抜かれる?
441 名前:デフォルトの名無しさん mailto:sage [2014/07/03(木) 07:39:27.54 ID:FjTkZ2C1.net] jit関係ないっしょ
442 名前:デフォルトの名無しさん mailto:sage [2014/07/05(土) 14:29:38.02 ID:MeYLeon+.net] AngelScript|Д`)<AngelScriptJITは2.27に対応してるな
443 名前:デフォルトの名無しさん mailto:sage [2014/07/05(土) 21:54:08.81 ID:K5ikJkFl.net] >>439 ASがのけ者にされてたからちょっと安心した
444 名前:デフォルトの名無しさん mailto:sage [2014/07/06(日) 06:19:08.04 ID:xkFVsdDO.net] angelscript今までなぜか無視してたけど言語仕様見てきたら結構よさそうだな これコンパイル時に全部型チェックしてくれるの?
445 名前:デフォルトの名無しさん mailto:sage [2014/07/06(日) 12:38:13.11 ID:uyyLiQuX.net] angelscriptの最大の問題はこれならC++直接書くのとかわらなくね? という疑問が拭えないことだ
446 名前:デフォルトの名無しさん mailto:sage [2014/07/07(月) 01:12:10.12 ID:KmCWtuSa.net] >>442 どうしてもスクリプトにしないといけない箇所があったときは 慣れ親しんだC++に近い文法でスクリプト書けるってのは凄い利点だよ
447 名前:デフォルトの名無しさん mailto:sage [2014/07/07(月) 01:43:37.99 ID:PzOLkwtR.net] そもそも「どうしてもスクリプトにしないといけない箇所」なんてものは 思い込み以外では存在しない訳で
448 名前:デフォルトの名無しさん mailto:sage [2014/07/07(月) 01:49:05.61 ID:X/HL5rf/.net] (゚Д゚) ハア??
449 名前:デフォルトの名無しさん mailto:sage [2014/07/07(月) 02:26:29.4
] [ここ壊れてます]
450 名前:2 ID:amtUtvKD.net mailto: >>442 組み込みやすくもないし 書きやすくもないんだよね しいて言えば スクリプタを管理する立場の人にとっては 手間が減り楽が出来るのかもしれないね 現実社会でもよく見られる構図だけど 奴隷頭ってやつだな [] [ここ壊れてます]
451 名前:デフォルトの名無しさん mailto:sage [2014/07/07(月) 07:47:10.67 ID:3MsBFfON.net] その点Luaはプログラマではない者が使いやすいことを理念としているからな。 ただし英語程度はできることが前提だが。
452 名前:デフォルトの名無しさん mailto:sage [2014/07/07(月) 09:42:19.00 ID:n/CZjLr0.net] [要出典]
453 名前:デフォルトの名無しさん mailto:sage [2014/07/07(月) 10:01:11.88 ID:kMcKP8+6.net] 実行時コンパイルできるC++って考えるといろいろと悪用法ありそうなんだけどな
454 名前:デフォルトの名無しさん mailto:sage [2014/07/07(月) 10:23:10.27 ID:KmCWtuSa.net] >>444 C++で作ったMOD前提のM.U.G.E.Nみたいな2Dゲーム キャラクターの描画・行動全て自由に作れるようにするとしたら スクリプトじゃなくて何にすればいい?
455 名前:デフォルトの名無しさん mailto:sage [2014/07/07(月) 11:08:37.90 ID:m9tAIraA.net] 「C++でつくったMOD前提」ならそれこそスクリプトでなくてもいいのでは 制御のインターフェースが外部に全部公開されてるってことだよね
456 名前:デフォルトの名無しさん mailto:sage [2014/07/07(月) 22:51:51.30 ID:KmCWtuSa.net] >>451 書き方が悪かったな MOD前提のC++で作った・・・だわ
457 名前:デフォルトの名無しさん mailto:sage [2014/07/08(火) 14:33:11.22 ID:x77uNS3E.net] AngelScript|Д`)<AngelScriptは組み込み簡単だぞ。 ヘッダ1個インクルードしてライブラリファイル1個リンクするだけでOK。
458 名前:デフォルトの名無しさん mailto:sage [2014/07/08(火) 15:54:28.60 ID:t9t2Zfam.net] AngelScriptはEnvironment-Module-Contextっていう構成がすごくわかりやすくて好きになったな
459 名前:デフォルトの名無しさん mailto:sage [2014/07/08(火) 15:56:54.46 ID:t9t2Zfam.net] まちがえた ×Environment → ○Engine
460 名前:デフォルトの名無しさん mailto:sage [2014/07/08(火) 23:53:13.46 ID:jARkErFj.net] C++が好きな人にとってはいいのかもしれないが C++に特に思い入れのない人にとっては 何でC++の持つ恩恵が受けられる訳でもないスクリプトにまで C++の流儀を持ち込まねばならんのだ という感情があるということを AngelScript推進派は意識した方がいいと思う AngelScriptに懐疑的な人に対して >>443 みたいなアピールは無意味どころか逆撫でしてるんじゃない?
461 名前:デフォルトの名無しさん mailto:sage [2014/07/08(火) 23:55:23.17 ID:jARkErFj.net] 勿論AngelScriptの有用性を否定してる訳じゃなくて 人にモノを薦めるときは相手の考えも尊重してね という話
462 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 00:01:15.25 ID:yWtVDAf2.net] C++構文とかどうでもいいからさ コンパイル時型チェックしてくれる組み込めるスクリプト言語って他にないの?
463 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 00:02:36.15 ID:6stlqCZC.net] なぜそこまで言われなければならないんだ・・・ じゃ今度からAngelScriptの話をするときは「(個人の感想です)」って末尾に付けるわ
464 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 00:08:24.48 ID:HW4kwc6W.net] JavaやC#なんかとおなじで、ドカタに使わせる言語としては良さそうなんじゃないかと思う。
465 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 00:27:27.75 ID:q6W6WKLr.net] AngelScript|Д`)さんってさぁ Botや荒らしの類にしか見えないんだよ 本気で貢献したい、広めたいと思うなら リファレンスの翻訳したり サンプルコードを提示したりと やることはいくらでもあるでしょ? どっかの国のじゃないんだからさぁ ま、流行らないと思うけども
466 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 00:43:58.35 ID:ay8R5j5j.net] 静的と動的を二刀流したら面白そうなのは分かるけど 同じ系統の言語を二個使ったら何ができるのかが分からない
467 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 00:55:53.38 ID:Pn1IATNt.net] ASって存在価値ないんじゃね?ってレスに こういう場面で使えるよって返したつもりだったけど
468 名前: 無意識のうちに、C++すら理解できない能無しの劣等感を煽っちゃったんだね。 ごめんね。 [] [ここ壊れてます]
469 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 01:03:57.02 ID:6stlqCZC.net] 動的型付け言語はコーディングミスをしない超人向け言語ですので その超人様がコンパイル時型チェックに頼る凡人を見下すのは当然ですね
470 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 01:15:00.10 ID:q6W6WKLr.net] >>463 誰だよお前はw
471 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 07:00:19.88 ID:D5g6nYoo.net] 俺だよ俺
472 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 08:20:34.04 ID:dnhlgLoJ.net] AS信者ってキモいな・・・
473 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 08:35:39.86 ID:dUvUmdvT.net] 信者とか言い出すやつは荒らし。 みんな知ってるね。
474 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 19:01:55.74 ID:r8cQgObV.net] AngelScriptは何も悪くない 悪いのはソレを使う人間だよ
475 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 19:50:22.95 ID:ay8R5j5j.net] 静的と動的の争いが無駄すぎるおかげで、二刀流の生産性が非常に高く感じられる
476 名前:デフォルトの名無しさん mailto:sage [2014/07/09(水) 20:24:17.88 ID:yWtVDAf2.net] お前らが言ってる静的動的ってどういう意味で言ってんの? 型付けが?それとも実行環境が?
477 名前:デフォルトの名無しさん mailto:sage [2014/07/10(木) 14:37:45.84 ID:QqTFR8Ev.net] AngelScript使ってる男の人って・・・・・
478 名前:デフォルトの名無しさん mailto:sage [2014/07/10(木) 16:01:45.19 ID:iwrqfwZm.net] TreeBoa?
479 名前:デフォルトの名無しさん mailto:sage [2014/07/11(金) 01:37:33.79 ID:hJn+b6B7.net] 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にとっては全く無関係な話しじゃね?っていう
480 名前:デフォルトの名無しさん mailto:sage [2014/07/11(金) 02:45:06.27 ID:Mxpl8CKX.net] >>474 dostring はい はい
481 名前:デフォルトの名無しさん mailto:sage [2014/07/11(金) 04:09:49.02 ID:D40A4FPH.net] >>474 requireの公式マニュアル読めばモジュールの検索手順載ってるからそれ読んどいてね require経由で独自のアーカイブからファイルを読みたいなら package.preloadのメタメソッドに自前のローダを仕込むとかトリックを使うことになるよ
482 名前:デフォルトの名無しさん mailto:sage [2014/07/11(金) 07:07:35.10 ID:TT3tD9Ot.net] >>474 スクリプトをロードすると関数がつくられる (lua_Stateではない) 各々の関数はグローバル変数を共有できる (完全に独立してない) モジュールの使い方はバージョン毎に改善されているが グローバル変数の使い方はあまり変わってないので使い方が分からない人はいないと思う
483 名前:デフォルトの名無しさん mailto:sage [2014/07/11(金) 07:47:48.30 ID:XCAXgxw4.net] module は廃止されたよね? ttp://p-monster.hatenablog.com/entry/2013/02/13/205419
484 名前:デフォルトの名無しさん mailto:sage [2014/07/11(金) 07:50:22.67 ID:XCAXgxw4.net] こちらの方がよいかも ttp://ar.aichi-u.ac.jp/blog/lua/lua.html#id.2.2.0
485 名前:475 mailto:sage [2014/07/11(金) 14:00:17.28 ID:snzc4mzL.net] ああ、なにか根本的に間違ってたんだな 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") って呼んで使うことにしたよ。みんなありがとう
486 名前:デフォルトの名無しさん mailto:sage [2014/07/13(日) 17:10:55.13 ID:kuvdsVq2.net] 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); まったく反応しません どうしてでしょうか
487 名前:デフォルトの名無しさん mailto:sage [2014/07/13(日) 17:13:44.99 ID:kuvdsVq2.net] × t1=math.random;(50000,50100); ◯ t1=math.random(50000,50100); 直したけど動きません
488 名前:デフォルトの名無しさん mailto:sage [2014/07/13(日) 17:20:13.38 ID:kuvdsVq2.net] お騒がせしてすいません +が余計でした
489 名前:デフォルトの名無しさん mailto:sage [2014/07/13(日) 23:51:22.63 ID:oRazOMf+.net] 関係ないけどluaは命令末尾にセミコロン要らないよ。 まあ、同じ行に命令を並べる時は必要になるから、念のため常につけておくってのはアリだと思うけど。
490 名前:デフォルトの名無しさん mailto:sage [2014/07/15(火) 22:41:15.80 ID:4Hk/aMI9.net] lua_getuservalue, lua_setuservalueってどういう使い方するの? というかどういう風に使うもんなの?
491 名前:デフォルトの名無しさん mailto:sage [2014/07/18(金) 07:19:05.42 ID:MNjetX+m.net] >>485 マニュアルやら sceneryandfish.withnotes.net/?p=1908 などでも触れてるけど 数十行レベルでしょのシンプルなソース見ちゃうのが手っ取り早いと思うよ
492 名前:デフォルトの名無しさん mailto:sage [2014/07/21(月) 12:06:25.68 ID:MDGKsYd9.net] AngelScript|Д`)<AngelScript2.29.1記念カキコ 何か重要なバグフィックスらしい。
493 名前:デフォルトの名無しさん mailto:sage [2014/07/21(月) 16:26:34.64 ID:CPAJhmyk.net] ttp://www.angelcode.com/angelscript/changes.php これか メモリ関連のバグフィクスと、出力されるバイトコードがおかしくなるバグの修正かな
494 名前:デフォルトの名無しさん mailto:sage [2014/08/11(月) 22:58:35.99 ID:xLVZtjTF.net] 何気に痛いな バージョン番号がいまいちわからないんだけど stable版ってどれなんだろ
495 名前:デフォルトの名無しさん [2014/08/12(火) 02:19:26.71 ID:Hfmn/cHa.net] auto touchっていうアプリのスクリプトがLua言語でちんぷんかんぷんで。 ここで質問してもいい?
496 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 02:55:05.48 ID:QZJQGyIx.net] >>490 いいよ 寂れてるし。
497 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 05:31:01.87 ID:7nSDT24w.net] Lua,Squirrelの簡単な本がない あれば買うが、難しい本はいらん
498 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 06:24:10.22 ID:FZ4QQEE/.net] 用途を考えればド素人向けの本はもっといっぱいほしいよな
499 名前:デフォルトの名無しさん [2014/08/12(火) 08:49:45.55 ID:Hfmn/cHa.net] 質問しておきながら爆睡してしまった。申し訳ない。 auto touchの関数について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}; だと思うんだけど出来なくて困ってる。
500 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 09:06:36.78 ID:5U2rS/IR.net] 面白そうなツールだな
501 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 14:26:34.31 ID:Hfmn/cHa.net] 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 画像はこんな感じ。カメラロールに保存しちゃうと拡大されちゃうけど、ホントは等倍ね i.imgur.com/nJymDHf.jpg とのことなんよ。画像を見つけたらfor以下をループってことなのかな?
502 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 18:35:02.04 ID:XJm7PWEz.net] 書いてあることそのままじゃね? 何が分からないんだろ
503 名前:デフォルトの名無しさん [2014/08/12(火) 20:58:16.89 ID:Hfmn/cHa.net] 上手く認識してくれないんだわ。。 angeっていう画像を見つけたらタップっていう動作を組む方が簡単そうなので findImageTap{imagePath="/var/mobile/Library/AutoTouch/Scripts/IMG/ange.png", count=1}; っていうのに変えてもうまくいかない。 iphoneでスクショ撮る→PC繋いで画像ダブルクリック。スクショしてペイントに貼り付け。4×4ドットで切り取りしてange.pngで保存。 iexplorer経由でIMGフォルダに保存。 そもそもの画像の保存方法がダメなのかな?
504 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 21:54:52.06 ID:XJm7PWEz.net] 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)などとする必要が有るかも知れない
505 名前:デフォルトの名無しさん [2014/08/12(火) 22:22:09.25 ID:Hfmn/cHa.net] 丁寧にありがとう。 local result = findImage{imagePath="/var/mobile/Library/AutoTouch/Scripts/IMG/ange.png", count=1} alert("#result") で反応無かったので画像の保存の仕方がいけなかったみたい。 ちょっと保存方法変えてみます。
506 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 22:37:13.67 ID:XJm7PWEz.net] >>500 >alert("#result") 誰がそんな事言ったよ てかそれで反応がないならおかしいぞ
507 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 22:38:29.15 ID:wYq/8Bw7.net] ホスト環境側の制限なんかで、コード通りに動いてくれないときのデバッグが一番面倒だよね。
508 名前:デフォルトの名無しさん mailto:sage [2014/08/12(火) 23:01:41.48 ID:XJm7PWEz.net] エミュもなく実機テストオンリーじゃ地獄だね https://teachme.jp/contents/16546 見る限りリモートデバッグも出来るようだから そっちの環境を作るのが先かもね
509 名前:デフォルトの名無しさん mailto:sage [2014/08/25(月) 10:39:27.72 ID:BL3IV/EG.net] ChaiScript ( chaiscript.com/ ) って試した人います? 組み込みの文字列、配列、連想配列に std::string, vector, map を そのまま使っているほどには、C++のクラスをバインドするには親和性が高そう。 比較的、型の扱いが厳密なのが特徴かな。 クロージャは無いかも。
510 名前:デフォルトの名無しさん mailto:sage [2014/08/25(月) 18:26:32.35 ID:eFSdMsqd.net] イラネ
511 名前:デフォルトの名無しさん mailto:sage [2014/08/25(月) 19:18:08.37 ID:8RrIpfE5.net] >>504 割とオーソドックスな文法だね defでの関数定義時に、annotationとguardを設定できるのはちょっと面白い (いまいち使い道は思いつかない) バージョン5.3まで行ってる割にはドキュメントが弱そうに(個人的には)見えるけど それだけシンプルって事なのか、それともdoxygenの使用にこだわっているせいなのか
512 名前:デフォルトの名無しさん mailto:sage [2014/08/25(月) 21:14:31.71 ID:wLUoTrN4.net] >>506 C++による仮想コードでスクリプトのドキュメントを生成していて、 doxygenの中にスクリプトとC++ APIの両方が書かれているみたい。 ただ、":=" と "=" の動作の違いとか、基本的なことが書かれてない気がする。 割り切った設計はなかなか面白いのだけど、いろいろと惜しいな。
513 名前:デフォルトの名無しさん mailto:sage [2014/08/26(火) 09:41:08.11 ID:laXhI8kB.net] マニュアル酷いなぁ Function Definition ::= [annotation + CR/LF] "def" identifier "(" [arg ("," arg)*] ")" [":" guard] block annotation ::= ??? CR/LF ::= ??? identifier ::= ??? arg ::= ??? guard ::= ??? block ::= ??? 訳わからん
514 名前:デフォルトの名無しさん mailto:sage [2014/08/26(火) 12:16:11.13 ID:c1R9OiEG.net] ん? そこは数少ない「訳わかる」ところじゃないのか? 関数定義のシンタックスが書いてあるだけだぞ。 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.
515 名前:デフォルトの名無しさん mailto:sage [2014/08/26(火) 21:00:26.29 ID:CrpVQ0De.net] >>508 これが訳分からんならお前には色々と難しいな
516 名前:デフォルトの名無しさん mailto:sage [2014/08/26(火) 21:58:18.18 ID:laXhI8kB.net] >>509 非終端記号混じりで定義するなら それらの定義もしっかりやれよって話 >>510 俺には無理 annotation 1行目のみ#までの空白タブは読み捨てるが2行目移行は読み捨てない Annotationとキーワード"def"がある行の間に空行はいくら入ってもいいが空白行やコメントは不可 こんなソース見なきゃ分かんねーよ
517 名前:デフォルトの名無しさん mailto:sage [2014/08/27(水) 06:44:36.56 ID:4iKpxsh4.net] >>511 確かにannotationは説明不足だな 他のコメントは // でも /* */ でもいいのに、ここは # のみだし 複数行の扱いとか、get_annotation() で先頭の # が除外されないのも微妙 マニュアルがどうこう以前に、annotationの仕様がこなれていないんじゃないかな 「関数の直前のコメントは、その説明とみなす」というアイデアは嫌いじゃないが
518 名前:デフォルトの名無しさん mailto:sage [2014/08/27(水) 07:39:39.64 ID:3/KZIqq3.net] イラネ
519 名前:デフォルトの名無しさん mailto:sage [2014/08/27(水) 07:50:51.23 ID:EpvBGjSy.net] Lua原理主義者さん鬱陶しいな・・・
520 名前:デフォルトの名無しさん mailto:sage [2014/08/27(水) 09:13:33.41 ID:6IT+XF7c.net] ライバルにストレスを与えるのは当たり前だ 競争原理が鬱陶しいなら競争をやめればいい
521 名前:デフォルトの名無しさん mailto:sage [2014/08/27(水) 15:44:42.46 ID:4iKpxsh4.net] >>504 多少複雑なことをやろうとすると segfault で落ちる。 GCがC++任せ(参照カウント)なのに、オブジェクトの生存期間の制御が甘いようだ。 良いバインダではあるけど、良いエンジンではないな。
522 名前:デフォルトの名無しさん mailto:sage [2014/08/28(木) 13:22:05.82 ID:wsbnD5TY.net] >>494 と同じようにauto touchで動かすLuaの質問してもいいかな?
523 名前:デフォルトの名無しさん [2014/08/29(金) 14:42:44.60 ID:xFSbaFifS] 便乗で(・_・; autotouchの拡張関数のfindimageのソースコードが知りたいんですが、 何処かみえる場所に置いてないですかね。 プログラムに組み込まれちゃってるんかな。 自分で書いた関数だと遅くて遅くて。
524 名前:デフォルトの名無しさん mailto:sage [2014/08/29(金) 14:50:56.97 ID:xFSbaFifS] 間違えました。findcolorです
525 名前:デフォルトの名無しさん mailto:sage [2014/09/01(月) 03:56:01.22 ID:ruMjAUJp.net] >>517 いいよ 寂れてるし。
526 名前:デフォルトの名無しさん mailto:sage [2014/09/07(日) 20:51:30.64 ID:ppGxj2XK.net] と言っても質問なしw
527 名前:デフォルトの名無しさん mailto:sage [2014/09/07(日) 21:16:45.63 ID:V4yJXxP4.net] もしかしたら行間を読み取ってダメだって言われたと思ったのかもしれない
528 名前:デフォルトの名無しさん mailto:sage [2014/09/08(月) 08:36:00.81 ID:YMBZ0Z5D.net] > 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 > >>490 > いいよ > 寂れてるし。 > 518 名前:デフォルトの名無しさん[sage] 投稿日:2014/08/28(木) 13:22:05.82 ID:wsbnD5TY > >>494 と同じようにauto touchで動かすLuaの質問してもいいかな? > > 519 自分:デフォルトの名無しさん[sage] 投稿日:2014/09/01(月) 03:56:01.22 ID:ruMjAUJp > >>517 > いいよ > 寂れてるし。
529 名前:デフォルトの名無しさん mailto:sage [2014/09/08(月) 08:43:07.21 ID:YMBZ0Z5D.net] 同じ文面でスルーされるってのはちと悲しかった
530 名前:デフォルトの名無しさん mailto:sage [2014/09/09(火) 08:11:02.05 ID:2JmvO9sZ.net] 2度あることは3度ある!
531 名前:デフォルトの名無しさん [2014/09/12(金) 14:58:08.94 ID:y2znSXEd0] countTimer(180) ↑こんな感じで記述するだけで、たとえば180秒ごとに戻り値がtrueになるようなfunctionないでしょうか? もしくは、 countTimer(A,180) などと、先頭にID名を書くことで、別々のタイマーとして動作するようなものがほしいのですが。
532 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 13:49:43.66 ID:HQ53r6lE.net] Luaの文法は組み込みじゃなくてLLとしても十分使えると思うんだよなぁ。 クロージャをなくして関数束縛とラムダに分離したらRubyよりも手軽に使えそう。
533 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 14:34:10.13 ID:xYGMnmOJ.net] LLとして利用するのにコンセンサスがいるのか? というか規模から考えて現状でもRubyより手軽に使えるはずだし ちょっと文法変えた程度じゃ手軽さの関係は変わらんだろう ついでに文法だけならもっとマシな言語いくらでもあるだろ Luaは処理系実装・実績を含めて初めて評価される類だと思う
534 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 14:59:46.23 ID:2mQgH8ds.net] localの宣言はLLじゃないな。
535 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 15:33:20.77 ID:y8nlksus.net] 「LLとして使う」ってどういう文脈なんだろう? 一般業務なら Battery Included な環境のほうが便利なんじゃないか? 組み込み言語のライブラリの貧弱さは、サンドボックス内で使われるからこそ許される(し、好まれる)のでは。
536 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 17:15:36.86 ID:CqCzoC9O.net] local宣言はブロックの途中から終わりまでのスコープを作る つまり宣言の内容より位置に意味があるから省略できない
537 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 17:22:33.96 ID:xYGMnmOJ.net] 宣言した位置で意味が変わるようなコードはクソだから 配慮しなくてもいいような
538 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 17:39:51.70 ID:y8nlksus.net] >>531 Luaではlocalを省略するとグローバル変数になるから、位置以前の問題では。 >>532 C++だと変数の宣言位置によって、そのコンストラクタが走るタイミングが変わるぞ。
539 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 17:40:19.61 ID:CqCzoC9O.net] gotoは行き先の名前を考えるけど構造化プログラミングは位置を考える これが大成功してしまったから 位置の考え方は間違ってないと思う
540 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 17:58:11.94 ID:xYGMnmOJ.net] >>533 C++でもコンストラクタが走るタイミングで結果が変わるコードは クソに分類されると思うが 菱形継承がタブーなのを見れば明らか >>534 構造化プログラミングで考える「位置」は 階層で十分であって「行」ではないような
541 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 18:13:48.15 ID:2iAULK/t.net] 「クロージャを関数束縛とラムダに分離」ってどういう意味? function宣言ってそもそもクロージャの作成と変数への代入のシンタックスシュガーに過ぎないんじゃなかったっけ?
542 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 18:52:34.79 ID:y8nlksus.net] >>535 コンストラクタにも実行コストがあるから、必要になるまでは遅らせるのが常識。 例えばその変数の初期化前に分岐があるような場合。 また、ロック/アンロックに RAII を使うようなイディオムは、当然ながら「コンストラクタが走るタイミングで結果が変わる」。 もちろん、Luaではコンストラクタのような自動的に実行されるコードはないから関係ないが。 あと、この文脈では菱形継承はまったく関係ない。 話がC++への批判に摩り替わっていないか?
543 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 19:14:15.92 ID:xYGMnmOJ.net] コンストラクタが走るタイミングが読めない 極端な例として菱形継承を挙げただけだよ とりあえずここLuaと愉快な仲間たちのスレなんで
544 名前:デフォルトの名無しさん mailto:sage [2014/09/13(土) 19:15:15.01 ID:CqCzoC9O.net] >>536 関係ないかもしれないけど 関数束縛が代入の構文糖である言語は 前方参照をすると失敗する場合がある
545 名前:デフォルトの名無しさん [2014/09/15(月) 10:09:15.73 ID:pkGLa0w7x] Luaの質問専用スレってないのかな。
546 名前:デフォルトの名無しさん mailto:sage [2014/10/03(金) 07:43:15.70 ID:lGjxzjS9.net] \ l´⌒\⌒\ \\ \ \ ヽ ) ) \\ \\ ( \ \∩___∩ \\ \ \ ⌒⌒| ノ ヽ \\ \ \ / ● ● ト、\ \\\ \ Y | ( _●_) ミ\ \\\ \ / 彡、_ |∪| ノ \ \\\ (____)―ヽノ' ヽ  ̄ ̄ ヽ\\ \, j l l .l } Lua! l (_ノノノノ
547 名前:デフォルトの名無しさん mailto:sage [2014/10/11(土) 11:25:02.83 ID:9ZTN9fQf.net] luaを知るのに既存のスクリプトをいくつかみてるんだけど lua.eっていう拡張子のものがいくつかあって開けない ググッてもわからないんだけどlua.eの形のものは何なんだろう 見れるエディタも教えてもらえるとありがたい
548 名前:デフォルトの名無しさん mailto:sage [2014/10/11(土) 11:30:28.22 ID:9ZTN9fQf.net] スマン・・独自ソフトで暗号化されてるだけだったわ
549 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 05:12:57.70 ID:94OdN8X7.net] ∧_∧ / ̄ ̄ ̄ ̄ ( ・∀・) < Lua!! ⊂/ 9) \____ q( / > >
550 名前:sage [2014/10/12(日) 13:45:43.55 ID:i7kDtML/.net] 長文失礼します あるサイトを参考にしてソートプログラムを書いているのですが 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 compar
551 名前:e two nil valuesと出てしまいます 解決策がありましたらご享受していただけないでしょうか [] [ここ壊れてます]
552 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 14:10:33.80 ID:UZYaSt7F.net] for i=1,n do
553 名前:542 mailto:sage [2014/10/12(日) 14:32:29.24 ID:i7kDtML/.net] 回答ありがとうございます。 試してみたところ7行目で 'for' limit must be a number と出ました 自分のほうでもいろいろ試してみます 回答ありがとうございました
554 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 14:40:16.19 ID:UZYaSt7F.net] BubSort(x,NUMDATA) ↓ BubSort(x,NUM_DATA)
555 名前:542 mailto:sage [2014/10/12(日) 14:48:18.55 ID:i7kDtML/.net] ケアレスミスごめんなさい;; ありがとうございます、今度は八行目で attempt to compare number with nil で出ました、、何度もすみません 自分でも試行錯誤してみます
556 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 14:59:53.88 ID:UZYaSt7F.net] 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
557 名前:542 mailto:sage [2014/10/12(日) 15:02:46.29 ID:i7kDtML/.net] for j=n,j>i doをfor j=n,j>i,-1 do に書き換えました
558 名前:542 mailto:sage [2014/10/12(日) 15:06:31.21 ID:i7kDtML/.net] 解決しましたありがとうございます!!
559 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 20:01:27.77 ID:e2Gzikyq.net] すんごい優しい人がいるなあw 俺が勝手に褒めておいてやるよ ただ、プログラミング言語だけでなく日本語でも会話して欲しい
560 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 01:38:05.54 ID:B15n5qdA.net] cocos2d-xで素直にLua使うのもなんか悔しかったから mrubyを組み込んでみた 肝心のLuaとの比較だけどLuaもrubyも素人の俺には よくわんないっていう ただスクリプトでのゲーム開発ってのは楽しいな
561 名前:デフォルトの名無しさん mailto:sage [2014/10/17(金) 23:51:55.26 ID:9a/zPdtM.net] juliaがembedできると聞いて試してみようと思ったが、なんか面倒くさい。 プログラミング言語のくせになんでネットワークライブラリ必須なんだよ。
562 名前:デフォルトの名無しさん mailto:sage [2014/10/18(土) 06:17:24.91 ID:0zghehpU.net] 並列実行、数値計算が売りでFortranを比較対象にしている言語に デフォルトでネットワーク処理を持っているのを期待するのはさすがに酷だ
563 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 02:20:43.02 ID:9ZZuBDyz.net] luajitっていつまで5.1で足踏みするんだろ 本家は5.3αまで進んだのに
564 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 07:51:24.76 ID:887X5tQi.net] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
565 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 14:01:39.85 ID:XKh/BlSi.net] >>555-556 単に分散が売りの一つだからでは? トラブってるなら環境明記するといいよ
566 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 14:28:44.63 ID:YmKa11RJ.net] juliaって面白そうだけどスレとか建ってないのかな
567 名前:デフォルトの名無しさん mailto:sage [2014/10/24(金) 22:05:25.23 ID:LtvHolRf.net] Lua 5.3.0 (beta) released
568 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 08:02:57.83 ID:b+WwLJWx.net] The big features for Lua 5.3 are: - Basic UTF-8 library - Bitwise operators - Integers
569 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 21:03:36.77 ID:tMdLNX3k.net] 正規表現マッチャとか手が入ってない 5.2以降からすでに文字列にバイナリデータが入るからUTF8を保持できる stringのソース斜め読みした感じだとあんまし変化ない Windows版とかにするにはかなり手を入れないといけないね
570 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 22:58:25.53 ID:uPMt2D9i.net] >>563 手が入ったのはutf8モジュール。 例えば string.len() はバイト数だが、utf8.len() は文字数になる。 「Windows版」がutf16を指すなら、適当にエンコード変換して、別の文字列かuserdataで保持するのは簡単。 もし、内部のcharをwchar_tに変更する改造する意味なら、確かに手間がかかる。
571 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 23:54:52.14 ID:TF4Q/5Ab.net] _TCHAR「きたわよ」
572 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 00:57:50.97 ID:ZMCFj896.net] windowsのwchar_tは2byte固定じゃなかった? という曖昧な前提で申し訳ないけど 1文字==1文字型の表現できず可変長になるから 結局sjis,utf8を扱うのと同じでメリットないんだよね A/Wだけでなく8/DなどAPIレベルで対応しないとどうにもならないんじゃないかな 間違えてたらすまん
573 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 02:05:27.09 ID:7uHWyuXV.net] んんと、UTF-8からUTF-16の変換のコストは低く、 変換結果をGCの管理情報と関連付けてキャッシュすれば 最小限の回数になるので問題はない。 sourceforge.jp/projects/lua-naka/ あとはutf8というクラスやfile関係検討して どの程度の手間が掛かるか検討だね beta外れるまで待ったほうがいいかどうかとね。
574 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 03:29:16.31 ID:ZMCFj896.net] 話が通じてないな
575 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 08:35:18.03 ID:7uHWyuXV.net] >>568 XP以降のWindowsのUNICODEは16bitの可変長。 1文字==1文字になってしまうのはそのライブラリが対応できてないだけ。 対応できてなければ、たとえばフォントの名前が文字化けするとか 変なところで不具合が発生する。 ダウンロードしたファイルの中身にどんな言語が使われているか 予想できない時代だしねえ。
576 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 09:03:59.77 ID:gXKeHKY3.net] きっちりUTF-16に対応したところで、BMP以外はろくにフォントも用意されてないから あんまり使いどころがないんだよなぁ。
577 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 09:44:26.28 ID:TIQQD+z7.net] SquirrelならコンパイルオプションだけでWCHARに対応できるぞ! WCHARだからマルチバイト文字だし、ダウンロードしたファイルの中身はどうしようもないのは同じだけどな!
578 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 11:48:44.03 ID:T6nh4Wfv.net] ゲーム程度なら昔の流儀でmblen とか作って マルチバイトのまま処理するのでだいたい事足りるけど、 絵文字ニーズがでてきてしまって困ってる サロゲートペアとかをシンプルに処理できる手頃で小さめなライブラリどっかにないかな
579 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 09:05:41.39 ID:bzlUuRTb.net] >>572 サロゲートペアってUTF-8なら、単なる「バイト数が多いマルチバイト1文字」じゃなかった? UTF-8を適切に扱えるライブラリを探せば良いのでは? UTF-16ベースで、1文字=1wcharで処理するものはダメだね。
580 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 09:14:34.96 ID:lCpWe+1k.net] 基本内部処理はUTF-8オンリーでやって、 WINAPIまたはWINDOWSアプリに渡す場合だけ変換するってのが無難だろう。
581 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 12:26:39.85 ID:JSkttuhx.net] >>573 それが正式な仕様なんだけど、 世の中にはUTF16をべたにUTF8展開しただけ、 というファイルがあふれてて、UTF-8的に二文字になってることのが多くていかんともしがたいのん
582 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 13:23:26.98 ID:99dxtSJ/.net] というかそれはUTF-8とは言わないことになっとるw
583 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 16:39:35.13 ID:8lAd+EdW.net] そういうことになってるけど、実際使われてるのはそうだよね。たぶんだいたいJavaが悪い
584 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 18:02:59.37 ID:OadM+d9h.net] で、Luaで何がしたいの?
585 名前:デフォルトの名無しさん mailto:sage [2014/11/04(火) 18:40:40.27 ID:lCpWe+1k.net] 内部文字コードをUCS2にしてしまえば、 Windowsのwstringと互換だからホストから見て扱いやすいという判断でないの? Windows用のC++のランタイムがサロゲート対応できてないわけだし。 それはそれとして 自分的にはUTF16とUTF8の変換はコストが低いと考えている。 なんでかというと、マルチバイトのアプリケーションが末尾AのAPIを呼んだ時に カーネル側での変換の対象になっていると考えるし、 それでいて今まで問題になっていないから。
586 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 07:35:22.74 ID:9E/cXL42.net] マルチプラットフォームならUTF8やろね。 Windows氏ね
587 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 14:55:13.19 ID:C/jbA3HR.net] Windows、UTF8がデフォの文字コードになればかなり楽になりそうだな。
588 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 17:30:58.35 ID:5alChkxa.net] コンソールに関してはUTF8化も不可能ではないらしい。 ただ、既存のコマンドとかの整合性が問題。
589 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 17:32:35.49 ID:9E/cXL42.net] 「楽さ」ではなく気になるのは「速さ」では? Windows氏ね
590 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 21:07:16.47 ID:pM6wUNVX.net] >>580 特定のプラットフォームに「氏ね」言う奴がマルチプラットフォーム語るか。
591 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 21:42:16.61 ID:5alChkxa.net] WindowsユーザーはWindowsが好きで使っているわけではない。 Macユーザーは宗教で使っている。 Linux/bsdユーザーはソースコードを蹂躙するために使っている。
592 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 23:18:38.50 ID:hGDSCPPH.net] サロゲートペアなんかよりUnicode正規化の方が よっぽど実際的な問題だと思うんだが
593 名前:デフォルトの名無しさん mailto:sage [2014/11/05(水) 23:28:46.45 ID:5iseFbl1.net] 濁点を分割するOSXは死んでほしいよね
594 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 11:07:16.22 ID:ElrQPnL2.net] 辞書順の文字列比較さえできないlocaleの実装がクソなLinuxは死んで欲しいよね
595 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 11:37:03.69 ID:5j6hC+wL.net] サロゲートなんとか「シフトなんとかがやられたようだな・・・」
596 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 12:48:03.08 ID:QHCs9rG1.net] マルチプラットフォーム目指すと全ての環境に死ねって思うようになる悲劇
597 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 16:09:06.32 ID:M2Yo7uIT.net] つまり日本語が敗戦とともに氏ねばよかったんだよ
598 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 16:14:45.84 ID:pZw/zM7a.net] 志賀直哉かよ
599 名前:デフォルトの名無しさん mailto:sage [2014/11/06(木) 22:56:57.44 ID:Lo7NS+Dz.net] 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); } } }
600 名前:デフォルトの名無しさん mailto:sage [2014/11/07(金) 07:19:30.78 ID:m1y+Jxyj.net] >>593 UTF-8だからこそsinglematchでもなんとか実用になるんじゃないかな? utf8.charpattern も一応は用意はされているし。 もちろん、string.reverseとか使えないのもあるけど。
601 名前:デフォルトの名無しさん mailto:sage [2014/11/07(金) 08:11:23.32 ID:TOsxLUmk.net] 欧米の2chでは、濁点だの絵文字だの 日本人は余計なことばかりしやがるよな、とかいわれてんだろうな
602 名前:デフォルトの名無しさん mailto:sage [2014/11/07(金) 12:46:24.98 ID:s2pGHogx.net] 濁点で余計なことしたのは外人やで
603 名前:デフォルトの名無しさん mailto:sage [2014/11/08(土) 17:07:11.07 ID:OPiyaoeS.net] 余計なことをする原因は八方美人
604 名前:デフォルトの名無しさん mailto:sage [2014/11/12(水) 00:46:15.46 ID:0RjVbG4l.net] autotouchで画像を探してタップさせたいのですが、上にあるfindImageを使ってもうまくいかないです。 他に画像を探す方法はないでしょうか?
605 名前:デフォルトの名無しさん mailto:sage [2014/12/10(水) 00:35:14.86 ID:If47AJ4g.net] LuaとかSquirrel、AngelScriptが使える環境で、boost使えない環境ってあるのかな?
606 名前:デフォルトの名無しさん mailto:sage [2014/12/10(水) 09:29:30.82 ID:5IiOJn2a.net] ソフトウェア環境の問題で使えないケースは少ないだろうが 開発チームのルールの面で使わせないケースはありそうだ
607 名前:デフォルトの名無しさん mailto:sage [2014/12/11(木) 12:44:17.85 ID:vUqbLqkU.net] >>600 boostが使えない環境じゃなくて、色々な都合でboost使っちゃダメな環境があるわけか…
608 名前:デフォルトの名無しさん mailto:sage [2014/12/15(月) 08:18:50.09 ID:njR4rCHR.net] Lua 5.3.0 (rc0) released
609 名前:デフォルトの名無しさん [2014/12/19(金) 02:51:01.25 ID:ouKpIS27.net] moonsharpというluaを入れてみたんですが、 c#のnamespaceやstaticなクラスをバインドするにはどうすればいいのでしょうか? 関数であれば以下のように登録できたのですが、 lua.Globals["Log"] = (Action<string>)UnityEngine.Debug.Log; UnityEngineのようなnamespaceを渡し、 script内で UnityEngine.GameObject.Find("obj") みたいに使いたいのですが
610 名前:デフォルトの名無しさん mailto:sage [2014/12/22(月) 00:19:17.53 ID:ZmRaQmm9.net] >>603 ざっと眺めてみたけど その程度の事は同じように出来る ただ foo() foo(int) foo(string) などのオーバーロードはどうするのかが疑問 動的に型チェックして振り分けてとかだと正直使い物にならないと思う
611 名前:デフォルトの名無しさん [2014/12/22(月) 01:19:08.37 ID:D1rmXNgC.net] >>604 使いながらマニュアル読んで使い方が分かってきました。 オーバーロードに対応してないクラスは扱うことができませんでした。 いくつか制約があるようです。 C#のオブジェクトを簡単にluaから使えるのかと思ったら、 そう簡単にはいかないのですかね。 そういうのはラッパークラスを用意して、 MoonSharpを意識した設計しないといけないようです。 つい新しいものに手を出したけど、他のC#系のluaはどんな感じなのかしら
612 名前:デフォルトの名無しさん [2014/12/22(月) 01:19:52.78 ID:D1rmXNgC.net] × オーバーロードに対応してないクラスは扱うことができませんでした。 オーバーロードに対応してませんでした。
613 名前:デフォルトの名無しさん mailto:sage [2014/12/26(金) 08:14:14.37 ID:aFXoC3vZ.net] Lua 5.3.0 (rc2) released
614 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 21:35:53.41 ID:x6OMspk0.net] Lua 5.3.0 (rc3) released
615 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 22:19:20.82 ID:FqikSySO.net] 更新内容に少しでも触れてくれると嬉しいんだけど・・・
616 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 23:14:01.09 ID:KF2R3l6f.net] RCの段階で特筆に値する更新なんてないだろ というかあったら困る
617 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 02:23:10.16 ID:AdLaa9R2.net] 5.3楽しみどすね
618 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 06:44:30.95 ID:FkvmMkr7.net] RCでの更新はコンパイル警告を無くした、とかばっかり。 安定してるんじゃないかな。 新C-APIの lua_rotate() が地味に便利。
619 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 08:29:47.65 ID:LjhOLja4.net] >>609 >>562
620 名前:デフォルトの名無しさん [2015/01/08(木) 07:02:44.50 ID:HB0/eqgI.net] Lua 5.3.0 (rc4) released Happy New Year!
621 名前:デフォルトの名無しさん mailto:sage [2015/01/13(火) 08:21:09.63 ID:rG5Z7jyu.net] Lua 5.3.0 released ? Happy New Year!
622 名前:デフォルトの名無しさん mailto:sage [2015/01/14(水) 08:19:11.90 ID:G/8s1bPT.net] おめでとうございます。
623 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 13:17:04.98 ID:i0MAuzuq.net] Windows系なら JsRT でブラウザ無しの js が使えるな。 node.js でもいいけどさ。 組み込みも js で十分な気がしてきた。
624 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 19:23:58.96 ID:ax3bxEw/.net] JsRTではどうやってCからスクリプト内の変数とか操作するの?
625 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 20:11:10.33 ID:i0MAuzuq.net] node.js と比べるのはおかしいな。比べるなら v8 単体か。 >>618 ハンドル (voidポインタ) 経由。 グローバル変数のテーブルもCから操作できる。 API は v8 と似ているけど、さらに簡略化されている感じ。 Luaとは違ってスタック操作を意識する必要は無い。 Cスタックを舐める系のGCっぽい。 C関数や、生データをファイナライザ付きでスクリプトに登録もできるし、 スクリプトの変数をCからキープしたいときの AddRef() もある。 後発なだけあって、いい感じに整理されているように見えるよ。
626 名前:デフォルトの名無しさん mailto:sage [2015/01/19(月) 22:22:42.69 ID:XVOLeUIA.net] スタック操作は不要で参照カウントは必要という案は何回も聞いた みんなLuaと比較した情報は出すけど何個もある代案同士で比較した情報がまだ出ない だからまだ時期が悪いかなと思う
627 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 06:19:15.63 ID:MIZOkYTq.net] スタック操作は覚えることが少ないから習得が早くて便利だけどね
628 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 07:11:39.79 ID:Qwim/1/Y.net] LuaのC APIへの不満って、スタック操作と、スクリプトオブジェクトの寿命延長 (luaL_ref) の2つが大きいいんじゃないの? 止められるんなら止めたいでしょ。 もちろん、Luaはスタック操作が明示的だからこそ、移植性が高いんだけど。 >>620 参照カウントはあくまでCからのキープ用で、スクリプト内だけならマーク&スイープ系のGCのはず。
629 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 17:48:36.34 ID:MIZOkYTq.net] 奇しくも自分で述べてるように、 スクリプト側からは死んでるようにみえる値を C側では使ってるから生きてるよ、ということにするには 参照カウントよりもLuaL_refの方が考え方として分かりやすいと思うけど。
630 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 18:44:09.44 ID:GWZYH+JO.net] スクリプトオブジェクトの寿命延長って? Luaは知らないけど V8ではC++関数のスコープから抜けた時点でJavaScriptのオブジェクトを解放出来るようになっている だからV8ではC++関数内で使ったオブジェクトが中々解放されなくなるという事はない 関数を終えてもずっと保持したい場合はPersistentにコピーするようになっている
631 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 18:56:01.81 ID:MIZOkYTq.net] いや、つまり嫌いと思う人は嫌い、好きと思う人は好きというだけの話。
632 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 19:33:29.39 ID:Qwim/1/Y.net] 確かに大した差ではなかったな。 自分はどうもオブジェクトそのものではなくCookieを保持している感に戸惑ったが、 気になるならラッパーを一枚噛ませば十分だしな。
633 名前:デフォルトの名無しさん mailto:sage [2015/01/22(木) 18:40:30.34 ID:dZXZ9W3g.net] 整数型がデフォルトになったからより速くなったな
634 名前:デフォルトの名無しさん mailto:sage [2015/01/22(木) 19:34:31.74 ID:QfKlzsaM.net] JsRTで遊んでみているが、 IDispatchをVARIANT経由でJavaScript側に公開できることがわかった。 COMの資産を手間無く使えるので、その手の再利用が必要な場合は便利かもしれない。 なお、WebBrowserコントロールが使っていると思われるスクリプト環境はさすがに取得できないようだ。 無理やり連携されるなら window.external を介してこれも IDispatch 経由でやり取りすることになる。 悪くない。 Microsoft も .NET とか捨てて、JsRTとTypeSciptで行けばいいんじゃないかな・・・?
635 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 19:41:40.28 ID:+446Cocf.net] Squirrel 3.0.7 stable Squirrel 3.1 RC1 Released January 10, 2015 さっき気付いた。
636 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 20:46:44.47 ID:5nfZyfP4.net] lua5.3の日本語マヌエルマダー?
637 名前:デフォルトの名無しさん mailto:sage [2015/01/26(月) 21:34:59.26 ID:Sajs+zmm.net] 言い出しっぺの法則
638 名前:デフォルトの名無しさん mailto:sage [2015/01/28(水) 05:31:27.96 ID:SR5teQWH.net] 俺が翻訳するかもしれないからあと100年くらい待ってくれ
639 名前:デフォルトの名無しさん mailto:sage [2015/01/28(水) 23:18:45.09 ID:arg2MK+/.net] 「日本語マニュアル出ないかなー」と言いながらずっと使ってるとそのうち英語でも普通に読めるようになって必要なくなる罠。
640 名前:デフォルトの名無しさん mailto:sage [2015/01/29(木) 08:12:30.79 ID:FQssNh0T.net] 5.3対応の書籍マダー?
641 名前:デフォルトの名無しさん mailto:sage [2015/01/29(木) 08:16:42.32 ID:vMBFyrLx.net] 「マニュアルだけじゃわからんなー」と言いながらずっとソースコードを読んでいるとそのうち先にソースにあたるようになって書籍が必要なくなる罠。
642 名前:デフォルトの名無しさん mailto:sage [2015/01/29(木) 08:43:48.85 ID:FQssNh0T.net] それらで得た知識を書籍にして印税生活をするにだ
643 名前:デフォルトの名無しさん mailto:sage [2015/02/01(日) 00:18:48.30 ID:ARaZzTfJ.net] android版のautotouch使い物にならんなあ lua部分はともかく独自追加した所のデバッグやってるんだろうか findimage使った瞬間に落ちる、サンプルのスクリプトを使っても落ちる…
644 名前:デフォルトの名無しさん mailto:sage [2015/02/03(火) 08:45:44.97 ID:AqPQb7sP.net] このスレで既に紹介されたか知らないけど ObjectScript https://github.com/unitpoint/objectscript objectscript.org/ 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éとは何の関係も無い。
645 名前:デフォルトの名無しさん mailto:sage [2015/02/04(水) 06:17:03.56 ID:Eqb0TJqD.net] CoreCLR がオープンソースになったけど簡単に組み込めたりするのかな
646 名前:デフォルトの名無しさん mailto:sage [2015/02/07(土) 10:47:45.90 ID:3mcYxCt2.net] perlのkeysみたいなの 無いの?
647 名前:デフォルトの名無しさん mailto:sage [2015/02/07(土) 11:10:55.67 ID:kuZAKFeA.net] >>640 Luaの話? いちおう組み込み系全般のスレなので…… 標準では用意されていない。 言語機能系の追加ライブラリを使えば良いんじゃない? まぁ、自作しても for ループを廻せば済むけど。 - stdlib : lua-stdlib.github.io/lua-stdlib/modules/std.table.html#keys - Underscore.lua : mirven.github.io/underscore.lua/#keys
648 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 11:46:47.96 ID:8cE0HyuH.net] Lua書く時のエディタって何使ってるの? Lightroomのプラグイン書きなんだけど。
649 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 12:28:55.31 ID:5UGjVIn5.net] lua-users.org/wiki/LuaIntegratedDevelopmentEnvironments
650 名前:デフォルトの名無しさん mailto:sage [2015/02/08(日) 17:36:40.20 ID:zqGmBD5H.net] Intypeってのはどうなん?
651 名前:デフォルトの名無しさん mailto:sage [2015/02/16(月) 22:29:33.28 ID:JBQ+Owrp.net] luaでファイル保存の時に日付.txtみたいに自動でするのはどうすればいいですか?
652 名前:デフォルトの名無しさん mailto:sage [2015/02/16(月) 22:40:47.19 ID:yzFhOePD.net] >>645 Luaからファイルを作っているなら os.date(書式) .. ".txt" でファイル名を生成すれば良いのでは
653 名前:デフォルトの名無しさん mailto:sage [2015/02/16(月) 23:48:51.20 ID:JBQ+Owrp.net] 出来ました、ありがとうございます。
654 名前:デフォルトの名無しさん mailto:sage [2015/02/19(木) 19:51:04.59 ID:Qw0v9eHu.net] Luaって存在今日知った。 自作計算プログラム用のスクリプトとしてTclを組み込んで使ってきたけど、 Luaってもう仕様安定してるの? 浮動小数点の実装はちゃんとバイナリ?
655 名前:デフォルトの名無しさん mailto:sage [2015/02/19(木) 20:22:48.55 ID:YKDWyqEz.net] >>648 本体の仕様は概ね安定している。 他の言語と比べてもそれほど差は無いと思う。 Lua 5.3 では、普通にビルドすると、浮動小数点は double、整数は int64 になる。 内部的な値の表現は タグ + union { double; int64; void* } という素直な実装だよ。 正規表現だけは注意がいるかもしれない。 文字の並びを ( ) で扱えない。 自分は C++ regex を使う別実装を自前で追加してる。
656 名前:デフォルトの名無しさん mailto:sage [2015/02/21(土) 12:07:52.58 ID:ftMcKIol.net] >>649 ありがとう。 awkみたいな実数=文字列みたいなダサ実装じゃないか、さすがに。 ちょっと活用を検討してみます。
657 名前:デフォルトの名無しさん [2015/02/23(月) 19:05:53.37 ID:PUEtXCiM.net] AngelScript|Д`)<AngelScript2.30.0記念カキコ メモリ管理の改良とか、キャスト用メソッドの登録方法が変わったとか色々変更あるっぽい。
658 名前:デフォルトの名無しさん mailto:sage [2015/02/23(月) 23:12:44.33 ID:2B41jSVI.net] (´\r-、 ┼ + /`/`) + ┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
659 名前:sage [2015/03/17(火) 22:57:10.71 ID:yVREPXol.net] flashairいじってる人いる?
660 名前:デフォルトの名無しさん [2015/03/17(火) 23:14:59.23 ID:Wb8shGuw.net] >>653 AS3は組み込めないだろ・・・
661 名前:650 mailto:sage [2015/03/17(火) 23:25:25.06 ID:yVREPXol.net] まあまあ^^; luaでio.writeでSDカードに書き込めるかと思いきやなんか挙動が怪しい・・
662 名前:デフォルトの名無しさん mailto:sage [2015/04/11(土) 22:52:38.83 ID:L0A+zZu9.net] 連想配列の要素数を返す関数(table.maxn)みたいなものってありますか? tbl[] tbl[ "a" ] = data1 tbl[ "b" ] = data2 tbl[ "c" ] = data3 #tblやtable.maxn(tbl)をやっても「0」が帰ってきてしまいます。 ハッシュの場合、格納されている要素数を返すものはないのですかね ざっと検索して調べた感じそれっぽいのはありませんでした
663 名前:デフォルトの名無しさん mailto:sage [2015/04/11(土) 22:59:40.53 ID:L0A+zZu9.net] table.maxn(tbl) テーブルtblの持つ要素のキーのうち、正の数値(FIXNUM)であるものの中で最大のものを返します。 tblが正の数値(FIXNUM)のキーの要素を持たない場合は0を返します。 ってかかれてるからpairsで回して数取得するようなやり方しかないかもなあ・・。
664 名前:デフォルトの名無しさん mailto:sage [2015/04/11(土) 23:05:44.47 ID:L0A+zZu9.net] とりあえずこんなかんじで回避することにしました 何か他により良いやり方があれば教えて下さい function get_hash_count( hash ) local cnt = 0 for key, value in pairs(hash) do cnt = cnt + 1 end return cnt end
665 名前:デフォルトの名無しさん mailto:sage [2015/04/12(日) 00:40:05.35 ID:eLW2DJDr.net] >>658 それが一番速いと思います luaのテーブルは厳密な要素数を追跡してないのよ 値をスカスカに配置して列挙時に存在チェックする
666 名前:デフォルトの名無しさん mailto:sage [2015/04/12(日) 02:22:26.48 ID:ubi9S/wo.net] >>659 ありがとうございます luaの仕様的に他に良い方法はないのですね
667 名前:デフォルトの名無しさん [2015/04/25(土) 21:53:05.10 ID:udlJJGWW.net] >>1 組み込み系言語ってファームウェア用かと思ったwww
668 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 08:43:41.87 ID:9sNRGOg0.net] 質問失礼します。 ソフトにLuaを組み込んでユーザーにLuaスクリプトを作ってもらおうと思っています。 そのLuaスクリプトを他のユーザーにばらまかれるとセキュリティ上危なくなるので困っています。 Luaで書けるファイルIOやネット上のダウンロードなど、危なそうな機能だけ無効化したいのですが可能でしょうか? 分かる方、よろしくお願いします。
669 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 09:18:48.10 ID:18wKNGsP.net] >>662 ・不必要な標準モジュールは組み込まない。 ・モジュールの中に不必要な関数がある場合は同名の関数を作ってオーバーライドしてしまう。
670 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 09:20:47.53 ID:18wKNGsP.net] 同名の関数を作る、というよりファンクション型の変数に代入し直すというのが正しいか
671 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 11:51:04.49 ID:RhUk/Sb2.net] io系 file系 debug系、os.systemなどをlua本体のソースから外す。 requireのうち、c系dll読み込みも外す。
672 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 14:01:37.37 ID:9sNRGOg0.net] >>663 >>665 塞ぎ忘れたらとんでもない事になりそうですね。。。 がんばってみます。 ありがとうございました。
673 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 18:39:19.42 ID:RhUk/Sb2.net] Luaは本体のcソースの段階で、追加したり削除されたりすることを念頭において 作られてるので、めちゃくちゃ簡単に追加や削除ができるよ。 やり始めたらあまりに簡単でびっくりするとおもう。 最悪上記の消したいlua関数のregisterの処理だけl***lib.c系からコメントアウトした上で、 luaインタプリタを本体アプリにスタティックリンクするだけで、それなりに仕組みを深く理解している人以外はイタズラしにくくなる。
674 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 20:13:20.63 ID:ByjLANN5.net] -- preload.lua io = nil ... とかを用意して ユーザースクリプトを読む前にdofile 中身が決まったらdostringでハードコードする ってのが簡単
675 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 23:36:05.71 ID:V1hm5/yh.net] 5.2以降は意図的に読み込まないと標準ライブラリとは使えないよ。 Ubuntuとかはまだ5.1だったりするのかな
676 名前:デフォルトの名無しさん [2015/05/03(日) 17:51:04.86 ID:R+xSVf6m.net] >>668 わざわざそんなことするより、読み込み部コメントアウトした方が 簡単だろw モジュール単位、関数単位で、1行ずつ「追加・削除はご自由に」って 感じで全部列挙されてんだから。
677 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 18:10:07.04 ID:IVZoCitV.net] 殺したい関数型変数に新しい関数を代入するだけだってばさ。 何でわざわざ改造せねばならんの?
678 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 18:16:54.02 ID:hj7OiJXS.net] まあまあ Lua処理系を勝手に改造できる(してもいい)環境でないとそもそもできないね
679 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 07:02:11.02 ID:Sl6NKpln.net] lua処理系を全く改造しないって無理がないかなぁ? exit とかが数箇所入ってる時点で 組み込みで等でコンパイル済ライブラリを そのまま使うのは怖すぎると思う。
680 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 07:28:47.12 ID:ZL3JUBSp.net] 改造前提だろう requireもマルチバイト文字を含むパスを扱えないし (win環境) 本体と比べてライブラリの品質は良くない
681 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 07:51:01.81 ID:sbqo/+Tp.net] 混乱するので659への回答と他の話題は分けていただけると助かります
682 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 08:38:47.22 ID:Sl6NKpln.net] >>675 だから、 ソースとか全部自由になるのなら、ベストはC層で ・不要なライブラリのロードを消す。 ・package.cpath を消す。 or requre 自体不要なら消す。 ・ソースから本体アプリにLuaごろスタティックリンク これがデフォルトよりサイズも小さくスピードもアップする上に、 いたずらの可能性も限りなく0 LuaでnilにしたのをCへdostringで=といったのは、 一部を手抜きで代替するという案であって 決してベストなものではない。 スピードが遅くなったり実行ファイルにゴミは残るが、 そういう手の抜き方もあるよ、という話。
683 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 22:44:21.04 ID:qi4175C9.net] autotouchhでゲームのリセマラマクロ作ってるんですけど iosのアプリ固有ID? //var/mobile/Containers/Data/Application/********/Documents の********の部分の取得方法がわからなくて困ってます。 プログラミング自体初心者で一月ほど調べてるけどよくわからない言葉だらけで・・・ 何かアドバイスくださいm(__)m
684 名前:デフォルトの名無しさん [2015/05/04(月) 23:07:02.98 ID:8Z+6LqT8.net] お前向いてないからもうやめとけ
685 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 23:17:09.78 ID:qi4175C9.net] そんなに簡単なんですか・・・ すみません・・・ 最後に是非教えてください
686 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 12:42:12.67 ID:KszErmBE.net] AppInfoってアプリ入れてみ これでわかんなかったら本当にやめろ
687 名前:674 mailto:sage [2015/05/06(水) 08:00:28.72 ID:uYsfVS/M.net] いや、調べ方はわかるん
688 名前:です、コードでどうすればいいかがわからないんです。 マクロ自体は完成しているんですが、アップデートとかのたびに変わるみたいで 手作業で書き直してるんでそれをどうにかできればなと...... [] [ここ壊れてます]
689 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 11:08:53.11 ID:/KG0Gdz0.net] ios固有なのか、そのアプリ固有なのか、 luaに依存する処理なのか? なんとなくスレ違いの部分で悩んでいる感がある 文字列やファイルの処理ではないんだろ?
690 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 11:18:37.36 ID:iq3C3Ifp.net] >>681 qiita.com/fuhi1983/items/342b82f3222483697e8e これじゃねーの?
691 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 14:09:18.09 ID:Om2we3tL.net] >>681 そのフォルダ名はアプリの構成かわるときにランダムに決定されるので、そのアプリ自身以外からは基本的には特定できない仕組みになってる Data/Application/*** の下に、なにかしらアプリを特定できるような情報が入ったファイル(たぶんInfo.plistとか)があるだろうから、それを全部探索して読み込んで目的のアプリを探す、以外の方法は無い
692 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 15:34:43.00 ID:uYsfVS/M.net] >>684 そうなんですね、ありがとうございます。 どこかに情報ないかといろんなファイルをtextで開いてたのですが見つからないはずですね ありがとうございました。
693 名前:デフォルトの名無しさん [2015/05/16(土) 00:11:08.39 ID:yj1J+1ps.net] 定義したあるテーブルのメソッド一覧を取得することはできますか? player = {} function player:Attack() end function player:Jump() end 上記のような定義があり、 "Attack"と"Jump"のキーとその関数をペアで取得したいのですが
694 名前:デフォルトの名無しさん mailto:sage [2015/05/16(土) 00:33:56.90 ID:nBVK7qH/.net] Lua自体にはメソッドという分別は無いので関数かどうかで判断するだけだな for k,v in piars(player) do if type(v) == "function" then printf(k, v) end end
695 名前:デフォルトの名無しさん [2015/05/16(土) 00:48:49.46 ID:yj1J+1ps.net] お〜 できました〜 かゆいところにきちんと手が届いてくれていい言語ですねぇコレ ありがとうございます。
696 名前:デフォルトの名無しさん mailto:sage [2015/05/18(月) 06:50:19.69 ID:QWumnvsF.net] すう様はきちんと考えながら英語を喋ってるよ。 あれはカンペとかじゃない。
697 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 14:34:42.08 ID:dht99EFe.net] Luaで悩んでいます。ご教示お願いいたします。 下記のようなテキストの入った複数の配列があり、 tbl01={"a","b","c"} tbl02={"d","e","f"} tbl03... ストリング型のstrという変数に"tbl"という文字列が入っています。 やりたいことは、文字列型の値を何とか加工してtblの要素にアクセスしたいんです。 str[1] とするとエラーが出ますし・・・(まあそうですよね) 強引にtable型に型変換できないかな?とか悩んでいます。 文字列しか受け取れない場合、複数ある配列にアクセスするには どのようにすればよろしいでしょうか? 詳しい方教えてください。お願いします!
698 名前:687 mailto:sage [2015/05/19(火) 14:37:23.12 ID:dht99EFe.net] ↑すみません、間違えました。 strの中に入っている文字列は"tbl"ではなく"tbl01"としています。 いずれにせよ無理ですが…
699 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 16:19:59.83 ID:Nw+B6083.net] >>690 string.sub() or .byte() 1文字ずつ処理するのはC系に比べて苦手。 代わりに正規表現が使えないか要検討。
700 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 16:23:48.21 ID:26zc2bnI.net] 微妙にエスパー能力が必要な質問だが、こういうことけ? local function getTableByName(name) local tables = { tbl01 = {'a', 'b', 'c'}, tbl02 = {'d', 'e', 'f'}, } return tables[name] end local str = 'tbl01' local t = getTableByName(str) print(t[1])
701 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 16:28:09.88 ID:Nw+B6083.net] >>690 違うな。質問の意図を取り違えていたかも? str[1]の代わりになるのは >>692 だが、 元々の目的が「変数に入っている変数名を経由したアクセスがしたい」ならば _G を使う: str = "tbl01" assert(_G[str] == tbl01) tbl01 等がグローバル変数、ローカル変数、他テーブルの要素で処理が違うものになるから、これでダメならまた聞いてくれ。
702 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 22:19:05.65 ID:dht99EFe.net] >>692 >>693 お二方、ありがとうございます! エスパーみたいな質問になってしまいましたね。すみません。 実現したいことの詳細をより細かく記載します。どうしても実現したいので。もう3日悩んでます。 ゲームを制作しています。 ゲームエンジンからluaを呼んでluaで処理させることができるのですが、 ゲームエンジンの仕様でlua側に渡せる値が文字列のみです。 luaで何をしたいかというと、上記のように大量にテーブルを作って中身も代入しておきます。 すべて文字列のデータです。 ゲームエンジン側から@文字列Aテーブル名の二つの値を渡します。(もちろん両方文字列でしか渡せません) その二つの値がlua側に渡ったら、Aを使ってテーブルを探し、@を使ってそのテーブルの中に @と同じ文字列があるか比較します。 文字列があったら1を返して、なかったら2を返す…ということを実現したいのです。 >>690 の例で行くと、ゲームエンジンから@"a"とAtbl01をもらって、lua側のtbl01をforで回して 探していけばいいや…と思っていました。しかし、 strにtbl01が入っていたとして、 for i=1 , table.maxn(str) , 1 do …なんてことをすると、文字列なのでエラーが返ってきますorz いろいろ試してみてstr[i]なんてことまでやってみる始末。もちろん動
703 名前:かないですが。 そもそもluaって動的に型を決めてくれるので明示的にこちらから「こいつはtable型だよ!」 って指定できないんですね。(java使っている者でして…) 説明不足なら捕捉します。後出し申し訳ありません。何卒よろしくお願いいたします。 [] [ここ壊れてます]
704 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 22:35:28.81 ID:UWcSl4nD.net] >>695 table型だよって指示できないもなにも、変数strの中身はあくまでstringなんだから、Javaで同じことやる場合でもHashTableかなんか使うよね? つまり、>>694 がやりたいことなんじゃないの? table.maxn(_G[str]) でできると思うよ
705 名前:デフォルトの名無しさん mailto:sage [2015/05/19(火) 23:29:17.09 ID:dht99EFe.net] >>696 やりました!!! 要素にアクセスできましたーー! そのまま文字列一致の判定をして、フラグ1が返ってきました。 これでゲームの核の部分が作れました。 そもそも_Gの使い方を間違ってました… しかしLuaって色々弄って思ったのですが想像以上に柔軟なんですね。 お三方、親身に教えてくださってありがとうございます。
706 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 21:08:36.02 ID:sCH5oSB/.net] 質問失礼します。 OSX 64bit Unity という環境で Lua を使用しています。 Windowsでは正常に動くのですが、OSX 64bit で動かすと LuaDLL.luaL_newstate(); で null が返ってきて困っています。 パッケージを見ると Mac (x86 only) と明記してありました。 OSX 64bit でも動かしたいのですが、どうやれば良いでしょうか?
707 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 21:17:17.45 ID:WFHyWYJ8.net] 64bitなdllを別途準備しないとダメじゃね?
708 名前:695 mailto:sage [2015/05/25(月) 21:18:45.04 ID:sCH5oSB/.net] >>699 そうですよね。。。 makeは通ったんで、頑張ってみます!
709 名前:695 mailto:sage [2015/05/28(木) 19:45:28.97 ID:52beXCpy.net] 詰まりました。。。 LuaJIT-2.0.2を利用しているのですが、OSX用のuniversal binaryで出力する方法が分かりません。 Luaの速さに全体重を乗っけてるんで、今更別の言語への切り替え等は考えられません。 分かる方、ぜひ教えてください。
710 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 01:55:02.89 ID:p/ahFCvT.net] 個々にビルドした場合はlipoというツールで合体させるらしい? https://www.google.co.jp/search?q=lipo+universal+binary
711 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 02:07:51.90 ID:p/ahFCvT.net] luajitではなく、luaならhomebrewとかみるとuniversalのオプションがあるね。 brew install lua --universal >698も根が深そうな。。。 https://www.google.co.jp/search?q=luaL_newstate+64bit https://gist.github.com/nddrylliog/8722197
712 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 02:13:23.25 ID:p/ahFCvT.net] とおもったけど、普通に64bitになっていた。 https://github.com/Homebrew/homebrew/blob/master/Library/Formula/luajit.rb $ lipo -info /usr/local/opt/luajit/bin/luajit Non-fat file: /usr/local/opt/luajit/bin/luajit is architecture: x86_64
713 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 09:55:09.44 ID:2a3TZL/2.net] >>702-704 ありがとうございます! LuaJITの32bit版ライブラリと64bit版ライブラリを出力して、lipoというソフトで合体という事ですよね? 試行錯誤してみます!
714 名前:695 mailto:sage [2015/05/29(金) 15:29:21.86 ID:2a3TZL/2.net] >>698 も根が深そうな。。。 まさにコレでした。 問題は2つあったんですね。 もうお手上げです。 とりあえず勉強になりました。 ありがとうございました。
715 名前:695 mailto:sage [2015/05/30(土) 02:16:04.85 ID:WJHjPFg2.net] ちょっとレスにミスったんで、訂正 >>703 >698も根が深そうな。。。 ↑まさにコレでした。
716 名前:デフォルトの名無しさん mailto:sage [2015/09/14(月) 16:28:17.35 ID:SxkHJw7D.net] 最新のsnes9xでluaを読み込む方法を教えてください pastebin.com/nBuJChc9 を動作させたいです
717 名前:デフォルトの名無しさん [2015/09/30(水) 15:13:43.25 ID:gLrxUsPl.net] Nekoって一応プログラミング言語だったのか Haxeのプログラムを動かすVMとだけ思ってた https://en.wikipedia.org/wiki/Neko_(programming_language)
718 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 15:57:26.40 ID:2TkwnPLU.net] 新進気鋭のプログラミング言語「Neko」ってなに? news.mynavi.jp/articles/2007/08/06/neko/
719 名前:デフォルトの名無しさん [2015/10/06(火) 22:32:11.35 ID:uxUTfTFS.net] 受ける会社大丈夫? 下記の条件が全て当てはまる会社にご注意下さい。 ・IT系 in tokyo ・「社名 労基」でググると過去の2chスレが出てくる ・転職会議で2.5点
720 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 00:53:22.02 ID:Kl04gCQo.net] Ravi https://github.com/dibyendumajumdar/ravi lua5.3互換、静的型付け追加、jit
721 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 01:29:46.09 ID:+L1p2dWm.net] きみのためなら死ねる。Ravi!
722 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 08:39:42.03 ID:LHJrrN+c.net] FlashAirにLuaが組み込まれてた
723 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 06:26:50.82 ID:sv1H4v2t.net] duktapeはどうなん? 使ってる人いる?
724 名前:デフォルトの名無しさん [2015/12/08(火) 17:05:55.06 ID:yVFhtqC/.net] スマホのマクロアプリのスクリプトがLuaのコードで書かれてるんだけどusleep関数を使うと徐々にズレてくるんだが正確に待機させる事ってできます? 命令としてはタップ、待機、タップの繰り返しなんだけども10回目くらいで目に見えて遅れてる usleep自体正確じゃなく、1回ズレると以後ズレた地点から待機時間が計算されるからその繰り返しになっていると思う os.clockで開始時間計って目的のタップまでの待機時間を計算していくしかないかなと思ってるんだけどいかんせん700回以上を計算して行くのは心が折れるので何か方法があれば教えて下さい
725 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 17:52:14.14 ID:V92FzyIA.net] >>716 luaに限った話じゃないが 次に目を覚ましたい時刻までの差分だけ寝れば?
726 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 18:05:12.63 ID:yVFhtqC/.net] >>717 os.clockでタップさせたいタイミング全ての時間を取得するって事ですか?
727 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 18:45:35.86 ID:V92FzyIA.net] >>718 「全ての時間」ってのがよくわからないな。キリのいい間隔ではだめなのか? 例えば 200ms おきにタップしたいなら、 ベース時刻から 0, 200, 400, 600ms …の経過で処理するんでしょ? で、200ms の処理の際に時計を見て、実際には 205ms の時刻なら、次は 400 - 205 = 195ms だけ寝る。 何かしら負荷がかかって 400ms の時刻に近すぎたり過ぎたりしたら スキップするなり、数回間隔を狭めて調整する処理も要るかも。
728 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 23:00:53.20 ID:yVFhtqC/.net] >>719 一定間隔ではないんですよね 止める時間はだいたい4パターンのうちどれか タップした時の時間と目的の時間を比較する方法があれば良いんですが 一定間隔ズレているなら良いですが徐々に少しずつ遅れているなら結局700回を全て調整していくしかないわけですよね… コツコツ頑張ります
729 名前:デフォルトの名無しさん [2015/12/09(水) 01:20:52.01 ID:uEc6NdFX.net] 【 オンラインTCGエディター 】 >>1 デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。 例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っており
730 名前:ながら、 当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。 既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。 バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーロー、シャーマン・キングなど のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。 マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。 WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。 設計思想は 《 RPGツクール 》 が良いかな? 他に、優れたエディター有ったら挙げてみて。 個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。 ↓ エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。 ↓ 遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。 なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・ バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。 ↓ 各社TCGを再現するテストプレイ ⇒ 更に改良や修正。 ↓ 機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。 ↑ 下位版の改造および商用利用には、別途で当社との契約が必要。 さ〜て、製作ベンダー見つけよっと!ww(クス http://wc2014.2ch.net/test/read.cgi/entrance2/1449039272/-18 [] [ここ壊れてます]
731 名前:デフォルトの名無しさん mailto:sage [2015/12/30(水) 01:11:18.19 ID:TU1EcnmS.net] 初心者ですがLuaのサイト行ってダウンロードしたんですけど インストール出来ません アドバイスを御願いします(´・ω・`)
732 名前:デフォルトの名無しさん mailto:sage [2015/12/30(水) 01:46:15.47 ID:LbvdgCkv.net] >>722 luabinaries.sourceforge.net/
733 名前:デフォルトの名無しさん mailto:sage [2015/12/30(水) 05:57:27.20 ID:47mVpj3E.net] >>720 local start_usec = sysyem_usec(); 〜色々やる〜 usleep(sleep_time - (sysyem_usec() - start_usec)); これだけの話じゃないの? ちなみにos.clockはprogramが使用したCPU時間だからCPUが寝てる間は増えないよ
734 名前:デフォルトの名無しさん mailto:sage [2015/12/30(水) 18:30:13.07 ID:Sj5i/aUt.net] >>722 OSがワカランけど ソースをコンパイルするなら tar zxvf lua-5.3.2_Sources.tar.gz cd lua53 make linux or make macosx or make mingw or make posix or make solaris or make install
735 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 20:02:10.72 ID:lAIllFG+.net] Luaは組み込みが簡単だっていうけど Javaの呼び出しAPI使う方がずっと簡単じゃん Javaなら書くのにEclipseとか使えるし
736 名前:デフォルトの名無しさん mailto:sage [2016/01/07(木) 21:06:07.28 ID:YzB9fcaP.net] コンパイル型の言語を組み込んで何がしたいんだ?
737 名前:デフォルトの名無しさん mailto:sage [2016/01/08(金) 08:07:50.80 ID:QEjOaegz.net] 「組み込みが簡単」の意味を誤解してるに一票
738 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 03:28:28.16 ID:Va0MVjV0.net] じゃあJavaをアプリケーションに組み込んでみなよ
739 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 04:05:21.99 ID:Va0MVjV0.net] luaのスタック操作APIが面倒というのならbind用ライブラリ一杯ある lua-users.org/wiki/BindingCodeToLua それ使うとJNIが面倒と思えるぐらい便利なのあるよ
740 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 04:14:11.05 ID:0EvHa66G.net] 静的型付きの組み込み言語ってないの? 実行時コンパイルできるやつ
741 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 04:27:46.70 ID:Va0MVjV0.net] >>731 それってエラーになるの結局実行時だしIDEがサポートしないとメリットなくない?
742 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 05:37:06.41 ID:0EvHa66G.net] すまん言葉が足りなかった。 そうじゃなくて、実行時コンパイル「も」できるやつと言いたかった。つまり実質Evalを捨ててない静的型付き言語。 というかIDEサポートなくたってメリットあるだろ・・・コンパイル時に型エラー出るじゃん
743 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 07:27:44.99 ID:H4zd5jav.net] >>712 みたいなLLVMバックエンドの奴なら
744 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 07:39:28.66 ID:H4zd5jav.net] いやそんなの組み込むのは無理か、間違い
745 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 09:54:45.69 ID:EOECSf3M.net] >>733 JavaScriptを組み込んでTypeScriptで書く IDEサポートも VisualStudio なり VisualStudio Code なりがある v8なりJsRTが使える環境なら性能面でもかなり良い選択だと思う
746 名前:デフォルトの名無しさん [2016/01/11(月) 17:05:44.51 ID:if9kJcKP.net] >>736 v8をアプリに組み込むのは手間だし(クロスプラットフォームを考えると尚更) altJs系の言語はeval出来るって要件満たしてない
747 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 15:56:16.83 ID:pvMT9PCj.net] jsのエンジンってposix系のapiってあるの? commonjsのnode組み合わせたり必要なんだよね? v8意外にもあるみたいだけど。 mattn.kaoriya.net/software/lang/c/20150815003033.htm
748 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 15:58:08.09 ID:pvMT9PCj.net] cljsだとeval出来るようだ。
749 名前:デフォルトの名無しさん mailto:sage [2016/01/15(金) 01:33:01.12 ID:9hWfybeU.net] >>733 AngelScript|Д`)ノ<静的型付き言語と聞いて。Anyもあるよ!
750 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:51:03.31 ID:0e0GcKQy.net] PSLってのはどうよ? 俺はスクリプト言語に静的型はそれ程魅力無いと思ってるし実績あるからLuaでいいやってなってるけど
751 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 13:23:45.64 ID:xtpCszE9.net] >>58 Lua の文法って簡単なんだなーと思って試しにパーサを書いてみてたんだけど、 マニュアルの BNF 通りだと左再帰になってるから無限ループに陥ってしまった。 間接的な左再帰だから俺のへぼい知識では除去できなかった。 実際に Lua の実装では再帰下降してるっぽいからなんとかしてるんだとは思うけど、 左再帰を除去した文法規則の表とかってどっかにないかな? ソースコード読むしかない?
752 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 02:54:56.98 ID:kn/5LVuq.net] Lua使ってる人binderは何使ってる? そんなもん要らん!標準のstack APIで充分だ!って人もどれくらい居るんかな
753 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 11:34:52.69 ID:Pw2nI7hG.net] わしはstack形にすっかり慣れた
754 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 23:47:27.75 ID:kn/5LVuq.net] 慣れても面倒くさいものは面倒くさくね? C++のオブジェクトをLuaから使えるようにするだけでもやりたくなくなる
755 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 07:57:29.11 ID:lmUWOHWt.net] 英語より面倒な日本語にもすっかり慣れたしなんとかなるもんだよ
756 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 23:36:18.56 ID:8yWl5BHB.net] Lua ってパッチ当てないと日本語つかわれへんの? 21世紀にもなってなんでや。
757 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 00:44:14.34 ID:lRklN/w3.net] >>747 utf8ならそれなりに使える 21世紀にもなってSJISは使ってないんだろ? とはいえファイル名はOSネイティブの文字コードが要るとか 幾つか注意点や手を入れたくなる所はあるが
758 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 01:00:10.15 ID:Jx1/Vtha.net] >>747 使えるけど?
759 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 23:42:25.61 ID:wmCOjGkS.net] SJIS使ってないなんて都合が良いことありえないw Winだと何しても所詮SJISから逃れることはできん。 むしろSJISに対応してないプログラムの方が大問題だ。
760 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 23:52:14.71 ID:wmCOjGkS.net] >>747 今の言語だと、ソースをマルチバイトで記述しようが、utf8で記述しようが、 マルチバイト書いたソースから、utf8で書いたクラス呼ぼうが、 変換などソースのどこを探しても1行たりとも表れないのが常識なんだけれども Luaは変換だらけ。
761 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 00:44:16.88 ID:FMLvAXOG.net] string型をバイナリ配列として利用しようとするコードが存在する限りもう無理ぽ
762 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 01:33:38.19 ID:XGMa0UOY.net] swigでsample.iに typedef struct { int a; int b[4]; }hoge_t; int hogehoge(hoge_t * test); と書いて swig -lua sample.i 実行で吐き出されるグルー関数を使う場合 luaの記述は test = require "xxx" test_t = hoge_t() test. a =10 result = hogehoge(test_t ) とかすればよいのですが、 test.b[1]=3とか test.b[2]=4とかするとグルー関数でパラメータチェックで弾かれます。 構造体のポインタ渡しで構造体の中に配列がある場合は LUA側でどんな記述をすればいいのだろう?
763 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 01:35:33.28 ID:XGMa0UOY.net] 間違えた↑訂正 test_t = hoge_t() test_t. a =10 result = hogehoge(test_t ) とかすればよいのですが、 test_t.b[1]=3とか test_t.b[2]=4とかするとグルー関数でパラメータチェックで弾かれます。 構造体のポインタ渡しで構造体の中に配列がある場合は LUA側でどんな記述をすればいいのだろう?
764 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 06:22:46.35 ID:pWou2Qho.net] >>750 ANSI 版の API を使ってるやつこそクソ。 正直言って A 付きの Windows API は全部廃止してもいいくらいだ。 UNICODE 版の API 使えよ。
765 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 08:17:19.47 ID:ToPlCIrz.net] >>755 Luaの話ならstringはchar固定でwchar_t等に変更するのは本体の改造が要る。 Luaのstringは、byte-arrayという名前のほうが適切だと言える。 不適切な変換はしないが、「UTF8として解釈するならutfモジュールを使え」というスタンス。 同様に、SJISに対応したいなら自分でsjisモジュールを作ることになる。 Windowsがsetlocale("UTF8")をサポートしていないのが面倒の原因なんだよな。 他のOSならできるから、もうみんなUTF8に統一して満足しちゃってる。
766 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 15:39:47.51 ID:brMGa4PB.net] いち早くUnicode()に対応したはいいけど2バイトに収まりきらず、固定長じゃなくなってメリットが何もなくなった上に 他のプラットフォームは軒並みUTF-8になってしまって孤立してしまったが互換性のためにSJISを捨てられないWindowsさん MSVCで設定とかでUTF-8版のCライブラリ(中でUTF-16に変換するような)を使えるようにしてくれたらいいような気もするんだけど何か問題あるんだろうか
767 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 16:03:19.95 ID:TvHQKkN9.net] ラテン語圏のやつらが作る言語はいつもこう。
768 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 19:16:06.06 ID:brMGa4PB.net] ははっ、 RubyのWindowsでの日本語対応がマトモだったと思ってる?
769 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 19:54:12.16 ID:Jcxd0Fsw.net] Windows切るだけで解決する
770 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 20:10:36.21 ID:pWou2Qho.net] Windows の API を UTF-8 にすべきだったとは思わんのだよな。 UTF-8 を基本にしてしまうと ASCII コードの範囲内で使う分には対応してようがいまいが使えちゃうから、 対応してない部分が顕在化し難いまま混在してわけわからんようになるのが見えてる。 その点、 UTF-16 と ASCII (ANSI) が混ざったらすぐ発覚する。
771 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 20:32:40.84 ID:brMGa4PB.net] >>761 へぇ Windows以外はわけわからんようになってるという主張でございますか?
772 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 21:00:24.37 ID:I7CO4PTN.net] 主要なコードもUTF8じゃなく、OS内部もUTF8じゃなく、標準入出力もUTF8じゃなく、あげく、UTF8にしても世界の文字の一部しか対応できないので いうような利点はないってことでしょ。 utf8にしても、実際の運営としてはASCIIのような運営範囲なんでしょ?w
773 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 21:04:55.16 ID:ToPlCIrz.net] >>761 の真意はよくわからんが char (1 byte) にしか対応していないコードや製品が氾濫するのは困るが wchar_t (2 byte) にしか対応していないものなら許容できるってニュアンスか? それもサロゲートペアができて破綻したけどな。 絵文字のせいで目にする機会も無いではないし。
774 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 21:28:04.79 ID:brMGa4PB.net] >>763 何言ってるのかよくわからんけど >>UTF8にしても世界の文字の一部しか対応できないので 表現できる範囲はUTF-16も同じなんだが、それもダメって言ってるんだよね? ってことはつまりSJISとかそれぞれのエンコーディングで適切な処理を行えってこと? 俺はUTF-8のコードポイントの区切りかたは知ってるけど、 他の言語の専用エンコーディングどころか SJISのコードポイントの区切り方すら知らないわ、 それをプログラミング言語作る人にしかも日本語とかまったく使わない海外の作者に強いるとかできないっすわ。
775 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 21:36:38.36 ID:TvHQKkN9.net] そんなもん自慢話にもならん。誰それ構わず噛み付いてアホか。
776 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 21:53:39.03 ID:brMGa4PB.net] 誰が自慢話してるんだ?
777 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 23:17:47.52 ID:AF25xcuE.net] 妥協も多いけど現実的だったオリジナルのUnicodeが、世界中のあらゆる文字をひとつのコードで 表現するという無謀な目標を掲げた10646と合流してごみ溜めのようになった。 そんなのに付き合って苦労するのはバカらしいから、基本多言語面だけサポートしてサロゲートペアは トーフ扱いするのが現実的。どうせろくにフォントも無いし。
778 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 23:26:52.29 ID:pWou2Qho.net] >>762 コードページの概念を捨てられないという主張。 そりゃ全部 UTF-8 に出来ればベストだとは思うよ。 でも捨てられない以上、下手に混ざってわけわからんようになるよりは混ざったらすぐわかる方がマシって話。
779 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 23:56:37.35 ID:wLhOEYBg.net] 各国のコンソールのコードページも65001じゃないし、65001じゃ 日本語もまともに表示できないわけで。 逆にプログラミング言語ごときが数十億人が使ってる現実的な各文字コードを押しのけて utf8に全文書統一しろ、今すぐしろとか言っても、相手にされんよ。
780 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 00:27:48.85 ID:/BZKOehd.net] Unicodeで表現できない文字って少なくとも日本では名前に変体文字使ってる数%がごねてるだけでしょ 数十億人とか盛りすぎ
781 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 00:47:56.49 ID:/BZKOehd.net] というかSJISには割り当てられててUnicodeで割り当てられてない文字ってあるの? >>768 最近の携帯電話使ったことないのかい? >>770 Windows内部はUnicodeで扱ってるからコンソールもUnicodeで表現できない文字は表示できませんよ WindowsのコンソールをCP65001にしてもまともに表示できないのは実装がタコなだけ あとメジャーな携帯電話のOSはどちらもUnicodeですけどこれは本当に数十億人が使ってますよ
782 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 02:13:32.99 ID:bnndf23C.net] iOSは消滅確実だが、Androidは十分残りそうだなぁ。 実装がカスとかいったところで、モノ生産してるデスクトップ85%から占めてるてるものを 否定して見ない振りしてもしょうがない。 逆にビューワー(携帯)なんか資産性がないからどうでもいいよ。
783 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 03:04:06.56 ID:/BZKOehd.net] 話をどこへ持っていきたいのかよくわからんけど元々は、 WindowsがUTF-8をまともにサポートすべきかっての論点だと思ってたけど。だからいまの実装を見ないふりもなにもないよ。 MicrosoftがWindowsでUTF-8をちゃんとサポートししようとしても今と変わらずクソ実装になるって主張じゃないよね? >逆にビューワー(携帯)なんか資産性がないからどうでもいいよ。 プログラムを動かすのは大多数が持ってるビューワーなわけで、それこそ否定して見ないふりしてどうすんのよ。 今はサーバーはLinuxで携帯はiOS or Androidなわけで、プログラムを実行する環境全体を見るとWindowsなんて少数派だよ。
784 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 08:26:37.09 ID:X7qr0C1S.net] OSのネイティブ (C言語) では UTF-16 (Windows) と UTF-8 (それ以外) があるけど 今主流の言語 (Java, C#, Swift/Obj-C, JavaScript) のレベルでは ほぼ UTF-16 に統一された印象があるんだが、この認識は間違っているだろうか? ファイル入出力では文字コード変換をするのは前提として。 OSうんぬんより、むしろ文字列型がUTF-16でない言語が問題な気がする。
785 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 12:03:30.10 ID:BlYk2woR.net] 結局こういう面倒な問題はグレーにしてるLuaが勝ち組
786 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 14:43:17.15 ID:8fDg9LDU.net] >(Java, C#, Swift/Obj-C, JavaScript) その辺の言語はUTF-8が産まれる前からある言語だからな SwiftはUTF-16じゃないし(もちろん扱えるけど)、goは基本UTF-8
787 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 15:15:51.79 ID:su9E+X74.net] Ruby ソースコードはコメントで指定、文字列型は内部にエンコーディング情報を持ってる python 内部表現はデフォルトucs4(WindowsだけUTF-16) php よく知らんけどググってみる限り統一されてなさそう というわけでUTF-16に統一されてるわけじゃないよ。
788 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 15:22:16.66 ID:22sNDRQR.net] 結局のところ、このスレ的にはC言語の整合がとれてないのが困りどころよな wchar_t をいまさら統一とは言わないけど、なんか統一した別枠の仕様を標準化してほしい
789 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 15:44:17.53 ID:22sNDRQR.net] あ、C/C++の規格的にはもう11で統一されてたのか char16 _t がutf-16、char32_tがutf-32で固定の組み込み型。u"" U"" でそれぞれリテラル指定も可能 ただし全部これに対応したライブラリーは整備されてないので、 実情はあんまかわらん模様
790 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 15:52:48.40 ID:22sNDRQR.net] アプリ内部はchar16_tかchar32_tでかいて、 OS依存処理は分離した上で、winはwchar_t がutf-16だからそのままワイド系の関数やapi使って、 unix系はwchar_tは信頼できないから、c16rtomb かc32rtomb でmbに変換して対応、が、C11以降の正しい書き方ってことかな
791 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 22:02:21.26 ID:iW4Rvogm.net] ここ何のスレだっけ…?
792 名前:デフォルトの名無しさん mailto:sage [2016/02/06(土) 22:11:19.39 ID:+jWWiLZa.net] 組み込み言語だろ。流れには沿ってるよ
793 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:18:29.86 ID:LSSjhAu+.net] >>780 だからUTF-8に統一すりゃいいのにって話に戻るわけだ
794 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 00:48:50.94 ID:4QXOAnIu.net] 言語処理系がSJISソースコードを処理できるか(5C問題)と、言語やOSの内部文字コードの話がたまに混ざる。
795 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 03:59:45.36 ID:LSSjhAu+.net] SJISでソースコード書くやつなんて今時いないよね? それに誰もそんな話してないよね?
796 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 20:56:40.56 ID:8pvMtac5.net] utf-8サポート入ったlua5.3以降の話だったのね。 以前(5.1/5.2)はsjisパッチがあったりしたので、そっちの話も出てたのかとおもった。
797 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 23:13:24.81 ID:vQROT1hb.net] >>786 今でもマルチバイトのソースコードは山盛りだよ。 最も使用頻度が多いVSがデフォルトSJISだぞ。 そんな現実すら知らずにプログラマやってて 本気で言ってるな、周りが全く見えてない能無し。
798 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 23:15:09.52 ID:jiomZ/W6.net] たまに文字列リテラル内の文字コードが書かれた文字コードに依存する糞処理系とかあるしな・・・
799 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 23:22:01.52 ID:vQROT1hb.net] utg8に依存してるmrubyとかなw
800 名前:デフォルトの名無しさん mailto:sage [2016/02/07(日) 23:44:00.61 ID:LSSjhAu+.net] >>788 それはWindowsでしか動かないプログラムを書くお前の環境特有の話 それに気が付いてないなら >周りが全く見えてない能無し。 自己紹介おつ >>790 組み込み言語なら現実的な選択でしょ 多種多様なエンコーディングに対応するためにOSとか巨大な外部ライブラリに依存するほうが糞
801 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 00:07:53.29 ID:0XuKQtD5.net] だいたいMicrosoft傘下になったゲームスタジオのWindows10アプリ移植版が 日本語ユーザー名だとエラーになるっていう体たらくだよ。 完全にSJISがMicrosoft自身の足も引っ張ってる
802 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 00:20:53.72 ID:+/8cbHLD.net] そういうのはマルチバイトエンコーディングを適切に扱わずにUS-ASCIIしか想定して なかったという類の問題でしょ。UTF-8だったとしてもやらかす奴はやらかす。
803 名前:デフォルトの名無しさん [2016/02/08(月) 00:48:05.85 ID:0XuKQtD5.net] >>US-ASCIIしか想定してなかった 違うよ。日本語表示も(他の言語の表示も)できてる。予想だけど内部ではUTF-8で処理してんだろうよ。 ここまで書けば多数の人は何を指してるのかわかるだろうから具体的なゲーム名は言わないけど そのゲームは PC版(Java) → スマートフォンへの移植版(ネイティブアプリ版) → Windows10アプリ版 と移植されていったわけ、スマートフォンではUTF-8がデファクトスタンダードだから当然の結果だね。 で、Windows10版もUTF-8文字列をそのままファイル操作のAPIへ渡してしまったんだろうね >>UTF-8だったとしてもやらかす奴はやらかす。 とはいってもSJISを"適切に扱う"ということと比べたら屁みたいなもん それにこのゲームでの問題の適切な解決策はSJISを適切に使うではなくWindowsのみUTF-16へ変換してwide版のAPIを呼び出すだ。
804 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 01:08:11.78 ID:B1wV/kIt.net] 文字コード総合スレ Part10 [転載禁止]©2ch.net peace.2ch.net/test/read.cgi/tech/1444822140/ どうしてもここで語りたいなら言語と処理系を限定しろ 話が発散する
805 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 03:55:04.72 ID:9ZhGg5zu.net] システムのファイル名・ユーザー名などは、 半角英数字のみを使う 外人は日本語でのテストなどをやっていないから、 日本語などを使ったら、バグる SEの常識だろ。日本語など、 誰もメンテナンス・テストしていないものを、 システムで使うのはおかしい Linux・Macなんか、ファイル名に半角スペースがあっても、バグる
806 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 07:43:55.20 ID:stcXIyTr.net] ドイツ語でもバグるよ
807 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 08:08:27.71 ID:+/8cbHLD.net] スマートフォンでUTF-8がデファクトスタンダードってなんのことを言っているのやら。 iOSやAndroidのプログラミングしたことないのかね?
808 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 09:04:21.92 ID:rq38tdFU.net] AndroidもiOSも代表的なutf-16環境だな
809 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 09:17:28.34 ID:5blmn2mR.net] 扱わないといけない文字コードは4種類ある。 1. プログラム中の文字列型 2. OSのAPI 3. ソースコード 4. 入出力ファイル 4については、対応が必要なぶんの変換モジュールを用意すればよいだけ。 3については、1に決め打ちするのが楽だが、4があるなら変換して読み込めばいい。 で、Windows対応を謳うには以下のどちらかが必須。 ・setlocale で 1=2 という環境に限定し、1に対してmblen等の適切な処理をする ・1=ユニコード (UTF-8/16/32は問わない) として 2=W系API を使う Luaの実装はどちらでもないので、「Windows対応が完全ではない」と評価するのが妥当。 Squirrelなら後者になるようコンパイルできるので、この件に関しては問題ない。 他の環境はわからないが 1=ユニコード なら後者を満たしていると期待できそう。
810 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 11:43:28.74 ID:M0j0fnEJ.net] Squirrel って最近聞かないと思ったら1年前の最新リリースから止まってるのかよ
811 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 11:52:01.97 ID:5blmn2mR.net] >>801 そう。だから「この件に関しては」と書いた 他の要素、将来性などは……
812 名前:デフォルトの名無しさん mailto:sage [2016/02/08(月) 14:05:07.38 ID:rq38tdFU.net] >>800 windowsの cランタイムのsetlocale が utf-8 に対応さえしてくれれば悩む必要無いのにねぇ
813 名前:デフォルトの名無しさん [2016/02/08(月) 22:35:54.46 ID:jpNGf5dG.net] >>798 >>799 上に載っかってるJavaとObjective-Cしか使ったことないの? NSStringはUTF8Stringで、JNIではGetStringUTFCharsでUTF8の文字列を取れるけどUTF1 文字列で直接取得する方法ないぞ。 クロスプラットフォームの為にCやC++を扱うならUTF8にするのが常識
814 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 00:41:57.31 ID:W9OWY02z.net] >>804 デファクトって言うなら主要開発環境でみないと駄目じゃろ
815 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 07:41:05.80 ID:Wb20B9c6.net] >UTF1 文字列で直接取得する方法ないぞ。 UTF-16のtypoだろうが、NSStringならcharacterAtIndexとか、JNIならGetStringCharsとか。
816 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 07:54:13.04 ID:OaLyyuyL.net] >>804 NSStringはそのままUTF16だからgetCharactersでunicharでとれるな UTF8用の処理は低層のUnixとのやりとりのためのものだし、その層ではutf-8が必要なのはもちろんだけど、それをAndroidやiOSの標準かのように言うのはおかしいと思うな
817 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 08:14:07.29 ID:DpNg1xio.net] UTF16なら固定長で行ける!という勘違いをしてる 外人は多いよ。
818 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 10:53:46.23 ID:dd4nRHCa.net] >>807 ユニコードでさえあれば、内部のUTF表現まで気にする必要はないんじゃ? 特に文字列型がimmutableなら、複数の表現をキャッシュしても問題なさそうだし >>808 日本人でも多くないか? 新しく言語を設計できるなら、CharはUTF-32であるべきだとは思う
819 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 12:19:21.81 ID:+sr/gpA9.net] charのサイズがintのサイズに近づけばintの配列を使う人も出てくるんじゃないの それにluaがpythonに近づけばpythonを使う
820 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 12:28:04.23 ID:OaLyyuyL.net] >>809 話の流れはutf8がデファクトかどうか、です 実際にはutf16のが主流だろって指摘 外部はutf8でいいとして、内部で使うなら今後はやっぱ32だな。少なくともサロゲートペアの罠は回避できるし
821 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 14:09:36.45 ID:+sr/gpA9.net] sjisとutf16とutf32って、まるでxpとvistaと7みたいだね
822 名前:デフォルトの名無しさん mailto:sage [2016/02/09(火) 17:44:02.58 ID:zKyrJnIK.net] >>809 それって言語の問題無の? 標準ライブラリで吸収できない?
823 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 08:02:28.26 ID:2QwVjJmi.net] Web系の主流がutf8なのは確か
824 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 12:03:00.48 ID:ShaMeiRT.net] iOS もAndroidもC言語文字列を扱うAPIはwideでもそれ以外の整数型の配列でもなくconst char*のutf-8だけどな iOSはCore*とかAndroidはC用API自体少ないけどAAssetManagerとかAStorageManagerとか
825 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 13:05:28.92 ID:D1g79far.net] だから、どの部分か限定しないと意味がないって >>800 の分類なら 1 (文字列型) はUTF-16の言語もあるけど 低レイヤのC言語APIを含む、2,3,4 (API/ソース等) はUNIX系ならUTF-8ってだけだろ ほとんど全員の言っていることは正しいよ で、互換性や過去のしがらみがない場合、文字列型のあるべき姿が SJIS等の個別エンコードを触れるべきなのか、 UTF-8/16/32のどれかに見えるべきなのかは、また別の話 Luaを改造してUTF-32 Luaを作ってくれてもいいんじゃよ
826 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 08:59:17.26 ID:w1PVoXoh.net] >>816 >UTF8用の処理は低層のUnixとのやりとりのためのものだし、 の反論として書いただけなんだけどね 今から言語作るならUTF-32にすべきって人もいるけど俺はそうは思わないな、最近でた言語のgoも基本UTF-8だしswiftの文字列型も内部表現は21bitだし(UTF-32に近い物ではあるけど)ね。 goはコードポイント単位で扱いたい場合は32bit配列に変換するイメージ 文字列をfor rangeで回すとコードポイント単位で取れたりと扱いやすくはなってるけどね (ソースコードのエンコーディングはUTF-8一択だと思ってるのでどうでもいいです) 冗談につっこむのもアレだけどUTF-32版のluaって何をUTF-32にするんだろうか。 string型?lua5.3からのutf8でstringを簡単にコードポイント単位で扱えるんだからstring自体をUTF32にする必要そんなに無いと思うけど
827 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 09:29:05.34 ID:whWT7zC/.net] >>817 「文字列型のエンコーディング」の話をする場合、 内部の保持方法なのか、文字単位で扱う場合の見え方なのかで祖語があったかも。 私見だが、内部表現は言語本体の開発者だけが知っていれば良いもので、 使う側は文字単位でしか扱えなくて構わないと思ってる。 UTF-8で保持して、文字を要求されるとUTF-32で返す実装ももちろんアリだ。 UTF-32 Luaもそんなイメージだった。 UTF-8での保持が前提だから、WindowsではUTF-16へ変換してW系のAPIを使えるし 長さ, substr, 正規表現 等は、バイトではなく文字数で指定させる。
828 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 11:00:48.21 ID:x5lzfsVs.net] >>817 UNIXとのやりとり≒C言語の文字列処理APIだから反論になってなくて同じこと言ってるだけだと思う go言語は従来的な言語での「内部コード」相当は結局のところ32bitってことだよね コンバートを言語仕様に組み入れて使いやすくしたところは偉いけど、複雑で面倒とも言える
829 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 13:17:26.15 ID:w1PVoXoh.net] >>819 中身Javaで書かれたAndroidのフレームワーク使うのがUnixとのやり取り?C言語だったらUnixとのやりとりなん? センセーWin32を使うのもUnixとのやり取りに入りますかー? >go言語は従来的な言語での「内部コード」相当は結局のところ32bitってことだよね 言ってる意味がわからん…。簡単32bitに変換できたら内部コードは32bit? C++でも関数一つで変換出来るけどC++の内部コードは32bit相当になれますか? ちなみにgoでlen(string)したらUTF-8でのbyte数返るよ。
830 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 15:01:37.11 ID:XlZH7QFA.net] 確率的に考えるとサロゲートペアは "\r\n" よりマシだが 無料ソフトがすごすぎて誰も確率やコスパの話をしない
831 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 22:39:27.60 ID:Bbm2lPXR.net] >>820 s/UNIX/C言語ベースのOSのAPI/でいい? 内部コードは以下のながれ ・今つくるなら32bitだろってのは「文字列型」の内部表現の話 ・従来の多くの言語での文字列型は、長さ=文字数を期待してつくられた(実際は破綻したけどそれはさておく) ・go言語でも、文字数=長さで処理したい場合は、32bitなruneにするんだから発想は同じだよね?
832 名前:デフォルトの名無しさん [2016/02/13(土) 01:24:52.89 ID:M5U5EIyy.net] >>822 だからC言語ベースのOSのAPI ってくくりだとUTF-8をまともに扱えないWin32も入るでしょ?何が言いたいのか全く解らんのだけど GoのruneはあくまでもUnicodeのコードポイントが入るサイズの整数(int32)の配列であって文字列型では無いと思うけど。その配列をそのまま文字列として出力できないしね
833 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 01:55:35.83 ID:24vNB1dv.net] >>823 お互いさっぱりだね。 元の
834 名前:bは、スマホでデファクトなのはutf16じゃろってだけの話だよ runeはあきらかに他の言語の「文字列型」を想定したものだと言ってるだけだよ。言葉遊びしたいわけじゃない [] [ここ壊れてます]
835 名前:デフォルトの名無しさん [2016/02/13(土) 05:49:29.94 ID:M5U5EIyy.net] >>824 だからgoの文字列型はstringだろ。そこに異論がある? runeは文字列からコードポイントの配列を取るだけ。 そんなもん他の言語、Luaにすら5.3からあるわ スマホがUTF-16がデファクトってのも上に乗っかってるJavaとObjective-C(Swift除く)だけ使うならそうだろうよ。 でも一番最初の話はスマホへゲームを移移植するときの話 でAndroidもiOSでも動かす場合はUTF-8がデファクトスタンダードだって話をしてたんだ。それをUTF-16だろってツッコミ入れられたから反論してるだけで最初から俺はJavaとかObjective-Cは話の外にあんの
836 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 07:08:29.64 ID:tl7vIPkr.net] なんだ、最初の奴がまだ頑張ってたのかよw >AndroidもiOSでも動かす場合はUTF-8がデファクトスタンダード とりあえずこれ、まともに根拠を示せてないんだけど。
837 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 07:42:00.73 ID:6QXsiJCA.net] OSの話はスレ違い その上で動作する組み込み言語の話をせよ
838 名前:デフォルトの名無しさん mailto:sage [2016/02/13(土) 12:35:56.00 ID:AxbgYY0v.net] 何がスタンダードでもいいけど UTF16は中途半端感が半端ないよな
839 名前:デフォルトの名無しさん mailto:sage [2016/02/22(月) 21:10:17.21 ID:6cWcowj1.net] mrubyも仲間に入れて良いですか?
840 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 00:28:29.80 ID:liQI2ylD.net] 良いと思います
841 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 10:19:51.72 ID:kQ/gcKij.net] Luaについての質問 目的:C++で実装したクラス(lua クラス バインド でggって出てきたページを参考に作成)を Luaでnewしてインスタンスを生成、それを更にC++で実装した 全く別の独立した静的関数にそのまま渡してその関数内でインスタンスへの変更処理を行う 実装:関数の引数にluaのソースのtestclass:new()によって生成したインスタンスを指定すると C++側からはlua_Stateのスタック経由でユーザデータで渡ってくると仮定して実装してみた 結果:C++で実装したクラスのlua側から生成したインスタンスの稼動は正常な模様。 しかし、そのインスタンスをC++の関数で参照する際、 肝心のインスタンスを取得する際に実行しているluaL_checkudata()にてエラー発生、 エラー出力は "bad argument #-2 to 'lua側に公開しているメソッド名'( expected, got userdata"。 ステップインしてみるとlauxlib.c(309)、luaL_testudata()内のlua_rawequalの結果の判定にて /* value is a userdata with wrong metatable */ とコメントされている箇所でNULLが返されている。 (#-1にはluaのソースでの [クラス名]:new() のコロン使用での暗黙の第一引数が
842 名前:入っている?憶測) 備考:簡単なスタックダンプで見る限りではユーザデータしか積まれていない様に見える。(主観) 徹夜してまで追跡しても方法わからず、何か勘違いや問題点があったら教えてくらはいおながいします [] [ここ壊れてます]
843 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 12:27:23.57 ID:UPC5owG9.net] >>831 (★ expected, got userdata のエラーメッセージで、正確な★の値を確認してほしい。 luaL_checkudata は引数 tname の文字列で型チェックをするのだが、 luaL_newmetatable や luaL_setmetatable で登録したものと一致しているだろうか?
844 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 16:36:12.58 ID:liQI2ylD.net] >>831 それはbinderの質問だな binderは何を使ってるの? その問題が再現する最小のコードを作って作者に質問すりゃいいよ 英語が苦手ならここでもいいけど解決する保証はできん
845 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 21:28:17.51 ID:kQ/gcKij.net] レスくれたのに遅れてごめね、潰れてた >>832 Luaでnew()したC++のクラスのインスタンスを受け取る関数で実行してるとこで void * const pv = luaL_checkudata( pluastate, -1, "TestClass" ); にするとそのまま(hoge expected, got userdata)になっちゃった C++のクラスのテーブル作ってるとこのlua_setglobal( pluastate, "TestClass" );と同じでもダメだし もちろんC++側でのクラス名でも変わらず >>833 binderはざっくり検索した範囲だと大きかったりboost必須だったり 更新してなかったりで将来に不安が残る感じで何も使ってないの、アメリカ語は_〜 クラスのテーブル作るとこで型名を明示的に指定してやったりしないといけないのかな きっとthisの値を生で吐き出すメソッド実装してそれを関数に渡せば何とかなるんだろうけど そういう力技あんまし使いたくないし後々すんごく気持ち悪くなりそうな・・・
846 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 21:43:48.82 ID:kQ/gcKij.net] 連投すまぬ、>>833 をヒントに検索したらlua_typename()なる関数を発見、スタックに積まれてる引数に CString str = lua_typename( pluastate, -1 ); してみたんだけど "no value" になった、lua_type()は相変わらずユーザデータ 念の為luaのソースで引数を数値にしてC++の関数でluaL_checkinteger()に入れ替えると 正しく整数がそのまま流れてくるから位置は間違ってない可能性が高いと思ってる(憶測) メタテーブルと言っても所詮(?)はユーザデータだし、 ユーザデータ作る時にlua_setglobal()の前後で明示的に型名を指定してあげないとダメなのかな?
847 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 21:50:32.63 ID:UPC5owG9.net] >>834 エラーメッセージを加工しないでくれ。 luaL_checkudata( pluastate, -1, "TestClass" ); の呼び出しで hoge expected, got userdata の表示はありえない。hoge はどこから来たんだ? 「Luaでnew()した」だとどこが悪いのか切り分けられないから まずは、Luaスクリプトを使わず、C APIのみで作成と取得を試してはどうか? 気になるのは lua_setglobal("TestClass") と書いていること。 luaL_checkudata の tname 引数は luaL_*metatable 系で使った C側の内部的な文字列であり、Lua側に公開した変数名ではないぞ?
848 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 21:51:06.03 ID:liQI2ylD.net] >>834 そうなんか。 まあ俺も使ってたbinderに不満があってオレオレbinder作っちゃったから人の事言えないけど classや関数一つ一つスタックで操作するのはミスしやすいしお勧めしないよ。 classの登録 luaL_newmetatable(L, "TestClass"); 〜stackの一番上にtableが入ってるのでそれに対してメンバーの登録処理が続く。 newの中 void *storage = lua_newuserdata(L, sizeof(TestClass)); new(storage) TestClass(); luaL_setmetatable(L, "TestClass"); 引数の受け取り TestClass* ptr = static_cast<TestClass*>(luaL_checkudata( L, 1, "TestClass" )); //1個めの引数
849 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 22:01:41.19 ID:liQI2ylD.net] >>835 メタテーブルはユーザーデータではないぞ ユーザーデータにメタテーブルって形で普通のテーブルを設定できるだけでメタテーブル自体はtable型 ユーザーデータはテーブル参照されると、そのユーザーデータに設定されているメタテーブルを参照して 値があればそれを返す >>836 hogeは察するにlua側の関数名だろ
850 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 22:03:44.40 ID:liQI2ylD.net] 連投すまんが lua_typename( pluastate, -1 ); この第二引数はスタックのindexではなくlua_typeで返る値
851 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 22:50:47.99 ID:kQ/gcKij.net] >>836 すまない、hogeからもう一度TestClassやluaTestClass、その他の定義 色々試し直してたら不一致になってしまった LuaからC++、C++からLuaは既に成功していて、C++からC++も既に成功というか OpenCVの亜種とFreeBSDのlibの一部をLuaに機械的な手作業でバインドしようとしてるから その辺りの実績は問題ない・・・筈 >>837 凄いヒントをありがとう、今までnewの後にluaL_setmetatable()はしてなかった けど単純に追加しただけじゃダメらしい、相変わらず同じメッセージが出力されて失敗する >>838 >>839 メタテーブルの認識を間違えてたんだ、それとlua_typename()の第二引数・・・ 勉強し直して再確認して出直してくる OpenCVの亜種とBSDのlibのヘッダのインクルードやらリンクやらでソース丸々アップとか難しい状態 文字でしかやりとりできない、もどかしくてごめんね、みんなありがとう
852 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 23:12:34.76 ID:liQI2ylD.net] たぶんちゃんとメタテーブルを設定できてないんだと思うよ。 luaL_setmetatable はスタックの一番上の値に対して引数で与えた名前のメタテーブルを設定する メタテーブルの名前はluaL_newmetatableで作った時のもの。 www.lua.org/pil/24.2.3.html ここにstack dumpのサンプルコードがあるからそれで出力して色々なタイミングのスタックの状態を printfデバッグすりゃいいんじゃないかな Lua5.3以降ならluaL_newmetatableした時にそのテーブルに__nameが設定されるから 例えば上記URLのstackDumpで case LUA_TUSERDATA: if (luaL_getmetafield(L, i, "__name") == LUA_TSTRING) { printf("userdata:%s", lua_tostring(L, -1)); lua_pop(L, 1); break; } ってするとユーザーデータに設定されているメタテーブルの名前も一緒に出力できる
853 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 23:30:00.22 ID:kQ/gcKij.net] >>841 一発でわかった、ありがとう、ありがとう、そして一番のキーワードは>>837 のluaL_setmetatable() 目的:C++で実装したクラス(lua クラス バインド でggって出てきたページを参考に作成)を Luaでnewしてインスタンスを生成、それを更にC++で実装した 全く別の独立した静的関数にそのまま渡してその関数内でインスタンスへの変更処理を行う 問題:割愛 原因:Lua側でのいわゆるクラスの型情報であるグローバル変数の実体の作成時に、 クラスのテーブルの作成にもユーザデータ共通のメタテーブルの作成にもlua_newtable()を使用していた 対処: 正しく(?)は、メタテーブルの作成の際にはluaL_newmetatable()を使用するべき 憶測(言い訳?): メタテーブルであるべきところをネットのサンプル通りに普通(?)のテーブルで実装してしまった為、 単純なC++からLua、LuaからC++のやりとりでは不都合が出なかっただけだと思われる 長文かつサンプルの提示なしの質問に長々と付き合ってくれてありがとうございました、無事解決しました
854 名前:デフォルトの名無しさん mailto:sage [2016/02/24(水) 08:09:28.85 ID:4eLJNqm5.net] おまえらすげぇな
855 名前:デフォルトの名無しさん mailto:sage [2016/03/08(火) 07:25:35.42 ID:kiMIo1Bf.net] “という名前のファイルをio.openで開こうとすると開けないのですがどうやったら開けるようになりますか?
856 名前:デフォルトの名無しさん mailto:sage [2016/03/08(火) 07:37:15.49 ID:kiMIo1Bf.net] 開けました
857 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 11:05:43.19 ID:S+FF32wm.net] スレチかもですがJavaScriptエンジンのスレがないのでお邪魔させてくだちい。 googleのJavaScriptエンジンv8をVS2015のレガシーなC++でビルドして VS2015のC++/CLIでリンクして実行するとヒープ破壊のエラーが出て落ちます。 (デバッガでトレースが始まる前の段階で落ちているので追跡しようがありません) v8::V8そのものへの参照を全てコメントアウトすると落ちずにmain関数に入ってきます。 何か特殊な設定か対処の類が必要なのでしょうか? それともC++/CLIがダメ子ちゃんなのでしょうか?
858 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 11:49:11.85 ID:Byvmq8tF.net] >>846 その組み合わせは使ったことは無いが、もしネイティブC++で問題ないなら 2種類のGCを持つ環境が競合しているんだろうな v8 の代わりに Chakra JsRT なら、MS同士だから実績があるかもしれない
859 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 22:46:48.41 ID:S+FF32wm.net] >>847 gc回りの机上でのコード追跡に挫折しました・・・ v8のコードを一切コールしなくても、v8::V8回りがリンクされるだけでダメっぽいです。 CRT回りの静的変数の初期化の時点でヒープ破壊のエラーが発生してしまうので (ソースをちょっといじるだけでエラーの種類が変わるのでここで書いても意味がないと判断) ChakraCoreをいじってみます、レスありがとうございました。
860 名前:デフォルトの名無しさん mailto:sage [2016/03/20(日) 23:22:32.65 ID:Byvmq8tF.net] 自分も最新の情報は持っていないけど、今や組み込みJSも結構な数があるっぽい https://en.wikipedia.org/wiki/List_of_ECMAScript_engines WindowsオンリーならChakraで十分 速度がいるならv8だけど、巨大で複雑な部類だとは思う Duktapeやv7はLua感覚で使えそうだけど、品質や実績はよくわからない
861 名前:デフォルトの名無しさん mailto:sage [2016/03/21(月) 00:04:57.23 ID:jBN/3X9x.net] こんなにあったんだ・・・ けどv8ですらまだドキュメントやサンプルが多い方だったんですね。 (Isolateの実装で殆どがコンパイルに通らなくなった様ですが) ChakraCore一つとってみても例えば var userobj = new Userobj(); NativeGlobalFunc( userobj ); を実現する道筋の調査に一苦労、 1時間調べてもオブジェクトの作り方すらまだ確信が持てていない状態・・・ 片っ端から調べ直して出直してきます。
862 名前:デフォルトの名無しさん [2016/03/27(日) 14:51:27.25 ID:WUzBhCSW.net] luaってなんでC++系の文法真似なかったん? 吐き気がする気持ち悪い・・・ 結局教育機関が作る言語はどれも学生脳の自慰言語ばっかかよ
863 名前:デフォルトの名無しさん mailto:sage [2016/03/27(日) 15:03:16.21 ID:9eGj+oKv.net] >>851 Lua 1.1 は 1994年。そのころはPascal系もまだ元気だったんだ。 自然淘汰の結果として死滅しただけで、最初から未来が見えてたわけじゃない。 今なら、LuaのVMやAPIを真似たJavaScript実装 (>>849 ) や 先行き不安なSquirrelなど、自分で組み込むなら選択肢はある。 使う側ならどうしようもないが。
864 名前:デフォルトの名無しさん [2016/03/27(日) 15:12:37.47 ID:WUzBhCSW.net] >>852 おとなしくうっすいトランスレータ書くわ
865 名前:デフォルトの名無しさん mailto:sage [2016/03/27(日) 15:18:28.87 ID:Pr6yzqXD.net] C++に近いといえばgcjがある 公式のJavaよりもC++に近いが彼らが負けを認めることはないだろう 負けを認めない相手と張り合うのは時間の無駄
866 名前:デフォルトの名無しさん [2016/03/27(日) 21:30:21.55 ID:H7mb6W0C.net] mytable.test とテーブルの要素にアクセスした時に 定義されていなければ{}を返すようにメタを設定することはできますか?
867 名前:デフォルトの名無しさん [2016/03/27(日) 21:46:25.71 ID:xKhiQxW2.net] >>855 luaの話? であれば__newindexで{}返す関数を設定すればいい
868 名前:デフォルトの名無しさん [2016/03/28(月) 01:39:38.42 ID:WtaHq3/v.net] 何かうまくいかないから今度またやろう。。
869 名前:デフォルトの名無しさん [2016/03/28(月) 03:40:07.32 ID:zJAWFm4u.net] __indexじゃないかな $ lua Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio > pp = require 'pl.pretty' > mytable={1, 2, 3} > pp.dump(mytable.test) nil not a table > setmetatable(mytable, {__index=function() return ({}) end}) > pp.dump(mytable.test) { }
870 名前:デフォルトの名無しさん [2016/03/28(月) 04:37:20.45 ID:OzjTEsq7.net] >>857 すまん。 >>858 せやったな。 __newindexは代入したときに無かったらや。
871 名前:デフォルトの名無しさん mailto:sage [2016/03/28(月) 12:35:11.30 ID:K6EkYblL.net] nil のメタテーブルって設定できたっけ? Safe Navigation Operator 的な動作なら、そっちのほうが良いかもしれない。
872 名前:デフォルトの名無しさん mailto:sage [2016/03/30(水) 08:03:28.46 ID:MvqxUS0K.net] >>851 プログラマーではない人をターゲットにしていたからだよ。 つまり英語をある程度知ってる人なら内容を理解できるようにってこと。 パスカルを真似ったってよりも日本語ベーシックみたいなものかな。
873 名前:デフォルトの名無しさん [2016/03/30(水) 10:21:33.98 ID:PJ1J1ZJR.net] C++というかC言語は構文的には美しくないからな 普及してるからそれが普通に見えるだけで
874 名前:デフォルトの名無しさん mailto:sage [2016/03/30(水) 10:50:30.01 ID:IKaSwJOV.net] Luaって ( ) と { } が無いだけで、後はほぼJavaScriptと感じたけどなぁ Swiftも { } は使うけど ( ) が無いから気持ち悪いんだろうか?
875 名前:デフォルトの名無しさん mailto:sage [2016/03/30(水) 11:35:11.53 ID:mjOFe187.net] 引数と戻り値が可変長だから local i, j = f(x, ...) int i=0, j=0; のような文法をそのまま採用するのは無理
876 名前:デフォルトの名無しさん mailto:sage [2016/03/30(水) 13:09:07.35 ID:MvqxUS0K.net] もし i==1 そのとき x=2 そのほか x=3 おわり うごけ x=x+1 まで x < 10 おわり
877 名前:デフォルトの名無しさん mailto:sage [2016/03/30(水) 13:44:09.05 ID:UL6gISrg.net] >>862 そんなノリで「ならおまえが作れよ」でObjective Pascalやら○言語やら 色々出たし確かに文脈としてはCよりマシだったけど結局普及しなかったしな 一旦普及しちまうとIA64やらOSXやら互換性を捨てたモンが代替に成り上がるのは難しいね 過去のソースの流用だけじゃなくてコーダーの慣れとかの問題も含めて >>865 ぴゅう太だっけか 今なら[ #define もし if( ] [ #define おわり ) ]とかで凌げるのかね?
878 名前:デフォルトの名無しさん mailto:sage [2016/03/30(水) 23:36:59.47 ID:/8cK4WLw.net] Squirrel 3.1 stable
879 名前:デフォルトの名無しさん mailto:sage [2016/03/31(木) 01:03:50.28 ID:zQkq4gxf.net] もし 私 が イケメン なら あなた は モテる 違うなら あなた は 爆発 おわり
880 名前:デフォルトの名無しさん mailto:sage [2016/03/31(木) 02:59:26.18 ID:nACjm5l+.net] >>863 {}の変わりにdo endがあるでしょう
881 名前:デフォルトの名無しさん mailto:sage [2016/03/31(木) 20:47:53.62 ID:nkzU0v9F.net] >>867 1年またぎで RC1 が正式リリースになったのか うっひょーー
882 名前:デフォルトの名無しさん mailto:sage [2016/04/01(金) 06:14:44.27 ID:rWTRiDhV.net] RC1からリリースまでの間に一体何があったのか 間が空くと細かいとこ忘れがちだしちょいと心配なリリースではある
883 名前:デフォルトの名無しさん [2016/04/07(木) 01:07:47.63 ID:dZYAORAr.net] 下記のように、関数群に対して値型の変数を与えるとします。 functionA(value) functionB(value) functionC(value) この時に、値渡しでなく参照渡しにする方法はありますか? 戻り値で返してもらうとかしないと駄目でしょうか?
884 名前:デフォルトの名無しさん mailto:sage [2016/04/07(木) 01:37:09.92 ID:m5Wmq6v/.net] >>872 総合スレだから言語を明記してね Luaだとすると参照渡しはない 戻り値か、テーブルで渡して中身を書き換える 具体的な用途が決まってるなら別解もあるかも
885 名前:デフォルトの名無しさん [2016/04/07(木) 01:49:59.00 ID:dZYAORAr.net] 失礼、総合でしたか。 言語はluaです。 returnを書き忘れそうなんで、 下記みたいなゲッターセッターのクロージャ渡すことにします。 後で拡張するのも楽そうだし。 ありがとうございます。 local value function getter_setter(val) if val != nil then value = val end return value end
886 名前:デフォルトの名無しさん [2016/04/07(木) 23:57:49.14 ID:s1RKY7Zg.net] >>874 変な理由だな。returnを忘れるぐらいだったら代入とかクロージャの呼び出しを忘れる心配もしなければならなくない?
887 名前:デフォルトの名無しさん mailto:sage [2016/04/08(金) 00:31:02.22 ID:NMv2dsC8.net] >>874 参照渡しの主な用途は、複数の返値か、変数の入れ替えだと思うんだが Luaだと自然な記述でどちらも書けるから必要になったことはないなぁ その例なら value = val or value みたいな書き方もできるし
888 名前:デフォルトの名無しさん mailto:sage [2016/04/08(金) 09:00:43.43 ID:QHM1+lud.net] >>875 必須じゃないからreturnいらないし、呼び出し忘れたってかまわないです。 ただ、生存期間中は使いたい場合があるのです。
889 名前:デフォルトの名無しさん mailto:sage [2016/04/08(金) 09:05:33.22 ID:Awm5dteq.net] そもそも基本的なところから勘違いしてるに一票
890 名前:デフォルトの名無しさん mailto:sage [2016/04/08(金) 10:02:48.01 ID:NMv2dsC8.net] 他人が見たら首をかしげるようなスパゲティ・コードになってそう
891 名前:デフォルトの名無しさん [2016/04/08(金) 11:47:10.88 ID:tJM0u/og.net] >>879 もうなってるでしょ >>877 の説明読んでも何言ってるのかさっぱりわかんないし
892 名前:デフォルトの名無しさん mailto:sage [2016/04/08(金) 18:15:07.93 ID:QKtAKDZQ.net] err = f() if err ~= nil then return err end これを参照渡しのように f(seterr) と書くのは合理的だと思う 人間がみんな合理的に行動すればコミュ力は重要ではないかも
893 名前:デフォルトの名無しさん [2016/04/08(金) 21:19:50.62 ID:ZsT2Hxo0.net] >>881 どう合理的なんだ? seterrのエラーチェックしてないからイコールなコードでもないしどういう利点が有るのか説明してよ。 r=assert(f()); のような書き方出来なくなるし
894 名前:デフォルトの名無しさん mailto:sage [2016/04/08(金) 21:32:21.04 ID:QKtAKDZQ.net] インクルードガードのように、中に入ってから#ifndefすれば、外でしなくてもよい
895 名前:デフォルトの名無しさん mailto:sage [2016/04/08(金) 22:34:01.66 ID:NMv2dsC8.net] >>883 日本語でおk JavaScript でいう Promise の reject ハンドラのような意図か? Luaは例外処理 (try-catch) が書き難いから、その手の用途なら必要性は理解できる。
896 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 01:02:16.06 ID:EFL/mBbR.net] catchした変数がすぐ消えてなくなるのが困る 何もしないで続行するのは自由だからそれでいいけど 後で念のため再度エラーチェックする自由も欲しい
897 名前:デフォルトの名無しさん [2016/04/09(土) 02:22:04.50 ID:u1ofpue+.net] 何言ってるのか俺には理解不能だわ…
898 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 07:21:19.22 ID:FoBfIIvs.net] 理解できないのはそういう場面に出くわしたことがないからかと思われ。
899 名前:デフォルトの名無しさん [2016/04/09(土) 07:34:56.67 ID:u1ofpue+.net] >>887 そうかもな、どういう場面か具体的なコードで示してくれるとありがたい 合理的なコードならありふれてるよね? あと例外は複雑になりやすいからGoとかでも例外は排除して多値でエラー返すようにしてる
900 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 08:25:05.90 ID:WDrzc2Wm.net] >>888 むしろLuaもGoも複数の返値を持てることがポイントだと思う。 { 本来の返値, エラー? } のペアを返すという発想で、合理的。 「例外」という別口をわざわざ用意しなくて良くなった。 ただ、All or Nothing のトランザクション等、処理事にエラー値の確認が面倒というのも想像できる。 その場合、Luaの流儀なら >>882 の assert のように、エラー値を例外ジャンプに変換する関数で包むべきなんだろうな。
901 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 08:38:40.76 ID:FoBfIIvs.net] 多値で返すのは当然いいのだけれども、 関数が関数テーブルに構造化されている場合、多値を返すと他の関数と戻り値の仕様がごちゃごちゃになってくるので、引数のレベルで疎結合にしておきたい。
902 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 08:50:59.47 ID:EFL/mBbR.net] Luaがマイナーすぎるおかげで「合理的ならありふれてる」は嘘だとわかった 嘘だとわかる場面に出くわした
903 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 09:01:44.19 ID:WDrzc2Wm.net] >>890 関数テーブルに構造化されていると言うなら、 引数や返値含め、全ての関数は同じ型であるべきだろう。 それぞれが違うなら、それは構造化ではなく寄せ集めだ。動的型言語に甘えてる。
904 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 09:19:31.93 ID:l8xjVqJC.net] 値を返す関数で失敗時に例外を飛ばすのは、それを呼ぶ側では成功時の記述しか しなくていいという理由が大きいと思うが。 タプルを返せるのはステータスを参照型の引数に返すよりは合理的だとは思うが 例外の代用になるかというとそれはちょっと違うと思う。
905 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 09:23:54.21 ID:WCRIlqKI.net] Windows APIみたいに GetLastError 的なものを用意した方が簡単じゃね。 いずれにせよtry-catch-fainalyは標準で欲しいな
906 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 09:43:40.75 ID:EFL/mBbR.net] >>893 失敗時の記述が不要というのはexitでもできる スレッドがあるならスレッドを止めてもいい なので本当の理由は、プロセスやスレッドの起動・再起動が遅すぎるからじゃないか
907 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 11:18:07.50 ID:8JT9QS2I.net] 化石並の言語体系に何を求めているのやら というかオプソなんだし気に入らないなら修正すりゃええやん 他と互換性なくていいならやりたい放題なんだし、 その修正を公開してメジャーになったとしたらバックポートしてくれるかも知れんでよ
908 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 11:28:03.33 ID:WDrzc2Wm.net] >>894 旧来の書き方がしたいならばその通りなんだが、 非同期処理が一般的になってきた昨今では、最良かどうかは分からない。 tryブロック内で処理が同期的に完了するとは限らないから。 タプル返しも、error/pcallも、rejectハンドラ渡しもできるから、現状のLuaで十分汎用性はある。 せいぜい構文糖のためにパーサを改造したくなるくらい。
909 名前:デフォルトの名無しさん mailto:sage [2016/04/09(土) 12:43:02.89 ID:FoBfIIvs.net] >>892 ただのトレードオフ。 どこを重視するかは自由。
910 名前:デフォルトの名無しさん [2016/04/09(土) 13:38:58.58 ID:u1ofpue+.net] >>890 引数にしたら引数の仕様がごちゃごちゃになってくると思うんだけど。 引数を受け取るだけの関数を渡せとなるなら尚更
911 名前:デフォルトの名無しさん [2016/04/09(土) 14:08:41.76 ID:u1ofpue+.net] >>891 別にluaに限定する必要ないよ 引数で返すのが合理的に見えるコードであれば C言語みたいに返値を一つしか返せないからって理由なのは無意味だから外して欲しいけど。 >>893 何もしなかったらそのままアプリが終了するだけじゃん 個人的にはtry catchは要らないかな。Goが例外無くしたのと同じ理由で
912 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 08:27:07.88 ID:k7zVs+aP.net] >>900 確かにGo的なのでいいかもな。 ttp://www.geocities.jp/m_hiroi/golang/abcgo15.html 足りないのはdeferとrecoverかな? deferは__gcメタテーブル使えばできそうだけど標準で欲しいな。 recover はわからん。
913 名前:デフォルトの名無しさん [2016/04/11(月) 08:58:49.07 ID:WTwt1caF.net] >>901 deferのようなものは例外とは関係無いところが理由で欲しいね 途中returnでclose書くの面倒とかそういう所で gcに任せてたらいつ実行されるかわからんし recoverはpcallでいいんじゃないかな
914 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 09:29:17.60 ID:AFQC7gKw.net] try catch は大域脱出に使うから、無くすなら別途機構が欲しいやね
915 名前:デフォルトの名無しさん mailto:sage [2016/04/11(月) 10:19:40.88 ID:UaC8pXHz.net] >>902 Luaのソースを読んでると スコープを抜けるタイミングでクロージャのupvalueを閉じる処理があるから その辺りを改造すると、スコープ終了時に何かする機能が追加できる気がした。
916 名前:デフォルトの名無しさん [2016/04/12(火) 00:55:24.80 ID:JDMXFvBX.net] PC版は今日発売のdarksouls3もLua使ってるのな
917 名前:デフォルトの名無しさん mailto:sage [2016/04/12(火) 01:26:42.97 ID:fKt10c2M.net] たしかクソ1の頃からLuaのクレジットあったぞ
918 名前:デフォルトの名無しさん [2016/04/13(水) 22:16:47.11 ID:PD+aqUpV.net] しかもLuaJITじゃなくて本家Luaなんだな 負荷が高いものはCやC++で書けばいいしやっぱ速度はそれ程重要じゃないのな
919 名前:デフォルトの名無しさん mailto:sage [2016/04/13(水) 22:23:51.85 ID:7YNUgm8C.net] なにかのエディタで補完を効かすことはできますか? 例えば、メッセージテーブルみたいなのをloadfileで読み込んで使いたいです。 MSG.PLEASE_INPUT_ANY_KEY
920 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 08:00:44.86 ID:PaNxRcDi.net] >>904 スコープというのはブロック単位のことだと思うんだけど 確かにブロック単位でdeferができれば便利ですな。 個人的にはdeferという単語はイマイチだけど
921 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 08:31:22.32 ID:PaNxRcDi.net] それとも goto で十分なんだろうか
922 名前:デフォルトの名無しさん [2016/04/14(木) 12:08:10.65 ID:z7Vrjvws.net] >>910 何か勘違いしてない?
923 名前:デフォルトの名無しさん mailto:sage [2016/04/14(木) 17:46:31.38 ID:PaNxRcDi.net] >>911 なぜ勘違いしてると感じたの?
924 名前:デフォルトの名無しさん [2016/04/15(金) 00:30:26.65 ID:MuKGbCph.net] >>912 突然gotoが出てきたから
925 名前:デフォルトの名無しさん mailto:sage [2016/04/15(金) 04:18:23.81 ID:+t9YcmSi.net] 頭で思ったことを全て言語化してないから唐突な感じになる でも思ったことをそのまま喋ったら明らかな失言や暴言や嘘も増える 脅迫や詐欺みたいな発言を連発するよりは、少し意味不明な方がマシじゃないか
926 名前:デフォルトの名無しさん mailto:sage [2016/04/15(金) 07:45:58.29 ID:Hp4CXrU7.net] >>913 だってさ、たとえば ::finally:: というラベルを作って、 if エラー発生 then goto finaly end とかやればいっしょじゃね?
927 名前:デフォルトの名無しさん [2016/04/15(金) 08:24:11.24 ID:uS8f5f96.net] >>915 全然違う。それだと途中でreturn出来ないし、しないように注意しなければいけない。 コーデイング規約でreturnはfinallyラベルの後の一つだけにするって定めるつもり? それに後処理が必要になるものはそのすぐ近くにそれを書きたいもの。
928 名前:デフォルトの名無しさん mailto:sage [2016/04/15(金) 08:41:49.74 ID:+t9YcmSi.net] 1. finallyに行きたくなければreturn出来る 2. 行きたくない人などいるはずがないからreturn出来ない
929 名前:デフォルトの名無しさん mailto:sage [2016/04/15(金) 09:10:31.83 ID:9cTSD0EJ.net] >>915 「エラー処理をどうするか」なら良いのだけれど、話の流れは 「エラー処理を忘れないようどうするか」だったと思うんだ。 Luaに限れば、必ず後始末したい場合は pcall が必須なのがメンドイ。
930 名前:デフォルトの名無しさん mailto:sage [2016/04/15(金) 09:56:06.34 ID:Hp4CXrU7.net] returnの話も、pcallの話も全て理解できるよ。 ただそういうのは織り込み済みの上で gotoで足りると中の人は考えてるのかもしれないなぁ、ということ。 これって勘違いというほどのもの?
931 名前:デフォルトの名無しさん mailto:sage [2016/04/16(土) 15:05:29.04 ID:ls9rc/e1.net] そもそもエラー復帰処理を組み込み言語側に書かせるべきなのだろうか? 例えばホスト側が「文字列を丸ごとファイルに書き出す」機能を公開すれば スクリプト側で「失敗したらファイルを閉じて削除して〜」などと考えず済む。 汎用言語なら細かい粒度のAPIのほうが小回りが利くけど 所詮組み込み言語なんだから「どのように」ではなく「何をしたい」単位で記述させたほうが良い。
932 名前:デフォルトの名無しさん [2016/05/01(日) 13:23:19.66 ID:tKi6j9CT.net] 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、 BitTorrentがオープンソースで開発されています 言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか? Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします https://twitter.com/Lyrise_al ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw The Covenant Project 概要 Covenantは、純粋P2Pのファイル共有ソフトです 目的 インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します 特徴 Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW) 接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です DHTにはKademlia + コネクションプールを使用します UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります) 検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません 0
933 名前:デフォルトの名無しさん [2016/05/15(日) 09:01:08.96 ID:WYUaDR6g.net] luabindオリジナルは更新止まってて5.2すら使えないしfork多すぎてどれ使えばいいか解らん
934 名前:デフォルトの名無しさん mailto:sage [2016/05/15(日) 12:38:52.61 ID:llz61aSC.net] プログラマなら自分で作っちゃいなYO! 車輪の再発明?知らんな!
935 名前:デフォルトの名無しさん [2016/05/15(日) 12:41:10.00 ID:WYUaDR6g.net] >>923 それだと意味が無いんですよ
936 名前:デフォルトの名無しさん mailto:sage [2016/05/15(日) 12:42:54.01 ID:ZVMufeYJ.net] 自分の1年前のバインダ引っ張り出したら目を背けたくなるコードで 結局リファクタリングしたなんてこともあったな 効率はともかく他人のコードのリファクタリングも結構勉強になるし とりあえず無難そうなのを選んで落としてデッドコピーしてみたら?
937 名前:デフォルトの名無しさん [2016/05/15(日) 13:13:01.22 ID:WYUaDR6g.net] 色々なlua binder使ったときのベンチマーク書いててluabind使うこと自体が目的なんですよね なので、ぱっと見修正量多いから自分で修正したくないしメンテもしたくないから何処かから引っ張ってこれるのが理想なんですけど 欲を言えば5.1以降全部に対応してたらいいんですが…
938 名前:デフォルトの名無しさん [2016/05/15(日) 13:30:11.07 ID:iV9cVQst.net] kaguyaが使いやすそう
939 名前:デフォルトの名無しさん mailto:sage [2016/05/17(火) 15:46:15.62 ID:WJtZW0Wv.net] autotouchで音ゲーマクロを組みたいと思ってるんですが タップからタップまでをusleepで停止させると後半になるにつれ目的の時間から遅れてしまいます もちろん処理にかかる時間をはusleepから引いています 処理を停止させる命令はusleepの他にはないでしょうか 遅れる原因が何故だか分かりますか?
940 名前:デフォルトの名無しさん mailto:sage [2016/05/17(火) 16:16:50.99 ID:awF8sDTJ.net] ");
//]]>-->941 名前:test/read.cgi/tech/1362895832/928" rel="noopener noreferrer" target="_blank">>>928 とりあえず >>716 に似たような質問があるな。 「目的の時間」と「処理にかかる時間はusleepから引いて」あたりを 詳しく説明してもらわないとコメントのしようがないと思う。 現状の処理が適切かわからないし、むしろ音ゲー側の時間がずれている恐れも。 [] [ここ壊れてます]
942 名前:デフォルトの名無しさん mailto:sage [2016/05/17(火) 16:37:01.75 ID:WJtZW0Wv.net] >>929 過去にあったんですね、遡ってみます os.clockでタップ処理にかかる時間を計ってusleepの停止時間からマイナスしてます
943 名前:デフォルトの名無しさん [2016/05/17(火) 17:11:06.80 ID:aW8j1xwW.net] >>930 前にも書いたけどos.clockは実際の経過時間ではなくプログラムが使ったCPUの時間を返す sleepとかで待ってる間は増えないし、例えばそのプログラムで二つのコアが100%使われてる場合は実時間の二倍増える Cのclock関数で実装されていて、それはLinuxだとclock_gettimeのCLOCK_PROCESS_CPUTIME_IDの返す値が使われてる。
944 名前:デフォルトの名無しさん mailto:sage [2016/05/17(火) 17:24:24.06 ID:WJtZW0Wv.net] >>931 タップ処理ににかかる時間を計るのに使ってます 問題の待機時間には使ってないです コアが2つ使われてたら2倍っていうのは気になりますが前半は目的のタイミングでタップされているので問題ないですかね…
945 名前:デフォルトの名無しさん mailto:sage [2016/05/17(火) 17:54:24.20 ID:awF8sDTJ.net] >>932 タップ処理にかかった実時間とCPU時間が等しい保証が無いという意味。 君が欲しいのは「実時間」だが、os.clockは「CPU時間」だから加減算できない。 身長と体重の値を足すようなもの。 (Luaからデフォルトで使える) 標準Cだけだと1秒より良い精度は無理と言われてる。 stackoverflow.com/questions/361363/how-to-measure-time-in-milliseconds-using-ansi-c | There is no ANSI C function that provides better than 1 second time resolution autotouch APIに高精度タイマーは用意されてないかな? Lua から clock_gettime 等を呼ぶモジュールを加えるのも難しいか? なお、Windowsのclockは(あえて)実時間を返すようだ。誤解が多い原因かもしれない。 https://msdn.microsoft.com/library/4e2ess30.aspx | The elapsed wall-clock time since the start of the process | Note that this is not strictly conformant with ISO C99
946 名前:デフォルトの名無しさん [2016/05/17(火) 20:04:41.45 ID:aW8j1xwW.net] >>933 補足サンキュー しかしCPU時間返されてもベンチマークぐらいしか使い道ないよね。 でも文句はそれしか用意してない標準Cに言うんだ。Luaは高い移植性のために標準Cから外れる物は極力実装しないんだ
947 名前:デフォルトの名無しさん mailto:sage [2016/05/18
] [ここ壊れてます]
948 名前:(水) 08:00:35.07 ID:6L3zAH6b.net mailto: そもそもCPUがきっちりTSS(スレッドってかタスク)への突入から離脱までに使った時間を コア毎に記録する機能でも積んでなきゃ、 目安になりそうな計測をして加算し続けるくらいしか現実的な手段ないからね マルチメディアタイマ動かすスレッドを裏側に置いてポーリングするか 別のコンテキストでタイマのタイムアウト毎にスクリプト起動するとかしかないんじゃないかな (メインのスレッドと同じコンテキストで実行しちゃダメだよ) [] [ここ壊れてます]
949 名前:デフォルトの名無しさん mailto:sage [2016/05/18(水) 09:46:49.35 ID:k2SHVqf6.net] clockってプロセッサ使用時間で課金していた時代の名残じゃねーの? 名前に騙されて、古代の課金処理を現代のプログラムで使うからおかしくなるんだよ
950 名前:デフォルトの名無しさん mailto:sage [2016/05/18(水) 15:47:48.90 ID:bch1M3Ro.net] 返事が遅れてしまいすみません 皆さんありがとうございます autotouchのAPIになさそうです autotouchでclock_gettime使ってみます
951 名前:デフォルトの名無しさん mailto:sage [2016/05/25(水) 01:28:46.05 ID:PQF3VaRV.net] この業界に限り車輪の再発明はさほど問題でない あーだこーだ探したり高いライセンスを払うより 1から自分で作ったほうが速い場合も多々ある
952 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 10:31:37.40 ID:lpov0tDn.net] メモリが潤沢な環境でのゲーム向けに0から作れば 組み込みを意識してVM自体をなるべくROMにおいやったり 定数になるべくデータを追いやったりしてRAMやスタックの消費量抑えたりみたいな細工をする事無く 素直でわかりやすく、高速なコード書き放題だもんな
953 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 10:49:26.89 ID:LqK2D4Ix.net] 自分で作ったほうが速い場合は少ないだろうが 自分で作ったほうが早い場合はありそうだな
954 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 18:41:47.35 ID:iZpcR2mh.net] ハード面も自分でカスタマイズできるのが最善だけど なかなかそうはいかないよね
955 名前:デフォルトの名無しさん mailto:sage [2016/05/26(木) 22:46:21.63 ID:kkdzC4Pz.net] FPGAがCPUみたいにソケット化して1個単位で買えるようになったらいいなぁ
956 名前:デフォルトの名無しさん [2016/05/27(金) 03:25:00.38 ID:fvoGjXwU.net] スレ間違えてない?
957 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 20:56:31.07 ID:J6Jy3eBO.net] mrubyの事はココでおk? gr-sakura2ボードが新たに発売されたんでmrubyやろうと思ったら、ライブラリとかv2なっててどうしようかと。 mruby入りスケッチビルド通ったんで焼いてもだんまりだわ。デバッグする方法あるのかな(汗
958 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 22:16:27.31 ID:ItE+il1R.net] mrubyはここでもいいと思うが gr-sakuraは別の意味の組み込みじゃなかろうか
959 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 13:17:30.66 ID:Cceun6yB.net] Lua 5.3.3 released Luaのメンテナンス・ポリシーだと最新版しかバグ修正されないのね 最近見つかった昔からあるバグでも5.3しか修正版が出ない diff形式で公開されているから自分でどうにかしろってことか
960 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 15:13:34.60 ID:1jTwDXeQ.net] どこかのOSみたく互換性無視ってわけじゃないし
961 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 10:50:09.10 ID:8vn3zKAG.net] グローバル関数ではなく、メンバー関数をc#から呼ぶにはどうしたらいいでしょうか? function Hoge return{ Foo=function end }; end みたいなクラスです
962 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 10:50:57.07 ID:8vn3zKAG.net] NLuaを使っています
963 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 17:55:08.38 ID:XziS+43H.net] 使ってないからよくしらんけど var foo = ... foo["Foo"](); とかでいけるんじゃない?
964 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 18:00:29.69 ID:8vn3zKAG.net] >>950 キャストしてCall呼び出したらいけました
965 名前:デフォルトの名無しさん mailto:sage [2016/07/16(土) 14:37:12.17 ID:ClCwwHut.net] CRuby使いだがインタプリタごと配布するにはでかすぎるのでLua5.3.3とmruby1.2.0を試してみた ひとまずデバッグ用にバイナリ文字列をHexダンプするコードを書いてみる Lua5.3.3(UPX圧縮後で250,064 Byte) path = "C:/Windows/system32/calc.exe" f = io.open(path, "rb") f:seek("set", 0) b = f:read(512) f:close() io.write("\"" .. path .. "\" / " .. string.len(b).."Byte Dump...\n") i = 1 l = "" repeat w = string.sub(b, i, i + 15) for c in string.gmatch(w, ".") do l = l .. string.format("%02X ", string.unpack("B", c)) end l = l .. string.rep(" ", 3 * (16 - string.len(w))) l = l .. " " l = l .. string.gsub(w, "[^\x20-\x7e]", ".") l = l .. "\n" i = i + 16 until string.len(b) + 16 < i io.write(l)
966 名前:デフォルトの名無しさん mailto:sage [2016/07/16(土) 14:41:48.88 ID:ClCwwHut.net] ・・・mrubyの方が403で張れないんだけどw
967 名前:デフォルトの名無しさん [2016/07/19(火) 21:09:20.86 ID:5Ru68Qww.net] require("hoge"); func=function()end; と hoge={ func=function()end }; の違いって何ですか?
968 名前:デフォルトの名無しさん [2016/07/19(火) 22:10:30.90 ID:Uci7C8fw.net] 言語が書かれてないけどLuaということにして話を進めると 上 hogeというモジュールを読み込む funcというグローバル変数に何もしない関数を代入する 下 funcという何もしない関数をもつテーブルを作成しhogeというグローバル変数に代入する
969 名前:デフォルトの名無しさん [2016/07/19(火) 22:35:55.44 ID:5Ru68Qww.net] つまりモジュールが読み込まれると、 func=function()end; hoge={func=func}; をするって事?
970 名前:デフォルトの名無しさん [2016/07/19(火) 22:51:15.91 ID:Uci7C8fw.net] require(’module_name’)としたとき何を行うかはその読み込んだモジュールしだい 最近のものはグローバル環境を汚すのを嫌って勝手に代入せずテーブルを返すのが推奨されているから module=require(’modname’) って書く
971 名前:デフォルトの名無しさん [2016/07/19(火) 22:54:48.00 ID:5Ru68Qww.net] >>957 何となく分かった気がする ありがとう
972 名前:デフォルトの名無しさん [2016/08/02(火) 15:28:41.79 ID:vpqNpIG1.net] 継承って local self=BaseClass.new(); self.hoge=0; return setmetatable( self, { __index = Class } ); でいいんでしょうか? 色々な方法が書いてあってどれをすればいいか分かりません
973 名前:デフォルトの名無しさん mailto:sage [2016/08/02(火) 21:42:21.39 ID:rXn2IC8I.net] >>959 色々な方法があるから、使うフレームワークが推奨する方式に従うべき 特にそういう縛りがなければ自分で考えてみてもいいが 汎用性が高いのはJavaScriptと同じ方式だとは思う
974 名前:デフォルトの名無しさん mailto:sage [2016/08/02(火) 22:00:37.77 ID:qJ2YHFft.net] その色々な方法ごとに新しい言語を作るのが普通 一つの言語で色々やってるのは珍しいが効率は良い
975 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 08:06:53.16 ID:8fjgpLNn.net] 効率は悪いだろう? 開発者間で連携もしづらい まぁLuaだと組み込み環境ごとに全く別の言語だと思ったほうが良いんだろうけど
976 名前:デフォルトの名無しさん [2016/08/04(木) 09:23:50.33 ID:Mm46IUtm.net] https://www.lua.org/pil/16.2.html 本家に書いてあるやん
977 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 20:01:15.52 ID:aMt1KCpE.net] >>963 お手本を作ってクローンさせる方式だね 一般的なクラスとインスタンス方式にこだわりがなければLuaらしいやり方だ
978 名前:デフォルトの名無しさん [2016/08/05(金) 22:47:51.66 ID:K6ts8EaK.net] 継承のやり方は分かりました ありがとうございます もう一つあるんですが、動的に引数を指定したり複数の戻り値を返したりすることは出来ますか? hoge(1,2,3)と通常は呼び出す物をhoge({1,2,3})と呼び出したり、 return 1,2,3; を return {1,2,3} のように配列を使って動的に指定したいです
979 名前:デフォルトの名無しさん [2016/08/05(金) 23:10:53.81 ID:K6ts8EaK.net] unpackで出来ました すみません
980 名前:デフォルトの名無しさん mailto:sage [2016/08/26(金) 15:28:57.81 ID:BDiBxktH.net] luaL_requiref(L, ...) の次にlua_pop(L, 1) を入れるのはなぜですか?
981 名前:デフォルトの名無しさん mailto:sage [2016/08/26(金) 17:19:18.70 ID:LCNVy+4G.net] >>967 luaL_requirefはロードしたモジュールをスタックに残すから それをスタックから取り除いている LuaのC APIはスタックを意識する必要がある マニュアルにある [-0, +1, e] のような箇所で説明されている
982 名前:デフォルトの名無しさん mailto:sage [2016/08/28(日) 07:51:02.13 ID:O603KyWm.net] >>968 ありがとうございます。 スタックから取り除いても大丈夫(モジュールは使える)ということなのでしょうか? もしそうならスタックに積まれるのはなぜなのですか?
983 名前:デフォルトの名無しさん mailto:sage [2016/08/28(日) 14:07:28.83 ID:A/8rNEYu.net] >>969 Luaの疑似コードだと local m = require("module") m = nil のような動作だと考えてくれ。 moduleが何かを返すタイプならスタックに積まれた m を使うことになるだろうし グローバル変数を追加するタイプなら取り除いても(グローバル経由で)使えるだろう。
984 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 18:22:57.78 ID:9ixLGi86.net] >>970 よく分かりました。ありがとうございました。
985 名前:デフォルトの名無しさん mailto:sage [2016/09/08(木) 18:19:09.71 ID:GHpvw+VU.net] 少しスレタイとは離れるかもしれないんだけど、開発環境について教えて欲しい 今まではメモ帳(付属のじゃないよ)だけで一つか複数のファイル開いてシコシコ書いてたんだけど、 数百から千くらいのファイル群のゲームの解析というか関数なんかの検索に、メモ帳では太刀打ちできなくて困ってます 出来たら沢山開けるメモ帳的な簡易的な物が良いんだけど、OSにインスコして、関連付けもしてくれちゃって・・・っていうのはむしろ要らない、アーカイブ展開したらすぐ使えるのがいいです よろしくお願いします。
986 名前:デフォルトの名無しさん [2016/09/08(木) 18:46:36.03 ID:2gFs3OWY.net] VSCodeおすすめ OS非依存だからwin以外でも使える
987 名前:デフォルトの名無しさん mailto:sage [2016/09/08(木) 19:45:27.86 ID:oP5NpzJh.net] Atom.io
988 名前:デフォルトの名無しさん mailto:sage [2016/09/08(木) 21:07:48.97 ID:GHpvw+VU.net] 即レスありがとうございます。試してみます
989 名前:デフォルトの名無しさん mailto:sage [2016/09/09(金) 21:43:20.24 ID:++lP9HIx.net] Luaで書かれたPHPインタプリタってないかな
990 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 00:03:26.44 ID:mCfQwN8m.net] なんでそんな無駄なことするの
991 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 01:31:15.83 ID:1lwBEIiL.net] >>977 FlashAirでPHPを実行できないかなーとか考えた
992 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 06:33:19.86 ID:URrhv4S0.net] ライブラリの比重が大きな言語に対して構文解釈だけができても嬉しくない
993 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 09:08:02.15 ID:CKZv9HiE.net] あってもFlashAirは内部メモリが小さいから無理っぽい
994 名前:デフォルトの名無しさん [2016/09/10(土) 10:14:04.84 ID:32Nzsdc+.net] FlashAirってLua動かせるのかよ
995 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 13:14:30.12 ID:1lwBEIiL.net] >>980 そうか、残念 >>981 最新モデルのW-03のみだけどLuaインタプリタを内蔵している FlashAir Developers - APIガイド - Lua機能 ttps://flashair-developers.com/ja/documents/api/lua/ FlashAirのプログラミングにも使えるしCGIとしても使える
996 名前:デフォルトの名無しさん [2016/09/10(土) 13:27:13.60 ID:32Nzsdc+.net] >>982 ただのPCに転送できるSDカードと思ってたわ よくあのサイズで内臓出来たな…技術凄い
997 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 13:51:44.5
] [ここ壊れてます]
998 名前:9 ID:1lwBEIiL.net mailto: >>983 興味があるなら>>982 のWebサイトのドキュメント→本の中にあるFlashAir Doujinshi 2を読んでみると良いよ 電子工作メイン(FlashAirのプログラミング)だけど裏話の他Luaによるプログラミング例がいくつか載っている [] [ここ壊れてます]
999 名前:デフォルトの名無しさん [2016/09/10(土) 14:08:02.65 ID:32Nzsdc+.net] コルーチン使えないのか ゲームじゃないからなくてもいいだろうけど
1000 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 21:52:55.71 ID:URrhv4S0.net] Luaのコルーチンってそんなにメモリ喰うイメージないけどな 変数空間を共有してるから増分はコールスタック程度しかないはずだが
1001 名前:デフォルトの名無しさん [2016/09/10(土) 22:08:42.97 ID:IwLF9FUl.net] C#の場合はコンパイル時に普通のクラスになるけどLuaはコルーチンをVMが対応しているん?
1002 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 22:55:58.05 ID:URrhv4S0.net] C#とは違うね。Lua VMはコルーチンを動かす処理そのものだから メインスレッド = グローバル変数テーブル + コルーチン でできてる
1003 名前:デフォルトの名無しさん [2016/09/10(土) 23:32:04.82 ID:IwLF9FUl.net] >>988 糖衣構文ではなかったのか 何故かコルーチン関係がキーワードじゃなくてメソッドだし
1004 名前:デフォルトの名無しさん mailto:sage [2016/09/20(火) 23:56:31.17 ID:8JrnwUlq.net] LuaでOO的なコーディングをする場合にメソッド内でローカル変数って使えないんですかね? >type test.lua CLASS = { new = function() x = 0 return setmetatable({}, {__index = CLASS}) end, func1 = function() print(x) end } obj = CLASS.new() obj.func1() この場合のxはインスタンス変数ですよね? >luajit test.lua 0
1005 名前:デフォルトの名無しさん mailto:sage [2016/09/21(水) 07:08:55.54 ID:8q78VamI.net] >>990 その書き方だとグローバル変数の x を見にいってる Luaはselfを省略できないから { ..., func1 = function(self) print(self.x) end } にするか、もしくは { } の外で : を使う function CLASS:func1() print(self.x) end ところで次スレも同じタイトルでいいの? LuaはともかくSquirrelは今や…
1006 名前:デフォルトの名無しさん mailto:sage [2016/09/21(水) 18:50:26.73 ID:eYdYUvGQ.net] じゃあmrubyで
1007 名前:987 mailto:sage [2016/09/22(木) 03:54:45.83 ID:Ru9TIBDm.net] >>991 Luaのデフォルトのスコープはグローバルなんか・・・ というかこの統一性がない仕様はすっきりしないなぁ string.to_number_ulong = function(self) ←これは意図したとおりに使える 〜 end number.to_binary_ulong = function(self) ←これはnumberが無いと怒られて動かない 〜 end 5.1だとビット演算がないからこのような変換も手間だし
1008 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 06:26:50.65 ID:t8yALPnl.net] >>993 その例から「意図」が読み取れないから何とも言えない 統一性がない仕様もなにも、自分で定義している関数に不満を漏らす意味がわからない >>990 も CLASS = { ... } はあくまで連想配列の定義だから 連想配列要素の定義中に兄弟要素の変数を参照しないのは言語に限らず当たり前だぞ
1009 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 13:55:49.27 ID:62PEa5hX.net] 5.1はdoubleとintを使い分けるよりintを捨てた方が統一性があると判断したんだな だからビット演算がない 同様に、連想配列とオブジェクトを統一するためオブジェクトを捨てる でも連想配列とdoubleのどっちかを捨てるのは無理だからそこは統一性がない
1010 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 14:25:23.06 ID:t8yALPnl.net] 意味がわからん ビット演算は5.3で採用されたし、doubleとintはスクリプトからは意識されない 連想配列と統一するために捨てたオブジェクトとは何のことだ? 連想配列とdoubleの統一性のなさとは何だ?メタテーブルがあり演算子の定義もできるのに
1011 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 14:41:12.52 ID:62PEa5hX.net] ほんとオブジェクトって何のことだろうね 意味がわからんから捨てる
1012 名前:987 mailto:sage [2016/09/22(木) 14:44:50.84 ID:Ru9TIBDm.net] >>994 判りにくくてスマン。
1013 名前:number.to_binary_ulongは定義自体が出来ないです >type test.lua string.to_number_ulong = function(self) --←これは定義できる --(略)4バイトの文字列をunsigned longに変換するコード end number.to_binary_ulong = function(self) --←これは定義できない --(略)unsigned longを4バイトの文字列に変換するコード end s = "\226\167\100\53" print(s:to_number_ulong()) --バイナリ文字列を数字に変換(意図した動作) n = 895789026 print(n:to_binary_ulong()) --こんな感じで使いたい。数字をバイナリ文字列に変換 >luajit test.lua luajit: test.lua:4: attempt to index global 'number' (a nil value) stack traceback: test02.lua:4: in main chunk [C]: at 0x004020e0 リファレンスマニュアルがショボいためにググってばっかりで捗らん・・・ [] [ここ壊れてます]
1014 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 15:27:10.87 ID:62PEa5hX.net] 歴史的に、演算子といえばnumberの演算子しかなかった 昔の言語にはstringの演算子がなかったからstringには関数が必要 numberにはあまり必要なかった その影響で string.* という関数は色々あるが number.* は一個もない
1015 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 15:31:44.15 ID:t8yALPnl.net] >>998 ああそういう意味か "string" は文字列型のメタ __index にも登録してあるから、それでいける | The string library ... also sets a metatable for strings ... "number" は初期設定では存在しないが、自分で定義して lua_setmetatable (in C) なり debug.setmetatable (in Lua) で 数値型のメタ __index として登録すれば、やりたかった動作になるだろう このあたりは伝統的にnumberのメソッドよりも、mathモジュールやstring.formatで賄うことが多かったから仕方ない ホスト側の作成者の美的センスで適当に改造すべき箇所なんだろうな
1016 名前:987 mailto:sage [2016/09/22(木) 16:31:47.44 ID:Ru9TIBDm.net] >>1000 ありがとう。リファレンスマニュアルにも使用例がないので 試行錯誤してこんな感じになった。まぁ動けばいいか >type test.lua number = {} debug.setmetatable(0, {__index = number}) number.to_binary_ulong = function(self) --(略)unsigned longを4バイトの文字列に変換するコード end n = 1684234849 print(n:to_binary_ulong()) >luajit test.lua abcd
1017 名前:987 mailto:sage [2016/09/22(木) 18:13:01.03 ID:Ru9TIBDm.net] >>996 の >メタテーブルがあり演算子の定義もできる を見て思うところがあったのでリファレンスマニュアルを見たけど__addくらいしか書いていなくて何を定義できるのか判らない ググってみるとメタテーブルチュートリアル的なのが出てくるけど[]とか[]=とかの定義は出来ないっぽい? これを定義できると配列みたいな動作をするオブジェクトの使い勝手が良くなるんだけどな
1018 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 18:24:14.43 ID:t8yALPnl.net] 新スレ echo.2ch.net/test/read.cgi/tech/1474536226/l50
1019 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています