【Lua】組み込み系言語総合 その6【Squirrel】at TECH
【Lua】組み込み系言語総合 その6【Squirrel】 - 暇つぶし2ch159:デフォルトの名無しさん
13/07/12 NY:AN:NY.AN .net
>>155
>昔、Pascalのbegin/endを、C言語で#defineしようとした人がいたらしい

マクロの使い方としてK&Rにも書かれてる方法であり、取り立てて驚くような話ではない。

160:デフォルトの名無しさん
13/07/12 NY:AN:NY.AN .net
条件付きにて同意する

161:デフォルトの名無しさん
13/07/12 NY:AN:NY.AN .net
そもそもスクリプトでmallocやfreeを直接使うような事ってある?

162:デフォルトの名無しさん
13/07/13 NY:AN:NY.AN .net
Cの関数を忠実に再現するツールを使うと、スクリプトでmallocやfreeを使う事になる
忠実にしたくない場合はツールに丸投げできないと考えるのが自然

163:デフォルトの名無しさん
13/07/15 NY:AN:NY.AN .net
そういや、CriScriptって、今どうなってるんだろう?

164:デフォルトの名無しさん
13/07/15 NY:AN:NY.AN .net
>>162
CriScript作ってた人がgoogleかどっかに入ってプロジェクト終了、じゃなかったっけ

165:デフォルトの名無しさん
13/07/16 NY:AN:NY.AN .net
そこそこ良いものだったような気もするが、残念な話だな

166:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/07/27 NY:AN:NY.AN .net
あるある
その手の処理には弱参照が必要

168:デフォルトの名無しさん
13/07/27 NY:AN:NY.AN .net
AngelScript2.27.0のWorkInProgressに、「weak references」とかあるから、次のバージョンだと解決できそう。

169:デフォルトの名無しさん
13/07/29 NY:AN:NY.AN .net
AngelScript 2.27.0 is out - AngelCode - GameDev.net
URLリンク(www.gamedev.net)

・デリゲートを作ったりデリゲートの情報を取得できる
・関数の引数や戻り値がconst参照か調べられる
・GCが把握しているオブジェクトを列挙してパフォーマンス改善に役立てられる
・弱参照 スクリプトのクラスでもアプリケーションのクラスでも使える

170:デフォルトの名無しさん
13/07/29 NY:AN:NY.AN .net
Angelscriptは参照カウントとGCを併用しているから
一応GCフラグのあるクラスであれば、弱参照を使っていなくて循環参照になっても、最終的にGCで解放されるはずなんだが
弱参照を使っていればもっと早いタイミングで解放されるので使うといいと思ふ

171:デフォルトの名無しさん
13/07/31 NY:AN:NY.AN .net
AngelScript2.27.0でやってみたが、循環参照の問題解決できなかった。
弱参照やら

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

の機能を利用してみたがダメだった。
C++側でasIScriptFunctionを保持するやり方を間違えているのかも知れない。

172:デフォルトの名無しさん
13/08/06 NY:AN:NY.AN .net
AS、さらに調べてみたところ、

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

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

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

場合は大丈夫っぽいんだが、さてどうしたものか。

173:デフォルトの名無しさん
13/08/07 NY:AN:NY.AN .net
いや、C++のクラスを弱参照かGCフラグに対応させろよ?

174:デフォルトの名無しさん
13/08/07 NY:AN:NY.AN .net
弱参照って何?

175:デフォルトの名無しさん
13/08/07 NY:AN:NY.AN .net
ぬるぽするかもしれない可能性が存在することが保障されてるぽ

176:デフォルトの名無しさん
13/08/07 NY:AN:NY.AN .net
>>172
一応、asBEHAVE_GET_WEAKREF_FLAGを使って弱参照にしてみたり、
asOBJ_GCつけてメソッド入れてやってみたんだけど上手く行かないんだ。
asIScriptFunctionが内部で持ってるデリゲート用のオブジェクトが上手く解放できないみたい。

177:デフォルトの名無しさん
13/08/08 NY:AN:NY.AN .net
コードも無いのに分からない

循環参照にはならない筈なのに解放漏れがあるならそれは
何処かで参照カウント減らして解放するのを忘れているだけなんじゃないか
としか言えない

178:デフォルトの名無しさん
13/08/08 NY:AN:NY.AN .net
 
\\
\\\
\  ∧_∧
   ( ´・ω・)
   G   と) ガッ >>174
    ヽ⌒)、 \人∧__∧
      ̄ (_) >`д´)')
         ∨つ   /

179:デフォルトの名無しさん
13/08/18 NY:AN:NY.AN .net
AngelScript 2.27.1 is here (so soon? yes)
URLリンク(www.gamedev.net)

バグフィックス
メモリフットプリントの減少
void expressionで関数の出力引数を省略できる
デフォルト引数を匿名に出来る

180:デフォルトの名無しさん
13/08/29 NY:AN:NY.AN .net
素人だけど勉強がてらにAngel Scriptの解説見てたらめっちゃコンパイル言語でワロタ

181:デフォルトの名無しさん
13/08/30 NY:AN:NY.AN .net
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

182:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN .net
enum大好きな俺はAngelScriptも大好き。

183:デフォルトの名無しさん
13/09/01 10:45:33.66 .net
コード補完とか開発環境の恩恵受けられる組み込みスクリプトってある?

184:デフォルトの名無しさん
13/09/01 12:16:25.91 .net
開発環境の恩恵と言えば最近はJavaScript (V8)じゃないの?

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

むしろ使い慣れた開発環境・エディタが対応しているかの方が重要だと思う

185:デフォルトの名無しさん
13/09/01 13:52:27.44 .net
luaにはIDEがあるけど、他でも探せばあるんじゃないか

186:デフォルトの名無しさん
13/09/01 15:20:57.01 .net
>>182
VS&C#にC#だな。

187:デフォルトの名無しさん
13/09/01 15:56:48.03 .net
30億のデバイスで走るJavaを差し置いてC#が組み込み言語とか!

みたいなツッコミでOK?

188:デフォルトの名無しさん
13/09/01 16:01:13.71 .net
30億のデバイスでデバッグできるね(ニッコリ)

って感じでさらに脱線させればOK?

189:デフォルトの名無しさん
13/09/01 18:35:17.50 .net
なにがライトワンスランエニ�


190:zェアだよ 絵空事ばかり 世迷い言に人々を巻き込みやがって 太平妖術だよ



191:デフォルトの名無しさん
13/09/01 18:36:18.64 .net
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン

192:デフォルトの名無しさん
13/09/01 20:38:37.26 .net
JavaScriptは言語仕様が黒魔術のようだ

193:デフォルトの名無しさん
13/09/02 00:35:21.08 .net
AngelScriptはほぼC++かC#なんで、C++やC#用の補完とか使えた気がする。

194:デフォルトの名無しさん
13/09/02 22:27:39.45 .net
SWIGってLuaでも使えたのか知らなかった
ラッパーとインタフェースの自動生成が捗る?

195:デフォルトの名無しさん
13/09/02 22:41:22.04 .net
そもそもSWIGで捗った記憶がない
最近のは知らんが

196:デフォルトの名無しさん
13/09/04 16:57:01.01 .net
SWIGだめなん?

197:デフォルトの名無しさん
13/09/04 17:20:42.93 .net
パターンファイル作ってクソ重いコンパイルでコケて修正して…
を繰り返してるうちに嫌になるな

生成されたシンボル名が1000文字突破してるの見て
めまいがしたのもいい思い出だ

198:デフォルトの名無しさん
13/09/04 18:12:40.97 .net
この手のタイプは元ソース次第だね
luabindより楽なケースもあればバインダ使わず生で書いたほうが楽なケースもある
その上で、SWIGを選択するような状況でダメだというなら
他の選択肢はtoluaぐらいしかない
で、SWIGとtoluaを比べると
冗長なのはデメリットだが依存せずピュアコードを吐くのはメリットなので好みの問題として
多言語対応でつぶしが効くという1点においてSWIGの勝ちかなと思うよ

199:デフォルトの名無しさん
13/09/10 19:15:01.41 .net
userdataってなんだ・・・

200:デフォルトの名無しさん
13/09/10 19:36:31.38 .net
好きなもの入れちゃっていいんだよ?

201:デフォルトの名無しさん
13/09/11 08:36:58.96 .net
ズブ…

202:デフォルトの名無しさん
13/09/11 16:59:49.05 .net
アーッ!

203:デフォルトの名無しさん
13/09/11 22:45:42.73 .net
UserDataは、スクリプトで操作したいオブジェクトのポインタとか入れるのが一般的かね。

204:デフォルトの名無しさん
13/09/11 22:51:01.71 .net
Cでやったほうが速いとか外部ライブラリ用の構造体へのポインタを突っ込んだり

205:デフォルトの名無しさん
13/09/11 23:26:48.79 .net
ゲームの殆どをAngelScriptで組み
時間のかかる処理だけをネイティブコードに
の方が開発しやすいかもしれない

206:デフォルトの名無しさん
13/09/11 23:30:18.16 .net
何と比較してだ

207:デフォルトの名無しさん
13/09/14 03:21:57.79 .net
横からだが、C++オンリーで組むのと比べて、って事じゃね

208:デフォルトの名無しさん
13/09/15 07:46:57.16 .net
スクワールはもういらんこなの?

209:デフォルトの名無しさん
13/09/15 08:12:11.62 .net
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   

210:デフォルトの名無しさん
13/09/15 12:52:09.81 .net
Angelscript見てるとdllで良いんじゃないかと思えてくる
てかそういう用途としてdll使うのってもう流行ってないんかな?(昔のエロゲとか)
呼び出し元を変更したらコンパイルし直しになるのはスクリプトだって同じだし、バインダも必要ない。
もっぱらLGPLの回避法としてしか見なくなった

211:デフォルトの名無しさん
13/09/15 13:28:21.98 .net
ライターにC++で直接書けとでも?

212:デフォルトの名無しさん
13/09/15 14:55:12.13 .net
ライターにAngelScriptで直接書けとでも?

213:デフォルトの名無しさん
13/09/15 16:54:49.61 .net
何でAngelScriptなの

214:デフォルトの名無しさん
13/09/15 17:45:32.19 .net
目指してる、未来がちがうからでしょ

215:デフォルトの名無しさん
13/09/15 21:06:15.98 .net
C++ではコルーチンがなくてゲームに使うには困るかと思ったが
fiberやlongjmpを使ったら出来ない事はないな

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

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

ラムダ式やデリゲートはC++11で使えることは使えるな

216:デフォルトの名無しさん
13/09/15 22:55:54.12 .net
スクリプトの場合、yieldやSuspendで途中で一時停止できるのはでかいと思うよ。

217:デフォルトの名無しさん
13/09/15 23:44:33.85 .net
コルーチンなんて
boost他、標準ライブラリオンリーのイディオムも腐るほどあるし
メリットが感じられない

218:デフォルトの名無しさん
13/09/16 12:08:37.51 .net
それよりGCが自動なところ

219:デフォルトの名無しさん
13/09/16 16:39:52.89 .net
Javaは一つのコードがあらゆる環境で動作する素晴らしい言語だった。
しかし、マイクロソフトが行ったCOM拡張によって互換性が失われ、パソコン用アプリが
スマホでは動かないといったトラブルが起こるようになった。

220:デフォルトの名無しさん
13/09/16 16:50:37.98 .net
C#とかの.NET系環境でのスクリプトっていうと
やっぱりIronPython/IronRubyとかになるんでしょうか?
できればLuaを使いたいのですが、LuaDowNetは随分長い間止まってますし

と質問しようと思って検索したら、AluminiumLua(2008年更新)ってのがあったので
これ試してから出直します。
すみませんでした。
URLリンク(github.com)

221:デフォルトの名無しさん
13/09/16 16:52:25.96 .net
2008年は誤りで、今現在もアクティブなプロジェクトでした
たびたびすみません

222:デフォルトの名無しさん
13/09/18 12:01:03.07 .net
C++ではヘッダーとソースそれぞれに関数宣言・定義を書かないといけないが
スクリプトだと一つのファイルに書ける
C++で何でもヘッダーに関数定義を書いたらコンパイル時間が大変な事になる

223:デフォルトの名無しさん
13/09/18 12:09:19.32 .net
そこかよ

224:デフォルトの名無しさん
13/09/18 12:16:26.38 .net
宣言と定義で分けたりせず
一つのファイルに書けてありがたいだろ?

225:デフォルトの名無しさん
13/09/18 12:57:45.99 .net
そのくらいなら JavaでもC#でもDでもできる

226:デフォルトの名無しさん
13/09/18 13:45:40.90 .net
全部C++で書くのでなければ別に良いんだけどな

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

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

Dとか知らん!

227:デフォルトの名無しさん
13/09/18 14:47:00.98 .net
>>218
コミュニティの規模が小さいのでJScript一択
保守まで考えるとhackはproductとして採用できない

228:デフォルトの名無しさん
13/09/18 22:41:41.90 .net
>>225
Luaの方がスクリプトを書きなれているので、できればそっちを使いたいと思っていました。
JScriptの利用も少し考えましたが、利用方法がいまいちパッとしなかったので見送りました。

保守性は、個人/小規模利用なので大して気にしていません。

229:デフォルトの名無しさん
13/09/19 06:18:34.30 .net
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   

230:デフォルトの名無しさん
13/09/24 01:30:13.90 .net
mrubyはここでOK?

231:デフォルトの名無しさん
13/09/24 19:59:45.11 .net
組み込みだからOKだけど、話題にできる人はいないかも

232:デフォルトの名無しさん
13/09/24 21:03:42.63 .net
mrubyの組み込みは、アプリケーション組み込みじゃなくて、家電とかへの組み込みのほうだと思うんだ。
アプリケーション組み込みなら、mrubyでなくとも本家のrubyでもできるし

233:デフォルトの名無しさん
13/09/24 23:53:45.13 .net
べつに、rubyもmrubyもここでやればいいじゃん。

234:デフォルトの名無しさん
13/09/25 00:47:43.99 .net
Rubyはテキストの変換に使う事が多いな。
CSVファイルからスクリプトに変換したりとか。

235:デフォルトの名無しさん
13/09/27 11:18:33.53 .net
luabindを使おうとしたら、lua_openで未解決の外部シンボルがでたー。ちゃんとライブラリ設定してるのに。。。

236:デフォルトの名無しさん
13/09/27 12:04:12.82 .net
バインダーなど使わないでスタック方式に慣れるのが結局は一番だよ

237:デフォルトの名無しさん
13/09/27 18:18:42.84 .net
やっとコンパイル出来た。今から初めて組み込むのでどの処理をluaにもっていこうか全然決まってない。みんなどういう感じで組み込んでるの?

238:デフォルトの名無しさん
13/09/27 18:33:15.82 .net
アプリ完成後にもカスタマイズしたりする部分

239:デフォルトの名無しさん
13/09/27 23:10:20.40 .net
ゲームとしてのエンジン部分を全部Lua側から呼び出せるようにして、
あとはLuaでアルゴリズム組むだけでゲームを作れるようにしておくとすごい快適
個人的には各種パラメータを、数値をイジるだけじゃなく
定義を修正しまくっても余裕なのが最高

240:デフォルトの名無しさん
13/09/28 09:12:16.18 .net
逆に言うとそれだけなんだからLuaで十分なんだよな。
Luaだと辛いなーな部分はCで書きゃいいだけ。

241:デフォルトの名無しさん
13/09/28 11:19:10.07 .net
マインクラフトでJRubyやってたんだけどluajなんてのもあったんだね
Cのバインディングに挫折しそうになってた頃に出会ってたら危なかった

242:デフォルトの名無しさん
13/09/28 15:57:45.92 .net
俺はそこまでやるなら端からもっと高機能な言語使えばいいと思うけどなあ

243:デフォルトの名無しさん
13/09/29 00:13:43.34 .net
AngelScript|Д`)ノ<きたわよ

C++側のクラスとかもそのままスクリプトで使えるよ。

244:デフォルトの名無しさん
13/09/29 02:20:08.22 .net
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン

245:デフォルトの名無しさん
13/10/10 19:31:49.27 .net
>>635
URLリンク(www.lua.org)

246:デフォルトの名無しさん
13/10/10 19:33:12.35 .net
gobak

247:デフォルトの名無しさん
13/10/13 01:54:16.74 .net
Luaでちょっと質問なんだけど

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

lua_type()の戻り値を見ると、LUA_TFUNCTION型みたいなんだけど、これはどう扱ったらいいんだろう…

248:デフォルトの名無しさん
13/10/13 06:06:13.41 .net
自己解決
luaL_refとluaL_unrefで参照数を操作して、生かして、
生かしておいたのを lua_rawgetiでスタックにプッシュして
lua_call系でいいんだね

249:デフォルトの名無しさん
13/10/25 14:27:11.51 .net
Luaスクリプトについての質問なんですが、
Luaにエラー関数を設定する場合は
lua_pcallにてエラー関数のスタックを設定しますが、
これをコルーチンで行う場合、
lua_resumeを呼びだすのですがエラー関数の設定が見当たらないです。
どこで設定すると呼びだされるようになるのでしょうか…。

お願いします!

250:デフォルトの名無しさん
13/10/25 15:45:29.07 .net
保護モード事態が特殊な動作なわけだから resume を pcall すれば?

251:デフォルトの名無しさん
13/11/02 00:38:50.34 .net
クラスの中にlua_stateを作っておいて、値の更新とかをlua側でしたいんですけど、
luaに自分自身を渡して、lua側で値を更新させて、自分自身に反映させるのは
どうすればいいでしょう。lua_pushlightuserdataじゃインスタンスは別になる?

252:デフォルトの名無しさん
13/11/02 01:04:30.61 .net
まずC++側とC側に分けて
値の更新をC側でできるようにしてから
C側の内部でLuaを使う

253:デフォルトの名無しさん
13/11/02 01:06:57.46 .net
C++でsetter作って、luaでそれを呼ぶってことですか?
すみません。C++とCで分けるという所はどういう感じで分けるのでしょうか。

254:デフォルトの名無しさん
13/11/02 10:59:08.34 .net
luaで何かアクションをするとC++側の値が書き換わるようにしたい?
userdataにメタテーブルを仕込んでやればできる。他のやり方も
あると思うけど。
例えばuserdataにthisや関数へのポインタを入れておいてメタテーブルに
cfunctionを登録しておく。登録したcfuntcionではuserdataから
thisとかを取り出して何かすればいい。

255:デフォルトの名無しさん
13/11/02 12:43:26.03 .net
>>252
やりたいことは、リコンパイルしなくても値を変更できるようにしたいです。
そこで、luaにオブジェクトの初期処理や更新処理を持っていって、描画はC++で
しようと思ってます。
教えていただいた内容を調べながら試してみます。

256:デフォルトの名無しさん
13/11/02 12:55:58.52 .net
それだったら、C++からLuaの変数を読み出すだけでもいいんじゃない?
C++でLuaチャンク実行→Luaチャンク実行終了→変数の値を読み出して利用する。
LuaのプログラムからCallbackさせながら、C++プログラムと協調動作させる
必要があれば、252のようにする必要があるけど。

257:デフォルトの名無しさん
13/11/02 13:10:44.93 .net
>>254
初期処理でクラスの各項目値は、luaのメソッドを呼び出してその戻り値を受けるので
出来たのですが、更新処理となるとロジックがあって、単純に戻り値を受け取るだけだと
中々難しいなーと思って、ロジックもluaに移そうと思っていました。
そういうのはやっぱり、lua⇒C++の関数⇒luaみたいな感じになるんですね。
自分のイメージとしてはC++でインスタンスをluaに渡す⇒luaで引数のインスタンスに対して
色々な処理を行い値を変更する⇒luaメソッド終了⇒C++に処理が戻るみたいな感じです。

258:デフォルトの名無しさん
13/11/03 10:39:57.23 .net
スクリプト内の変数の値をC/C++側から操作したいって事なのかな。

259:デフォルトの名無しさん
13/11/03 11:14:19.88 .net
C++のポインタはキャストするとどうなるか調べるのが面倒臭いって事でしょ
Cならlua_pushlightuserdataでいいよ

260:デフォルトの名無しさん
13/11/03 11:24:38.17 .net
制御権の受け渡しをどうするかってことでしょ。
Lua側の記述とLuaチャンクの実行の仕方を工夫するしかないんじゃないか?

261:デフォルトの名無しさん
13/11/03 12:00:06.70 .net
C++でnewで確保した領域のポインタを
lua_pushlightuserdata等でlua内の変数に渡しているときに、
このlua内の変数のスコープがはずれたりしたときに、
このポインタをdeleteしたいのだけどできますか?

262:デフォルトの名無しさん
13/11/03 14:45:33.09 .net
基本的に無理じゃね。メタメソッド持てないし
可能ならuserdataで確保したメモリそのものに割り当てるか
スマポとかで包んでからuserdataに突っ込む感じになるかと

263:デフォルトの名無しさん
13/11/03 18:17:24.79 .net
やった事ないけど、tableに突っ込んで__gcイベント捕まえれば逝けない?

264:デフォルトの名無しさん
13/11/03 21:02:45.16 .net
lightuserdataのuserdataに対するメリットって何?
リファレンス見ても機能が少ないだけで何が嬉しいか分からなかった。

265:デフォルトの名無しさん
13/11/04 00:14:11.47 .net
>>259
そこまでやるならもうAngelScriptの方がいいような気がする。

266:デフォルトの名無しさん
13/11/04 00:19:18.11 .net
>>262
ポインタもってるだけだから圧倒的にシンプルだよ。luaがわでは寿命管理しないけどとにかくデータの参照を維持したい場合に使う

267:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/11/04 01:05:41.10 .net
変数がスコープから消えるときは__gcでイベントをとれるとして、
lua内の変数のコピーも認識できないとdeleteしていいかわからないなぁ。

269:266
13/11/04 01:11:07.79 .net
と思ったけど、__gc呼ばれるときは問答無用でdeleteしていいのかな?

270:デフォルトの名無しさん
13/11/04 01:56:57.82 .net
そもそもスコープぬけてすぐgcよばれる保証あるの?という素朴な疑問

271:デフォルトの名無しさん
13/11/04 02:42:16.33 .net
無いです!

272:デフォルトの名無しさん
13/11/04 03:46:09.89 .net
参照カウンタではないGCを使う言語は、
あんまりそういう作りになってないなぁ

273:デフォルトの名無しさん
13/11/04 09:52:17.93 .net
スコープぬけてすぐってのは
newではないコンストラクタを使うからできるんだよ
newを使わない保証があるなら参照カウンタもいらないよ

274:デフォルトの名無しさん
13/11/04 15:21:11.51 .net
スコープ抜けてすぐなんて制約条件を勝手に厳しくするなよ
> このlua内の変数のスコープがはずれたりしたときに、

275:デフォルトの名無しさん
13/11/04 15:38:02.02 .net
質問者の意図はたぶんそれで合ってると思うの。C++使う人がluaで嵌まる典型的ポイントだよね

明示的なリソース廃棄処理つくらないと回避できない

276:デフォルトの名無しさん
13/11/04 16:24:50.58 .net
>>272
あはは、たしかにw
スコープがはずれたとき
ではなく
スコープがはずれたりしたとき
であるから
結局GCで事足りるなw

277:デフォルトの名無しさん
13/11/04 18:42:33.31 .net
リソースの解放(例えばファイルのクローズ)をデストラクタで
行うなんてのはGC備えてる言語じゃ禁じ手じゃん。
C++オブジェクトに限らず、Luaオブジェクトでもスコープ外れた
タイミングで即解放なんて無理でしょ。
C++と同じようなスコープ外れて即廃棄は無理なので、それの寿命
をLuaオブジェクトで管理しようというなら設計が間違ってる。

278:274
13/11/04 19:39:14.73 .net
やらない ってのと やれない っては大きな違いがある。
このケースは前者でやる必要がないからやらないだけなんだよ。
やればやれるよ?
metatableのdestructorで
時限付きにhookONしてそこでcollectすればいいだけでしょ?

で、それがなんだよって話。

279:デフォルトの名無しさん
13/11/04 22:38:46.70 .net
AngelScript|Д`)<俺の出番だな

いやマジで

280:デフォルトの名無しさん
13/11/04 23:06:44.14 .net
JavaでGC避けようとするとこんな感じのがある。
URLリンク(www.javafesta.jp)
URLリンク(www.infoq.com)

281:デフォルトの名無しさん
13/11/04 23:17:12.73 .net
squirrelがリファレンスカウントなのもgc動作を嫌ってだな

282:デフォルトの名無しさん
13/11/05 00:28:39.93 .net
リファレンスカウンタの方がマーク&スイープよりも安いからな。

283:デフォルトの名無しさん
13/11/05 08:03:02.46 .net
Javaや.NETのGCくらいになると無茶苦茶高性能だよ
Javaはチューニングがサーバー用だからアレだが
まあそこまでいかないと性能が出ないなら個人レベルでは無理があるわな

284:デフォルトの名無しさん
13/11/05 12:38:56.98 .net
AngelScriptは基本的には参照カウントのようだが循環参照時などはGCをする模様

285:デフォルトの名無しさん
13/11/05 20:08:05.76 .net
AngelScript|Д`)<AngelScript2.28.0記念カキコ

286:デフォルトの名無しさん
13/11/05 20:24:10.43 .net
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン

287:デフォルトの名無しさん
13/11/05 23:42:30.14 .net
参照カウントってGCとちがうものなの?

288:デフォルトの名無しさん
13/11/06 09:10:15.25 .net
知ったかに構うなよ

289:デフォルトの名無しさん
13/11/07 07:39:13.29 .net
でもまあ一般的にGCと言えばマーク&スイープじゃね
参照カウンタって単なるコーディングテクニックみたいなもんだから注釈なしでGCと呼ぶのは抵抗ある

290:デフォルトの名無しさん
13/11/07 09:59:04.25 .net
全然違う

291:デフォルトの名無しさん
13/11/07 12:43:45.41 .net
>>285
GCの実装の仕方の一つとして、参照カウントを使うものがある、といった感じ

292:デフォルトの名無しさん
13/11/07 15:16:54.50 .net
広義ではGCに含まれる。
狭義では参照カウントとtracingに分けて、tracing型のみをGCとすることもある。

まだ一般的ではないが "A unified theory of garbage collection" という論文によれば、
参照カウントとtracingは双対なんだそうだ。

293:デフォルトの名無しさん
13/11/07 20:06:48.85 .net
Squirrelの人が熱弁してたなあ

294:デフォルトの名無しさん
13/11/15 18:43:55.94 .net
当方素人で疑問なのですが、スクリプトでゲームを作るということが、
つまりどういうことなのかっていうのがイマイチ掴めません

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

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

あるいは、あるタイミングの数値計算処理であるとか、RPGのイベントだとか
再コンパイルせずに調節したい場合にスクリプトを用いるということもあると思いますが
この場合、スクリプトを実行するVMをどのインスタンスで保持するのが良いのでしょうか

295:デフォルトの名無しさん
13/11/15 19:49:12.61 .net
ネイティブで書きにくいところをスクリプトで書く
それだけの話であって何から何までスクリプトということは無い

296:デフォルトの名無しさん
13/11/15 20:47:11.59 .net
自分はゲーム内のオブジェクトの動きや描画の指定にスクリプト使ってるよ。

297:デフォルトの名無しさん
13/11/15 21:58:13.61 .net
スクリプト言語による効率的ゲーム開発 新訂版 (LuaとC/C++連携プログラミング)
とか、luaとゲームみたいな本には序章あたりにそういうこと書いてあるから、何冊か本屋でみてみたら?

298:デフォルトの名無しさん
13/11/15 22:02:34.14 .net
>>293 >>294 >>295
どうもありがとうございます!
いつもいつもプログラミングのみでミニゲーム作る止まりなので
スクリプト組み込みを勉強してに中規模以上のゲームを作れるようにがんばります

299:デフォルトの名無しさん
13/12/04 01:39:29.32 .net
iPadで動くCodeaって、内部でLua使ってるみたいだね。

300:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/12/15 20:51:22.29 .net
そんなのは簡単な独自言語のほうが使いやすいしツールも作りやすい
安直に汎用スクリプト使おうじゃなくて、まずはユースケースを洗い出してみろ
それほどいろんな機能も自由度もいらないことがわかるはず

302:デフォルトの名無しさん
13/12/16 00:21:21.85 .net
セーブの実現性考えてつくるべし
下手に高級言語にすると死ぬ

人に使わせること考えると、プレーンテキストにタグ埋めるスタイル以外はあり得ない

303:デフォルトの名無しさん
13/12/16 00:49:52.86 .net
同意
セーブや細かい制御のことを考えると、汎用言語を使っても結局
言語内DSL的なものでデータとして埋め込むような形にしかならん
汎用言語の機能をほとんど活かせず、インタプリタを作る手間も無くならず、
ただスクリプトを書くのが面倒になるだけ

304:デフォルトの名無しさん
13/12/16 01:33:50.36 .net
途中セーブって鬼門だしな…

305:デフォルトの名無しさん
13/12/16 18:01:34.83 .net
>>299-302
ありがとうございます、セーブ完全に考えてませんでした。
途中セーブ考えると難易度かなり上がりますね。

306:デフォルトの名無しさん
13/12/16 21:48:48.52 .net
独自スクリプトなら好きなように出来るから、どうとでもなるよ
ADVゲームなんて保存しておくデータは少ないしな

307:デフォルトの名無しさん
13/12/19 20:06:48.55 .net
if文の中のwhile文の中のif文のさらに中のwhileの途中でスクリプトを停止してセーブ、ロードしてそこから再開、とか。

308:デフォルトの名無しさん
13/12/19 21:22:15.85 .net
stateパターンでも使えば?

309:デフォルトの名無しさん
13/12/19 21:35:40.70 .net
>>305
ADVは普通そんなとこでセーブする必要ないよ
もし必要になってしまってるなら設計がおかしい

310:デフォルトの名無しさん
13/12/19 21:54:56.69 .net
DSL専用の言語ってあってもいいのにな
ADVのスクリプトみたいなプル型のインタプリタを作りやすい簡単な言語仕様で
ライブラリにソース渡したら構文解析だけやってくれればいい

311:デフォルトの名無しさん
13/12/19 22:41:18.53 .net
「設計がおかしい」ってさ、
言うのは簡単だしいかにもそれっぽいけど単なる思考停止くさいよね

312:デフォルトの名無しさん
13/12/19 23:00:23.25 .net
>>308
EclipseのXtext/Xtendみたいなのでネイティブアプリに組み込める
ものがあったら俺も欲しいな。

313:デフォルトの名無しさん
13/12/19 23:01:36.14 .net
ターン制と言うか、区切りよく設計しない?
大枠のwhileループとifはあるにせよ、更にその中のwhileの中でセーブはともかくロードはやろうと思わない。

314:デフォルトの名無しさん
13/12/19 23:38:35.63 .net
任意のObjectをセーブ、ロード

Object is a String ←設計がおかしい

315:デフォルトの名無しさん
13/12/20 01:55:56.71 .net
>>305
フラグでメッセージが変わる、とかいうのを複雑にしちゃったらそういうのが発生しそう。

316:デフォルトの名無しさん
13/12/20 12:14:01.98 .net
フラグで文章が変わるなら、変わる文章の手前で条件分岐するだけじゃね?

317:デフォルトの名無しさん
13/12/20 17:12:52.37 .net
変わるのがメッセージだけなら、

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

って書けるならそのほうがシンプル。

318:デフォルトの名無しさん
13/12/20 21:11:54.76 .net
それだと既読フラグがめんどい

319:デフォルトの名無しさん
13/12/21 08:21:18.69 .net
シンプルだけど読みにくい

320:デフォルトの名無しさん
13/12/22 12:54:39.25 .net
慣れの問題

321:デフォルトの名無しさん
13/12/23 08:32:10.39 .net
慣れないとダメというのがそもそもおかしい

322:デフォルトの名無しさん
13/12/23 11:28:02.04 .net
逆だよ
時間がかかってはダメというのがおかしい
だからゆっくり時間をかけて慣れることが許される

323:デフォルトの名無しさん
13/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:デフォルトの名無しさん
13/12/23 22:24:13.34 .net
>>321
ADVで文章部分に関数使うとか論外だろ…
それにスクリプト打つのはド素人も想定するもんだ

325:デフォルトの名無しさん
13/12/23 22:49:00.75 .net
>>321
そんなBASICでプログラミングを覚えたジジイなんて、
玉切り落としてグズの家系を根絶やしにしてしまえ。
GOTO LESSが推奨されて何年立ってると思っているんだ

326:デフォルトの名無しさん
13/12/24 09:54:37.59 .net
IFとGOTO以外理解できないド素人も想定しなきゃダメですよw

327:デフォルトの名無しさん
13/12/24 13:19:00.89 .net
そりゃシステムの部分でわざわざGOTO使う事はないけど
シナリオスクリプトと�


328:オて考えたらはGOTOは大事だろ IFとGOTOだけで書けばセーブデータの問題も解決するわけだし



329:デフォルトの名無しさん
13/12/24 13:43:33.10 .net
チャートの類をつくろうとすると、たとえADVのスクリプトでもgotoもifも禁止だね。バグの温床になる
そういった場合は、遷移は別ファイルにまとめて定義が妥当

330:デフォルトの名無しさん
13/12/24 17:08:31.18 .net
プログラムではまずありえないけど、ループのド真ん中に外から飛び込むジャンプって、
ゲームのシナリオ的にはありそうじゃない。そういうのってどうしてるの?

331:デフォルトの名無しさん
13/12/24 19:11:38.28 .net
gotoは、終了タグを省略したhtmlとか、breakしないswitchと同じだと思う
逆に言えば終了タグを必ず書くgotoなら使っていいんじゃね

332:デフォルトの名無しさん
13/12/24 19:40:46.56 .net
come from文?

333:デフォルトの名無しさん
13/12/24 20:16:45.26 .net
途中でセーブしてそこから続きが出来るようにしないのなら、どんな組み方してもOKだけどな。

334:デフォルトの名無しさん
13/12/24 21:28:56.06 .net
>>326
条件分岐使わずどうやってフラグ分岐するんだ?

>>327
そんなの見たことないが、どういうのだよ?

335:デフォルトの名無しさん
13/12/24 23:30:35.65 .net
>>331
だから別ファイル
どのシーンの次にどのシーンになるのかの
状態遷移だけを記述する言語というか
データ構造を別に準備するのさ

336:デフォルトの名無しさん
13/12/24 23:50:48.99 .net
想定してるのがどういうゲームかで違うのかも

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

でも細かいフラグ管理やパラメータ要素を入れると難しい
分岐ごとにいちいち分けて考えてたら
バグは出ない以前に途中で投げ出す可能性大

337:デフォルトの名無しさん
13/12/25 01:12:07.86 .net
適当にシナリオ用のVM作ってステートセーブさせれば良いんじゃないかな・・

338:デフォルトの名無しさん
13/12/25 07:14:27.71 .net
プレーンテキストに命令タグを挟む方式だとあかんのですか
ノベルゲーって基本テキスト主体でしょ?
逐次処理できるし、ステートの保存はフラグ一式と行番号の保存でいいし
ループ処理の構文をわざわざ用意する必要ないと思うんだけど・・・

339:デフォルトの名無しさん
13/12/25 10:33:19.18 .net
>>332
あぁ、なるほどね。
確かにそういう作り方をしてるゲームを見た事があるわ。

340:デフォルトの名無しさん
13/12/26 01:56:07.59 .net
ノベルゲーのスクリプトに、Cレベルの制御構文、クラスやコルーチンとかまで入れて欲しいとか言われた事あるわ。

341:デフォルトの名無しさん
13/12/26 10:34:40.60 .net
文章やマクロを使う部分のスクリプトはオリジナルで
クラスやコルーチンのスクリプトは組み込み言語使えば良かろ

342:デフォルトの名無しさん
13/12/26 10:38:32.16 .net
プログラミング知識がある奴用なら
爆速コンパイルのFPCでいいと思うな

343:デフォルトの名無しさん
13/12/26 10:48:29.28 .net
コルーチンはプログラミング言語では直接のサポートがない言語も多いけど、
ゲームのスクリプトとしては需要あるんじゃないかな。

たとえば、ある場所に来るたびに、その場所での「さっきの続き」とか。

344:デフォルトの名無しさん
13/12/26 11:18:48.57 .net
stateパターンでいいじゃん
オーソドックスにフラグ立てていくなりstackでやるなりでいけるでしょ

345:デフォルトの名無しさん
13/12/26 11:41:00.70 .net
手続き的なものは、スクリプトの手続きとして直接記述したいじゃない。
stateパターンというかインタプリタパターンで、その場用のミニ言語を作るんじゃなくて。

346:デフォルトの名無しさん
13/12/26 11:56:29.21 .net
コルーチンのことをIteratorと言う人とStateと言う人とInterpreterと言う人がいるけど
気分で名前が変わるくらいなら名前つけない方がよいよね

347:デフォルトの名無しさん
13/12/26 12:15:58.74 .net
いきなりどうした

348:デフォルトの名無しさん
13/12/26 12:24:14.01 .net
いや全部別のものだし

349:デフォルトの名無しさん
13/12/26 12:28:28.45 .net
>>342
> 手続き的なものは、スクリプトの手続きとして直接記述したいじゃない。
すればいいじゃない
> stateパターンというかインタプリタパターンで、その場用のミニ言語を作るんじゃなくて。
フラグ立てていくだけだからeval出来るものなら既存の言語で簡単に出来るよ

記述が冗長でという話ならpegかなんかでちょろっとgeneratorを書いてやらいい

350:デフォルトの名無しさん
13/12/28 02:26:08.74 .net
動的型のスクリプトの凄さわからなかったんだけど
クラスじゃなくって、インスタンスをバインドして
そいつがファクトリ的な関数いっぱい持ってたら
もうスクリプトの中でやりたい放題なんだね

351:デフォルトの名無しさん
13/12/28 13:42:09.78 .net
リモートでバッグが容易
かつ、お作法も確立してるので楽ちんなんだよな

352:デフォルトの名無しさん
13/12/29 23:59:20.84 .net
最近VLCビデオプレイヤの機能拡張言語がLuaだったのにやっと気づいた

353:デフォルトの名無しさん
13/12/30 00:02:51.79 .net
おめ

354:デフォルトの名無しさん
13/12/30 00:32:29.40 .net
DXライブラリでゲーム作ってて、スクリプトを組み込んでみたいんですが、
メインループ中にスクリプトをどのように組み込んでいけばいいのかまったく検討がつきません。
RPGのマップ上のイベントであれば、マップロード時にスクリプトファイルを読み込んで
イベントを関数化しておく、などは想像できるのですが・・・

それとも、主要クラスをスクリプトエンジンへバインドしてしまって
メインループ自体をスクリプト側で記述するという方法なのでしょうか?

355:デフォルトの名無しさん
13/12/30 01:54:24.29 .net
一般的には各オブジェクトのフレーム毎処理なり、メインループの段階ごとなりにスクリプト用のフックを準備して、それ経由で呼び出しされるようなイベントドリブンな書き方をすればいい。これは別に普通にCで書くのと特に変わらない

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

両方実装して使い分けるのも有り。いずれの場合も、参照するオブジェクトはスクリプトから見えるようにバインドする必要はでてくる

356:デフォルトの名無しさん
13/12/30 17:04:01.21 .net
>>352
ありがとうございます!
コルーチン勉強しようと思います

357:デフォルトの名無しさん
14/01/15 01:28:40.37 .net
AngelScript|Д`)ノ<遅くなったけどあけおめ。今年もスクリプトエンジョイしよう

358:デフォルトの名無しさん
14/01/15 01:32:56.88 .net
おっそーい

359:デフォルトの名無しさん
14/01/15 18:55:31.97 .net
ZekamasiScriptの登場が待たれる

360:デフォルトの名無しさん
14/01/16 23:05:15.79 .net
C++でクラス定義を公開してバインド。
Suirrelでインスタンスを生成したとき、
boost::shared_ptrを用いたインスタンスにするにはどうすればいいでしょうか。

C++とSquirrelとで共通の参照カウンタを持たせたいと考えています

361:デフォルトの名無しさん
14/01/16 23:29:03.57 .net
luaならレジストリを使ってやるから同様の逃げ道はあるだろうけど
そういうのが必要なケースってあるのかな?
設計を見なおしたほうがいいかも

362:デフォルトの名無しさん
14/01/17 00:50:30.25 .net
luabind使ってる時は自然と出来たものですから、
こっちでも使いたいなーと思ってました。
・C++でHogeクラス定義、公開
・Squirrelでインスタンス生成
・C++から公開しているオブジェクトマネージャへ登録
・C++側でさっきのHogeインスタンスを更新
みたいな構造を考えてました。
Hogeを継承したFooクラスとかも登録したいと考えてました。
設計考えてきます。

363:デフォルトの名無しさん
14/01/17 02:10:14.78 .net
対応したバインダかくだけじゃね?
squirrel側の参照カウンタとはダブるだけで共通にはならんけど動作自体は問題ない

364:デフォルトの名無しさん
14/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:デフォルトの名無しさん
14/01/17 04:48:04.70 .net
 

366:デフォルトの名無しさん
14/01/17 08:09:28.29 .net
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

367:デフォルトの名無しさん
14/01/17 16:23:55.46 .net
>>361
そりやsquirrel側はC++側の参照を知らないもの。当然かと

squirrelから渡されたものは、HSQOBJECT のかたちで取得して、保持するときには sq_addref()して、不要になったら sq_release() するのが正解

368:デフォルトの名無しさん
14/01/17 18:31:37.39 .net
あ、gHogeManagerがなんのためのものかにもよるけど、addrefしたものは当然C++側でもreleaseしないと消えなくなるから注意な

メモリリークの原因になりやすい

369:デフォルトの名無しさん
14/01/22 20:05:40.98 .net
AngelScript|Д`)<ASの得意分野の話をしてると聞いて

370:デフォルトの名無しさん
14/01/31 16:55:15.38 .net
squirrelって文字列比較できないんでしょうか?
自分で関数を作るしかない?

371:デフォルトの名無しさん
14/02/01 23:19:13.62 .net
Squirrelのthreadを外部からidle状態にさせることはできるのでしょうか。
現在、threadをidle状態にさせるために、wakeupで終了条件を渡して
threadとして実行する関数内でreturnなりさせてidle状態にさせていますが面倒です。

372:368
14/02/02 00:01:58.47 .net
手法変えて自己解決しました

373:デフォルトの名無しさん
14/02/02 00:31:12.85 .net
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン

374:デフォルトの名無しさん
14/02/03 05:51:52.94 .net
Cocos2dx + lua が最強

375:デフォルトの名無しさん
14/02/05 23:25:39.46 .net
Squirrelでthreadの実行関数内でスタックダンプってどうやってとるの?
sqstd_printcallstackをラップしたのをバインドしてthreadの関数内で呼び出しても、
thread.callとかthread.wakeupんとこまでのスタックしか見れなくてデバッグが面倒

376:デフォルトの名無しさん
14/02/06 01:00:28.57 .net
そこから上は別のVMだから当然では

377:デフォルトの名無しさん
14/02/06 13:14:51.80 .net
あ、なるほど。
ってことはsq_getthreadとかと組み合わせれば出来んのかな。
助かったよ、ありがとう

378:デフォルトの名無しさん
14/02/06 16:31:10.12 .net
AngelScript|Д`)<AngelScript2.28.1記念カキコ&nbsp;

379:デフォルトの名無しさん
14/02/06 16:34:11.87 .net
>>374
スレッド制御してるVMがグローバルに一つなら、そのwakeup呼び出ししてる間は
とくに変化無いから、もうグローバルに直接参照して表示してしまうってのも一つの手だね

俺はそれぞれのスレッドのwakeupは、全部C++のメインの一カ所からしか呼ばない(親VMは登録とかにしか使わない)から上をたぐる必要は特に無い

380:デフォルトの名無しさん
14/02/06 19:41:13.19 .net
なるほど、そういう方法もあるのか。検討します。

で、早速また分からんことが。
・スクリプトでnewthreadで生成したスレッドをC++にてsq_getthreadで取得
・取得したvmに対してsq_newclosure,sq_seterrorhandlerで
ランタイムエラーハンドラを設定したんだけど、
スレッド実行中にエラー出ても呼ばれないんですが原因なんでしょう。
同じノリでC++からsq_setprintfuncで出力関数をセットすると期待通りに動作するんだけど。

381:デフォルトの名無しさん
14/02/06 20:13:41.72 .net
sq_notifyallexception しとかないと常にはよばれなかったような記憶

382:デフォルトの名無しさん
14/02/06 20:42:06.75 .net
おぉ、呼ばれた!ありがとう!

383:デフォルトの名無しさん
14/02/10 11:35:20.59 .net
スレチか悩んだがココで。
トゥイッターで「#squirrel」を検索するとマジもんのリスばっか出てくる。
どのハッシュタグならココで扱ってるSquirrel拾えるの?

384:デフォルトの名無しさん
14/02/10 11:43:35.22 .net
本家で聞けよ…

385:デフォルトの名無しさん
14/02/28 21:55:32.80 .net
ゲーム用途のスクリプトのことを学べば学ぶほど、最終的にはマップエディタや、
アイテムデータを打ち込むためのフォームなどを自作しておかないと、
スクリプトの良さを生かせないなぁ、というところに行き着いてしまうのですが、
個人製作の方々はそういったものを自作していたりするんでしょうか?

むしろ、そんなところに拘るくらいならUnityや他のゲーム製作ツールについて
勉強してた方がマシでしょうか?

386:デフォルトの名無しさん
14/02/28 22:11:10.98 .net
まず、自作するまでもなく
一般的なものならinport/exportで定番どころのフォーマットは対応してるので困ることはないのではないかな
対応してないとしてもconverterを書くだけだから簡単に書ける

387:デフォルトの名無しさん
14/02/28 22:15:28.12 .net
スクリプトの良さを生かそうという発想が生まれる時点で
既に道を踏み外している

ゲームを完成させたいなら計画を立て直せ
そうでないなら合理性なんか考えず好きなように楽しめ

388:デフォルトの名無しさん
14/02/28 22:17:33.95 .net
スペルミスってるな
まあいいや

389:デフォルトの名無しさん
14/02/28 22:31:38.48 .net
>>383
既存のモノで、マップエディタならJsonあたりで出力できるものや、
データ入力ならCSVエディタや、既存DB用ファイルを出力するエディタあたりでしょうか?

>>384
確かに、そうですね・・・
まだ数回しかチャレンジしてないのですが、どうしても毎回、
「プログラムで直書きしたのと変わらんやんけ!」か、
「CSVで十分やんけ!」という状況ばかりになってしまって、
そこから一歩ステップアップできない感じなのです

390:デフォルトの名無しさん
14/02/28 23:01:28.08 .net
AngelScripterさんがいたら教えてほしい
RegisterObjectType に asOBJ_POD を渡すとコンストラクタ、
代入演算子その他諸々が自動生成されるって話だけど、
asOBJ_POD | asOBJ_APP_CLASS_CONSTRUCTOR みたいにして
コンストラクタだけ独自拡張する使い方は仕様的にできるようになってるの?

391:デフォルトの名無しさん
14/03/01 07:44:24.61 .net
>>386
目的と手段が逆になってんじゃないの?

392:デフォルトの名無しさん
14/03/01 10:43:43.37 .net
>>387
普通にコンストラクタも登録できるから
公式リファレンス見ろ

393:デフォルトの名無しさん
14/03/01 11:25:09.70 .net
Lua自体はC++を使ってなくて「Cで十分やんけ!」という状況なので
もしC++を使ってる人がLuaは不要だと言えば、C++の方が不要だと言い返される気がする

394:デフォルトの名無しさん
14/03/01 12:09:22.88 .net
>>382
コンシューマだったり、プログラマ以外の作業員がいたり
アドベンチャーゲームみたいなジャンルだったらメリットが大きいと思うけど
個人製作だったら別に無理して活かす必要は無いような

395:デフォルトの名無しさん
14/03/01 13:21:37.93 .net
スクリプト使えば最コンパイルなしで高速に微調整ができるっていうけど
個人製作だとスクリプトファイルとかその他リソースを再読み込みする時間の方が
長かったりするのは俺だけ?てかみんなはスクリプトファイルどれくらい分割してる?

396:デフォルトの名無しさん
14/03/01 15:07:27.08 .net
>>392
ゲームは再起動するんだから、
他のリソースふくめたロード時間は
スクリプトつかっててもつかってなくても大差ないかと

スクリプト単体のロード時間は誤差の範囲だよ。確実にコンパイル&リンク時間のが長い

397:デフォルトの名無しさん
14/03/01 15:08:56.52 .net
LOVE使っててそれは思った

398:デフォルトの名無しさん
14/03/01 15:29:29.09 .net
>>392
修正したファイルだけ再読み込みできるようにしておくといい感じ

399:デフォルトの名無しさん
14/03/01 15:29:47.45 .net
>>393
392じゃないけど
どのリソースを読み込むかスクリプトで指示されているから
スクリプトの再読み込みはその他リソースの再読み込みとほぼ同義で
時間がかかるって話じゃないの

だから
スクリプト単体のロード時間が誤差の範囲なのは自明で
それをコンパイル&リンク時間と比較するのはこの文脈ではナンセンス

400:デフォルトの名無しさん
14/03/01 15:47:17.62 .net
>>396
スクリプトがコンパイル時間がかからなくて便利って話は、そもそもその単純比較の場合の話だから、そのメリットが得られてないならそれは作りが悪いってことだよね。結局のところ

401:デフォルトの名無しさん
14/03/01 15:47:27.35 .net
>>395
それを実現するためには副作用を減らす設計が重要で
とりあえずスクリプトで実装して
重い処理はホスト言語で実装しなおす
みたいなボトムアップな作り方してると困っちゃうんだよね
というか困った

402:デフォルトの名無しさん
14/03/01 15:57:47.84 .net
>>397
それは「スクリプトがコンパイル時間がかからなくて便利」ってのが
真である前提の結論だろ
実際は単なる謳い文句だよねって話じゃないの?

てかスクリプト言語使う動機なんて一つじゃないんだから
そんなことで作りの良し悪し評価されたくないよな

403:デフォルトの名無しさん
14/03/01 16:47:42.14 .net
>>389
リファレンス見てもPODで自動生成されたコンストラクタに
独自拡張のコンストラクタが上書きされるとか書いてなくね?


スレの趣旨には反するけどAlcantarea使えば諸々の問題解決できるよね。
実行中のプログラムの関数を再コンパイルして差し替えてくれるVSのアドイン
URLリンク(alcantarea-cpp.com)

404:デフォルトの名無しさん
14/03/01 16:57:41.84 .net
>>398
副作用を減らすんじゃなくて寿命を減らせばいいと思う
修正前の古いデータが生き残らないようにする

405:デフォルトの名無しさん
14/03/01 17:09:03.44 .net
>>399
良い悪いって言葉が気に入らないなら、
設計思想が合ってない、ってことでひとつ

宝の持ち腐れにしてまで使う意味はないな

406:デフォルトの名無しさん
14/03/05 17:03:30.70 .net
今から始めようと思うんですけど
C++で使えますか?
Cでの導入方法を教えて下さい

407:デフォルトの名無しさん
14/03/05 23:29:20.69 .net
>>403
冷やし中華を?

408:デフォルトの名無しさん
14/03/06 03:15:58.29 .net
>>403
何を?

409:デフォルトの名無しさん
14/03/06 04:44:07.89 .net
get started からダウンロードして
インクルードファイルとライブラリファイルを設定して、プロジェクトのプロパティで追加の依存ファイルにlua5.1.libを追加すればいいんですね。

後、クラスのメンバ関数をLuaから使う方法が理解できない
local 変数に関数を代入するの?

410:デフォルトの名無しさん
14/03/06 06:38:39.31 .net
lua では C でいうところの関数名=変数名となってるから大体合ってる

411:デフォルトの名無しさん
14/03/20 17:29:02.65 Moc5bE7b.net
AngelScript|Д`)<AngelScript2.28.1記念カキコ

412:デフォルトの名無しさん
14/03/20 17:29:20.35 Moc5bE7b.net
ごめん2.28.2だ

413:デフォルトの名無しさん
14/03/20 17:38:01.94 cnVVzBAE.net
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン

414:デフォルトの名無しさん
14/04/06 22:57:21.17 OYl5erDz.net
cocos2d-x3.0 Luaバインディング使ってるんだけど
コード補完が出来るオススメエディタありませんか?
cocos2d-x2.x 時代は tolua++のpkgファイルあったから
Eclipseプラグインでコード補完出来たけど
3.x は探してもpkgみつからないの・・

415:デフォルトの名無しさん
14/04/07 00:09:17.03 wNleVxO3.net
Squirrel 3.0.6 stable

416:デフォルトの名無しさん
14/04/08 23:44:03.23 tbmdAmxp.net
>>411
intypeってテキストエディタではダメ?

417:デフォルトの名無しさん
14/05/11 11:14:07.30 FPHyRsPY.net
>>414
ない

418:デフォルトの名無しさん
14/05/11 12:58:32.06 ahIxA60o.net
作りかけならあるみたい

URLリンク(github.com)
URLリンク(github.com)

419:デフォルトの名無しさん
14/05/12 21:27:31.11 Jr9LnoLr.net
Lua って 5.3 で整数型が導入されるのか。
整数型なんていらんかったんや! というこれまでの解説は間違いだったのか?
それとも、ゲームだけでなく、カーネルに近いところでも使われ始めたからなのか?

420:デフォルトの名無しさん
14/05/12 22:45:02.79 rRKhLlHV.net
内部では結構前からあった気がする
テーブルの整数添え字の要素を特殊化したりとかその関係で
記憶違いだったらごめん

421:デフォルトの名無しさん
14/05/12 23:06:44.25 fjbQFkov.net
それはインデックスとして使われるときに整数に変換されるだけで、値として整数を保持してるわけじゃないよ
満を持して登場したと思ったらさっそくdeprecatedにされたbit32ライブラリさんかわいそう

422:デフォルトの名無しさん
14/05/12 23:22:03.10 fjbQFkov.net
ああひょっとして特殊化ってのはテーブルのarray partのことを言ってるのかな

423:デフォルトの名無しさん
14/05/13 01:10:36.92 1hVKdVzY.net
>>416
NetBSDはカーネル内部でLua使えるらしいぞ
それの関係かどうかまでは知らんが
URLリンク(news.mynavi.jp)

424:デフォルトの名無しさん
14/05/13 09:56:07.37 htOfSQyE.net
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

425:デフォルトの名無しさん
14/05/18 06:43:02.86 cy7ef2kl.net
整数型導入でさらに速くなるみたいね

426:デフォルトの名無しさん
14/05/18 14:03:13.72 HDWDipXQ.net
eLuaという、マイクロコントローラ向けのさらに軽量なLuaもあるらしい
URLリンク(www.eluaproject.net)

427:デフォルトの名無しさん
14/06/08 18:05:42.02 3LWaPBPW.net
Xtalってもう更新してないのかな
GoogleCodeのは2008年で止まってるし

428:デフォルトの名無しさん
14/06/08 20:03:09.73 RRJgBzCO.net
>>424
URLリンク(code.google.com)
履歴見たら2013年11月13日が最終更新日だけど、どこ見てるんだ?

429:デフォルトの名無しさん
14/06/08 22:43:44.01 3LWaPBPW.net
>>425
本当だ・・・
Downloadsのパッケージしか見てませんでした
ごめんなさい

430:デフォルトの名無しさん
14/06/11 12:26:03.22 nbPEp42H.net
AngelScript|Д`)<AngelScript2.29.0記念カキコ

431:デフォルトの名無しさん
14/06/11 16:57:16.91 mGpoQXd/.net
        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/     ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'   |   ( _●_) ミ'  /、)、)´       +
         +    (/'ヽ 彡、   |∪| ノ /     AngelScript!!
     +            / __ヽノ  /  *      +
       ┼        (___) /      +
               /     /
               (_ ⌒丶..
                | /ヽ }.
                  し  ))
                    ソ  トントン

432:デフォルトの名無しさん
14/06/19 01:32:25.81 wnpllGmU.net
C#コンソールアプリにLuaを組み込みたくてNLuaライブラリを使おうと考えてるんですが、
NLuaをSJISに対応させる方法はないでしょうか?

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

dllのビルドさえできれば、Luaの字句解析部(llex.c)へのパッチの当て方は分かっているんですが…

433:デフォルトの名無しさん
14/06/19 13:05:43.69 CumbCiDK.net
>>429
URLリンク(github.com)
これでしょ?
cmake->buildするだけでは?

434:デフォルトの名無しさん
14/06/20 17:24:54.94 N64lKT9J.net
ありがとう!
ビルドできました。
URLリンク(github.com)しか見てなかった・・・

435:デフォルトの名無しさん
14/06/20 17:32:59.29 TUABdWdO.net
リンクが貼られてるから
git clone URLリンク(github.com)
cd NLua
git submodule update --init --recursive
で入るんだけどね

436:デフォルトの名無しさん
14/06/29 14:59:39.60 SaBki4ZJ.net
C++プログラムへのmrubyの組み込みで教えてください。
mrubyのprint出力をホスト側で受けるにはmrb_define_methodで"__printstr__"に
関数を設定すればいいと聞いたのでそのようにしているのですが、標準出力と
標準エラー出力の区別ってできないんでしょうか?

437:デフォルトの名無しさん
14/06/30 15:10:51.45 02CSsGE4.net
>>433
mruby-print/src/print.c 内の printstr で stdout とハードコーディングされてるので、stderr に出したいときはここを書き換えるか、新たに stderr に出すメソッドを追加すればいいのでは?

438:デフォルトの名無しさん
14/06/30 23:03:22.29 FuMPZ5KZ.net
ありがとうございます。
printstrのフックでは受け取れないメッセージがあったのでエラー出力には別のフックがあるのかと
思ったんですが、ソース見てみたらそこかしこでfwrite使って直接出力してますね。
確かにこれだと自分でソースいじらないとならないですね。

439:デフォルトの名無しさん
14/07/02 16:59:10.88 JkuzDLMY.net
最近の lua とか squirrel とか python の実行速度を比較したページってないかね?
4、5年ぐらい前の奴なら英語サイトの奴があるけど、最近はどうなのかなと思って。

440:デフォルトの名無しさん
14/07/02 21:40:33.67 z0TOEu0h.net
速さはjit環境の有無で大分違うよね
pythonだとpypy?

luajitは今後5.3移行にちゃんと追従してくれるか心配だね。
組み込み用としてのメリットはluaには他にもいろいろあるだろうけど
jit環境が追従していかないとmrubyあたりに追い抜かれる?

441:デフォルトの名無しさん
14/07/03 07:39:27.54 FjTkZ2C1.net
jit関係ないっしょ

442:デフォルトの名無しさん
14/07/05 14:29:38.02 MeYLeon+.net
AngelScript|Д`)<AngelScriptJITは2.27に対応してるな

443:デフォルトの名無しさん
14/07/05 21:54:08.81 K5ikJkFl.net
>>439
ASがのけ者にされてたからちょっと安心した

444:デフォルトの名無しさん
14/07/06 06:19:08.04 xkFVsdDO.net
angelscript今までなぜか無視してたけど言語仕様見てきたら結構よさそうだな
これコンパイル時に全部型チェックしてくれるの?

445:デフォルトの名無しさん
14/07/06 12:38:13.11 uyyLiQuX.net
angelscriptの最大の問題はこれならC++直接書くのとかわらなくね?
という疑問が拭えないことだ

446:デフォルトの名無しさん
14/07/07 01:12:10.12 KmCWtuSa.net
>>442
どうしてもスクリプトにしないといけない箇所があったときは
慣れ親しんだC++に近い文法でスクリプト書けるってのは凄い利点だよ

447:デフォルトの名無しさん
14/07/07 01:43:37.99 PzOLkwtR.net
そもそも「どうしてもスクリプトにしないといけない箇所」なんてものは
思い込み以外では存在しない訳で

448:デフォルトの名無しさん
14/07/07 01:49:05.61 X/HL5rf/.net
(゚Д゚) ハア??

449:デフォルトの名無しさん
14/07/07 02:26:29.4


450:2 ID:amtUtvKD.net



451:デフォルトの名無しさん
14/07/07 07:47:10.67 3MsBFfON.net
その点Luaはプログラマではない者が使いやすいことを理念としているからな。
ただし英語程度はできることが前提だが。

452:デフォルトの名無しさん
14/07/07 09:42:19.00 n/CZjLr0.net
[要出典]

453:デフォルトの名無しさん
14/07/07 10:01:11.88 kMcKP8+6.net
実行時コンパイルできるC++って考えるといろいろと悪用法ありそうなんだけどな

454:デフォルトの名無しさん
14/07/07 10:23:10.27 KmCWtuSa.net
>>444
C++で作ったMOD前提のM.U.G.E.Nみたいな2Dゲーム
キャラクターの描画・行動全て自由に作れるようにするとしたら
スクリプトじゃなくて何にすればいい?

455:デフォルトの名無しさん
14/07/07 11:08:37.90 m9tAIraA.net
「C++でつくったMOD前提」ならそれこそスクリプトでなくてもいいのでは
制御のインターフェースが外部に全部公開されてるってことだよね

456:デフォルトの名無しさん
14/07/07 22:51:51.30 KmCWtuSa.net
>>451
書き方が悪かったな
MOD前提のC++で作った・・・だわ

457:デフォルトの名無しさん
14/07/08 14:33:11.22 x77uNS3E.net
AngelScript|Д`)<AngelScriptは組み込み簡単だぞ。
ヘッダ1個インクルードしてライブラリファイル1個リンクするだけでOK。

458:デフォルトの名無しさん
14/07/08 15:54:28.60 t9t2Zfam.net
AngelScriptはEnvironment-Module-Contextっていう構成がすごくわかりやすくて好きになったな

459:デフォルトの名無しさん
14/07/08 15:56:54.46 t9t2Zfam.net
まちがえた
×Environment → ○Engine

460:デフォルトの名無しさん
14/07/08 23:53:13.46 jARkErFj.net
C++が好きな人にとってはいいのかもしれないが
C++に特に思い入れのない人にとっては
何でC++の持つ恩恵が受けられる訳でもないスクリプトにまで
C++の流儀を持ち込まねばならんのだ
という感情があるということを
AngelScript推進派は意識した方がいいと思う

AngelScriptに懐疑的な人に対して
>>443みたいなアピールは無意味どころか逆撫でしてるんじゃない?

461:デフォルトの名無しさん
14/07/08 23:55:23.17 jARkErFj.net
勿論AngelScriptの有用性を否定してる訳じゃなくて
人にモノを薦めるときは相手の考えも尊重してね
という話

462:デフォルトの名無しさん
14/07/09 00:01:15.25 yWtVDAf2.net
C++構文とかどうでもいいからさ
コンパイル時型チェックしてくれる組み込めるスクリプト言語って他にないの?

463:デフォルトの名無しさん
14/07/09 00:02:36.15 6stlqCZC.net
なぜそこまで言われなければならないんだ・・・
じゃ今度からAngelScriptの話をするときは「(個人の感想です)」って末尾に付けるわ

464:デフォルトの名無しさん
14/07/09 00:08:24.48 HW4kwc6W.net
JavaやC#なんかとおなじで、ドカタに使わせる言語としては良さそうなんじゃないかと思う。

465:デフォルトの名無しさん
14/07/09 00:27:27.75 q6W6WKLr.net
AngelScript|Д`)さんってさぁ
Botや荒らしの類にしか見えないんだよ
本気で貢献したい、広めたいと思うなら
リファレンスの翻訳したり
サンプルコードを提示したりと
やることはいくらでもあるでしょ?
どっかの国のじゃないんだからさぁ

ま、流行らないと思うけども

466:デフォルトの名無しさん
14/07/09 00:43:58.35 ay8R5j5j.net
静的と動的を二刀流したら面白そうなのは分かるけど
同じ系統の言語を二個使ったら何ができるのかが分からない

467:デフォルトの名無しさん
14/07/09 00:55:53.38 Pn1IATNt.net
ASって存在価値ないんじゃね?ってレスに
こういう場面で使えるよって返したつもりだったけど



468: 無意識のうちに、C++すら理解できない能無しの劣等感を煽っちゃったんだね。 ごめんね。



469:デフォルトの名無しさん
14/07/09 01:03:57.02 6stlqCZC.net
動的型付け言語はコーディングミスをしない超人向け言語ですので
その超人様がコンパイル時型チェックに頼る凡人を見下すのは当然ですね

470:デフォルトの名無しさん
14/07/09 01:15:00.10 q6W6WKLr.net
>>463
誰だよお前はw

471:デフォルトの名無しさん
14/07/09 07:00:19.88 D5g6nYoo.net
俺だよ俺

472:デフォルトの名無しさん
14/07/09 08:20:34.04 dnhlgLoJ.net
AS信者ってキモいな・・・

473:デフォルトの名無しさん
14/07/09 08:35:39.86 dUvUmdvT.net
信者とか言い出すやつは荒らし。
みんな知ってるね。

474:デフォルトの名無しさん
14/07/09 19:01:55.74 r8cQgObV.net
AngelScriptは何も悪くない
悪いのはソレを使う人間だよ

475:デフォルトの名無しさん
14/07/09 19:50:22.95 ay8R5j5j.net
静的と動的の争いが無駄すぎるおかげで、二刀流の生産性が非常に高く感じられる

476:デフォルトの名無しさん
14/07/09 20:24:17.88 yWtVDAf2.net
お前らが言ってる静的動的ってどういう意味で言ってんの?
型付けが?それとも実行環境が?

477:デフォルトの名無しさん
14/07/10 14:37:45.84 QqTFR8Ev.net
AngelScript使ってる男の人って・・・・・

478:デフォルトの名無しさん
14/07/10 16:01:45.19 iwrqfwZm.net
TreeBoa?

479:デフォルトの名無しさん
14/07/11 01:37:33.79 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:デフォルトの名無しさん
14/07/11 02:45:06.27 Mxpl8CKX.net
>>474
dostring

はい

はい

481:デフォルトの名無しさん
14/07/11 04:09:49.02 D40A4FPH.net
>>474
requireの公式マニュアル読めばモジュールの検索手順載ってるからそれ読んどいてね
require経由で独自のアーカイブからファイルを読みたいなら
package.preloadのメタメソッドに自前のローダを仕込むとかトリックを使うことになるよ

482:デフォルトの名無しさん
14/07/11 07:07:35.10 TT3tD9Ot.net
>>474
スクリプトをロードすると関数がつくられる (lua_Stateではない)
各々の関数はグローバル変数を共有できる (完全に独立してない)

モジュールの使い方はバージョン毎に改善されているが
グローバル変数の使い方はあまり変わってないので使い方が分からない人はいないと思う

483:デフォルトの名無しさん
14/07/11 07:47:48.30 XCAXgxw4.net
module は廃止されたよね?
URLリンク(p-monster.hatenablog.com)

484:デフォルトの名無しさん
14/07/11 07:50:22.67 XCAXgxw4.net
こちらの方がよいかも
URLリンク(ar.aichi-u.ac.jp)

485:475
14/07/11 14:00:17.28 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:デフォルトの名無しさん
14/07/13 17:10:55.13 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:デフォルトの名無しさん
14/07/13 17:13:44.99 kuvdsVq2.net
× t1=math.random;(50000,50100);
◯ t1=math.random(50000,50100);

直したけど動きません

488:デフォルトの名無しさん
14/07/13 17:20:13.38 kuvdsVq2.net
お騒がせしてすいません
+が余計でした

489:デフォルトの名無しさん
14/07/13 23:51:22.63 oRazOMf+.net
関係ないけどluaは命令末尾にセミコロン要らないよ。
まあ、同じ行に命令を並べる時は必要になるから、念のため常につけておくってのはアリだと思うけど。

490:デフォルトの名無しさん
14/07/15 22:41:15.80 4Hk/aMI9.net
lua_getuservalue, lua_setuservalueってどういう使い方するの?
というかどういう風に使うもんなの?

491:デフォルトの名無しさん
14/07/18 07:19:05.42 MNjetX+m.net
>>485
マニュアルやら
URLリンク(sceneryandfish.withnotes.net)
などでも触れてるけど
数十行レベルでしょのシンプルなソース見ちゃうのが手っ取り早いと思うよ

492:デフォルトの名無しさん
14/07/21 12:06:25.68 MDGKsYd9.net
AngelScript|Д`)<AngelScript2.29.1記念カキコ
何か重要なバグフィックスらしい。

493:デフォルトの名無しさん
14/07/21 16:26:34.64 CPAJhmyk.net
URLリンク(www.angelcode.com)
これか
メモリ関連のバグフィクスと、出力されるバイトコードがおかしくなるバグの修正かな

494:デフォルトの名無しさん
14/08/11 22:58:35.99 xLVZtjTF.net
何気に痛いな
バージョン番号がいまいちわからないんだけど
stable版ってどれなんだろ

495:デフォルトの名無しさん
14/08/12 02:19:26.71 Hfmn/cHa.net
auto touchっていうアプリのスクリプトがLua言語でちんぷんかんぷんで。
ここで質問してもいい?

496:デフォルトの名無しさん
14/08/12 02:55:05.48 QZJQGyIx.net
>>490
いいよ
寂れてるし。

497:デフォルトの名無しさん
14/08/12 05:31:01.87 7nSDT24w.net
Lua,Squirrelの簡単な本がない
あれば買うが、難しい本はいらん

498:デフォルトの名無しさん
14/08/12 06:24:10.22 FZ4QQEE/.net
用途を考えればド素人向けの本はもっといっぱいほしいよな

499:デフォルトの名無しさん
14/08/12 08:49:45.55 Hfmn/cHa.net
質問しておきながら爆睡してしまった。申し訳ない。
auto touchの関数についてURLリンク(autotouch.me)

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

画像aがあるときにaをタップ
っていうのはfindImageTap {imagePath="/var/A.png", count=1};
だと思うんだけど出来なくて困ってる。

500:デフォルトの名無しさん
14/08/12 09:06:36.78 5U2rS/IR.net
面白そうなツールだな

501:デフォルトの名無しさん
14/08/12 14:26:34.31 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
画像はこんな感じ。カメラロールに保存しちゃうと拡大されちゃうけど、ホントは等倍ね
URLリンク(i.imgur.com)

とのことなんよ。画像を見つけたらfor以下をループってことなのかな?

502:デフォルトの名無しさん
14/08/12 18:35:02.04 XJm7PWEz.net
書いてあることそのままじゃね?
何が分からないんだろ

503:デフォルトの名無しさん
14/08/12 20:58:16.89 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:デフォルトの名無しさん
14/08/12 21:54:52.06 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:デフォルトの名無しさん
14/08/12 22:22:09.25 Hfmn/cHa.net
丁寧にありがとう。
local result = findImage{imagePath="/var/mobile/Library/AutoTouch/Scripts/IMG/ange.png", count=1}
alert("#result")
で反応無かったので画像の保存の仕方がいけなかったみたい。
ちょっと保存方法変えてみます。

506:デフォルトの名無しさん
14/08/12 22:37:13.67 XJm7PWEz.net
>>500
>alert("#result")
誰がそんな事言ったよ
てかそれで反応がないならおかしいぞ

507:デフォルトの名無しさん
14/08/12 22:38:29.15 wYq/8Bw7.net
ホスト環境側の制限なんかで、コード通りに動いてくれないときのデバッグが一番面倒だよね。

508:デフォルトの名無しさん
14/08/12 23:01:41.48 XJm7PWEz.net
エミュもなく実機テストオンリーじゃ地獄だね
URLリンク(teachme.jp)
見る限りリモートデバッグも出来るようだから
そっちの環境を作るのが先かもね

509:デフォルトの名無しさん
14/08/25 10:39:27.72 BL3IV/EG.net
ChaiScript ( URLリンク(chaiscript.com) ) って試した人います?
組み込みの文字列、配列、連想配列に std::string, vector, map を
そのまま使っているほどには、C++のクラスをバインドするには親和性が高そう。
比較的、型の扱いが厳密なのが特徴かな。 クロージャは無いかも。

510:デフォルトの名無しさん
14/08/25 18:26:32.35 eFSdMsqd.net
イラネ

511:デフォルトの名無しさん
14/08/25 19:18:08.37 8RrIpfE5.net
>>504
割とオーソドックスな文法だね
defでの関数定義時に、annotationとguardを設定できるのはちょっと面白い
(いまいち使い道は思いつかない)
バージョン5.3まで行ってる割にはドキュメントが弱そうに(個人的には)見えるけど
それだけシンプルって事なのか、それともdoxygenの使用にこだわっているせいなのか

512:デフォルトの名無しさん
14/08/25 21:14:31.71 wLUoTrN4.net
>>506
C++による仮想コードでスクリプトのドキュメントを生成していて、
doxygenの中にスクリプトとC++ APIの両方が書かれているみたい。
ただ、":=" と "=" の動作の違いとか、基本的なことが書かれてない気がする。

割り切った設計はなかなか面白いのだけど、いろいろと惜しいな。

513:デフォルトの名無しさん
14/08/26 09:41:08.11 laXhI8kB.net
マニュアル酷いなぁ

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

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

訳わからん

514:デフォルトの名無しさん
14/08/26 12:16:11.13 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:デフォルトの名無しさん
14/08/26 21:00:26.29 CrpVQ0De.net
>>508
これが訳分からんならお前には色々と難しいな

516:デフォルトの名無しさん
14/08/26 21:58:18.18 laXhI8kB.net
>>509
非終端記号混じりで定義するなら
それらの定義もしっかりやれよって話

>>510
俺には無理
annotation
1行目のみ#までの空白タブは読み捨てるが2行目移行は読み捨てない
Annotationとキーワード"def"がある行の間に空行はいくら入ってもいいが空白行やコメントは不可
こんなソース見なきゃ分かんねーよ

517:デフォルトの名無しさん
14/08/27 06:44:36.56 4iKpxsh4.net
>>511
確かにannotationは説明不足だな
他のコメントは // でも /* */ でもいいのに、ここは # のみだし
複数行の扱いとか、get_annotation() で先頭の # が除外されないのも微妙

マニュアルがどうこう以前に、annotationの仕様がこなれていないんじゃないかな
「関数の直前のコメントは、その説明とみなす」というアイデアは嫌いじゃないが

518:デフォルトの名無しさん
14/08/27 07:39:39.64 3/KZIqq3.net
イラネ

519:デフォルトの名無しさん
14/08/27 07:50:51.23 EpvBGjSy.net
Lua原理主義者さん鬱陶しいな・・・

520:デフォルトの名無しさん
14/08/27 09:13:33.41 6IT+XF7c.net
ライバルにストレスを与えるのは当たり前だ
競争原理が鬱陶しいなら競争をやめればいい

521:デフォルトの名無しさん
14/08/27 15:44:42.46 4iKpxsh4.net
>>504
多少複雑なことをやろうとすると segfault で落ちる。
GCがC++任せ(参照カウント)なのに、オブジェクトの生存期間の制御が甘いようだ。
良いバインダではあるけど、良いエンジンではないな。

522:デフォルトの名無しさん
14/08/28 13:22:05.82 wsbnD5TY.net
>>494と同じようにauto touchで動かすLuaの質問してもいいかな?

523:デフォルトの名無しさん
14/08/29 14:42:44.60 xFSbaFifS
便乗で(・_・;
autotouchの拡張関数のfindimageのソースコードが知りたいんですが、
何処かみえる場所に置いてないですかね。
プログラムに組み込まれちゃってるんかな。
自分で書いた関数だと遅くて遅くて。

524:デフォルトの名無しさん
14/08/29 14:50:56.97 xFSbaFifS
間違えました。findcolorです

525:デフォルトの名無しさん
14/09/01 03:56:01.22 ruMjAUJp.net
>>517
いいよ
寂れてるし。

526:デフォルトの名無しさん
14/09/07 20:51:30.64 ppGxj2XK.net
と言っても質問なしw

527:デフォルトの名無しさん
14/09/07 21:16:45.63 V4yJXxP4.net
もしかしたら行間を読み取ってダメだって言われたと思ったのかもしれない

528:デフォルトの名無しさん
14/09/08 08:36:00.81 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:デフォルトの名無しさん
14/09/08 08:43:07.21 YMBZ0Z5D.net
同じ文面でスルーされるってのはちと悲しかった

530:デフォルトの名無しさん
14/09/09 08:11:02.05 2JmvO9sZ.net
2度あることは3度ある!

531:デフォルトの名無しさん
14/09/12 14:58:08.94 y2znSXEd0
countTimer(180)

↑こんな感じで記述するだけで、たとえば180秒ごとに戻り値がtrueになるようなfunctionないでしょうか?

もしくは、

countTimer(A,180)

などと、先頭にID名を書くことで、別々のタイマーとして動作するようなものがほしいのですが。

532:デフォルトの名無しさん
14/09/13 13:49:43.66 HQ53r6lE.net
Luaの文法は組み込みじゃなくてLLとしても十分使えると思うんだよなぁ。
クロージャをなくして関数束縛とラムダに分離したらRubyよりも手軽に使えそう。

533:デフォルトの名無しさん
14/09/13 14:34:10.13 xYGMnmOJ.net
LLとして利用するのにコンセンサスがいるのか?

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

ついでに文法だけならもっとマシな言語いくらでもあるだろ
Luaは処理系実装・実績を含めて初めて評価される類だと思う

534:デフォルトの名無しさん
14/09/13 14:59:46.23 2mQgH8ds.net
localの宣言はLLじゃないな。

535:デフォルトの名無しさん
14/09/13 15:33:20.77 y8nlksus.net
「LLとして使う」ってどういう文脈なんだろう?
一般業務なら Battery Included な環境のほうが便利なんじゃないか?
組み込み言語のライブラリの貧弱さは、サンドボックス内で使われるからこそ許される(し、好まれる)のでは。

536:デフォルトの名無しさん
14/09/13 17:15:36.86 CqCzoC9O.net
local宣言はブロックの途中から終わりまでのスコープを作る
つまり宣言の内容より位置に意味があるから省略できない

537:デフォルトの名無しさん
14/09/13 17:22:33.96 xYGMnmOJ.net
宣言した位置で意味が変わるようなコードはクソだから
配慮しなくてもいいような

538:デフォルトの名無しさん
14/09/13 17:39:51.70 y8nlksus.net
>>531
Luaではlocalを省略するとグローバル変数になるから、位置以前の問題では。

>>532
C++だと変数の宣言位置によって、そのコンストラクタが走るタイミングが変わるぞ。

539:デフォルトの名無しさん
14/09/13 17:40:19.61 CqCzoC9O.net
gotoは行き先の名前を考えるけど構造化プログラミングは位置を考える
これが大成功してしまったから
位置の考え方は間違ってないと思う

540:デフォルトの名無しさん
14/09/13 17:58:11.94 xYGMnmOJ.net
>>533
C++でもコンストラクタが走るタイミングで結果が変わるコードは
クソに分類されると思うが

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

>>534
構造化プログラミングで考える「位置」は
階層で十分であって「行」ではないような

541:デフォルトの名無しさん
14/09/13 18:13:48.15 2iAULK/t.net
「クロージャを関数束縛とラムダに分離」ってどういう意味?
function宣言ってそもそもクロージャの作成と変数への代入のシンタックスシュガーに過ぎないんじゃなかったっけ?

542:デフォルトの名無しさん
14/09/13 18:52:34.79 y8nlksus.net
>>535
コンストラクタにも実行コストがあるから、必要になるまでは遅らせるのが常識。
例えばその変数の初期化前に分岐があるような場合。
また、ロック/アンロックに RAII を使うようなイディオムは、当然ながら「コンストラクタが走るタイミングで結果が変わる」。

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

あと、この文脈では菱形継承はまったく関係ない。
話がC++への批判に摩り替わっていないか?

543:デフォルトの名無しさん
14/09/13 19:14:15.92 xYGMnmOJ.net
コンストラクタが走るタイミングが読めない
極端な例として菱形継承を挙げただけだよ

とりあえずここLuaと愉快な仲間たちのスレなんで

544:デフォルトの名無しさん
14/09/13 19:15:15.01 CqCzoC9O.net
>>536
関係ないかもしれないけど
関数束縛が代入の構文糖である言語は
前方参照をすると失敗する場合がある

545:デフォルトの名無しさん
14/09/15 10:09:15.73 pkGLa0w7x
Luaの質問専用スレってないのかな。

546:デフォルトの名無しさん
14/10/03 07:43:15.70 lGjxzjS9.net
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ

547:デフォルトの名無しさん
14/10/11 11:25:02.83 9ZTN9fQf.net
luaを知るのに既存のスクリプトをいくつかみてるんだけど
lua.eっていう拡張子のものがいくつかあって開けない
ググッてもわからないんだけどlua.eの形のものは何なんだろう
見れるエディタも教えてもらえるとありがたい

548:デフォルトの名無しさん
14/10/11 11:30:28.22 9ZTN9fQf.net
スマン・・独自ソフトで暗号化されてるだけだったわ

549:デフォルトの名無しさん
14/10/12 05:12:57.70 94OdN8X7.net
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >

550:sage
14/10/12 13:45:43.55 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:デフォルトの名無しさん
14/10/12 14:10:33.80 UZYaSt7F.net
for i=1,n do

553:542
14/10/12 14:32:29.24 i7kDtML/.net
回答ありがとうございます。 試してみたところ7行目で
'for' limit must be a number
と出ました 自分のほうでもいろいろ試してみます
回答ありがとうございました

554:デフォルトの名無しさん
14/10/12 14:40:16.19 UZYaSt7F.net
BubSort(x,NUMDATA)

BubSort(x,NUM_DATA)

555:542
14/10/12 14:48:18.55 i7kDtML/.net
ケアレスミスごめんなさい;;
ありがとうございます、今度は八行目で
attempt to compare number with nil
で出ました、、何度もすみません 自分でも試行錯誤してみます

556:デフォルトの名無しさん
14/10/12 14:59:53.88 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
14/10/12 15:02:46.29 i7kDtML/.net
for j=n,j>i doをfor j=n,j>i,-1 do
に書き換えました

558:542
14/10/12 15:06:31.21 i7kDtML/.net
解決しましたありがとうございます!!

559:デフォルトの名無しさん
14/10/12 20:01:27.77 e2Gzikyq.net
すんごい優しい人がいるなあw
俺が勝手に褒めておいてやるよ

ただ、プログラミング言語だけでなく日本語でも会話して欲しい

560:デフォルトの名無しさん
14/10/13 01:38:05.54 B15n5qdA.net
cocos2d-xで素直にLua使うのもなんか悔しかったから
mrubyを組み込んでみた
肝心のLuaとの比較だけどLuaもrubyも素人の俺には
よくわんないっていう
ただスクリプトでのゲーム開発ってのは楽しいな

561:デフォルトの名無しさん
14/10/17 23:51:55.26 9a/zPdtM.net
juliaがembedできると聞いて試してみようと思ったが、なんか面倒くさい。
プログラミング言語のくせになんでネットワークライブラリ必須なんだよ。

562:デフォルトの名無しさん
14/10/18 06:17:24.91 0zghehpU.net
並列実行、数値計算が売りでFortranを比較対象にしている言語に
デフォルトでネットワーク処理を持っているのを期待するのはさすがに酷だ

563:デフォルトの名無しさん
14/10/20 02:20:43.02 9ZZuBDyz.net
luajitっていつまで5.1で足踏みするんだろ
本家は5.3αまで進んだのに

564:デフォルトの名無しさん
14/10/20 07:51:24.76 887X5tQi.net
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch