【Lua】組み込み系言語総合【Squirrel】at TECH
【Lua】組み込み系言語総合【Squirrel】 - 暇つぶし2ch175:デフォルトの名無しさん
08/07/06 16:52:05
>>172
なんで? 使いたいの使えばいいじゃん。

176:デフォルトの名無しさん
08/07/06 17:06:10
やりたいようにやればいいじゃん

177:デフォルトの名無しさん
08/07/06 22:34:18
ライセンスは?

178:デフォルトの名無しさん
08/07/10 13:03:11
セデックでスクワラルのセッションがある

179:デフォルトの名無しさん
08/07/10 13:47:56
>>177
URLリンク(www.gnu.org)


180:デフォルトの名無しさん
08/07/10 16:50:30
luaでゲーム作る人ってやっぱりそんないないのか

181:デフォルトの名無しさん
08/07/10 22:32:01
小規模なゲームだと使うメリットがあんまりないし
使うほど大きな規模のゲームがそもそも作られない

・・・んじゃないかと思う
あと組み込み言語自体がいまいち一般的じゃないよね

182:デフォルトの名無しさん
08/07/11 00:30:14
海外ゲーはMOD改造しやすいように組み込み言語やXMLなどを使っている。
一方、日本は海外のようなMOD文化が弱い。あっても、バイナリ解析によるデータ変更や画像差し替えが主。
日本のゲームは書き換えを許容する文化でないから、汎用言語を使って間口を広げる必然がないのかも。

183:デフォルトの名無しさん
08/07/11 00:50:19
homeworldシリーズはluaだったよ

184:デフォルトの名無しさん
08/07/11 03:56:17
luaやsquirrel使ってたとしても
あえて公表する理由がない

185:デフォルトの名無しさん
08/07/11 15:15:50
>>184
luaはライセンス表記しないとダメだろ

186:デフォルトの名無しさん
08/07/11 19:17:01
luaはMIT、Squirrelはzlib

187:デフォルトの名無しさん
08/07/11 20:53:24
今気付いたんだが、MITライセンスに関するOSG-JP参考訳とWikipediaの内容が全然違うような?
URLリンク(sourceforge.jp)
URLリンク(ja.wikipedia.org)

188:デフォルトの名無しさん
08/07/11 21:57:26
>>181
DSluaおもしろそうだと思ったんだがな・・・

189:デフォルトの名無しさん
08/07/11 23:46:37
組み込み系の言語はそもそもゲーム本体作るのに向いてないしな。
アクションゲームの敵の動きや敵の配置とかをスクリプトで記述するのには向いてるけど。

190:デフォルトの名無しさん
08/07/12 00:20:11
>>182
XMLってまじっすか

191:デフォルトの名無しさん
08/07/12 01:13:13
>>190
Rise of Nationsとか思いっきりXMLだったな。
改造し放題。
AoE3も確かそうだった気がする

192:デフォルトの名無しさん
08/07/12 01:15:06
>>189
embeddedの言語はあくまでDSLだからねえ
Pythonとかのレベルになるとそうでもないんだろうけど

193:デフォルトの名無しさん
08/07/12 02:17:26
Pythonはbattery includedだが電池を作るのに向いてるわけじゃないだろ。

194:デフォルトの名無しさん
08/07/12 02:37:33
>>187
そう?
言っていることは同じで、Wikipediaは要約しているだけのように見えるけど。

ところで、このライセンスだと、ソースコードを配布しない場合も
ライセンス文を書く必要があるってことだよね?

商用ゲームだと、マニュアルの半ページくらいうはめになりそうだ…

195:デフォルトの名無しさん
08/07/12 05:08:02
>>185, >>194
著作権表示および本許諾表示を記載しなければならない、というのはソースコード等の話です(消すな、ということ)。
マニュアル等への表示義務はないです(旧BSDライセンスには宣伝条項があった)。
あとサブライセンスが許可されているから、より権利を制限する方向へのライセンス
(例えばGPLや商用ライセンス)を上からかぶせて適用することには問題がない。

ライセンス表記が必要だと思われてるとはなあ
業界でなかなかオープンソースが使われないわけだ

196:デフォルトの名無しさん
08/07/12 05:32:37
↑偉そうなこといって本当にすまんw
zlibと間違ってたみたい

197:デフォルトの名無しさん
08/07/12 16:14:21
MITの場合でも、見ようと思えば見れる場所にライセンスファイルなりを置いておけばいいでしょ。
オンラインのCREDIT表記あたりが適切か。

198:デフォルトの名無しさん
08/07/12 23:11:24
>>191
それはデータやら何やらの記述だな。

199:デフォルトの名無しさん
08/07/13 02:48:50
>>198
まさか、CDATAでスクリプトでも埋め込むのか?w

200:デフォルトの名無しさん
08/07/13 23:38:11
XMLで書かれたスクリプトってのもどこぞにあった気がする・・・

あんま書きたくないが。

201:デフォルトの名無しさん
08/07/13 23:49:03
>>200
XMLで書かれた同人ゲームを一つだけ知ってるが、
解析がえらい面倒だったな

202:デフォルトの名無しさん
08/07/14 04:31:50
>>200
BulletMLもXMLのDSLだな

203:デフォルトの名無しさん
08/07/14 11:28:11
XMLで書いてると最後に統計取れたり
解析が楽だったりするのがメリットか。
ドキュメンテーションも楽だろう。

204:デフォルトの名無しさん
08/07/14 12:34:15
S式じゃダメ?

205:デフォルトの名無しさん
08/07/14 12:40:29
セックスピー

206:デフォルトの名無しさん
08/07/14 21:17:26
Lua workshop2008もうすぐはじまるよ

@ワシントン州で

207:デフォルトの名無しさん
08/07/18 18:15:34
xtal更新とまっちまってるなあ

208:デフォルトの名無しさん
08/07/20 00:54:26
>>207
C++では行き詰まるという現実に気がついたのでは

209:デフォルトの名無しさん
08/07/20 01:00:17
つまりスクリプトをつくるための軽量スクリプト言語を


アレ?

210:デフォルトの名無しさん
08/07/20 16:41:45
わらかすなwwwwww

211:デフォルトの名無しさん
08/07/20 19:15:16
Lispでいいじゃん

212:デフォルトの名無しさん
08/07/20 19:41:13
そういや、Ruby の Matz もOOPのスクリプト作るのにOOPはむりぽ
みたいなこと言ってたな

213:デフォルトの名無しさん
08/07/20 23:37:57
>>212
なんで?やっぱり速度?

214:デフォルトの名無しさん
08/07/21 01:53:26
今時、さすがに速度じゃないと思うがw(開発速度?w)

Matz日記の過去ログにあったかもしれん。ちょっと行ってくる

215:デフォルトの名無しさん
08/07/21 02:06:29
確か、まつもと氏が混乱するとかいう理由だったような・・・・と思ったら

オブジェクト指向言語でオブジェクト指向言語を実装するというのに、脳がついていけないんだけど。
それって、僕だけ? (笑) C++ で言語作ってる人がいるけど、よくやるなぁ、とか思う。
ベース言語のクラスとか継承とかと、実装言語のクラスや継承がごっちゃになて、訳わかんなくなっちゃう。
設計して、どういう風に作ろうかなと思った時点で、もう、わかんなくなって「もういい、やめた」って。
URLリンク(jp.rubyist.net)

216:デフォルトの名無しさん
08/07/21 05:44:25
C++/CLIのことかー

217:デフォルトの名無しさん
08/07/21 16:17:08
なんだ…人間の能力の限界の話なのかよ

218:デフォルトの名無しさん
08/07/21 16:53:35
PHPもC++でエンジン書いてたが、やばいと気がつき後にむりやりCで
書き直したと聞いたことがある。具体的に何がやばかったのかは知らない。

219:デフォルトの名無しさん
08/07/21 17:24:10
俺には全く理解できん
CでいいならそのままC++でもいいじゃんと思うんだが…

220:デフォルトの名無しさん
08/07/21 17:36:48
そもそもCよりC++の方が型がこなれているんだから
OO捨ててもCより享受できるものが多いはず。

まあ、でもポータビリティ犠牲にするほどのものでもないかなあ。

221:デフォルトの名無しさん
08/07/21 18:47:24
>>219
C++ は、効率重視で、バイナリ互換とるのが極端に難しい実装ばっかりなので、
独立アプリならいいんだけど、ライブラリとして広く長期的に共有されるような
ものの記述には残念ながらあまりむいてない。

Windows はこれを COM という形で一応解決したんだけど、UNIX 系OSではその手のものが
統一的につくられることは結局なかったからね。php のような、他と組み合わせた
運用が求められるものだとこの点はわりと致命的なので、Cでかかざるをえ
なくなったんじゃないかな。

一応 Objective-C という選択はあるけど、こっちは実装が限られてるからねぇ


222:デフォルトの名無しさん
08/07/21 19:14:47
勉強になりました

223:デフォルトの名無しさん
08/07/21 21:55:19
ABIの問題ってことかな。
C++のライブラリをextern "C"してDLLやsoにしたものを、
Cとかで呼ぶとなんかまずそうなのは想像できるな。
グローバルなコンストラクタとかあったらそれはいつ呼ばれるんだろうって。


224:デフォルトの名無しさん
08/07/21 23:31:59
継承かガベージコレクトじゃね?

225:デフォルトの名無しさん
08/07/22 00:54:53
>>223
もう一度良く考えてみろ。どうにもならないことはない。単にリンカがどうするかというだけのことだ。
しかし、万人が納得する解法は無いという事も、ここからわかる。

226:デフォルトの名無しさん
08/07/24 20:18:47
Squirrel3.0alpha1リリースあげ

227:デフォルトの名無しさん
08/07/25 08:35:19
イラネ

228:デフォルトの名無しさん
08/08/02 19:26:37
hoshu

229:デフォルトの名無しさん
08/08/03 06:02:10
squirrelでsq_compile()を行うとプロシージャが一つ返ってきますが、
このプロシージャは何を表しているのでしょうか?
たえば、コンパイル元のファイルが、

function foo()
{
print("foo");
}

function bar()
{
print("bar");
}

の場合、sq_compile()が返すプロシージャはこの2つの内の一つなんでしょうか?


230:デフォルトの名無しさん
08/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
08/08/03 13:22:55
>>230
解説ありがとうございました。おかげで理解できたような気がします。
説明をふまえて、マニュアルにあらためて目を通すと、

function ciao(a, b, c)
{
}



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

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

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


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

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

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


234:デフォルトの名無しさん
08/08/05 05:15:11
誰か静的型付けの組み込み言語作ってよ

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

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

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

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

>>234
そ・れ・だ!

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

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

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

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

239:デフォルトの名無しさん
08/08/06 07:07:49
関数型の組み込み言語あれば面白いかも

240:デフォルトの名無しさん
08/08/06 08:30:08
lisp系ならそこそこないか

241:デフォルトの名無しさん
08/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
08/08/07 10:06:29
なんでもないです。無かったことにしてください^^

243:241
08/08/07 11:20:04
うーんやっぱ全然分かりません。

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

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

244:241
08/08/07 11:28:49
>sqplus側でSetMsg()だのGetMoney()だのの関数を使う

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

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

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

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

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

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

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

247:デフォルトの名無しさん
08/08/07 13:29:25
>>245
SqPlus の testSqPlus2unit/test_PassByReference.cpp
にその例があるよ

248:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/08 01:38:24
>>232
動的言語はその辺は実行しろでFAだったと思いますよ。
動的言語を使用するなら、せめて全経路を走査する単体テストくらいは書けということなのでしょう。

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

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

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

250:デフォルトの名無しさん
08/08/08 02:42:19
>>215

251:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/12 18:06:52
お前らちょっと聞いてくれよ Squirrelなんだけどさ、


class Foo
{
val = [];
}

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

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


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

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

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

255:デフォルトの名無しさん
08/08/17 15:43:02
くわしく

256:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/17 20:18:21
>>256
なんかやたら抽象的なコードが出てきたと思ったら、
リファレンスマニュアルから引用してるのか。
URLリンク(sugarpot.sakura.ne.jp)

258:デフォルトの名無しさん
08/08/17 22:02:49
Programming in Luaにも同じコードがある。日本語訳は無いみたい。
URLリンク(www.lua.org)

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

260:デフォルトの名無しさん
08/08/22 22:49:59
Lua 5.1.4
いつも通り、バグ修正のみ

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

URLリンク(ameblo.jp)

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

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

ではなく

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

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

262:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/30 14:26:16
Squirrelの話なんだけど、スレッド内でエラーが発生すると有用なメッセージ出力しないのは
仕様?

例えば、

local coro = ::newthread(
function()
{

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


265:デフォルトの名無しさん
08/08/30 14:36:09
再送。

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

例えば、

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

coro.call();

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

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


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

フォーラムに載ってた。

URLリンク(squirrel-lang.org)

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


267:デフォルトの名無しさん
08/08/30 15:57:35
sq_notifyallexceptions に SQTrue 指定するだけででない?


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

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


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

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

271:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/01 20:55:02
てきとうな英語と実証コードを送れば分かってくれるんじゃね?

273:sage
08/09/01 23:43:31
Squirrelでスレッド使うときって、
自分でVM切替えしてるの?


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

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

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

276:デフォルトの名無しさん
08/09/10 01:33:04
スクエニの小さな王国はSqPlus使ってるってさ


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


278:デフォルトの名無しさん
08/09/10 22:51:52
Squirrelに関して質問させてください。

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

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

よろしくお願いします。


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

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

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



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

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

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


281:デフォルトの名無しさん
08/09/11 22:27:49
>>279

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

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


282:281
08/09/11 22:29:06
>>279じゃなくて>>278でした

283:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/14 12:10:26
「スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践」
ってのがでるらしい。

出版社のページみつかんなかったのであまぞん
URLリンク(www.amazon.co.jp)

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

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

288:デフォルトの名無しさん
08/09/14 13:17:53
赤坂じゃなくてよかったw

289:デフォルトの名無しさん
08/09/14 15:54:56
これか・・・

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

290:デフォルトの名無しさん
08/09/14 23:06:46
CEDECでスクエニがSquirrel使ってるの話してたねー。

291:デフォルトの名無しさん
08/09/15 03:33:58
>>290
kwsk
どっかに資料とかあがってないの?

292:デフォルトの名無しさん
08/09/15 06:01:40
今さら知ったのかよ


293:デフォルトの名無しさん
08/09/19 23:15:44
SquirrelとLuaってどっちがつおいの?


294:デフォルトの名無しさん
08/09/20 01:08:36
Luaの方がこなれてるだろう

295:デフォルトの名無しさん
08/09/20 01:38:03
強さで言うとSquirrelのが強い。
悟空とべジータくらい違う。

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

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

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


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


300:デフォルトの名無しさん
08/09/20 09:58:58
Luaの方が愛されてる感はある

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

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

303:デフォルトの名無しさん
08/09/20 10:46:06
サンプルの種類が増えるのは良い。延べ数ばかり増えるのは困る。

304:デフォルトの名無しさん
08/09/20 14:11:14
LuaとC/C++との連携では、Swigはあまり使わないものなんですか?

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

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

306:デフォルトの名無しさん
08/09/21 02:11:53
>>291

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

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

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

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

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

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

309:デフォルトの名無しさん
08/09/21 22:29:12
今週末か。レビューよろ

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

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


311:デフォルトの名無しさん
08/09/21 23:34:49
速度なら試して比較すりゃいいんでないの?

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

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




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


315:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/27 08:49:30
>>314
漏れはバインダなんてイラン派

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

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

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



319:317
08/09/30 15:07:52
konozama食らうくらいなら探すべ、と思ったらヨドにあったんで買った。
結構いろいろ書いてあるっぽいんで楽しみ。

320:デフォルトの名無しさん
08/09/30 15:48:15
おれもさっきこうてきた
大学の書店に普通においてあったよ


321:デフォルトの名無しさん
08/09/30 17:11:38
参考Webサイトにこのスレがwww

322:デフォルトの名無しさん
08/09/30 17:23:42
記念ぱぴこ

オール・ハイル・ぅあ!

323:デフォルトの名無しさん
08/09/30 19:18:24
bccで使う方法がようわからんのだけど

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

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

325:デフォルトの名無しさん
08/10/01 02:25:52
つーかBCBならともかくbccなんざ捨てろ

326:デフォルトの名無しさん
08/10/01 09:14:48
そしてIDEだけ残ると

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

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

329:デフォルトの名無しさん
08/10/03 23:03:56
今のうちにgoluaを登録商標にしとかないと

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

331:デフォルトの名無しさん
08/10/04 11:36:59
「バインダ」てyaccと同じにおいがする
使うと勝ち組になれるような気がするぜ

332:デフォルトの名無しさん
08/10/04 14:04:24
amazonからやっと本が届いた
tolua++便利だな
まだ使っても無いけど

333:デフォルトの名無しさん
08/10/04 18:27:26
またLua入門売り切れてる
URLリンク(www.amazon.co.jp)

334:デフォルトの名無しさん
08/10/04 22:41:43
lua最高!

335:デフォルトの名無しさん
08/10/05 01:25:06
luaはAlgol系schemeのうまくいった例という感じがする

336:デフォルトの名無しさん
08/10/06 08:29:45
DSのLuaってどうよ?

337:デフォルトの名無しさん
08/10/06 11:28:58
>>285の本のサンプルダウンロードサイトって落ちてるのかな?
tolua++のソースとかSDLとかSConsとかダウンロードしたいやつが結構ある。
できればCD-ROM付きの方が良かったかも…。

338:デフォルトの名無しさん
08/10/06 14:05:06
落ちてるっぽいな。
まあCD-ROMは邪魔だわ更新されないわで嫌いだから気長に待つが。

339:デフォルトの名無しさん
08/10/06 20:23:00
lua5_1_3_Win32_mbenc.zip にコンパイル済みの lua5.1.lib が入ってないと
81ページ付近で少し困るような気がする。

ついでに59ページ。counry

340:337
08/10/06 22:52:20
なんかサイトがダウンしてたみたいで、いろいろダウンロードできた。
4章まで読んだところでは、4.10のLuaの文法:クラスのところが、Lua入門の方で
よく分からなかったとこなんで役に立ったかも。
5章から手動かしながら読んでくべ。

341:デフォルトの名無しさん
08/10/08 23:26:54
Lua最高!

342:デフォルトの名無しさん
08/10/10 02:24:17
Lua melhor!

343:デフォルトの名無しさん
08/10/11 09:13:45
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   



344:デフォルトの名無しさん
08/10/11 18:21:28
クマでもわかるLuaプログラミング 第5版

345:デフォルトの名無しさん
08/10/11 19:09:26
スクリプト言語 Kuma

346:デフォルトの名無しさん
08/10/11 19:20:07
Kumaで書かれた>>343のスクリプトを実行すると「(_●_)Lua!!」と表示されます

347:デフォルトの名無しさん
08/10/11 20:00:24
ぅぁあああ!

348:デフォルトの名無しさん
08/10/11 20:52:59
インタプリタ書いてみた
io.open(arg[1]):read("*a"):gsub(([[
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ KUMA
 彡、   |∪|  /
/ __  ヽノ /
(___)]]):gsub("[^%a]","%%%1"):gsub("KUMA","(.-)"),
function(s)io.write("(_●_)",s,"\n")end)

349:デフォルトの名無しさん
08/10/12 08:47:37
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   




350:デフォルトの名無しさん
08/10/12 11:17:47
なんだクマスレか

351:デフォルトの名無しさん
08/10/12 14:08:31
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ _ヽ  ヽノ ノ/
(___)\/ 
  Urso de lua 「和名: ゥアノワグマ」

352:デフォルトの名無しさん
08/10/12 15:11:20
さすがにうざいだろこれは…

353:デフォルトの名無しさん
08/10/12 15:53:21
他に話題も無いしなあ

354:デフォルトの名無しさん
08/10/12 18:57:56
つ翻訳

355:デフォルトの名無しさん
08/10/13 19:16:01
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


356:デフォルトの名無しさん
08/10/13 20:58:57
Lua 5.2とか機能追加候補とか。
URLリンク(lua-users.org)
URLリンク(lua-users.org)

個人的にはHash計算しない文字列(バッファ目的)とか
標準にほしいような。LuaSocketとかでそれなりのサイズの
通信行うと、ゴミがたまるので精神衛生上良くない。


357:デフォルトの名無しさん
08/10/13 21:50:07
そういう部分は後で少しずつCで書き直すわけにはいかないのかな
CとLuaの比率をなめらかに変化させるのが理想的だと思う

358:デフォルトの名無しさん
08/10/14 23:07:14
ところでここはAngelScriptやGameMonkeyの話題はOKなの?

359:デフォルトの名無しさん
08/10/14 23:24:21
組み込み系言語総合だからおk

360:デフォルトの名無しさん
08/10/15 00:36:47
やたら懐かしい名前が出てきたなw

361:デフォルトの名無しさん
08/10/15 01:44:37
AngelScript使っているひといないの?
結構良さそうなんだけど

362:デフォルトの名無しさん
08/10/15 01:53:26

        (´\r-、     ┼         +     /`/`)    +
     ┼   (\. \!              *     // ,/)  *
  +     * (ヽ、   \ +  *          /   /)   +
      ⊂ニ      )        *   +  (     ニ⊃
  *  +  ⊂、     (   ∩___∩   ノ     ⊃   +  *
         (/(/   ヽ  | ノ     ヽ /    、)ヽ)  ┼
    +        (/ (⌒ヽ. ∨  ●   ●レ /⌒) 、)ヽ)
     *       (/'\ \|   ( _●_) ミ'  /、)、)´       +
         +      `ヽ彡、   |∪| ノ /    Lua!!
     +            〉    ヽノ  /  *      +
       ┼        /      /      +
           +     /    /\ \   *        +
  +         *  /  / ┼ )  )       +
            / / +  (   \          *
    *     +   (_/      *   \_丿   ┼

363:デフォルトの名無しさん
08/10/15 02:56:46
流れぶった切るが
ゲーム系で問題になるluaのreallocの問題って
 1) OSのreallocは排他等高コスト
 2) 拡張時のコピーが高くつく
 3) メモリ断片化
のどれだろう。また、その代替案として以下は正しい?
1) 2)
=>インタフェース変えずにカスタムlua_Alloc作成だけでOK?
3)
=>stl::vector ->stl::dequeみたいに配列サイズ追加しても
allocが呼ばれない配列管理に変更


364:デフォルトの名無しさん
08/10/15 03:07:13
>>361
あー、おれも興味あるんだ
文体C++風味で型の扱いが静的というところに魅かれる



365:363
08/10/15 03:08:37
ちょい修正
1)
=>インタフェース変えずにカスタムlua_Alloc作成だけでOK?
2) 3)
=> 配列サイズ増加時にallocは呼ぶが、stl::deque
のような再配置をなくした配列管理にし、また、追加される
メモリブロックは固定長に出来るので固定長メモリアロケーター
で済む。故にメモリ断片化が防げる。

366:デフォルトの名無しさん
08/10/15 05:05:38
>>363
ここで聞くほど問題が見当たらないなら
 4) そもそも実は問題ない
という結論にならないかね?

malloc/free が OK で realloc がダメとかおかしいだろ、普通に考えて。

367:デフォルトの名無しさん
08/10/15 18:05:36
AngelScriptはC++みたいで個人的に大好きなんだが漠然と遅い気がする。
まぁちょろいテストアプリを作っただけなんで作り込んだらいい線いくかもしれないが。

368:デフォルトの名無しさん
08/10/15 18:48:39
何だかんだで速度が気になってLuaに戻って来ちゃうんだよなあ。
PythonとかRubyとかちょっと組み込んでみたいんだけども。

369:363
08/10/15 20:32:14
反応薄いな。366の言うとおり実は問題にしてる人少ない?

本当にリサイズが発生するのって配列サイズの増加と
テーブルのハッシュ再計算時と文字列結合ぐらい?
lua自身の配列サイズの増加も倍々方式だし、realloc自体も
同様の最適化されてるので、コピーはそんなに発生しない。

ある程度の大きさのランダムアクセス配列が必要なら、
配列サイズの事前割り当ても可能だし、配列自体の
使いまわしも出来る。

ガベコレはだめだ、参照カウンタがいいってんなら理解できるが。

370:デフォルトの名無しさん
08/10/15 21:22:06
そもそもシビアなゲームとかならalloc呼び出す、みたいな設計はしない。

371:デフォルトの名無しさん
08/10/16 02:28:44
AngelScriptはホスト側のインターフェイスは好みなんだけどなあ・・

372:デフォルトの名無しさん
08/10/16 02:34:17
AngelScriptにはJITみたいなのないの?

373:デフォルトの名無しさん
08/10/16 20:54:50
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


374:デフォルトの名無しさん
08/10/18 10:50:51

どなたか教えてください。


struct X {
int x;
};


void B(struct X *x) {
printf("%d\n", x->x);
}

void A() {
struct X x;
B(&x);
}

こんな感じで関数Aから関数Bを呼ぶコードがあるとして、
関数BをLuaに書き換えたいのだが、
どうやったらC言語側でメモリ管理している構造体データをLuaの関数に渡せるの?

375:デフォルトの名無しさん
08/10/18 11:33:42
>>374
lua_pushlightuserdata()
メンバ変数をLua側に公開するなら他にも色々必要だろうけど

376:デフォルトの名無しさん
08/10/18 15:46:17
>>375
ありがとうございます
色々って、たとえばアクセス用の関数を準備するとかですか?
ほかになにか手はありますかね。

377:デフォルトの名無しさん
08/10/18 22:31:06
>>376
その関数とデータを一つのテーブルにまとめるとか
メタテーブルを使うとか

メタテーブルの説明はマニュアルにある
何に使うかは自由

378:デフォルトの名無しさん
08/10/21 10:50:36
SQDEVでSquirrelの自作スクリプト&プログラムのデバッグをやってるんだが、
SquirrelスクリプトにSJISの文字列リテラルを書いてたら
Eclipseで毎回コンパイルエラーがでるのは俺だけ?

Eclipseの起動前にスクリプトを一時的に削除したりして面倒。
デバッグ用に動かす分には問題ないっぽいんだが。
\

379:デフォルトの名無しさん
08/10/21 15:56:12
ヒント:SJIS

380:378
08/10/21 18:22:22
>>379
今確認したが、UTF-8でスクリプトを用意して
bin/squでシンタクスチェックをさせるようにしても、
やはり日本語のリテラル部分でEclipseのエラーメッセージが表示される。
(もちろんsqu -c では問題なし)

381:デフォルトの名無しさん
08/10/22 07:47:34
ヒント:UTF-8

382:デフォルトの名無しさん
08/10/22 12:58:16
Eclipseスレでどうぞ

383:デフォルトの名無しさん
08/10/22 21:17:49
とりあえず、SQ-DEVでインストールの仕方を教えてくれ、うまくいかない。

384:378
08/10/25 14:22:02
>>381
UTF-16LE/BEに変えてみたがやはり変わらず。
それからSquirrelインタプリタsqu.exeはコンパイル時にエラーを吐かないことが結構あることに気づいた。
コンパイルチェックはあまり信用できないんだな。
>>382
説明が悪かった。Eclipseのウィンドウに、「Squirrelスクリプトのコンパイルエラー」と表示されるわけだ。
表示させてるのはSQDEVなので一応まだSquirrelの範囲内。まあしつこいと思われるようだったら黙る。
>>383
俺もつい先週入れたばかりなのでまだ使える情報だと思うが、

1.まずSun Java SEの最新版を入れる。
2.EclipseはC++用じゃなくてJava開発用をインストールすること(CDTは後から入れられる)
3.あとはSQDEVのWikiページの通りでよい

385:デフォルトの名無しさん
08/10/25 17:03:25
ヒント:UTF-16LE/BE

386:デフォルトの名無しさん
08/10/25 19:14:16
まず、素のSquirrelはマルチバイド考慮してない
本体のコンパイル時にUNICODE対応させるオプションがある。
内部のUNICODE=UTF-16

だけど確か、読み込み時に標準ライブラリを使ってロードする時はいくつかのUNICODEに対応していたはず、
(UTF-8N,UTF-16のLE,BEあたりだったような)
この辺はソース読んでみて、確かめてみて簡単だから

387:378
08/10/25 20:10:22
>>386
Squirrelソース本体はまさにその通りですね。どうもありがとう。

ところがSQDEVに関しては、どうやらSQDEV自体でSquirrelスクリプトの構文解析をやってるっぽいんだ。
(pluginのJavaソースコードを入手して眺めてみた)

このJavaで独自に実装された構文解析器で文法チェックしてるのか、
SQDEVのオプションで指定するインタプリタで文法チェックさせてるのかはまだ調べてない。

残念ながら俺はJava界隈はあまり詳しくないので、どう直したらSJIS対応の構文解析器に改造できるのかがわからん。

388:デフォルトの名無しさん
08/10/25 21:21:47
>>384
syntax checkingもできてないし
デバックできなかった。

suspend
ready
connected
SQDBG error : cannot open the file

389:デフォルトの名無しさん
08/10/26 01:12:46
SQDEVって結構謎めいた奴なんだな

390:デフォルトの名無しさん
08/10/27 14:34:30
>>388
EclipseでSquirrelパースペクティブを開いているかどうか。
SQDEVの設定は完了しているのかどうか。
プロジェクトのファイルパスがスペースを含まない半角英数字のみで構成されているかどうか。
sqdbglibを含んだインタプリタかどうか。(sqdbg.exe)

391:390
08/10/27 15:17:09
補足。
リモートデバッグというのは動いている外部プログラムをSocket越しにモニターするだけのことだから、
デバッグ対象のプログラムが正常に動作するようにする必要がある。
「SQDBG error : cannot open the file」
という言葉通り考えるなら、sqdbg.exe の場合だと
「Default Working Directory」と「Default command line options」の組み合わせが正しくないとか。

392:デフォルトの名無しさん
08/10/27 15:28:22
既出かもしれないが、
SqPlusの初期化において、VMをSQSharedStateNodeに渡してアプリケーション終了時にまで
VMの解放を後回しにするコードは丸めてゴミ箱に捨てたほうがいい。回避させたほうが無難。

393:デフォルトの名無しさん
08/10/27 18:53:29
>>392
「Default command line options」がわかんないよ。
「test.nut」じゃないの
ほかは全部あってると思う。

394:393
08/10/27 18:54:05
間違えた。
>>391

395:デフォルトの名無しさん
08/10/28 11:16:46
>>393
まあ分からないというなら、ファイル・ディレクトリ構成まで含めてWikiと全く同じにしてごらんよ。
connectedと出ているようだから、sqdbg.exeへのSocket接続は成功しているようだ。

396:デフォルトの名無しさん
08/10/28 23:02:00
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >


397:デフォルトの名無しさん
08/11/03 15:03:40
ほっしゅ

398:デフォルトの名無しさん
08/11/03 18:31:08
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   



399:デフォルトの名無しさん
08/11/04 18:05:01
luaで正規表現は使えますか?

また、文字列処理に関して、pythonやrubyと
比べるとどうですか?かなり劣ってますか?

400:デフォルトの名無しさん
08/11/04 19:13:11
>>399
使えます
ある程度は劣っていると思います

401:デフォルトの名無しさん
08/11/04 19:27:44
>>399
文字列の簡単なパターンマッチは標準ライブラリでできますが、
例えばバックトラックを必要とするような複雑なパターンは使えません。
マルチバイト文字のサポートもありません。
あえて言うなら、文字列とbyte列を区別するのが嫌いな人向け。

ちなみにLPegというライブラリでparsing expression grammarが使えるそうです。
URLリンク(www.inf.puc-rio.br)

402:デフォルトの名無しさん
08/11/04 22:30:15
>>400
>>401
レスありがとう。
rubyかpythonの拡張で行こうかと思ってたけど、
組み込みで行くわ。
俄然やる気出てきた。

403:デフォルトの名無しさん
08/11/04 23:29:28
>>399,402
文体の変化にやる気というか、テンションの上がりっぷりが伺えて面白いんだがw

404:デフォルトの名無しさん
08/11/05 10:49:20
さしあたり、SquirrelにはSJISのテキストを1文字ずつ区切って
配列にぶち込んでくれるAPIが欲しいところだな。

405:デフォルトの名無しさん
08/11/06 02:33:13
>>404
自分でネイティブ関数作ればいいじゃないかw

406:デフォルトの名無しさん
08/11/07 20:21:05
スクリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践

って本に関して、Luaの入門書を先に読んだほうが良いですか?
それともこの本だけで完結しますか?

407:デフォルトの名無しさん
08/11/07 21:05:26
開発効率を上げるためにスクリプト言語(Lua)を利用するという趣旨の本で
読むのにLua自体の知識はあまり必要ない

408:デフォルトの名無しさん
08/11/07 21:41:36
>406
Luaの構文規則については第4章をまるまる使って解説してる
本に載っている内容だけならこれで十分

自分でなんか作ってみて
わからないところが出てきたら
Webのリファレンスみればいいんじゃない?


409:デフォルトの名無しさん
08/11/08 04:24:49
ご意見ありがとう御座いました。
大変参考になりました。


410:デフォルトの名無しさん
08/11/09 03:47:40
あれこれSquirrel(on SqPlus)でテストしたけど、VCで文字コードをUnicodeにした場合、スクリプトコードの日本語はうまく処理できない。
文字列処理をアプリ側でやれば問題はないんだが、スクリプトコードのデバッグに日本語が使えないな。


411:デフォルトの名無しさん
08/11/12 01:04:17
lua5.0で割り算をした時に余りを出す方法はないですか?

412:デフォルトの名無しさん
08/11/12 01:27:30
ん、5.0って%ないの?

413:デフォルトの名無しさん
08/11/12 06:25:36
あるならそんな質問しないだろ常識的に考えて・・・

414:デフォルトの名無しさん
08/11/12 07:39:32
5.0にはないみたいだね。
URLリンク(sugarpot.sakura.ne.jp)

5.1にはあるけど。
URLリンク(sugarpot.sakura.ne.jp)

5.0でもmath.modはあるみたいだからそれを使えば。
URLリンク(sugarpot.sakura.ne.jp)

415:デフォルトの名無しさん
08/11/12 19:49:36
>>411
粘菌に計算してもらえばええよ。
URLリンク(www.chunichi.co.jp)

416:デフォルトの名無しさん
08/11/12 23:54:16
>>411
つ math.mod

417:デフォルトの名無しさん
08/11/13 00:01:26
>>416
>>414

418:デフォルトの名無しさん
08/11/13 00:03:58
>>417
すまね、携帯で見てて下切れてたorz

419:デフォルトの名無しさん
08/11/13 01:39:50
math = nil

420:411
08/11/14 23:41:53
>>414
ありがとうございます。できました

421:デフォルトの名無しさん
08/11/15 10:58:34
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   



422:デフォルトの名無しさん
08/11/16 10:17:41
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >



423:デフォルトの名無しさん
08/11/16 13:06:01
俺のXtalたんはどうなりましたか?

424:デフォルトの名無しさん
08/11/16 13:06:52
音信不通です

425:デフォルトの名無しさん
08/11/16 18:36:16
Xtalたんは緊張気味です

426:デフォルトの名無しさん
08/11/16 20:12:46
返事がない。ただの屍のようだ。

427:デフォルトの名無しさん
08/11/16 21:31:57
AngelScripたんなら俺の横で寝てるが

428:デフォルトの名無しさん
08/11/16 23:07:10
AngelScript色々いじってみたが、結構使いやすいな。
文法がC++なんで慣れてるってのもあるが。

ただ、AngelScriptとC++プログラムを結びつけるのを簡単に行うツールとかないのが残念。
LuaBindとかみたいなやつね。

429:デフォルトの名無しさん
08/11/17 15:01:43
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


430:デフォルトの名無しさん
08/11/17 15:32:49
プログラミング言語のソースコード行数
URLリンク(d.hatena.ne.jp)

431:デフォルトの名無しさん
08/11/17 20:00:00
>>428
バインダがなくてもシームレスに利用できるのがAngelScriptの良いところだと思うのだが。

432:デフォルトの名無しさん
08/11/17 23:47:04
>>431
確かに。
Luaはいまいち使いこなせなかったが、AngelScriptはその辺楽でよかった。

ただ、例えば

ASFunc<int(int,int)> f;
f.SetContext(~);
f.SetFuncID(~);
int val=f(a,b);

みたいな感じで、普通の関数呼び出しと同じようにAngelScriptの関数呼び出せるのがあれば便利かなーと。

433:デフォルトの名無しさん
08/11/18 20:34:35
LuaInterface URLリンク(luaforge.net)
で.NETのSystem.Drawing.BitmapとかGraphicsを使って画像を読み込んで弄ったり出来るんだけど、
新規にBitmapを作る方法がわからん。
一旦画像を読み込んでそれのクローンをつくるとかいうやり方ぐらいしかうまくいかない。

434:デフォルトの名無しさん
08/11/22 08:49:08
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >



435:デフォルトの名無しさん
08/11/22 18:43:30
いいえ、それはKumaです。

436:410
08/11/24 14:51:19
アプリ側でsetlocaleすりゃよかったんだな。
UCS2は.NETでしか使ったことなかったので、ロケール失念してた。

437:デフォルトの名無しさん
08/11/25 00:12:56
すみません、質問があります。

現在、「スクリプト言語による効率的ゲーム開発」という本を読み、
Visual C++ 2008 EE上で空のプロジェクトを作成し、
以下のソースファイルをビルドしてみたのですが、

// 以下、ソースファイル
#include <lua.hpp>

int
main()
{
lua_State* L = lua_open();
lua_close(L);

return 0;
}

LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
という警告が出ます。
かといってLIBCMTを無視するライブラリに指定するとビルドが通りません。

LNK4098のメッセージを無視する方法以外で、警告メッセージを消す方法はありますか?

438:デフォルトの名無しさん
08/11/25 00:51:29
LuaのライブラリをコンパイルしたときのCRTとそのプロジェクトのCRTが食い違ってるんじゃね。
大体MTとかその辺のオプションで

439:デフォルトの名無しさん
08/11/25 09:08:48
>>437
vcppでWin32向けプログラムをビルド際にFAQレベルで発生する問題だ。
Luaに限ったことじゃないのでぐぐればすぐに解決策は出てくる。
ややこしいことにvcppは複数のランタイムライブラリを持っていて、しかも各ライブラリ・プログラム生成時には原則全てあわせる必要がある。

440:デフォルトの名無しさん
08/11/25 23:22:38
>>439
推測だがLuaのビルドオプションがMTでアプリ側もMDだとこの警告がでる。
この場合でもアプリのほうでLIBCMTを無視する設定にすれば大概大丈夫なはずなんだが・・・

面倒だったら、両方のランタイムをそろえてしまえばラクだけど

441:デフォルトの名無しさん
08/11/26 01:05:16
>> 438
>> 439
>> 440

プロジェクトの
 [構成プロパティ]->[C/C++]->[コード生成]->ランタイムライブラリ
を/MDd(マルチスレッドデバッグ DLL)から/MT(マルチスレッド)に変更することで警告がでなくなりました。

おかげで少しVC++についてわかりました。

ご丁寧な回答、ありがとうございました。


442:デフォルトの名無しさん
08/11/26 01:44:50
正しい解決法は、
・LuaのライブラリをCRT毎に6種類全部ビルドする
・#ifdefと#pragma comment(lib,~)で自動的にそれを選択するヘッダを作る


443:デフォルトの名無しさん
08/11/27 15:41:21
スクリプト言語による効率的ゲーム開発の本読んで、
確かに動的リロードはできたら便利だよなと思った。

そこでSquirrelで同じことをしようと思ったんだが、問題にぶつかった。
Squirrelの仕様だと、Classは一度インスタンスを生成すると変更不能になる。
この仕様だとSquirrelのクラスはリロードできないんだよな…

かといってdelegate使うのは、折角クラス機構があるのにどうよ?と思うんだが、
Squirrelで動的リロードを実装した人いる?

444:デフォルトの名無しさん
08/11/27 15:44:13
>>442
Makefileで書けば至極簡単だが、(Luaを)プロジェクトファイルで管理したら普通の方法だとものすごく手間がかかりそうだな。
楽にやる方法何かないでしょうか。

445:デフォルトの名無しさん
08/11/27 15:45:19
>>443
スクエニの小さな王国とかが動的リロードやってる
CEDEC2008で言ってた


446:デフォルトの名無しさん
08/11/27 15:45:24
>>443
おそらく、いったんインタプリタを殺して最初からやり直した方が早いと思う。

447:デフォルトの名無しさん
08/11/27 16:02:33
>>444
ヘッダ一発だってばさ

448:デフォルトの名無しさん
08/11/27 16:39:01
>>445
やってるのか。詳細が欲しいな。

>>446
今まではまさにその方法でやってた。

色々考えてみたが、ソースに手を加えない方法ではdelegate使うしかないな。

Foo = NewClass( "Foo", SuperClass );

function Foo::foo()
{
// do something
}

のようにクラスを記述しないといけないが…


449:444
08/11/27 22:30:07
>>447
意図がうまく伝わらなくてすまん。
Luaを6種類ビルドする方法のことを言ってます。

450:デフォルトの名無しさん
08/11/28 08:13:57
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


451:デフォルトの名無しさん
08/11/28 17:02:22
>>449
プロジェクトファイルってVCの話か?
それなら、ビルド方法のリリースやデバッグに追加して
「DLL リリース」とか「DLL デバッグ」とか作ればええよ

452:デフォルトの名無しさん
08/12/02 01:31:01
なんか0xff表記使うとfloatっぽい丸め誤差が発生するんだが。
色マクロに使おうとしてた俺涙目とか思ってたら>>100で既出な上、
さらに>>104で解決策が示されていた件

ありがとう>>104

453:デフォルトの名無しさん
08/12/02 10:20:36
Xtalで書いたスクリプトをSquirrelに移植したら
微妙に遅くなって涙目。

デバッガとかついててSquirrel便利だけど、
どっちにしようかなぁ……。

454:デフォルトの名無しさん
08/12/02 11:35:49
”微妙に”遅くなるだけなら問題ないと思うんだが・・・
実行に差し障りがあるレベルなら微妙とはいわなくね?

455:デフォルトの名無しさん
08/12/02 22:27:47
たしかに、スクリプトの速度が1/2になるのとFPSが1/2になるのとでは全く意味が違うからな。
FPSが明らかに低下したらならXtalのままにしたほうがいいと思う。

456:453
08/12/03 01:14:18
60FPSでキャッシュせずに全張替えしてる仮実装の状態だが、
Xtalだとぎりぎりで60FPS出せる。CPU使用率は1個換算で96~98%くらい。
これがSquirrelだと52~54FPSになって少しカクカクしてくる。

速度ならXtalということになるが、これ以上作りこむとどうせ足りなくなるのは同じで、
描画処理の枝刈りをすればSquirrelでもいけるかも……というところ。
蛇足でスマソ。

457:453
08/12/03 01:28:54
ところで、みんなSqPlusのところ悪いが(ほんとか?)
jkBindってどうよ?
なんかフォーラムにパッチ上がってるみたいだけど。

458:デフォルトの名無しさん
08/12/15 19:37:58
なんかtolua++の挙動怪しかったん、手てグルーコードを書くのを補助する
ライブラリ自作しちまったい。

やっぱり自前で書いたほうが細かく制御できていいね。

459:デフォルトの名無しさん
08/12/15 23:46:18
AngelScriptのShiftJIS対応版とか需要あるんだろうか…

460:デフォルトの名無しさん
08/12/17 00:31:03
俺はSquirrel3のパフォーマンスチューニングに期待してSquirrelで行くぜ!
まぁ、枝刈りも大切だと思う。

あとはココのJITとかどうかね
URLリンク(muffin.cias.osakafu-u.ac.jp)

バージョンがちょい古いけど…

461:デフォルトの名無しさん
08/12/17 01:26:17
>>460
ちょうど今、vcpp向けの改修を行っているところ。
作者のスクリプト、デフォルト引数などは既に対応した。
まだメタメソッドや複数段階のクロージャの呼び出しがイマイチ不安定なので改善を図ってるところ。
近々フォーラムに発表予定。

462:デフォルトの名無しさん
08/12/17 13:44:50
>>461
元にある問題点とかはそのままなの?

463:デフォルトの名無しさん
08/12/17 22:05:06
wktk

464:461
08/12/19 20:46:12
とりあえず、手元のスクリプトがほぼ一通り動くようになったのでフォーラムで公開してみる。
協力者求む。
動かないスクリプトの例などがあるとうれしい。

465:デフォルトの名無しさん
08/12/20 00:09:14
乙!


466:デフォルトの名無しさん
08/12/20 09:07:13
>>464
乙カレー

LuaはC++だとlua_call失敗時に例外投げるんだな。ちゃんと書いてくれよOTL

てっきりデストラクタ呼ばれないと思って、そういうコードを書いてたせいで
謎の挙動に悩まされたよ。


467:デフォルトの名無しさん
08/12/20 15:57:40
>>466
リファレンスマニュアルの3.6にそれらしいことが書いてあるよ
Cでsetjmp/longjmp使っててもC++のデストラクタが呼ばれる処理系もあるけどね

468:デフォルトの名無しさん
08/12/20 18:03:42
>>467
ほんとだ見落としてた
俺の3時間を返せorz

469:デフォルトの名無しさん
08/12/22 08:14:31
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


470:デフォルトの名無しさん
08/12/22 09:22:22
toLuaでC++とLuaをバインディングしてるんだけど、
yieldをC++側で呼ぼうとしたとき、
toLuaの生成したラッパーの中じゃ、
lua_yieldを呼べないようなんだが、
どうしてる?


471:デフォルトの名無しさん
08/12/22 18:53:35
>>470
lua が yeild をどうやって実装しているか、ソースを追っかけてごらん。


472:デフォルトの名無しさん
08/12/28 14:38:55
IGDAでこういったイベント新年にやるみたいだから、参加するのもよいかも

URLリンク(www.igda.jp)

CRIScriptの人が来るのはちょっと驚いた。
アメリカからはるばる・・・

473:デフォルトの名無しさん
08/12/28 15:41:56
>>472
浜中さんの本すでに持ってる人にはあまり新しい情報は出ない気がする…


474:デフォルトの名無しさん
08/12/29 05:08:14
日本製のゲーム用スクリプトで最もオープン、かつ、つかわれまくってるものを
開発した W.Dee 氏をパネリストでよぶべきだろう、とちょっと思ったけど、
よくよく考えてみればあの人はゲームは本業じゃないか……

475:デフォルトの名無しさん
08/12/29 10:57:23
うん。Nスクの人だと食指は動かないが、Deeたんなら是非行く。
というか、組込み言語の話だからじゃないかな(Nスクの人がいるけど)。

476:デフォルトの名無しさん
08/12/30 09:34:59
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   



477:デフォルトの名無しさん
08/12/30 19:43:21
Nスクリプトは、組み込み言語?というよりDSLでは?
ゲームとか簡易GUIが簡単に作れるHSPみたいなイメージ

478:デフォルトの名無しさん
08/12/30 19:43:56
ごめん、 W.Dee ってきりきりの人かスアソ

479:デフォルトの名無しさん
09/01/01 16:45:20
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ O sol e a Lua!!, parabens!!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


480: 【大吉】 【1340円】
09/01/01 17:04:11
ぅあけおめー

481:デフォルトの名無しさん
09/01/04 18:49:32
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ


482:デフォルトの名無しさん
09/01/04 18:59:39
あ、ぅあたんいんしたお!

483:デフォルトの名無しさん
09/01/06 23:35:21
ところでLuaとかでyieldでスクリプトの処理を一時停止させて、
その状態をファイルとかに保存して、そのファイルを読み込んで復元、ってできる?

484:デフォルトの名無しさん
09/01/06 23:47:11
使ったこと無いけどPluto使えばできるかも
日本語のドキュメントがないけど
URLリンク(luaforge.net)

485:デフォルトの名無しさん
09/01/09 00:54:41
>>484

ちょっと調べてみる。
しかし日本語マニュアルがないのは地味にきついな…
普段使ってるAngelScriptも英文マニュアルしかないし。

486:デフォルトの名無しさん
09/01/09 01:02:51
Xtalたん結婚おめ!

487:デフォルトの名無しさん
09/01/09 01:31:47
地味にきついな、といいながら日本ではマイナーもいいところなAngelScirptを普段使っているところに男を感じるw

488:デフォルトの名無しさん
09/01/09 19:28:38
Xtalってソースコードに他言語との比較ベンチコードが
のってるけど、実際はやいの?

489:デフォルトの名無しさん
09/01/09 19:39:39
>>486
おめでと~w

490:デフォルトの名無しさん
09/01/09 23:22:03
>>487
日本語マニュアルはないけど、サンプルがたくさん付いてて分かりやすいのよ。
あと、LuaやSquirrelのスタック介したやり取りじゃなくて直接的にC++とやり取りできるんで便利。
ただデフォでShiftJISに対応してないけど…

491:デフォルトの名無しさん
09/01/10 08:32:24
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


492:デフォルトの名無しさん
09/01/10 09:33:55
Xtalなんて誰も使ってないから
気楽にやりなー

493:デフォルトの名無しさん
09/01/10 10:50:27
>>488
上にSquirrelよりはやいって書いてあるよ

494:デフォルトの名無しさん
09/01/10 11:00:31
Squirrelも、JIT対応版を使えばLuaやXtalよりはやくなるけどね。

495:デフォルトの名無しさん
09/01/10 13:24:56
Luaも、JIT対応版を使えばSquirrelやXtalよりはやくなるけどね。

Xtalも、JIT対応版を作ればLuaやSquirrelよりはやくなるけどね。

496:デフォルトの名無しさん
09/01/10 14:05:36
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ



497:デフォルトの名無しさん
09/01/11 20:18:26
つまりLuaSquirrelXtal-JITを作れば、LuaやSquirrelやXtalよりもはやいLuaSquirrelXtalが出来るということだね。

498:デフォルトの名無しさん
09/01/11 20:58:34
a

499:デフォルトの名無しさん
09/01/11 21:55:53
C++のインスタンスをLuaからLuaのインスタンスかのようにアクセスしたいのですがやり方が判らず悩んでいます。
インスタンスメソッドを直接lua_registerできないですよね、いったいどうしたら良いものやら。。

ご存知のかたいらっしゃいましたら是非お教えください。

500:デフォルトの名無しさん
09/01/13 07:44:04
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


501:デフォルトの名無しさん
09/01/13 12:13:07
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ


502:デフォルトの名無しさん
09/01/14 05:46:16
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ まピョーん☆
 彡、   |∪|  /
/ __  ヽノ /
(___)   

503:デフォルトの名無しさん
09/01/14 08:14:31
      _,..-- 、
       ,'     ヽ     まピョーん☆
     /<┃> <┃ >l  _
  _ l  、,,--イ   | /Mヽ
  /M l l  ` ̄   Lノ/
   i `ー       l ̄
     ̄ヽ      /
       \     {
        ヽ   `ー-'ノ
         `ー----''"




504:デフォルトの名無しさん
09/01/14 14:25:26
すでにLua関係ねえw
ひかえてくれw

505:デフォルトの名無しさん
09/01/15 18:04:39
>>499
メンバ関数呼び出しは、関数に対応した整数値とthisポインタを登録して
__call内部でswitchで対応する関数を呼び出すような実装ならしたことあるな。
もっとスマートな方法があると思うけど。

506:デフォルトの名無しさん
09/01/16 21:11:50
>>499
toLuaとかluabind使うのがええよ。
自前でやるなら、テーブルなどを使うべし。

507:デフォルトの名無しさん
09/01/16 23:47:31
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua まピョーん☆
 彡、   |∪|  /
/ __  ヽノ /
(___)   

508:デフォルトの名無しさん
09/01/25 19:50:53
AngelScriptで改行コードがCR+LFだとスクリプトがビルドできない
Windows+MinGWでやってるんだけどこれって仕様なのかな
unexpected tokenとか出るから最初何かと思ったわ

509:デフォルトの名無しさん
09/01/26 00:02:51
>>508
自分の所では普通にビルドして実行できてるな。
ちなみにWindows+VisualStudio2005。

あと、全角文字使ってない?

510:デフォルトの名無しさん
09/01/26 09:10:32
>>509
半角英文字しか使ってないよー
void main() {
  return;
}
これでエラー出たんだぜw

普通に実行できるということはライブラリ自体のビルドに問題があったのかな
なんでだろう、Linux環境と誤認してるのか?

511:デフォルトの名無しさん
09/01/26 10:02:50
別にLinuxでもSolarisでも改行コードのせいでビルド失敗することないけどな。

512:デフォルトの名無しさん
09/01/26 10:30:55
スクリプトをUnicode(UTF-16)で保存してないか?
現バージョンだとUTF-16のスクリプト読めないみたい。

513:デフォルトの名無しさん
09/01/26 11:16:26
>>511
ライブラリがLinux環境(LF)を期待しているのに、Windows環境(CR+LF)を食わせるから
エラーが出るのだと思ったんだが…
Linux環境でCR+LFを食わせてもエラーが出ないなら、他に原因があることになるな

>>512
一応いくつかのエディタで開いてUTF-8Nだということは確認した
けれども、文字コード自体は最初から変えてないよ

エラーがいつもファイルの末尾で出てたから、
試しに void main() { return; } ってのをやってみたら
ビルドが通ることを発見して、改行コードに目をつけた

よく考えたら改行コードに問題があるなら、全ての行でエラーが出るはずだよな…
ファイルの末尾でだけエラーが出てたにも関わらず、なぜ改行コードを変えるとビルド出来るんだろう

514:デフォルトの名無しさん
09/01/26 11:51:16
MinGW の stdio のバグじゃないかな。
EOF判定がおかしくて、最後の文字(または行)が読めてないか、
あるいは逆にごみを読み込んでしまってるかのどちらかじゃないかと思う。

515:デフォルトの名無しさん
09/01/26 13:20:53
スクリプトを丸ごと読み込んでそのまま使った場合に、
EOFが無くてスクリプトを読み込んだ領域の後ろの部分まで
解析しようとしてエラー起こしたことがあったな。

516:デフォルトの名無しさん
09/01/26 13:29:59
最後に空行かコメント行入れてみるとわかるかも?

517:デフォルトの名無しさん
09/01/26 23:11:29
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


518:デフォルトの名無しさん
09/01/27 00:40:38
まず最初にエラーの出るファイルをバイナリダンプすべきじゃね?

519:デフォルトの名無しさん
09/01/27 08:39:12
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  Lua まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ


520:デフォルトの名無しさん
09/01/27 10:53:07
原因が分かった
freadでファイルを読み込んでたんだけど、そこでCR+LFが勝手にLFに変換されてた
そのせいでファイルの長さと文字列の長さでズレが生じて、
スクリプト読み込み時にその差分だけ余計な領域まで踏み込んでた
"r"じゃなくて"rb"で読み込むようにしたらエラー出なくなったよ

サンプルのユーティリティ関数をそのまま使ったのが悪かったのかもしれん

521:デフォルトの名無しさん
09/01/27 11:14:18
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄

まあよくあることだなw

Rubyのライブラリでも何か読み込みの挙動がおかしいと思ったら、
ライブラリ側でWindows考慮してなくて、バイナリモードになってなかったり。

522:デフォルトの名無しさん
09/01/27 13:27:29
テキストモードって何のために存在するの?

523:デフォルトの名無しさん
09/01/27 13:40:23
fprintf(f, "Hello World\n");

ってコードの、\n を出力時に \r\n にむりやり変換するのと、fclose したときに
EOF をむりやりつけるために存在する。DOSの遺産。

524:デフォルトの名無しさん
09/01/27 13:41:08
歴史的な経緯
タイプライターやTTY、CP/Mの歴史たどるといいかも。

525:デフォルトの名無しさん
09/02/05 17:09:16
URLリンク(luaforge.net)
これ使ってる人いない?

526:デフォルトの名無しさん
09/02/05 17:18:06
岡山オワタ
URLリンク(www.geocities.jp)

527:デフォルトの名無しさん
09/02/05 19:56:41
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ



528:デフォルトの名無しさん
09/02/05 22:23:10
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  Lua まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

529:デフォルトの名無しさん
09/02/05 22:31:04
Luaのクマーさん


530:デフォルトの名無しさん
09/02/06 11:43:23
>>525
まずお前が試して、ダメ出しした方がいいんじゃない?

俺は、ずっと秀丸で済ましてるな。
LuaEditも使える様にインストールはしたけど、
本当にテンパった時の保険として残してる感じ。

531:デフォルトの名無しさん
09/02/07 18:18:29
>>530
今のところの感じでは、
・色分けされて便利
・文字入力するたびに候補でもない単語が出てくるのがウザイ
・プロジェクトの設定が分からない
 ググッて見たけど何処にも解説ないし、Raedmeが欲しかった。

環境を揃える所から入る性質で、
「コレはいいな」って思ったのにプロジェクトの設定が分からないから聞きたかったんだ。
(プロジェクトの設定できたらデバッグとか出来るのかと思うんだけどなぁ)
やっぱサクラエディタとか秀丸とかSciTEとか使った方がいいのかな・・・・。
取り合えずはLuaLanguagePackで勉強進めてみる。

532:名無しさん
09/02/07 21:08:45
./lua
>
の状態で、Ctrl-C以外で終了する方法はありますか?
exit とか quit とかやってみましたがダメでした

533:デフォルトの名無しさん
09/02/07 21:32:09
そこは Ctrl+Zだと思う。
標準入力を終了しない事には終われないのが正常なのでは?

534:名無しさん
09/02/07 21:36:59
>>533
どうも
Linuxなので、 Ctrl-D でぬけられました。

535:デフォルトの名無しさん
09/02/09 07:53:47
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


536:デフォルトの名無しさん
09/02/09 13:00:58
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua まピョーん☆
 彡、   |∪|  /
/ __  ヽノ /
(___)   

537:デフォルトの名無しさん
09/02/12 22:19:59
URLリンク(wiki.alliedmods.net)

Pawnでこう、いい日本語のサイトありますかねぇ。

538:デフォルトの名無しさん
09/02/13 08:44:59
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ



539:デフォルトの名無しさん
09/02/14 13:54:50
いまさらながらLua本買ってみた。スクリプト言語による~~ってやつ
アマチュア個人でゲーム作っててスクリプトはSquirrelでの実装を考えてたんだけど、Luaに気持ちが揺れる揺れる
嗚呼どうしよう!

540:デフォルトの名無しさん
09/02/14 14:21:12
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   


541:デフォルトの名無しさん
09/02/14 14:30:54
おれは速度と軽さを求めないならSquirrelかな
それにLua本に書いてある考え方ってほとんどSquirrelにも応用できるんじゃない?

542:デフォルトの名無しさん
09/02/14 15:12:47
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ Lua!!
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ



543:デフォルトの名無しさん
09/02/14 15:16:25
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  Lua まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

544:デフォルトの名無しさん
09/02/14 20:34:36
>>539
ホントのオススメは、自分で何か実装してみてから選ぶことだけどな。
Lisp とか Forth ライクなものなら結構簡単だし、BASIC やアセンブラのような LL1 で行指向のものなら更に簡単だ。

545:デフォルトの名無しさん
09/02/15 00:21:33
>>539
AngelScriptが使って欲しそうな目で見ている。

546:デフォルトの名無しさん
09/02/15 00:55:33
AngelScript試してみたけどここのサンプルが動作しない
URLリンク(plaza.rakuten.co.jp)
関数の取得までは出来ているぽいんだけどasPrintが呼び出されない

547:デフォルトの名無しさん
09/02/15 08:45:40
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >



548:デフォルトの名無しさん
09/02/15 09:36:17
>>546
自分の所では普通に動いたなー。
環境はXPSP2、VisualStudio2005SP1、AngelScript2.15.1。

549:デフォルトの名無しさん
09/02/15 11:43:06
Squirrelって重いんですか?
Luaにくらべてコードがシンプルそうだから、組み込んだ後のデバッグも楽だと思って、LuaじゃなくてSquirrelを採用しようかと思っていたのですが。

ちなみに、Squirrelって何であんなに不要なbreakやcontinueがあるんですかね?

550:デフォルトの名無しさん
09/02/15 11:53:07
不要じゃないだろ。常識的に考えて。

551:デフォルトの名無しさん
09/02/15 12:07:10
ボケは分かりやすくね

552:デフォルトの名無しさん
09/02/15 12:36:48
>>549

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


553:デフォルトの名無しさん
09/02/15 13:14:33
イメージとしてはLuaの方が早いって意外だよね
Luaもがんばってるな~

554:デフォルトの名無しさん
09/02/15 13:23:16
>>553
>イメージとしてはLuaの方が早いって意外だよね

お前だけな

555:デフォルトの名無しさん
09/02/15 14:05:24
俺だけだったか
Luaは実際には使ったことないんで知らないんでイメージでしか語れんかったわ
すまん

556:デフォルトの名無しさん
09/02/15 14:05:51
   ∧_∧  / ̄ ̄ ̄ ̄
  ( ・∀・) <  Lua!!
⊂/  9)  \____
q(   /
  >  >



557:デフォルトの名無しさん
09/02/15 20:02:42
JITでC++と同等の速度が出る組み込み言語
誰か作ってよ

558:デフォルトの名無しさん
09/02/15 20:18:31
>>552
Squirrelでsuspendを使うということは、マイクロスレッドを切り替える処理があるということなんだが。
それが軽いはず無いだろう。

ただし、基本的な演算処理でSquirrelがLuaの半分くらいの速度しか出ないのは本当。
速さだけ求めるならXtalも有力。

559:デフォルトの名無しさん
09/02/15 22:15:34
>>557
C++が速い理由には、言語仕様の差以上に、コンパイラに投入された労力が膨大なものだからというのもある。
LuaでもSquirrelでも、人月をかければC++以上に速くする事は可能だと思う。
逆に言うと、言語仕様だけではどうにもならない。

>>558
マイクロスレッドに関してはLuaも全く同じ。
Luaではコルーチンって呼ぶけどね。
298もそれはわかった上で比較してると思うよ。

560:デフォルトの名無しさん
09/02/15 22:47:50
          ____
       / \  /\ キリッ
.     / (ー)  (ー)\    <C++が速い理由には、言語仕様の差以上に、コンパイラに投入された労力が膨大なものだからというのもある。
    /   ⌒(__人__)⌒ \ LuaでもSquirrelでも、人月をかければC++以上に速くする事は可能だと思う。
    |      |r┬-|    | 逆に言うと、言語仕様だけではどうにもならない。
     \     `ー’´   /
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一””””~~``’ー?、   -一”””’ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ   <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)   
| / / /     |r┬-|    | (⌒)/ / / //       
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/      
|     ノ     | |  |   \  /  )  /
ヽ    /     `ー’´      ヽ /    /
 |    |   l||l 从人 l||l      l||l 从人 l||l  バンバン
 ヽ    -一””””~~``’ー?、   -一”””’ー-、
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))


561:デフォルトの名無しさん
09/02/16 00:22:41
その通りのことにそのAA使ってもな

562:デフォルトの名無しさん
09/02/16 00:37:35
残念ながら経験10年のおそらく天才プログラマーが作ったJavaScriptが
学生が演習で作ったCのサブセット以下の速度なのよ

563:デフォルトの名無しさん
09/02/16 00:49:05
>>562
CとJavaScriptで速度差が出るとしたらプロパティアクセス時の
ハッシュ計算だと思うんだけど、その差はJITすれば消せる。
JavaScriptはV8で比較した?

564:デフォルトの名無しさん
09/02/16 01:26:05
そんなんで消せたら
誰も苦労しないだろw

565:デフォルトの名無しさん
09/02/16 02:18:11
しかし、SquirrelにもLuaみたいなスクリプトのライブラリを置くリポジトリサイトが欲しいよな。
ネタは色々あるんだが。

566:デフォルトの名無しさん
09/02/16 03:17:30
>>562
ベンチマークに使ったコードは、どんな内容だったのでしょうか?
興味があります。

567:デフォルトの名無しさん
09/02/16 03:21:07
>>559
squirrel でも普通コルーチン。マニュアルの表記は「協調スレッド(コルーチン)」

「マイクロスレッド」だと、システムよりの機能を使ってるような誤解を招くから、
間違いじゃないけどふさわしくないと思う

568:デフォルトの名無しさん
09/02/16 04:38:29
URLリンク(lucille.atso-net.jp)
誰かこれやってみて

569:デフォルトの名無しさん
09/02/16 08:52:18
機械語に近い言語体系じゃないと、C並に早くならんだろうな

570:デフォルトの名無しさん
09/02/16 08:59:47
559はJITが機械語を生成すると思ってんのかな?

571:デフォルトの名無しさん
09/02/16 11:14:15
C++より速くできるって…夢でも見てたんだろうね

572:デフォルトの名無しさん
09/02/16 12:05:33
          ____
       / \  /\ キリッ
.     / (ー)  (ー)\    <その通りのことにそのAA使ってもな
    /   ⌒(__人__)⌒ \
    |      |r┬-|    |
     \     `ー’´   /
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一””””~~``’ー?、   -一”””’ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ   <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)   
| / / /     |r┬-|    | (⌒)/ / / //       
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/      
|     ノ     | |  |   \  /  )  /
ヽ    /     `ー’´      ヽ /    /
 |    |   l||l 从人 l||l      l||l 从人 l||l  バンバン
 ヽ    -一””””~~``’ー?、   -一”””’ー-、
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch