■吉里吉里/KAG/TJS雑談質問スレ■その22
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2010/10/01(金) 10:44:25ID:z47vESnT自作ゲームの進行状況や製作ツールについての話、TJS等の話題もどうぞ。
マルチポストはやめましょう。個人叩きも禁止です。
※スレで質問をするときは※
KAG/TJS/吉里吉里ドキュメント、スレの過去ログ、公式掲示板のログ、
FAQ、Google等で調べてからにしましょう。
努力の形跡が見られないとスルーされがちです。初心者?でも頑張れ!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
吉里吉里2/KAG3雑談質問スレ_過去ログ
ttp://www.geocities.jp/kirikiri_log/
吉里吉里ダウンロードページ
ttp://kikyou.info/tvp/
ダウンロードしたアーカイブに含まれる「KAG System リファレンス」は
初心者にとって最も頼もしい教科書です。何度も繰り返し読みましょう。
■タグリファレンス … KAGの機能が網羅的、辞書的に載っています。
大よその機能(KAGでどんなことが出来るか)は把握しておきましょう。
■Tips/その他 … 陥り易いミスやより高度な使い方への足掛かりになる
数々のTipsが記載されています。
■TJSをもっと使うために
ゲームのインターフェイスをカスタマイズしたい、また
KAGの命令に無いことをしたくなったらまずここを読んでみよう。
必要に応じて>>3-5の公式掲示板や講座等を併用してください。
(併用に、紙媒体の参考本が欲しい人は、ダウンロードページにリストがあります)
前スレ
■吉里吉里/KAG/TJS雑談質問スレ■その21
http://hibari.2ch.net/test/read.cgi/gamedev/1274510516/
0100名前は開発中のものです。
2010/10/09(土) 23:02:54ID:c/TkkFvgレスありがとうございます
書きかたが下手で伝わらなかったら申し訳ないのですが
1.
var tax = function(n){return n * 0.05;};
の時点で 変数tax に入っているのは function(n){return n * 0.05;}
という式中関数そのもの
2.
System.inform("価格" + p + "円 \n[消費税" + tax(p) + "]円");
が実行される時に p に 1000 が代入され(↓こんなイメージ?)
System.inform("価格" + 1000 + "円 \n[消費税" + tax(1000) + "]円");
tax(1000) でfunction(n){return n * 0.05;}が呼び出され
n に 1000が代入される(?)
n * 0.05 は 1000x0.05 で、50 になり、return で tax(p) が 50 になる
System.inform("価格" + 1000 + "円 \n[消費税" + 50 + "]円");
3.
tax(p) は 関数(式中関数)を使うための記述で
function(n){return n * 0.05;} を呼び出して使う
意味としては function tax(n){return n * 0.05;} と同じ
この考え方で大丈夫でしょうか?
0101名前は開発中のものです。
2010/10/09(土) 23:27:58ID:oa714Kq70102名前は開発中のものです。
2010/10/09(土) 23:35:31ID:frqapTDkなお、TJSでは、式中関数(匿名関数)と普通の関数は、物としては完全に同じものです。
つまり、function a(arg) {} は、 global.a = function(arg) {} と等価です。
通常関数と同じものなので、Javascript のレキシカルクロージャのようなローカル変数の引き込みはできません。
かわりに、実行コンテキストを内部保持していて明示的に差し替え可能という独特の機能があり(incontextof で明示指定可能)
これを指して「クロージャ」と呼んでます。言葉の意味が他の言語と全然違うのでご注意を。
0103名前は開発中のものです。
2010/10/10(日) 18:56:03ID:7pzwuuU/あとどこ変えればいいんでしたっけ!?
ググるとsaveフォルダ内のファイルいじれってでてくるんだけど
初回起動なんでsaveフォルダ内にはlogファイル以外ファイルがないんです
0104名前は開発中のものです。
2010/10/10(日) 19:18:00ID:HMcZ4r+0ありがとうございました
これですっきりして次に進めます
PG未経験の独学なので本当に助かりました
クロージャについてはちょっと難しいのですが、
クロージャとコンテキストという項があったので
そこを読み解く時に>>102を念頭に置いて勉強します
今は他言語でいうクロージャとTJSでいうクロージャはまったくの別物、
という認識で、先に進みます
お手数かけました。感謝!
0105名前は開発中のものです。
2010/10/10(日) 19:35:14ID:7pzwuuU/>>103はナシで
例外通知出た時のコンソールのカーソル位置って
必ずしも原因の行ではないのでしょうか?
0106名前は開発中のものです。
2010/10/11(月) 00:02:38ID:l04I2Vhvコレのパスを永遠とかいてみたのですがいつかは止まってしまうので・・・
↓
[eval exp=sf.layer=0]
;←ここから
[move layer="&sf.layer" time=1000 path="(-10,-300,255)(-50,-280,255)"]
メッセージ1行目[r]
メッセージ2行目[r]
メッセージ3行目[r]
メッセージ4行目[l][r][er]
[r][r][r][r]
メッセージ5行目[r]
メッセージ6行目[r]
メッセージ7行目[r]
メッセージ8行目[r]
[wm]
;←ここまで
0107名前は開発中のものです。
2010/10/11(月) 00:08:47ID:cvlG6B2T0108名前は開発中のものです。
2010/10/11(月) 08:56:21ID:mautny+/悩まずに30分もあれば組み込みまで終わる。
0109名前は開発中のものです。
2010/10/11(月) 11:58:34ID:Kw3Yj571[eval exp="tf.time_layer =2"]
[image storage="time_img.png" layer=tf.time_layer page=fore visible=true left=600 top=20]
[backlay layer=tf.time_layer]
[eval exp="tf.point_layer =3"]
[image storage="point_img.png" layer=tf.point_layer page=fore visible=true left=600 top=70]
[backlay layer=tf.point_layer]
このように表記をしても、point_img.pngしか表示されません。
何か根本的な理解の欠如をしている気がします…。もう30分悩んでいます。助けてくださいm(_ _)m
0110名前は開発中のものです。
2010/10/11(月) 12:00:16ID:Kw3Yj571すみません。必死すぎました。。
0111前スレ182
2010/10/11(月) 12:08:01ID:TqmROLvIhttp://www.ultrasync.net/dee/kr2helps/kag3doc/contents/Var.html
0112名前は開発中のものです。
2010/10/11(月) 12:10:21ID:Kw3Yj571そういえば昔もこれでハマったことがありました。
どうみても学習していません。本当にありがとうございました。
というか>>111様本当にありがとうございました。
0113名前は開発中のものです。
2010/10/11(月) 13:42:10ID:Zn33pEpI初心者向けばかりで、どうでもいい先生のオナニーサイトばかりでうざい
0114名前は開発中のものです。
2010/10/11(月) 13:49:10ID:88uk2vC30115名前は開発中のものです。
2010/10/11(月) 13:50:34ID:88uk2vC3Mover系のコードを改造してループ機能をしこむのが妥当
0116名前は開発中のものです。
2010/10/11(月) 13:51:37ID:wQcSy756講座サイトはそれでもわからない人間に親切に教えるサイト
0117名前は開発中のものです。
2010/10/11(月) 14:40:18ID:4T1UAJDz俺も以前にそう言われて「なんだよ不親切な住人だなクソが!」と腹立ったけど、
実際リファレンスとソース読むのが一番だった
でもまだちょっと根に持ってるw
0118名前は開発中のものです。
2010/10/11(月) 14:56:46ID:ak8vlBC8速度的に重要な部分だけネイティブにしてほしかった
0119名前は開発中のものです。
2010/10/11(月) 17:39:43ID:Kw3Yj571どうすればよいでしょうか?
0120名前は開発中のものです。
2010/10/11(月) 17:40:52ID:Kw3Yj571@iscript
function myKeyDownHook(key, shift)
{
if(key == #'R')
{
// R のキーが押されたら
kag.process('', '*label');
return true;
}
}
@endscript
これでよさげですね
0121名前は開発中のものです。
2010/10/11(月) 22:31:56ID:AnzuotO0KagParserとMainWindowとKagLayerとあとCondactor系読めばおk
>>118
tjsに永続化APIがないから無理。
0122名前は開発中のものです。
2010/10/12(火) 10:32:10ID:Ro79idbK0123名前は開発中のものです。
2010/10/12(火) 10:33:35ID:+k1ehpgf動作速度的にボトルネックになったからC++で書き直された件。
0124名前は開発中のものです。
2010/10/12(火) 11:04:15ID:+k1ehpgf「KAGParserがC++で書かれている事」が
どう関係するのか不明。
あとTJS式自体には永続化のためのAPIは存在する。
(save/saveStruct/evalStorage)。
クラスオブジェクトの中身までは
完全には永続化出来ないけど。
「永続化」の言葉で差している内容が違う?
0125名前は開発中のものです。
2010/10/12(火) 12:55:27ID:b0vGB/c4その通り。ボトルネックだけ書き直せばいいんだよ。
たぶん重いのはテキスト処理なので内部の状態管理とかはTJSでできるはず。
面倒だからごっそりC++にしてるようにしか見えない。
0126名前は開発中のものです。
2010/10/12(火) 13:07:15ID:+k1ehpgf125=118(?)は、「KAGParserは、高速化に必要な最低限の部分以外はTJSで記述して欲しかった」と言いたかったの?
だとしたら、118の書き込みからはそうは読み取れなかったよ。
でまあ、本題。
おそらくKAGParserレベルでの拡張性を求めて、コア部分のロジックはTJS側に残しておいて
欲しかったという事なんだろうけど、メンテナンス性を考えるとその選択肢が適切かどうかは
けっこう難しいのでは無いかな。ロジックがC++側とTJS側に分散することで、確実にメンテナンス
性は落ちるからね。
0127名前は開発中のものです。
2010/10/12(火) 13:25:48ID:rKcrc+WoKAGのシナリオの読み込みがC++でいう#includeに近い、単なるテキストの取りこみである以上、
構文解析と状態遷移の分離を少ないオーバーヘッドで実現するのは結構難しいように思うんだが。
0128名前は開発中のものです。
2010/10/12(火) 14:10:20ID:VGDFv0RSもっともソースあるんだからそれこそ切り出してきて直してプラグインかけばすむ話ではある。
0129名前は開発中のものです。
2010/10/12(火) 14:13:55ID:KVYXD6Gi中身はC++だけど、実行ファイルには触らずにプラグインを優先して使う仕組み
0130名前は開発中のものです。
2010/10/12(火) 14:29:05ID:NkE3wj3Pなるほど。わかりました それでやってみようと思います。ありがとうございました
0131名前は開発中のものです。
2010/10/12(火) 19:56:38ID:Crw6j0mRスクリプトでパーサー作ってるスクリプト言語なんてあるのか?
0132名前は開発中のものです。
2010/10/12(火) 20:09:17ID:mXvQ5ZXB実際にはKAGのインタプリタなの
0133名前は開発中のものです。
2010/10/12(火) 20:10:37ID:YnlshKMH右クリック後の設定とかを作ろうと思ったんだけどネットで調べてもどうにも理解できなくて
わかりやすい初心者用の本っていいのないか?
あったら教えてほしい
0134名前は開発中のものです。
2010/10/12(火) 20:12:47ID:HBvSiLGRテンプレ見れ
0135名前は開発中のものです。
2010/10/12(火) 20:39:53ID:YnlshKMHテンプレよく見てなかったごめん
0136名前は開発中のものです。
2010/10/13(水) 00:00:14ID:Cx4BTkLBjavascriptのセルフコンパイラとかあるし、rubyのxmlライブラリは正規表現で実装されてた気がするが今は知らん。
KAGのシナリオファイルは単純だからスクリプトで書いても早いがネイティブのがもっと早いって理屈だよ。
0137名前は開発中のものです。
2010/10/13(水) 11:23:13ID:A1WwD10Uクリティカルになってくる。でもKAGParserはほとんど(現実には全く)
全体のパフォーマンスに影響しないような部分も結構ネイティブで書いちゃってる感じ。
0138名前は開発中のものです。
2010/10/13(水) 19:41:27ID:iEK7yMEs0139名前は開発中のものです。
2010/10/13(水) 20:03:42ID:NaKpJpQe0140名前は開発中のものです。
2010/10/13(水) 20:12:13ID:6ZQrqeCH0141名前は開発中のものです。
2010/10/13(水) 21:22:19ID:rhuk92R6swfを普通に挿入するにはタグどうなるんだ?
良かったら教えてくれ…
0142名前は開発中のものです。
2010/10/13(水) 21:23:43ID:CCduEWNw0143141
2010/10/13(水) 21:30:15ID:rhuk92R6ムービーとして挿入したいだけなんだが…
swf以外の拡張子の方が良いってことか?
0144名前は開発中のものです。
2010/10/13(水) 21:33:49ID:EEhYWhpt前スレのvideoを再生するタグ表記でいけると思うけど、WVは確か使えなかったと思う
0145名前は開発中のものです。
2010/10/13(水) 21:39:38ID:EEhYWhpt綺麗に出力しようとすると、それなりに知識必要だけど。
あとは1ヶ月の期間限定だけど、TMPGエンコーダとか。
0146名前は開発中のものです。
2010/10/14(木) 13:58:59ID:j7XUouT70147名前は開発中のものです。
2010/10/14(木) 15:10:41ID:UIWBLGsAシェアウェアだとさすがにそのあたりのバランスが割と取れてる奴多いけど、フリーだと案外探すの大変。
今は製品使ってるけど、俺そこにいきつくまで10本くらいフリーソフト試してレジストリとかにゴミ作りまくった経験あるからとりあえずお節介。
0148名前は開発中のものです。
2010/10/14(木) 17:00:38ID:n+00dKRBLIVEMAKERしかできない><
0149名前は開発中のものです。
2010/10/14(木) 19:04:48ID:y7OtGST90150名前は開発中のものです。
2010/10/14(木) 20:04:01ID:UIWBLGsA特殊な事をやろうとすると途端にハードルが天井知らずになるけど、普通にADV作るだけなら一通り欲しい物がほぼ全部揃ってるし、上から順番に記述していけばいつか書き終わるから楽。
0151名前は開発中のものです。
2010/10/14(木) 20:20:15ID:k3ms7C9Rただプログラマーの領域に足を突っ込むだけだろ。
FLASHでつくったほうがいいんじゃねえのか?
0152名前は開発中のものです。
2010/10/14(木) 20:31:28ID:7GZFIbHaオンマウス時の半透明が気に食わない。
カッコよく下線とか出ないものか。
0153名前は開発中のものです。
2010/10/14(木) 21:04:09ID:UIWBLGsAお前は俺が出来ない事が出来るんだろうけど、俺はお前の出来ない事が出来る。
領分の問題だろう?
0154名前は開発中のものです。
2010/10/14(木) 21:04:31ID:N1xdPyL4でぐぐれ
0155名前は開発中のものです。
2010/10/14(木) 21:04:50ID:oaq61CfIMessageLayer.tjsいじればすぐ出来るだろ
別に質問してるわけじゃないようだからこれ以上はやめとくが
0156名前は開発中のものです。
2010/10/14(木) 23:33:02ID:jy1UAXA1ゲ制でプログラマーの領域を特殊扱いするのもどうかと。
それよりも悪い方向に文章捏造して勝手に人間性疑う方が怖い。
0157名前は開発中のものです。
2010/10/15(金) 00:18:14ID:ZKjAD3kC0158名前は開発中のものです。
2010/10/15(金) 00:28:28ID:3PcpthzT0159名前は開発中のものです。
2010/10/15(金) 00:38:21ID:YdN67ad+リファレンスはあくまでも補足だろ。
それ以前にスクリプトらしい構文とか用意してほしいもんだが。for-inすらないからな。
0160名前は開発中のものです。
2010/10/15(金) 00:46:19ID:0yDXgD5/0161名前は開発中のものです。
2010/10/15(金) 03:30:53ID:VCLL+5W70162名前は開発中のものです。
2010/10/15(金) 11:58:00ID:kl1PfIRf0163名前は開発中のものです。
2010/10/15(金) 13:46:10ID:VCLL+5W7そんな餌には……クマー
0164名前は開発中のものです。
2010/10/15(金) 16:24:24ID:UeJ2sYpH断言するけど、あのドキュメントだけ読んでTJSの処理系作るのは不可能。
TJSは実装が仕様
0165名前は開発中のものです。
2010/10/15(金) 16:26:26ID:w1bp9Nv60166名前は開発中のものです。
2010/10/15(金) 16:45:38ID:CKqhRSeJ言うな
みんな分かってる
0167名前は開発中のものです。
2010/10/15(金) 16:51:33ID:0yDXgD5/0168名前は開発中のものです。
2010/10/15(金) 18:29:28ID:KvGvfiOM0169名前は開発中のものです。
2010/10/15(金) 18:43:22ID:mM+OjBEs0170名前は開発中のものです。
2010/10/15(金) 21:29:14ID:s1fJW+RX0171名前は開発中のものです。
2010/10/16(土) 02:21:38ID:lJCWnBsv//関数
function CHECK_VERB(filename,choose)
{
var ret;
ret=sf.CG1_説明;
//1以外なら0にする
if(!sf.CG1_説明) ret=0;
return ret;
}
//呼び出し
CHECK_VERB("CG1_説明","sf");
[enscript]
↑のように呼び出して sf.CG1_説明 が1であるか確認し結果を表示させようと思っています。
ですが sf.(CG1_説明)←この部分を連結させる方法側からなくて困っていますorz
よろしくお願いします
0172名前は開発中のものです。
2010/10/16(土) 02:37:59ID:EE0mSbPCreturn 1 if dic[key] == 1;
return 0;
}
のようにすれば
f("CG1_説明", sf)
で sf.CG1_説明 が1の場合1、その他の場合0が帰るよ
sf の部分も文字列で与えたいのであれば
function f(key, dicname){
return 1 if Scripts.eval(dicname + "." + key) == 1;
return 0;
}
で
f("CG1_説明", "sf")
が使える
Scripts.eval は非常に強力なので困ったらそれに頼るといいかと
0173名前は開発中のものです。
2010/10/16(土) 02:57:46ID:lJCWnBsv今、実際に動かしてみました。 思い通りの動作をさせることができました!
配列を使わずに文字列を組み合わせて作る事が多いのでScripts.evalはとても重宝しそうです
こんなに早く、的確な答えを頂き助かりました。本当にありがとうございます
0174名前は開発中のものです。
2010/10/16(土) 10:15:18ID:NvGbs35L選択肢を選んだときにSEをどうやって鳴らすかを必死こいてやってたらそれ専用の命令があったw
そこで聞きたいんだが使える命令の種類と使い方ってどこに載ってる?
0175名前は開発中のものです。
2010/10/16(土) 10:19:21ID:2V4PAAcE0176名前は開発中のものです。
2010/10/16(土) 10:24:28ID:NvGbs35Lやっぱりそうですよね。
ありがとうございます。
0177名前は開発中のものです。
2010/10/16(土) 10:49:24ID:AmTODGtk後は自分で調べろ。
0178名前は開発中のものです。
2010/10/16(土) 10:50:37ID:NvGbs35Lアドバイスありがとうございます。
0179名前は開発中のものです。
2010/10/17(日) 11:44:17ID:vnAtKn7phttp://bbs.bokunatu.com/krkr/
検索はgoogleまかせなので、そのうち使えるようになると思います。今はまだ自分とこの板のレスしか引っかかりません。
datを自動回収してるので余計なものまで拾ってるけどそれはご愛嬌で。
リンク集とか載せるべきと思ったけど情報を更新するのも面倒だし、新しいスレを追えばわかることだから不要と判断しました。
0180名前は開発中のものです。
2010/10/17(日) 12:10:27ID:02uNbbS4でも一部ログが1000まで行ってないスレがあったり
ログが壊れてるスレがあるな
0181名前は開発中のものです。
2010/10/17(日) 12:52:50ID:vnAtKn7pあがー、それは失礼しました。
手持ちはこれしかないので正しいdatをお持ちの方が居たら差し替えさせてもらいます。
0182名前は開発中のものです。
2010/10/18(月) 00:09:06ID:vkawhylbttp://www.dotup.org/uploda/www.dotup.org1204723.zip.html
その20と21しかないけど
0183名前は開発中のものです。
2010/10/18(月) 01:53:37ID:jvz5k+U1上手い事行きません。
TJSで画像レイヤを移動させて見たのですが、演出方法が悪く
ずるずると画像が画面外から出てくるだけで、一般的なカットインの効果に
見えません。
また、プラグインがある事を突き止めましたが、実力不足か上手く起動
させる事が出来ませんでした。
だらだらと書いてしましましたが、演出方法を指南しているサイトか
一般的な方法の記載されたサイトを探しております。
ご存知の方がいらっしゃいましたらお願いします。
0184名前は開発中のものです。
2010/10/18(月) 01:56:58ID:ENeftRHB自分で箇条書きにでもしてみろよ
0185名前は開発中のものです。
2010/10/18(月) 04:25:41ID:RPoVGgdQ0186名前は開発中のものです。
2010/10/18(月) 05:57:24ID:MqvaPb0A以前、変な所に記述してしまったせいで、パッチファイルの上書きが出来なくなり困った事があるので・・
0187名前は開発中のものです。
2010/10/18(月) 11:07:54ID:18JPvNVgInitialize.tjs で パッチ用のエントリを足してるところより前に足さないと意味がない。
そのあたりに適当に外部ファイル読むエントリ足して、そっちの外部ファイルに足すようにすると良いと思われ
0188名前は開発中のものです。
2010/10/18(月) 11:21:41ID:pnHL2wf6プラグイン自体はいくつかサードで出てるからそれ使えばいいだろう。
タグを組み込むプラグインならだいたい同梱のfirstとか見れば組み込み方は普通わかる。
けど、演出云々は教えようにも個人の感性だからどうにもならない。
0189名前は開発中のものです。
2010/10/18(月) 11:28:51ID:5s3HMg8Vmoveタグ1つで出来んじゃね?
moveタグには、opacityも指定できるからこれにaccelあたり指定すればそれっぽくなるはず。
何をもって一般的かは不明だけど、画面外から加速して入ってきて、徐々に半透明からはっきり
する感じじゃねーかな。
0190名前は開発中のものです。
2010/10/18(月) 12:25:26ID:pnHL2wf6クロスフェードとopacityが被ると、意図と違う出方する事あるし。
たぶん183はずるずると画面外から背景を引っ張ってきてるんだと思うけど、フェードしながらやるだけでもずいぶん違うと思うから同人クラスならそれで良いんじゃないかな? 商業だとちと厳しいけど。
0191名前は開発中のものです。
2010/10/18(月) 17:53:00ID:QQgfXlNbあざーす、差し替えさせてもらいました
0192名前は開発中のものです。
2010/10/19(火) 02:51:36ID:P1dleXsX>>183はカットインっていってるだろ。
カットインてのは多分最近の2D格げーとかテイルズとかスパロボにある魅せ場でフェイスアップだして煽るあれのことだろう。
それだとすれば画面切り替えとは全然違うだろ。
アニメしながらmoveが正解じゃね?
0193名前は開発中のものです。
2010/10/19(火) 03:10:32ID:Im9E8ae1フェードイン出来るならカットイン普通に出来るだろうと。
フェードインもカットインもやらせる事は一緒なんだから、フェードインが出来てカットインが出来ないとか意味がわからん。
0194名前は開発中のものです。
2010/10/19(火) 03:16:23ID:UF5sH/Tr想像できん
0195名前は開発中のものです。
2010/10/19(火) 03:21:23ID:Im9E8ae10196名前は開発中のものです。
2010/10/19(火) 08:40:00ID:G+a/QimfそんなもんFDDとかの動的な演出を売りにしてる一部のゲームだけじゃねえの
0197名前は開発中のものです。
2010/10/19(火) 09:12:48ID:E/EQOazlアクションや格ゲーのだって、カットインいれた瞬間だけ画面光らすとか
そのレベルだろう。
PCゲにいたっては、商業の大半が189程度の演出のはず。
0198名前は開発中のものです。
2010/10/19(火) 09:30:08ID:Im9E8ae1画面外からのカットイン>アウトだって、加速度的にイン>超スロウで1秒動かし続け>加速度的に反対側にアウト
これだけでも劇的に違うんだけどな
0199名前は開発中のものです。
2010/10/19(火) 09:34:50ID:G+a/Qimfこれ普通に吉里吉里でもできると思う
■ このスレッドは過去ログ倉庫に格納されています