プログラミング言語 Lua
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGhttp://www.lua.org/
0478デフォルトの名無しさん
NGNG0479468
NGNGこのスレもしかして見られてるのかな?
0480デフォルトの名無しさん
NGNG見てます。別の弾幕記述言語として、
Lua使ってみたいなーと思って検索したらこのスレ見つけました。
ゲームの組み込みには本当にいいですね。
0481468
NGNG0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNG…としょうがないから反応してみる。
0484デフォルトの名無しさん
NGNG…としょうがないから反応してみる。
MinGWでうまくコンパイルできないんです。
0485デフォルトの名無しさん
NGNGmame32plus!のコンパイルに使ったmingwセットだけどw
cygwinで-mno-cygwinだとライブラリは問題なくコンパイルできるけど
lua.exeがなんかうまくcygwinフリーにならない…
0486デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNG0488449
NGNG2) 66msec
3) 564msec
にまで上がった。
ちなみにもう700行じゃない。
(Cで2000行、schemeで5000行程度)
2)と3)で、またかなり差が開いたが、
2)はループ全体をネイティブコードに変換できた結果。
簡単な演算なら全てネイティブ変換可能にした。
環境に対しての変数参照の手数が結構ある事と、
毎回デクリメントで型変換が発生するのでC言語程速くはならない。
これ以上は型について解析しないと改善されない。
3)はloop呼び出しで一旦ネイティブコードの中断が起きるのと、
毎回環境フレームの移動が起こる結果。
このケースではフレームの直接上書きが可能な事に着目すれば
もうちょっと改善される。whileに形式変換してしまう手もある。
GCは明示的にcons等やclosureを生成していかない限り、起動されることはない。
0489山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0490デフォルトの名無しさん
NGNG関数も含めた内部状態を丸ごと保存・丸ごと復帰したいんだけど
方法が判らんぜよ。
luacみたくluaL_loadfile()してluaU_dump()する方法なら問題なく
できるんだけど・・・もしかしてluaL_dofile()、lua_dostring()した
結果は保存不可?
0491デフォルトの名無しさん
NGNGどうすればよいでしょうか?
Cのincludeのようなものがあるのでしょうか?
それともlua_Stateを使ってなんらかのバインド処理を行うことが
できるのでしょうか?
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNGまたまたご冗談を・・・・
猿がそんなことできるわけないでしょ。
0494デフォルトの名無しさん
NGNGdofile("")
0495デフォルトの名無しさん
NGNG一瞬顔文字に見えたし。
0496デフォルトの名無しさん
NGNG8ヶ月前にレスするなんて遅すぎでは?
0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNGマチクタビレタ〜
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < Incremental GCまだ〜?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 愛媛みかん |/
0499デフォルトの名無しさん
NGNGGOLuaどーなってるの? >>477
0500500
NGNG0501デフォルトの名無しさん
NGNGcoroutineつかって1キャラ1スレッドとかやってみた。
BulletMLみたいに逐次っぽく書けるやつ。それっぽく動いてる。
LuaXMLとかやったひといる?使い勝手とかどうなんでしょ。
http://lua-users.org/wiki/LuaXml
0502480
NGNG期待っす。面白いものができたらぜひ公開してくださいな。
coroutine って速度的にはどうですか?
LuaXML に関してはなんで Lua から XML を
いじる必要があるんだろうかと思ってしまいますが…
たぶん C/C++ 側で処理した方が良いのでは。
0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNGHSPプログラムコンテスト2003オンライン投票
http://www.onionsoft.net/hsp/contest2003/entryn1.html
HSPプログラムコンテスト2003に一番乗りで出展したものの
Windowsに標準でついてくるゲームを手軽に起動できるという(というかただのショートカットつめあわせ)
しょーもないプログラムでたたかれまくっているプログラミング暦3年(!)の高校生の
作品、ゲーム君をみんなの力で一位にしよう。
【【【 投票方法 】】】
http://www.onionsoft.net/hsp/contest2003/entryn1.html の一番下、エントリーNo8の「ゲーム君」
評価を「A」で選んでコメントを記入して「送信」(コメントいれるとなおよし)
http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi?md=cmt&id=8
でいままで送信されたコメントが見えるよ!(けっこう笑える)
0505デフォルトの名無しさん
NGNGそのcoroutineを再利用したい場合、どうしたらいいんだろう?
あ、再利用ってのは、lua_newthread()で作ったthreadの再利用ね。
スレッド毎回作るのは重そうだから、プールしといて再利用しようと思ったんだけど、
実行が終わってないと、再利用してlua_resume()呼んでも前の関数の続きが
実行されちゃうんだよね(あたりまえだが…)。
0506505
NGNG今のところうまく動いているように見える。
LUA_API void lua_stopthread (lua_State *L) {
lua_lock(L);
L->ci = L->base_ci; /* go back to initial level */
L->base = L->ci->base;
L->nCcalls = 0;
luaF_close(L, L->base); /* close eventual pending closures */
restore_stack_limit(L);
lua_unlock(L);
}
>>503
MITライセンスだから、ほとんど制限無いと思うんだが。
0507505=501
NGNG>coroutine って速度的にはどうですか?
とりあえず、スレッド付きオブジェクトを200個くらい表示させてみても
60FPSは出てたみたいだから、そんなに遅くないみたい(Pen!!!866Mhz)。
ソース見ても関数呼び出しとほとんど同じだしね。
0508デフォルトの名無しさん
NGNGgod!
できたら実装例キボンヌ。
> MITライセンス
見てみたけど、BSDライセンスと同様に扱ってOKって感じかな?
0509デフォルトの名無しさん
NGNG> Each thread has an independent global environment table.
> When you create a thread, this table is the same as that of the given state, but you can change each one independently.
> 各スレッドは独立したグローバル環境テーブルを持っている。
> スレッドを作ったときは、このテーブルは元のテーブルと同じ状態であるが、それぞれ独立して変更を加えられる。
って嘘?
関数はクロージャになってるからそのままではスレッドのグローバル領域に
アクセスできないのはわかるけど、getfenv(0)とかやっても、やっぱりスレッドごとに
別のグローバル変数領域が作られてるようには見えない…
まぁ、lua_newtable(L); lua_replace(L, LUA_GLOBALINDEX);で作ることが出来るわけだけど。。
0510デフォルトの名無しさん
NGNGpairs()やipairs()が使えなくなることに気づいた!
イテレータ間数の取り出しが元のグローバル変数テーブルに依存してんだね。
0511デフォルトの名無しさん
NGNG「スレッドを作ったときは、このテーブルは元のステートのものと同じであるが、それぞれ独立に変更できる。」 かな?
0512デフォルトの名無しさん
NGNG最初は「同じテーブルオブジェクト」を指してるけど、別々のものに
置き換えることも出来るという意味なんだね。
1文目が微妙なんだよなぁ…。あれじゃ、テーブルへのリファレンスの
話じゃなくてテーブル本体の話だと思っちゃうよ。
MLの方には、こう直したほうがいいとかいう話題も上がってた。
"Thread may have an independent table for global variables."
これなら解る。
0513501
NGNGLuaでモーション記述する部分はだいたいできてきたんでアップしてみるよ。ソース付き。
luaに関する処理は、luasht.cppに大体まとまってるので、見てみてくださいな。
あと、BulletMLからLuaへのコンバータも適当に書いてみた。
まだうまく動かないのもあるけど、それなりに動いてるっぽい。
ちなみに、あたり判定無いのでゲームにはなってないです。
http://gamdev.org/up/img/030.zip (本体+ソース)
http://gamdev.org/up/img/031.zip (白弾くんのBulletMLから変換)
0514デフォルトの名無しさん
NGNG(・∀・)イイヨイイヨー
0515デフォルトの名無しさん
NGNGす・・すごいな・・
0516デフォルトの名無しさん
NGNG5.0用だと、wxLuaをつかわざるをえないのかな
0517デフォルトの名無しさん
NGNGemacs+lua-mode.el
というか、IDEったってやることなさそう。
0518デフォルトの名無しさん
NGNGありがとう!ためしてみます。
ひょいひょい使える環境をさがしてたもんで。
wxLuaもなかなかのもんでした。
0519デフォルトの名無しさん
NGNGスレッドでlua_call()とかすると落ちちゃうんだね...
まぁ、なんとなく駄目かもとかいう予感はあったけど(lua_Stateの構造から)。
でも、スレッドのグローバル変数領域とlua_call()で呼ばれる関数から見えるグローバル
変数領域を同じにしたいんだな...。どうしたものか。
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG結構越すとか借りそうかと思ったら、Lua関数3つ呼び出すだけでグローバル変数領
域移せるんだね。
lua_pushvalue(fromL, LUA_GLOBALSINDEX);
lua_xmove(fromL, toL, 1);
lua_replace(toL, LUA_GLOBALSINDEX);
そんなコストかから無そうだから、これで逝くことにした。
サンクス!
0522デフォルトの名無しさん
NGNGずいぶんと有益な情報だな・・・
0523521
NGNG設定しているときの話ね。普通にスレッド作ると、グローバル変数領域は、
全部一緒の領域が共有されてるから。
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNGは、
obj.method(obj, hoge)
と同じ。
0526デフォルトの名無しさん
NGNG話は変わるけど、
eclipse+Luaやってみたい。
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNGすごい気合の入ったIDEもどきのエディタが入ってるんだね。
ステップ実行できるのはかなりイイ!
これ、自分のアプリに組み込めないかな。。。
0529デフォルトの名無しさん
NGNGたのむ、VS.NET2003でコンパイルできようにしてくれ・・・
0530山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNGなになに?
どんなやつよ?GPLよりしょっぱい?
0534デフォルトの名無しさん
NGNGwxLuaの方は、バイナリ配布時にソース公開義務のないGPLかな。
BSDスタイルやMITのまま配る場合、ちょっときついねってだけでつ…
0535デフォルトの名無しさん
NGNG関係ないでしょ?
(まぁ・・ないとは思うけど)
wxLuaは開発環境なわけだし。
0536デフォルトの名無しさん
NGNG「サンプルとして」気合の入った開発環境が付いてます。
0537デフォルトの名無しさん
NGNGLGPLと"wxWindows"のデュアルライセンスだね。
0538デフォルトの名無しさん
NGNGそうでした!
wxなとこは全然つかってなかったもんで・・・
0539デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNGmazu nanini tsukaitaika ie.
0541デフォルトの名無しさん
NGNGサイズはPythonのほうが大きい。
スピードは知らん。上のほうに比較したページのリンクがあった。
LuaはPCのゲームで使用された実績が結構ある。
Pythonはコンシューマゲームで使われた実績があるらしい。
Pythonはリモートデバッグ環境があるらしい(↑で使われた)。
というか、Python少ししかやったこと無いんで、これぐらいしか言えん。
0542デフォルトの名無しさん
NGNGhttp://lua-users.org/wiki/LuaVersusPython
必ずしも最新の情報じゃないが。
0543デフォルトの名無しさん
NGNGgeneratorもcoroutine的に使えないことも無いけど、ちょっと制約多いね。
あと、↓が本当ならリアルタイム向けにはちょっと厳しいかも。
>Everything is an object allocated on the heap in Python, including numbers.
0544デフォルトの名無しさん
NGNGのが扱いやすいかも知れぬ。
しかし・・・Luaの文法のほうが一般には受けやすいと思うぞナ。
0545デフォルトの名無しさん
NGNGLuaの文法・・・これは微妙でしょ。
#一般の定義なんてできるわけないから、煽りは無しの方向で。
Luaでも、オブジェクト指向っつーか(lua-users.org参照)
それっぽいことできるから
C++に浸かってる人にも、にゃかにゃかいけるんでは無いかな?
0546デフォルトの名無しさん
NGNGbootsってboost?ファイバってなんでしょ。興味あります。
(検索しても出てこないし…)
>>545
LuaのOOはプロトタイプベースだしねぇ。
メタテーブルでいろいろやると暮らすベースに近いシステムも組めると思うけど。
(その場合の速度比はどれくらいだろ?)
0547デフォルトの名無しさん
NGNGゴメンboostだ。ただのタイプミス。ファイバもマイクロスレッドのほうが
一般的な呼び方だったかも。重ね重ねスマソ。
個人的にPythonはあの構文が受け付けなさ杉です。
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGファイバは、stacklessのほうね。generatorはいまいちだったので、
そっちの方を調べてみるか。組み込み用途的にはstacklessはどうなんだろ?
0550デフォルトの名無しさん
NGNG速度もそうだけど、メモリ効率がいまいち?
インスタンス?は、メソッドをコピってるから、
オブジェクトの生成ごとっつーかオブジェクト毎に
そのメソッドのためのメモリを食ってるかと思うと・・・
#ようするにVirtualTableが無い。
0551デフォルトの名無しさん
NGNGLuaでOOについてはここね。クラスの作り方も書いてある。
http://lua-users.org/wiki/ObjectOrientationTutorial
metatableを使う場合、1回テーブルの検索を失敗してから
metatableを検索に行くみたいなので、その辺のオーバヘッドが
どれくらいかかるのかなぁと。
0552ためしてみた
NGNG-------------
Hoge = {}
mt = {}
function Hoge:new()
return setmetatable({}, mt)
end
function Hoge:foo()
end
mt.__index = Hoge
-------------
metatable経由で呼び出し: 0m2.827s
-------------
h = Hoge:new()
for i = 0, 10000000 do
h:foo()
end
-------------
テーブル内の関数を呼び出し: 0m1.843s
-------------
h = {foo=Hoge.foo}
for i = 0, 10000000 do
h:foo()
end
-------------
ちなみに、
空ループ: 0m0.327s
fooをグローバルに定義して呼び出すだけ: 0m1.608s
となった。
0553デフォルトの名無しさん
NGNGうあ。ありがと。参考になる〜
ってことは、テーブルの要素がふえればふえるほど・・・
0554デフォルトの名無しさん
NGNGOOやりたいならRubyとか専用のやつ使った方がいいよ。
0555デフォルトの名無しさん
NGNG0556デフォルトの名無しさん
NGNGいや、いっぱいあるのは分かるけど、代表的なものとして。
もしかして、自作処理系ですか?(上のほうにもそんな話題があったけど)。
0557デフォルトの名無しさん
NGNGゲームにつかうとき、
パラメータやシナリオの流れをLuaに逃がすとウマー
OOするための言語じゃねーぞ。
やろうと思えばできる。それで十分じゃねーか。
0558デフォルトの名無しさん
NGNG中途半端なところが多かったりするんだな。
まぁ、PCで使う分には全く問題はないんだけど(そのためのOSだし)。
というか、自世代GCまだ〜?ヽ(`Д´)ノ
0559デフォルトの名無しさん
NGNGそれとも世代GCのことか?
結局ストップ&コピーだから停止するのに変わりない。
GCそのものよりも、いつGCが呼ばれるかの方が大事。
0560デフォルトの名無しさん
NGNGで、世代別GCが導入されれば、GC時間のオーダーは全オブジェクト数じゃなくて
新しい世代のオブジェクト数のみに依存するようになるから、毎フレームGCを呼ぶ
とか出来るようになるね(ゲームで使うなら)。
現状の奴では、オブジェクトが増えれば増えるほどGC時間が増えるから、
リアルタイム向きには、どうしてもオブジェクト数を限定して使わざるを得ない。
そういえばPythonはリファレンスカウンタだっけ?
GCが気になるならあっちの方がいいかも。
(あと「Luaの」次世代GCね。)
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG任天堂だった。
つーか、次世代って言葉の意味わかってるのか。
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNGhttp://cheese.2ch.net/ghard/
こいうこと?
0566デフォルトの名無しさん
NGNG上のほう読めってことでしょ。
かなり実のある話してまつ。
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNG0569デフォルトの名無しさん
NGNGLuaの次世代GCってマジネタなのか?
ソースきぼん
0570デフォルトの名無しさん
NGNG導入されるって、コアチームの人がMLで書いてたよ。リンクは上のほうにある。
0571デフォルトの名無しさん
NGNG0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNGhttp://lua-users.org/wiki/LuaAddons
0575デフォルトの名無しさん
NGNGありがとう
0576デフォルトの名無しさん
NGNGいまいち解らない。ゲームのパラメータなんかで使えると聞いたけど
どなたか実例キボンヌ。
0577デフォルトの名無しさん
NGNGG-わんげ鳩大往生XII〜絆ダウン〜 三週目
http://game4.2ch.net/test/read.cgi/arc/1058781399/
■ このスレッドは過去ログ倉庫に格納されています