1 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 09:11:41 ] LuaやSquirrelなどアプリケーションへの組み込み用途で 使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■前スレ 【Lua】組み込み系言語総合【Squirrel】 pc12.2ch.net/test/read.cgi/tech/1205208141/ ■過去スレ その3 pc11.2ch.net/test/read.cgi/tech/1160799232/ その2 pc8.2ch.net/test/read.cgi/tech/1063711237/ その1 pc5.2ch.net/tech/kako/1034/10341/1034182349.html
463 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 08:14:53 ] >>462 できました! ありがとうございます
464 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 09:04:14 ] Luaのテーブルってキーを使ってアクセスするようになってますが、 キーが分からない場合に全ての項目を調べたい時のサンプルってありますか?
465 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 09:14:26 ] for k,v in pairs(t) do hoge(k,v) end
466 名前:463 mailto:sage [2009/11/21(土) 09:49:37 ] >462 でグローバル環境を空にはできましたが、 これだけだと再使用ができないような? このあとlua_openlibsを使っても標準ライブラリが使用できません。 Lua_Stateをcloseせずに再使用するのは大変みたいですね。
467 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 10:09:26 ] >>465 thx pairsやnextでなめれるんですね
468 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 10:14:16 ] lua_openlibは副作用でレジストリにも変更加えるからじゃね? 走らせたいチャンクを一旦スタックに積んで そいつの環境を置き換えるのはどう?
469 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 10:56:34 ] >>468 具体的なやり方が今一思いつきません。 load〜で積んだあとに空の環境に置き換えるって意味じゃないですよね?
470 名前:469 mailto:sage [2009/11/21(土) 11:03:04 ] そもそもスクリプト側で使ったグローバル"変数"だけ初期化して ライブラリ等のテーブルは使いまわせたらlua_Stateの再構築の コストを減らせて、細かいスクリプトの連続呼び出しに良いのではと 考えていたんですが、Luaは変数も関数もその他色々もテーブル分けて ないので、選択的に変数だけで消すのに無理がある気が・・・
471 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 11:04:51 ] 何でデフォの宣言がglobalなんだろうかね・・・
472 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 11:52:21 ] >>469 いや、そういう意味。走らせるチャンク毎に独自の環境を差し込む。 luaL_openlibsに関しちゃ対象がグローバル環境決め打ちのサポート関数でしかないんで どのみち使えないんだけど、そこはチャンクの環境に差し替えるテーブルの__indexにフックかけて グローバル環境に委譲してしまうって感じでどうか。 これならlocalをつけない変数宣言はチャンク毎の独自の環境に登録されるだけなので グローバル環境の汚染も防げる。やってることはmodule関数と大体いっしょ。 コード書いて検証したわけじゃないのでうまくいくかは知らんw
473 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 13:01:22 ] --ライブラリ等のテーブル_Gと、スクリプト側のenvironmentを分ける local metatable = { __index = _G } local chunk = loadfile(filename) local environment = {} setmetatable(environment, metatable) setfenv(chunk, environment) --Cを使えばなんでもできるので、ダイナミックリンク禁止 environment.require = function() end environment.package = {} return chunk()
474 名前:469 mailto:sage [2009/11/21(土) 13:11:20 ] >>473 なるほど、こうやるのですか。 ありがとう!
475 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 10:32:35 ] ゲーム内にN個のオブジェクトが存在する。 それぞれのオブジェクト固有の状態を保存するために、Cプログラム側でN個のテーブルを用意する。 オブジェクトの行動を定義したluaファイルをロードしてlua_Stateインスタンスを作る。 オブジェクトはN個だが、このインスタンスは1つしか作らない(みんな行動パターンは共通なので) で、個々のオブジェクトの状態を更新するときに、そのオブジェクトに対応するテーブルを引数にして lua関数を呼び出し、テーブルを更新させる。 というのをやりたいのですが、N個のテーブルを作るのが「?」です。 テーブル作ってスタックに積むのはいいんですが、なんせスタックに積むわけですから、 どこかの操作で勝手にPOPされたり、消えたりしませんかね??
476 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 12:35:08 ] >>475 そういう用途のためにレジストリとリファレンスの機構が存在する。 1. 任意のオブジェクト(この場合はテーブル)を作る 2. int table = luaL_ref(state, LUA_REGISTRYINDEX); でレジストリに該当テーブルを格納してリファレンスを取得。 オブジェクトはスタックからは解放されて、レジストリテーブルでのみ保持された状態になる。 リファレンス値は全体でユニークで、C 側でそのままオブジェクトを区別しつつ単純保持するのに使える 3. 使いたい場面(この場合は引数として渡す時)では、 lua_rawgeti(state, LUA_REGISTRYINDEX, table) としてレジストリからスタックに取り出してきて使う 4. 最後破棄する場合は luaL_unref(state, LUA_REGISRYINDEX, table) として解放させる N個つくるならこんなかんじで // テーブル確保 int table[N]; for (int i=0;i<N;i++) { lua_newtable(state); table[i] = luaL_ref(state, LUA_REGISTRYINDEX); } // 例えば table[0] をわたして関数を呼ぶ lua_getfield(state, LUA_GLOBALSINDEX, "func"); // 関数取得 lua_rawgeti(state, LUA_REGISTRYINDEX, table[0]); // 引数としてつむ lua_call(state, 1, 0); // 引数1戻り値無し // テーブル解放 for (int i=0;i<N;i++) { luaL_unref(state, LUA_REGISTRYINDEX, table[i]); } ちなみに squirrel だとオブジェクトのリファレンスを、直接C側から HSQOBJECT としてスタックから取得して 保持できる。概念としてはこっちのがシンプル。
477 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 03:18:07 ] ぶった切りすいません luaは組み込みに最適だと思うんですが、 lua単独でGUIを表示してゲームを作り、実行ファイル(exe)に変換はできるのでしょうか? もしできるなら、教えてください。 ぐぐっても探すことができなかったので・・・
478 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 04:22:36 ] 自前で組み込むの前提の言語でそういうもの作ってもあまり嬉しくないのでだれも作ってないと思います
479 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 05:02:50 ] 言ってることが良く分からないが、Lua単独ではGUIは無理だと言っておく そもそもこのスレで紹介されてる言語は、用途を特定しないスクリプトであって組み込んでどのように動かすかはその人次第 そういう用途なら○○ツクールやHSPにしておきなさいな
480 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 08:23:05 ] 厳密には単独ではないけど、Luaのモジュールか何かでSDL使うのとか無かったっけ?
481 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 09:34:33 ] 自分でGUI処理の組み込み部分を作り、スクリプトリソースをリンクすれば、 単独exeに出来るだろ。
482 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 10:12:43 ] >>477 その用途なら、Pythonじゃね?
483 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:08:15 ] I think so.
484 名前:477 mailto:sage [2009/11/23(月) 16:28:01 ] みなさん、レスありがとうございます。 どうしてもluaでゲームを開発しなくてはいけない状況なのです。 ウィンドウの表示がわからないため、苦戦しています。 どの参考書を読んでも書いてなくて。 別の言語にウィンドウを作らせて、動作はLUAだけで、などでできますでしょうか?
485 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:30:06 ] >>484 なんでできないと思うの?
486 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:38:15 ] >>485 レスありがとう みんなやってないし、コマンドプロンプト上か ほかの言語に組み込むだけのものかと思いまして・・・
487 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:46:43 ] aims.dna-softwares.com/ こことか見てみ Luaを主体にしたゲームエンジン作って、このサークルのソフトは殆どLuaで作られてる それにしても、その知識量からどうしてもLuaで作らなきゃいけない状況が発生するなんて いったいどんな大見得切ったんだよ
488 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:53:23 ] 参考書読んだのなら、Luaを使っている人がどのような目的と仕組みで走らせるのかは理解した? あくまで組み込みスクリプトなんだよ? ウィンドウズを表示するという関数を組み込んでもらって、 Luaにインターフェース提供してもらわないとprintやscanすらままならないよ ゲーム開発でスクリプタとして働くのならLuaの言語仕様を覚えるのと、PGからバインドした関数一覧もらってこれば良いよ
489 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:00:01 ] レスありがとう 正直、大学のゼミでこの言語を使うということに決めたんです いくつもある言語から選んで、luaを選んだのは自分だけ。 頼る人もいないので、本とネットで勉強してるかんじです。 >>487 サンプルをdlして参考にしていますが、難しい。 もっとじっくり読んでみます。 >>488 用途は理解しているつもりですが、これをメインにしてプログラムを組んでいかなくてはいけなくて・・・ やはり、ウィンドウを表示する関数をCなどで書いて、luaからその関数を持ってくることが一番楽なんですかね。
490 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:11:31 ] 明日、学校でごめんなさいして もっと詳しくて質問できる奴のいる言語で 最初からやり直す方がましのような気がする。
491 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:13:36 ] >>490 それはしたくないというか、結構この言語は気に入っているので辞めたくないんですよ
492 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:17:17 ] それでここきてなんとかしようなんてあますぎる
493 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:18:29 ] C側とのデータのやり取りがめんどいから余り良い言語とは・・・
494 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:26:23 ] >>489 > やはり、ウィンドウを表示する関数をCなどで書いて、luaからその関数を持ってくることが一番楽なんですかね。 Lua を使うと言って、こういったバインド系の作業はしたくないとか、意味がわからん。 もともとそうやって使う言語だろうに。 「みんなやってない」とか言ってるが、何個のプロジェクトを見て言ってるのか怪しいもんだ。
495 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:26:36 ] Luaの言語を理解して使えるようになる手間を1とすると、 ゲーム用のC/C++ライブラリを組むのが最低10倍〜ぐらい手間も時間かかるよ Win32APIからDirectXかOpenGLまで使えるようにならないと話にならない ゲームライブラリは既存のものでいいならC素人ならDXライブラリを組み込むのが多分もっとも最短だと思う ゼミテーマが「組み込みスクリプト研究」で実例として「ゲーム」を選んだのなら、外部ライブラリにどっぷり頼っていったほうが幸せだとは思う
496 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:27:39 ] 怒られたくなくて嘘を付いている幼児じゃあるまいし 無理せず諦めておけよ
497 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:33:10 ] >>493 つまりAngelScriptがいいって事ですね。 わかります。
498 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:42:29 ] 自分の実力より遙かに上の事をやろうとしても無駄になるだけだぞ ちょっと上ならともかく分不相応すぎ。諦めろ
499 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:48:07 ] Luaじゃ宿題スレも使えないしねえ。 (答える奴はどうせこのスレも見てる)
500 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 18:23:45 ] HSPスレに逝けよ
501 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 21:35:31 ] とりあえず、この本みてみて、何とかなるか考えてみたら。 スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践 www.amazon.co.jp/dp/4797348550 サポートページ lua.mine.nu/w/LuaBookSupport どうなんだろうなあ。
502 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 21:46:36 ] ttp://en.wikipedia.org/wiki/Category:Lua-scriptable_game_engines Luaでルーチンいじれるゲームとかゲームエンジンとかあるけど 日本語の資料があんまりないと思う
503 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 10:46:49 ] Lua for Windows: A batteries included Lua installation on Windows. luaforwindows.luaforge.net/ これいっこダウンロードしてインストールすれば、 GUI から OpenGL から DB 接続までなんでもはじめから入ってるよ。 ウィンドウ作る程度なら、サンプルそのまま使える。
504 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 07:48:34 ] Pawn始める人への組み込みメモ(修正版) // .amxファイル(コンパイル済みPawnバイナリ)を実行するための最小コード。 // 必要ファイル: amx.c/h amxaux.c/h amxcons.c/h amxcore.c osdefs.h #include "amx.h" #include "amxaux.h" #include <stdio.h> AMX_NATIVE_INFO console_Natives[]; AMX_NATIVE_INFO core_Natives[]; int main(int argc, char *argv[]) { AMX amx; cell ret = 0; if (aux_LoadProgram(&amx, "test.amx", NULL) != AMX_ERR_NONE) exit(1); if (amx_Register(&amx, console_Natives, -1)) exit(1); if (amx_Register(&amx, core_Natives, -1)) exit(1); if (amx_Exec(&amx, &ret, AMX_EXEC_MAIN)) exit(1); printf("%ld\n", (long)ret); aux_FreeProgram(&amx); return 0; }
505 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 07:49:39 ] // Pawnコンパイラの最小プロジェクト // 必要ファイル: libpawnc.c lstring.c/h memfile.c/h sc1.c〜sc7.c sc.h sc5.scp sc7.scp scexpand.c sci18n.c sclist.c scmemfil.c scstate.c scvars.c svnrev.h // それに加えて ../amx でアクセスできる場所に osdefs.h amxdbg.h が必要 // 実行時にsc1.cのsetconfig()あたりでNULLエラーが発生するなら[プロジェクトの設定->構成プロパティ->全般->文字セット]でUnicodeを無効にしておく #include "sc.h" int main(int argc, char *argv[]) { return pc_compile(argc, argv); }
506 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 14:11:52 ] luabindを使っていて気になったのですが、 //cpp struct A { int x; }; A *ptr; A& ref() { return *ptr; }; A a; luabind::module(L) [ luabind::def("ref", &ref), luabind::class_<A>("A") .def_readwrite("x", &A::x) ]; ]; --lua v = ref() v.x = 1 --参照なのでC側のaにアクセスできる クラスのインスタンスの参照を渡すときに、上の様に一度staticかglobalな変数 (上の場合ptr)を経由させる方法しか思いつかなかったのですが、ダイレクトに 渡す方法は無いものでしょうか?
507 名前:506 mailto:sage [2009/11/25(水) 14:14:17 ] 訂正 A a; ptr = &a; luabind::module(L) [ luabind::def("ref", &ref), luabind::class_<A>("A") .def_readwrite("x", &A::x) ];
508 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 17:56:07 ] Lua詳しくないんでアレだが、lua_pushlightuserdataではダメなの?
509 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 09:43:19 ] Luaで実行状態を全部ファイルに保存して、また復帰するようなことは可能ですか?
510 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 10:10:30 ] >>509 Lua側でioで記録、読み込みするコード書くしかないかも
511 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 10:18:51 ] Smalltalkなら可能です
512 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 11:32:21 ] >>509 言語機能としてはないので、無理やりやることになる。 一応こういうのはあるけど、安定してるかどうかは不明。 lua-users.org/wiki/PlutoLibrary
513 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 13:19:28 ] >>508 試してみましたが、luabindではligthuserdataではなくuserdataを使用して 独自の型ID等を付加してチェックしているようで、無理でした。 luabindのソースを追ってみたところ、luabind::detail::convert_to_luaで C++側の変数の参照をluaのスタックに積めることが分かったので、 これでどこかのテーブルに置くとか引数で渡すとかの方法が使えそうです。 luabindのドキュメントにもサンプルにも、こういったスタックを使う方法が 記載されていないので、本来の使い方とは違う気もしますが。
514 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 13:24:32 ] >>513 通常、スクリプトにはC++クラス型のインスタンスのポインタを渡してポインタで操作させる。 C++の参照はC++固有の機能なので他の言語では使えないと考えたほうがいい。 別の変数に代入した瞬間(参照で無く実体のコピーとして)にコピーコンストラクタが発動したって文句言えないぞ。 まあバインダがエラー吐いてコンパイルの段階で失敗すると思うが。
515 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 13:29:57 ] 休止モードを呼び出せばいいんだよ。
516 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 14:09:30 ] >>514 bind側に参照を渡した場合は、ポインタに変換して管理してるみたいですね。
517 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 08:47:27 ] >>510 >>512 ありがとうございます。 Pluto調べてみます。
518 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 09:36:22 ] LuaでGUIムリだろと思ってたら、意外とバインダが出てくるもんだなw お前ら優しすぎw
519 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 10:21:52 ] 小学生に方程式ムリだろと思ってたら、意外と鶴亀算が出てくるようなもんだな
520 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 11:31:33 ] 最近はメインループのかなりの部分まで組み込みスクリプトで作っちゃうのが主流になりつつあるのかな。
521 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 12:02:53 ] Luaだと入力補完のあるエディタが無いから 逆にやり難いと感じる俺
522 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 12:11:48 ] >>520 大半を組み込み言語化した結果、パフォーマンスの壁にぶちあたって 機能分離可能なところはどんどんC++化していく、ってのが定番だとオモ サンプル:俺
523 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 12:45:05 ] まあ通常、動的(型付け)言語はネイティブコードと比べて10倍以上は遅いからな。 オレもスクリプトでゲーム開発環境を一通り書き上げたところだが、 60フレームまわしたらそれだけで意外にCPU食ってしまうので、ちと困ってる。 最低ラインがPentium 4 2.4GHzくらいになった。
524 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 14:49:37 ] JIT付き静的型付けスクリプト言語 穴場だから誰か作れば 有名になれるかもよ
525 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 15:10:52 ] >>524 すでにあるっちゅうねん。 .NET Framework向けだがな。
526 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 15:54:13 ] >>.NET Framework向けだがな。 駄目じゃん
527 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 16:18:55 ] 作りたいと本気で思ってる俺が来ましたよ もし作るならスクリプトで定義したクラスのインスタンスがC++から簡単に作れて、マルチスレッドとか使って同時に複数のインスタンスを参照してもおかしくならない仕様にしたいな
528 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 16:46:03 ] つAngelScriptJIT ただしやり方は不明。
529 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 18:52:02 ] LuaJIT ってなかったっけ?
530 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 19:09:51 ] Luaは静的じゃないでしょ
531 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 19:18:30 ] ああごめん、静的を見落としてた
532 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 13:59:21 ] luaのlua_pcallのerrfncが呼ばれたときに、元のエラーメッセージとは 別にソースファイル名、行番号を収集する場合なんですが、 lua_getstackのレベル指定で、1から++しながら順にたどって 最初にcurrentlineの値が-1以外になったレベルがソースファイルの 階層と判断して問題ないでしょうか?
533 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 15:45:53 ] メンバアクセスの:と.ってどう違うの?
534 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 17:27:09 ] .が通常のメンバアクセスで、:でアクセスする場合は v.(v ,〜 に展開される。 例: v:open(arg) -> v.open(v, arg)
535 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 17:53:43 ] d
536 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:04:12 ] >>17 問題1 使用言語: R f <- function (n) {substr("abcdefghijklmnopqrstuvwxyz",1,n)} > f(6) [1] "abcdef" > f(30) [1] "abcdefghijklmnopqrstuvwxyz"
537 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:06:04 ] すみません。 書くところを間違えました。 ごめんなさい。
538 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:06:48 ] 聞かれてないけどついでに補足すると.は[]に展開される v:member(arg) -> v.member(v, arg) -> v[menbe](v, arg)
539 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:09:23 ] v['menber'](v, arg)
540 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:17:00 ] へー じゃあメンバアクセスのたびにマップ検索してんのか 遅くならないのかな
541 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:28:37 ] 空想具現化プログラミングというところから落としたlua5_1_3_Win32_mbenc_a2.zipを展開したところbin2c5.1.exeにウイルス検知ソフトが反応したんですが、これは大丈夫なんでしょうか?
542 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:31:42 ] >>540 そりゃ勿論遅いだろうさ
543 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:41:44 ] メンバだけの話じゃないだろうし。 変数名からなにから全ての識別子の判定で毎回どこかのテーブル見てるはず。
544 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:59:47 ] >>541 カスペルスキー系の誤検出のはず。 bin2cとか別に普段使うものでもないから削除しておいても良いかと。
545 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 19:20:09 ] >>543 ローカル変数は実行時はテーブル見ない。例えば、 local a = b * c + d を local a = b * c a = a + d に変えても速さは変わらない。
546 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 19:37:56 ] >>544 ありがとうございます安心しました
547 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 23:33:25 ] 静的型付けならPawnいかがかな?
548 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 22:05:16 ] ちょっと確認したいんですが lua_registerで登録した関数を呼び出すときには新しいスタックが毎回生成される、したがって Glue関数内部ではlua_gettopでスタックの数を確認する必要なしにスタックの1番目が最初の引数、2番目が・・・としてよい 同様に、返り値もスタックの1番目が最初の返り値、二番目が・・・としてよい(何も考えずにスタッククリアして返り値を積めばいい) これは正しいですか?
549 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 00:52:46 ] うむ
550 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 06:17:28 ] >>524 ActionScript 3.0 がそっちのほうを目指しているんじゃないかな。 いちおう Flex SDK はオープンソースらしいから、 自分のプログラムに組み込むこともできるかも。 >>540 Lua Performance Tips www.lua.org/gems/sample.pdf for i = 1, 1000000 do local x = math.sin(i) end runs 30% slower than this one: local sin = math.sin for i = 1, 1000000 do local x = sin(i) end
551 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:46:34 ] Luaについて質問です。 10進数で書かれた文字列、たとえば「\130\160\130\162\130\164」は Lua上で「あいう」となりますが、外部ファイルに記述したものを io.linesで取り出したものだと、コード列が返ってきてしまいます。 これを通常の文字列に変換したものとして使いたいのですが、どうしたらいいのでしょうか。
552 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:50:08 ] >>549 ありがとうございます
553 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 22:20:40 ] >>551 多分C側でバイナリに変換しないとダメじゃないだろうか。 Luaの標準ライブラリでももしかしたら出来るかもしれないが、 Cの方がてっとり早いだろう。
554 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 23:27:17 ] SquirrelのほうがLuaよりゲーム向けなんかな? どっちも知識なしだったらSqから勉強でいいのだろうか
555 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 23:54:06 ] >>554 どちらも汎用スクリプトだから処理系単体ではどちらがよりゲーム向けということはない。 周辺ライブラリやバインダの入手性や使い勝手の差はあると思うけど。
556 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 01:51:00 ] >>554 速度がLua>Sqで結構大差あったりするんで ttp://ja.wikipedia.org/wiki/Squirrel のLuaとの違いに強い魅力を感じるんでなければLuaがオススメ。 特に知識なしなら、Luaのほうが日本語資料が充実してるんで勉強しやすいかと思う。
557 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 02:00:16 ] lua は文法がな……
558 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 08:15:39 ] 日本語は文法がな・・・
559 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 09:41:13 ] AngelScript|Д゚)ジー
560 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 11:48:28 ] >>551 loadstring をつかえばできるよ。 local str = "\130\160\130\162\130\164" -- io.lines で取り出した文字列 local decode = loadstring("return \"" .. str .. "\"") print(decode())
561 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 15:29:08 ] >>449 コンパイラがOSロケールに依存してるから英語にしましょうなんて愉快すぎるわ 他のロケール依存アプリ全部道連れにする方法なんぞ万人に薦められんだろ
562 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 16:39:37 ] 問題が起こるのはShiftJISを決めうちして作っている一部の馬鹿アプリだけだろ。 なぜ全部とか間抜けな話になるのか、頭の悪い奴の考えはさっぱり分からん。
563 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 16:40:53 ] バカアプリの代表が Visual Studio って話じゃないのん?