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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 13:02:21 ]
LuaやSquirrelなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
wikiwiki.jp/lua/

その他の参考URLは>2から

■過去スレ
その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

230 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 09:02:27 ]
squirrel 的には用語は「クロージャ」ってのはさておき、
戻ってくるのは、元のソースを頭から終わりまで実行するクロージャになります。

その例でいくなら、「foo() と bar() をグローバル空間に登録するクロージャ」ということになります。

sq_compile → sq_call してはじめてスクリプトで記述したことが意味を持ちます。
sq_compile したものを sq_writeclosure すると、コンパイルされてバイナリ状態に
なったスクリプトを保存できます。これを sq_readclosure → sq_call するようにすると、
実行時にコンパイルしなくてすみます。

ちなみに sqstdio にふくまれる sqstd_loadfile, sqstd_dofile は、テキスト/バイナリいずれのスクリプトも
同様に扱ってくれるので便利です(ファイルのヘッダをみて、sq_readclosure / sq_compile を切り換えてくれる


231 名前:229 [2008/08/03(日) 13:22:55 ]
>>230
解説ありがとうございました。おかげで理解できたような気がします。
説明をふまえて、マニュアルにあらためて目を通すと、

function ciao(a, b, c)
{
}



this.ciao <- function(a, b, c)
{
}

と等価であるという説明から、「sq_call()が返すのはグローバル空間に登録するクロージャ」ということがより直感的に理解できました。

#コンパイル済みのバイナリについても悩みどころだったので説明感謝です。


232 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 01:40:07 ]
LuaとかSquirrel使ってる人って、存在しない関数・変数の検出や、
引数の数チェックってどうしてます?

実行時にはエラーになりますが、さすがに関数の引数の数間違いで
実行が止まるのは面倒ですし、
エラーが起きるコードが普段はなかなか実行されないところに
あるものだったりするとかなり面倒ですよね。。。

233 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 02:22:21 ]
それは環境によるのでは?
ユーザーにいじらせるようなものでなければ落とした方が間違いに気付きやすくていいと思うけど


234 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 05:15:11 ]
誰か静的型付けの組み込み言語作ってよ

235 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 12:04:09 ]
>>232
型チェックさえしていれば引数の数チェックは必要ない。

Luaは引数の数が違っても変数が未定義でも実行は止まらない。
存在しない変数の値はnilとして続行。
実行が止まるのは、nil以外の型が必要なところにnilが来るのが原因。

236 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 23:42:07 ]
>>233
そうですね、僕は自分しかいじらないので、エラーの時は落とすようにしてます。
ただそうしてると、Cなどであればコンパイル時にわかる型のミスなどが、
Luaだと実行してしばらくしてからでないとわからないので面倒で…

>>235
nilが入ってたまたま動作し、エラーが発見できなかった場合に
デバッグするのが大変ではありませんか?
公開する時には実行が止まらない挙動でないとまずいですが、
作っているときは「想定外の挙動」を検出するために、
型チェックと引数の数チェックは必須だと思っています。

>>234
そ・れ・だ!

237 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 02:19:38 ]
>型チェックと引数の数チェックは必須だと思っています

個人的には厳格な静的チェックが欲しいならCで書けばいいし、
気楽にかけて初心者に教えやすく関数がファーストクラスだったりするのが
スクリプトのメリットだと思ってる

でもまー、スクリプトの用途によって違うかもね

238 名前:デフォルトの名無しさん [2008/08/06(水) 02:27:31 ]
なにげにsquirrelだとC++から関数通すたびに数回は引数の数チェックに
ひっかかるけど実はデバッグのための膨大な時間の浪費を回避できてたのかな



239 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 07:07:49 ]
関数型の組み込み言語あれば面白いかも

240 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 08:30:08 ]
lisp系ならそこそこないか

241 名前:デフォルトの名無しさん [2008/08/07(木) 09:57:22 ]
ゲーム作ってるんですがNPC等のと会話中の選択肢などをスクリプトで書きたいと思ってます。
今のところc++で使いやすそうなのでSqPlusが候補なんですが、
どんな感じにやるものなのかってのいうが全然想像できないです。
例えば下のような感じでc++と行ったり来たりってのはできるんでしょうか?

//////////////////////////////////////////////////////
game::SetMsg("買い物する?");

if(game::ShowWndYesNo())//ゲーム側で選択画面を出し、何らかの方法で入力を待ち結果を取得…
{
 if(game::GetMoney() == 0)
{
game::SetMsg("お客さん金持ってないね!")
}
 else
{
game::SetMsg("何にする?")
game::ShopOpen();//買い物画面出して買い物が終わるのを待つ…
}
}
game::SetMsg("またきてね!");
///////////////////////////////////////////////////////


242 名前:241 mailto:sage [2008/08/07(木) 10:06:29 ]
なんでもないです。無かったことにしてください^^

243 名前:241 [2008/08/07(木) 11:20:04 ]
うーんやっぱ全然分かりません。

>>241みたいな例でいうと、
c++側でgameクラスのインスタンスを生成して、
そのポインタをsqplusに渡して、
sqplus側でSetMsg()だのGetMoney()だのの関数を使う

っていう、そういうことはできないんでしょうか?
なんか根本的に用途間違ってますか?

244 名前:241 mailto:sage [2008/08/07(木) 11:28:49 ]
>sqplus側でSetMsg()だのGetMoney()だのの関数を使う

sqplus側で受け取ったポインタを通して
そのインスタンスのSetMsg()だのGetMoney()等のメンバ関数を使ったり
メンバ変数の操作をしたり、ということをしたい、、、
ということです。

245 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 12:06:33 ]
もう少しマニュアルとサンプルとか見直して出直してきたほうがいいぞー

概念的にはもちろんそういうことができるが、C++ のインスタンスの情報は
squirrel 側は当然知らないので、ポインタを渡しただけでは何もできない。
呼び出し用のラッパーを squirrel の流儀で構築する必要がある。

具体的には、C++ のインスタンスは、ユーザデータ型をつかって保持し、
メソッド呼び出しは、そのインスタンスを使ってメンバ呼び出しをする
Cのラッパー関数を、ネイティブクロージャとして、そのユーザデータ型の
オブジェクトの委譲テーブルに登録することで実現する。

sqplus はこれの記述を簡易化するためのテンプレートライブラリ。
メンバメソッドの引数から自動的にラッパーを組み上げて登録してくれる。

基本的には、登録したクラスを、squirrel 側からインスタンス化して使うのが想定されてて、
C++ 側で生成したインスタンスをはめこむのは原理的にはできるはずだけど、sqplusが
それをサポートしてたかどうかは知らない。

246 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 12:30:15 ]
つまり、C++をはじめとする静的型付言語の問題は型システムの相互運用性でありそれが組み込み言語でユーザデータを扱う際に表面化する、というわけだな。

247 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 13:29:25 ]
>>245
SqPlus の testSqPlus2unit/test_PassByReference.cpp
にその例があるよ

248 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 22:22:37 ]
Squirrelで使えるクラスを作りたいだけならこんな感じだったような

class CGame {
  int GetMoney() { return 100; }
  void ShowWndYesNo() { printf("yes no\n"); }
  void SetMsg(const SQChar* msg) { printf(msg); }
};
DECLARE_INSTANCE_TYPE_NAME(CGame, Game)

void reg_my_class() {
  SQClassDef<CGame> game_class_def(_T("Game)"));
  game_class_def.func(&CGame::GetMoney, _T("GetMoney"));
  game_class_def.func(&CGame::ShowWndYesNo, _T("ShowWndYesNo"));
  game_class_def.func(&CGame::SetMsg, _T("SetMsg"));
}



249 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 01:38:24 ]
>>232
動的言語はその辺は実行しろでFAだったと思いますよ。
動的言語を使用するなら、せめて全経路を走査する単体テストくらいは書けということなのでしょう。

>>245
>基本的には、登録したクラスを、squirrel 側からインスタンス化して使うのが想定されてて、
>C++ 側で生成したインスタンスをはめこむのは原理的にはできるはずだけど、sqplusが
>それをサポートしてたかどうかは知らない。

Squirrelを直に叩いていいならば、
・sq_createinstanceでコンストラクト前のオブジェクトを得る。
・sq_setinstanceupでオブジェクトのポインタをセット
・sq_setreleasehookで後始末関数を設定

で実現できると思いますが、SqPlusには相当する機能は無いんでしょうか。
この機能、無いとFactoryMethodがあるとき困るので、無い事は無いと思うんですが…

250 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 02:42:19 ]
>>215

251 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 03:56:36 ]
どうしても自分のコードで new したポインタを使いたいのかな
これじゃダメなのん?

CreateConstructNativeClassInstance(SquirrelVM::GetVMPtr(), "Game");
SquirrelObject obj = Get(TypeWrapper<SquirrelObject>(), SquirrelVM::GetVMPtr(), -1);
SquirrelVM::Pop(1);
CGame* game = (CGame*)obj.GetInstanceUP(ClassType<CGame>::type());
printf("money = %d\n", game->GetMoney());
obj.Reset();

252 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 18:06:52 ]
お前らちょっと聞いてくれよ Squirrelなんだけどさ、


class Foo
{
val = [];
}

ってプロパティを空配列で初期化したんだけどさ、これ、インスタンス毎に
空配列を作成するんじゃなくて、インスタンス間で同じ空配列を参照するんだね。

わかんなくて3時間くらいはまったよ。なんだよもうOTL


253 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 18:41:53 ]
うむ。みんなが通る道だ。クラス中で定義した値は、インスタンス生成時に
毎回実行されるわけじゃなくて、単にコピーされるんでそういう挙動になるようだ。
ってことで、配列と辞書はコンストラクタで初期化するのが基本。

ちなみに全部同じ空配列を参照するから、クラス変数的に使えたりする。

254 名前:デフォルトの名無しさん [2008/08/17(日) 10:46:09 ]
Luaのgeneric for文って、引数の個数を柔軟に扱うというLuaの特徴を生かしているのだね。

255 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 15:43:02 ]
くわしく

256 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 17:40:24 ]
>A for statement like
>
> for var_1, ・・・, var_n in explist do block end
>
>is equivalent to the code:
>
> do
> local f, s, var = explist
> while true do
> local var_1, ・・・, var_n = f(s, var)
> var = var_1
> if var == nil then break end
> block
> end
> end

io.lines 等を使うときは s や var は考えないわけだが、
f() の代わりに f(s, var) としても間違いじゃないから上のコードで統一できる。

257 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 20:18:21 ]
>>256
なんかやたら抽象的なコードが出てきたと思ったら、
リファレンスマニュアルから引用してるのか。
sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html#2.4.5

258 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 22:02:49 ]
Programming in Luaにも同じコードがある。日本語訳は無いみたい。
www.lua.org/pil/7.2.html



259 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 23:59:39 ]
何かよく分からないけどCからLuaに何かさせたい人とか向けな超入門用のテンプレ作ってるの見つけた
・Cからluaにグローバル変数を登録する の項だけ絶賛放置プレイされてるけどまあこのスレ見てるなら過去ログに書いてあるし
ttp://www2s.biglobe.ne.jp/~nunokawa/wiki.cgi?page=Lua

260 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 22:49:59 ]
Lua 5.1.4
いつも通り、バグ修正のみ

261 名前:デフォルトの名無しさん [2008/08/25(月) 00:18:07 ]
Luaの質問です
Luaの関数の戻り値をC言語で受け取りたいのですが,どうもうまくいきません.

ameblo.jp/coffeex/theme-10002528966.html

このサイトの Luaのり付け講座2 - C++からLuaの関数を呼ぶ という部分のコードを丸写しして
実行したのですが,実行結果が

可算結果: 5 (5.000000)
減算結果: 1 (1.000000)

ではなく

可算結果: 1 (1.000000)
減算結果: 5 (5.000000)

とひっくり返ってしまってます.もしかして環境によって戻り値の返し方は違うのでしょうか?

262 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 03:08:58 ]
ここの1つめと2つめは逆のような気がするな。
-2のほうが下にあるんだから1個めでは。

double result1 = lua_tonumber(L, -1); //1つめの戻り値(注意:Luaの数値はdouble型!)
double result2 = lua_tonumber(L, -2); //2つめの戻り値

その前に「可算」が気になる・・・

263 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 14:26:16 ]
Squirrelの話なんだけど、スレッド内でエラーが発生すると有用なメッセージ出力しないのは
仕様?

例えば、

local coro = ::newthread(
function()
{

264 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 14:28:53 ]
ゴメン途中送信した、まとめてから書くよOTL


265 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 14:36:09 ]
再送。

Squirrelの話なんだけどさ、スレッド内でエラーが発生すると有用なメッセージ出力しないのは
仕様?

例えば、

local coro = ::newthread(
function()
{
noindex = "";
}
);

coro.call();

ってコードを書くと、[the index doesn't exist]とだけメッセージが出力されて、スタック
トレースもcoro.call()の部分までしか表示してくれない。
実際のコードだと、noindex = "";の部分が原因だって特定するのが時間かかる。
ただのtypoの特定に時間かかってしまうと、コーディングのテンポが悪くて非常に困る。

Luaはそのあたりどうなのかな。コルーチンの内部にまで踏み込んでスタックトレース
表示してくれる?


266 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 15:50:15 ]
おk自己解決した。
これ実際にコーディングする上では結構致命的だと思うんだが…

フォーラムに載ってた。

squirrel-lang.org/forums/thread/2269.aspx

2行書き換えるだけで、ちゃんとコールスタック表示してくれる。


267 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 15:57:35 ]
sq_notifyallexceptions に SQTrue 指定するだけででない?


268 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 16:30:21 ]
>>267
お、ほんとだ出るね。サンクス。
でもこれ指定するとtry/catchでくるんでるのにエラーハンドラ呼ばれるんだよね?
状況によっては困る気もする。



269 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 19:22:28 ]
デフォルトのエラーハンドラはトレース表示するだけで catch の先自体はちゃんと動いてた
と思うから、あんま困ったことはなかったような記憶、だけどどうだっけか


270 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 20:02:35 ]
>>269
例えばエラーハンドラが呼ばれたときはキャッチ失敗したということだから、深刻なエラーとして
ログ出力して終了する、という運用スタイルの時困る気がする。

運用方法変えたら良いだけかもしれないけど…
本当は小細工しなくても、コールスタックちゃんと表示してくれるのが一番
なんだけどね。

271 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 10:05:48 ]
SqPlusでヘンな挙動発見。
VM内で初期化してないアドレスを参照してたから、最初はSquirrelのがおかしいのかと思って
必死こいてソース読んでたけど、どうもトレースしているとSqPlusがおかしいみたいで。

SqPlusでバインディングした変数を参照するとgetInstanceVarFuncが起動するわけ
だけど、これが内部でSquirrelVM::Init(v)を呼び出してる。
普段は渡されるVMは変化しないから問題ないんだけど、これがスレッド内で呼び出されると話が
変わる。
スレッドごとにフレンドVMで実行されるから、getInstanceVarFuncの引数として渡されるVMは、メインVM
じゃなくてフレンドVMなわけで。
だからSquirrelVM::Init(v)でSquirrelVMがフレンドVMで初期化されてしまう。
その後SquirrelVM::RunScript()なり何なりVMを対象にするメソッドを呼び出すと、フレンドVMを対象に
行われるから、おかしなことになってしまう。
自分の場合、SquirrelVM::RunScript()の内部でthread.resume()を呼び出してたから、本来サスペンドされていた
はずのフレンドVMをsq_call()で不正にたたき起こした挙句、さらにthread.resume()で起こそうとしたから、
問題が発生したみたい(クラッシュした)。

でも他の状況だと問題は発生しないかもしれない。よくわからん。

とりあえずworkaroundとして、getInstanceVarFuncを使わない(__getメタメソッドを使わない)ことにした。

レポート送ったほうがいいのかな。
でもこれ英語で書く自信ないよ…OTL


272 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:55:02 ]
てきとうな英語と実証コードを送れば分かってくれるんじゃね?

273 名前:sage [2008/09/01(月) 23:43:31 ]
Squirrelでスレッド使うときって、
自分でVM切替えしてるの?


274 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 07:20:43 ]
>>272
公式フォーラムでいいのかな?暇ができたらレポートすることにする。

>>273
自分が何を指すのかわからないけど、フレンドVMを使っていることを普通意識する必要はないよ。

275 名前:デフォルトの名無しさん [2008/09/03(水) 15:08:48 ]
SqPlusはいくつか変なところあるよ。
フォーラムに報告もたまにしてたけど、最近のリリースがけっこう前のものならとりこまれていないのかも。

276 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 01:33:04 ]
スクエニの小さな王国はSqPlus使ってるってさ


277 名前:デフォルトの名無しさん [2008/09/10(水) 21:12:07 ]
>>276
これ?
Wiiウェアで始まった、スクエニの“小規模開発への挑戦”。「小さな王様と約束の国 FFCC」の開発事例
www.watch.impress.co.jp/game/docs/20080224/ffcc.htm


278 名前:デフォルトの名無しさん [2008/09/10(水) 22:51:52 ]
Squirrelに関して質問させてください。

LuaからSquirrelに移行しようかと、いろいろ試しているのですが
SquirrelにはLuaでいう require/module のような機能はないのでしょうか?

自前で用意すればできるのはわかるのですが、
Squirrelの作法として、
スクリプトファイルを機能ごとに複数に分けて管理したい場合は
通常どうするのが正しいのでしょうか?

よろしくお願いします。




279 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 00:50:24 ]
特定のテーブルにロードすれば出来るのでは?
squirrelってsqstd_dofileとかでファイル読み込む直前でルートテーブルをプッシュしてるけど、
それをルートテーブルではなく、任意のテーブルを指定する
そうするとその任意のテーブルにデータが読み込まれる

ただし、使うときはtable.func();みたいな使い方をしなければならなくなる…のかな?
他にもデリゲートテーブルを使う方法もあるけど、これはファイルごとと言うわけにはいかないかな

というかLuaってrequire/moduleで機能ごとに分けて管理できるんだ…
そっち知らなかった…



280 名前:デフォルトの名無しさん [2008/09/11(木) 21:52:26 ]
>>279
返答ありがとうございます。

やはり、自前で用意する必要があるようですね。
とりあえず Lua と同じような形で
ルートテーブルに登録する形で実装してみようかと思います。

ありがとうございました。


281 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 22:27:49 ]
>>279

>SquirrelにはLuaでいう require/module のような機能はないのでしょうか?
>スクリプトファイルを機能ごとに複数に分けて管理したい場合は

個別に管理、ということは
requireを使えば、いらなくなったスクリプトファイルとかを個別に解放できたりするんですか?


282 名前:281 mailto:sage [2008/09/11(木) 22:29:06 ]
>>279じゃなくて>>278でした

283 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 13:33:06 ]
>>281

解放ですか…
Lua の require/module は結局グローバルにテーブルとして追加しているだけなので
_G.xxx.foo = nil
みたいにしてしまえば解放もできそうな気はしますが…。
(require("xxx.foo"),module("xxx.foo")と仮定)

やったことはないです。


私が言っていたのは単純にファイルの管理についてです。

Character.lua : キャラクタークラス定義
Stage1.lua : ステージ1
Stage2.lua : ステージ2

とした場合、
Stage1.lua, Stage2.lua それぞれの先頭で
require("Character.lua");
とするような。

すべて1ファイルに記述するわけにはいきませんから。

284 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 15:05:58 ]
そのぐらいなら、手動で適当に読み込めばいいんじゃないかと。
例としてはたとえば以下のような関数をつくっておいて、

function require(name, cond)
{
if (!cond in ::getroottable()) {
dofile(name);
}
}

Character.nut の冒頭

CHARACTER_DEFINE <- true;

Stage1.nut や Stage2.nut の冒頭

require("Character.nut", "CHARACTER_DEFINE");

判定に使うのはグローバルに定義するものなら
なんでもいいですが、ルールきめておけばあとでみたときわかりやすいと思います。

285 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 12:10:26 ]
「スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践」
ってのがでるらしい。

出版社のページみつかんなかったのであまぞん
ttp://www.amazon.co.jp/dp/4797348550

286 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 12:44:58 ]
あと二週間くらい?
発売日になったらとりあえず買ってこようと思う。

287 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 13:06:02 ]
こういうのが何十冊も出ると買う気なくすが、Luaはまだまったりしていてよいです

288 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 13:17:53 ]
赤坂じゃなくてよかったw



289 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 15:54:56 ]
これか・・・

Amazon.co.jp: スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践: 浜中 誠: 本
www.amazon.co.jp/dp/4797348550
images-jp.amazon.com/images/P/4797348550.09.MZZZZZZZZZ.jpg

290 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:06:46 ]
CEDECでスクエニがSquirrel使ってるの話してたねー。

291 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 03:33:58 ]
>>290
kwsk
どっかに資料とかあがってないの?

292 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 06:01:40 ]
今さら知ったのかよ


293 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 23:15:44 ]
SquirrelとLuaってどっちがつおいの?


294 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 01:08:36 ]
Luaの方がこなれてるだろう

295 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 01:38:03 ]
強さで言うとSquirrelのが強い。
悟空とべジータくらい違う。

296 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 01:48:54 ]
Squirrelはバグだらけ。
自力で直せる環境にいないと使えない

297 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 02:09:42 ]
LuaとCをいったりきたりすると演算子とか間違えるから
Squirrelのほうがやわらかい

298 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 02:25:07 ]
速さと軽さならLua
基本的な演算とsuspendを行う処理を一億回ループさせたらLuaはSquirrelの1/3の時間ですんだ




299 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 02:26:59 ]
てゆうかこのスレ張ってる奴けっこう多いんだな
散々過疎ってたのに燃料来たとたんこれかよ


300 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 09:58:58 ]
Luaの方が愛されてる感はある

301 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 10:11:15 ]
>>285
この辺がなんか不安、サンプルやらソースやら見れば解ることが山ほど載ってそう
>〜人気スクリプト言語Lua(ルア)とC/C++のバインディング実例を詳細に解説。

302 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 10:30:39 ]
サンプルやソース見てわかる人は買わなきゃいいだけだろw

303 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 10:46:06 ]
サンプルの種類が増えるのは良い。延べ数ばかり増えるのは困る。

304 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 14:11:14 ]
LuaとC/C++との連携では、Swigはあまり使わないものなんですか?

305 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 00:53:52 ]
>>304
Lua本体に入ってない
LuaがC/C++との連携を単なるオプション扱いすることはない

ゆえに、Swigはあまり使わない

306 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 02:11:53 ]
>>291

一応、CEDECのサイトで講演に使ったパワポがpdfでアップされてたんだけど、
これ会員以外に流すとなんかやばそうな・・・

まぁいろいろ言ってたよ。
コード全体の7割はSquirrelとかallocが多いのでメモリまわりの工夫をしたとか。

実際このゲームプレイしたけど、Wii環境であれだけ動いていれば、まぁ実践レベルには十分達しているといえるだろうね

307 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 02:15:41 ]
つか、スクエニの開発スタッフ、このスレたまにはチェックしてると思う。
2chにここしかSquirrelのスレないんだもん。

クレっていったら資料くれそうな気もする

308 名前:304 mailto:sage [2008/09/21(日) 22:00:07 ]
>>305
なるほど、サンクスです。「入門Luaプログラミング」を読んだんですが、
C++との連携方法がいまいち良く分からなかったので(SquirrelだとSqPlus?)、
>>285の本を見て勉強することにしてみます。



309 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 22:29:12 ]
今週末か。レビューよろ

310 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 23:13:07 ]
既出の質問かも知れませんが…。
CからLua関数をコールするときは、関数名、引数をスタックに積んで行うと思います。
これを以下のようにコールするのって、副作用とか問題点って何かありますか?
(実行速度とか)

sprintf( strCmd, "return add( %f, %f )", a, b );
luaL_dostring( L, strCmd );


311 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 23:34:49 ]
速度なら試して比較すりゃいいんでないの?

312 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 14:16:38 ]
ものすごくループする所で使うんじゃなければそんなに問題ないよ。
スタック積むのめんどくさい時はたまにやってしまう。

313 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 20:28:26 ]
310です。
速度低下と実数が桁落ちするデメリットはすぐに分かるのですが、
マニュアルにある"tail call"形式にする影響が少々心配でした。
アドバイスありがとうございました。




314 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 15:53:01 ]
Luaってバインダの決定版っぽいのが無い感じだけど(Activeじゃないのが多い気がする)、
皆なに使ってる?自作してるのかな?


315 名前:デフォルトの名無しさん [2008/09/24(水) 22:18:38 ]
Squirrel 2.2.2 stable - September 24, 2008

-fixed some behaviour inconsistencies in thread.call() and thread.wakeup() (thx Mr.Accident)
-fixed coroutine error propagation
-fixed lingering return value from native function (thx Tom Leonard)
-fixed a bug if array.sort() is given a bad sort function (thx Tom Leonard)
-fixed some minor api bug
-added sq_arrayremove() and sq_arrayinsert()

316 名前:デフォルトの名無しさん mailto:sage [2008/09/27(土) 08:49:30 ]
>>314
漏れはバインダなんてイラン派

317 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 09:20:05 ]
>>285って誰か買った?
どっかで見てから買いたかったんだけど売ってない。
よさげor誰も買ってないならamazonで買おうかと。誰か買ってたら感想よろ

318 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 10:06:28 ]
>>317
>ご注文いただいた商品の配送予定日がまだ確定しておりません。
<中略>
>継続して商品の調達に努めてまいりますが、調達不能な場合または入荷数の関係上キャンセルをさせていただくこともございます。

報告するようじゃないけど、初めてkonozamaメール貰った。\(^o^)/





319 名前:317 mailto:sage [2008/09/30(火) 15:07:52 ]
konozama食らうくらいなら探すべ、と思ったらヨドにあったんで買った。
結構いろいろ書いてあるっぽいんで楽しみ。

320 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 15:48:15 ]
おれもさっきこうてきた
大学の書店に普通においてあったよ


321 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 17:11:38 ]
参考Webサイトにこのスレがwww

322 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 17:23:42 ]
記念ぱぴこ

オール・ハイル・ぅあ!

323 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 19:18:24 ]
bccで使う方法がようわからんのだけど

324 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 23:25:37 ]
bcc用のlib付属してないんだっけ。
bccについてるimplibでdllからlibファイル吐かせてリンクすればいけんじゃね?

何がわからんのだかわからんから適当言ってるが、的外れなこと言ってたらスマン

325 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 02:25:52 ]
つーかBCBならともかくbccなんざ捨てろ

326 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 09:14:48 ]
そしてIDEだけ残ると

327 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 16:14:35 ]
vcのexpressあるからなあ。
無料で使えるってことで以前は定番だったけども。

328 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 09:11:38 ]
無職なのに、欲望に負けて>>285の本を買ってしまった…orz。
C/C++とのバインディングは、パッと見でtolua++とかいうのを使っているみたい。



329 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 23:03:56 ]
今のうちにgoluaを登録商標にしとかないと

330 名前:デフォルトの名無しさん mailto:sage [2008/10/04(土) 11:09:33 ]
自作のLuaラッパにApolloって名づけようとしたけど
RubyのDelphiバインディングに使われていた






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

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

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