- 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/
- 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]さん" みたいなやり方にすべきでしょうか?
|

|