[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/27 16:07 / Filesize : 264 KB / Number-of Response : 1020
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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/

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クラスとかも登録したいと考えてました。
設計考えてきます。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<264KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef