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


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

■吉里吉里/KAG/TJS雑談質問スレ■その26



1 名前:名前は開発中のものです。 [2012/06/10(日) 15:57:26.54 ID:TMnyIjmA]
ノベルゲーム製作ツール吉里吉里/KAGのユーザーが雑談・質問をするスレです。
自作ゲームの進行状況や製作ツールについての話、TJS等の話題もどうぞ。
マルチポストはやめましょう。個人叩きも禁止です。

※スレで質問をするときは※
KAG/TJS/吉里吉里ドキュメント、スレの過去ログ、公式掲示板のログ、
FAQ、Google等で調べてからにしましょう。
努力の形跡が見られないとスルーされがちです。初心者?でも頑張れ!

吉里吉里スレ過去ログ倉庫
ttp://bbs.bokunatu.com/krkr/
吉里吉里2/KAG3雑談質問スレ_過去ログ
ttp://www.geocities.jp/kirikiri_log/

吉里吉里ダウンロードページ
ttp://kikyou.info/tvp/
ダウンロードしたアーカイブに含まれる「KAG System リファレンス」は
初心者にとって最も頼もしい教科書です。何度も繰り返し読みましょう。
■タグリファレンス … KAGの機能が網羅的、辞書的に載っています。
大よその機能(KAGでどんなことが出来るか)は把握しておきましょう。
■Tips/その他 … 陥り易いミスやより高度な使い方への足掛かりになる
数々のTipsが記載されています。
■TJSをもっと使うために
ゲームのインターフェイスをカスタマイズしたい、また
KAGの命令に無いことをしたくなったらまずここを読んでみよう。

必要に応じて>>3-5の公式掲示板や講座等を併用してください。
(併用に、紙媒体の参考本が欲しい人は、ダウンロードページにリストがあります)

前スレ
■吉里吉里/KAG/TJS雑談質問スレ■その25
toro.2ch.net/test/read.cgi/gamedev/1323994344/

301 名前:名前は開発中のものです。 mailto:sage [2012/08/24(金) 04:16:52.78 ID:3iPyoMfF]
吉里吉里3は出る出る詐欺でしたね

302 名前:名前は開発中のものです。 mailto:sage [2012/08/24(金) 04:19:08.68 ID:dLzVl9KJ]
Deeたんのある限り我々は何度でも蘇る

303 名前:名前は開発中のものです。 mailto:sage [2012/08/24(金) 20:05:17.39 ID:Ixy0/vmm]
どこぞのゲームメーカーブランドの新作出す出す詐欺と合わせてお楽しみください

304 名前:名前は開発中のものです。 mailto:sage [2012/08/26(日) 20:57:32.65 ID:wQNjsAGz]
吉里吉里4クルー?

305 名前:名前は開発中のものです。 mailto:sage [2012/08/30(木) 00:29:54.20 ID:lv3hFZFG]
TJS2の "const" は、ソースコード上は単純に無視されるようインプリされているように見えるのだけど、ArrayのsaveStructのところには意味があるように書いてあって、どっちが正しいかご存知の方教えてください。
ttp://devdoc.kikyou.info/tvp/docs/tjs2doc/contents/array.html


306 名前:名前は開発中のものです。 mailto:sage [2012/08/30(木) 02:22:46.03 ID:gMuJE7QQ]
TJS中のconstはvarの代わりに使える(例:「const hogehoge = 0;」等)
でも実際にはconst変数ではなく書き換えが可能(未実装なので)

辞書や配列の前の"(const)"は上記ページに書かれている通り
高効率(高速かつ省メモリ)で内容が評価される
でも定数以外の項目を書くとエラーで弾かれるので注意

saveStructで(const)つきで保存されるのは,確かKAGの巨大セーブデータで
ロード時にメモリ不足で落ちることがあったための対策で入ったような記憶


307 名前:名前は開発中のものです。 mailto:sage [2012/08/30(木) 03:29:12.38 ID:vJF014XK]
tjs初心者なのですが、C++みたいに、thisのワードをつかって、
そこからメンバ変数なりにアクセスしていくことはできますか?

また、Visual Studioのようにインテリセンスで楽々開発していけるような、
IDEってありますか?

this->... で開発するスタイルになれてしまって、
いちいち関数名を書くのがめんどくさくて……タイプみすもしそうですし。

308 名前:名前は開発中のものです。 mailto:sage [2012/08/30(木) 14:19:33.14 ID:b7OD1br9]
吉里吉里3が2013年中に出る確率を教えてください(出来れば本人から)

309 名前:名前は開発中のものです。 mailto:sage [2012/08/30(木) 16:52:10.58 ID:LuwVr1d1]
Twitter垢とって自分で聞いてください



310 名前:名前は開発中のものです。 mailto:sage [2012/08/30(木) 18:20:43.72 ID:8ggvKMfc]
ネタじゃなくマルチプラットフォームの吉里吉里が気になってるってことなら
吉里吉里Javaを追う方が利口よ

311 名前:名前は開発中のものです。 mailto:sage [2012/08/30(木) 18:30:04.94 ID:vJF014XK]
質問です。
tjsの辞書配列って順次アクセスはできないのですか?

for (var i = 配列の最初; i != 配列の終端; ++i)
{
if (hoge == hogehoge)
}

みたいな感じで重複部分がめんどうなので、ループで処理したい場所がわりとあります。
普通の配列を使うと、管理が面倒なのでできれば辞書配列をつかいたいのですが……。

312 名前:名前は開発中のものです。 mailto:sage [2012/08/30(木) 18:34:12.03 ID:CR8Fmp9/]
辞書は Array.assign してから処理するのが定石だと思う。
hpcgi1.nifty.com/gutchie/wifky/wifky.pl?p=%BB%CD%CA%FD%BB%B3%CF%C3+-+%BE%AE%A5%CD%A5%BF#p1.1

313 名前:名前は開発中のものです。 mailto:sage [2012/08/30(木) 18:36:36.14 ID:8ggvKMfc]
そこでScriptsExプラグインを華麗に適用

314 名前:名前は開発中のものです。 mailto:sage [2012/08/30(木) 18:47:25.42 ID:vJF014XK]
>>312
おーなるほど、
二個ずつとばしてなんとかする感じですね。
ありがとうございます!

315 名前:名前は開発中のものです。 mailto:sage [2012/08/31(金) 06:14:03.67 ID:qBGpNTrs]
吉里吉里3とは今にしてみれば何だったのか……?(´・ω・‘)

316 名前:名前は開発中のものです。 mailto:sage [2012/08/31(金) 21:53:14.09 ID:MyEtrE7N]
吉里吉里3は何がどうよくなるの? マルチプラットフォームとか以外で

317 名前:名前は開発中のものです。 mailto:sage [2012/08/31(金) 21:59:26.87 ID:2umGQ0Tm]
むしろDeeたんの機嫌が悪くなる

318 名前:名前は開発中のものです。 mailto:sage [2012/08/31(金) 22:06:52.33 ID:MfCrXR4m]
悪くはならんだろw
発言の○○○○度には磨きがかかるだろうけど

319 名前:名前は開発中のものです。 mailto:sage [2012/08/31(金) 22:09:15.92 ID:2umGQ0Tm]
吉里吉里を習得する上で最大の壁はDeeたん



320 名前:名前は開発中のものです。 mailto:sage [2012/09/01(土) 06:18:55.01 ID:3EsOs3mB]
すいません、質問です。

・マウスイベント処理を使って、メッセージレイヤを拡張したい。

Message.tjsのclass MessageLayerにonMouseDownを見つけ確認がてら触ってみたのですが、
メッセージレイヤ上をクリックしても反応がありません。
System.inform("call");
と記述してチェックしたところ呼びだされていませんでした。
hitThresholdの値を変更しましたが無意味でした。

メッセージレイヤのマウスイベントが呼びだされる方法を教えてください。
templateフォルダのコピペプロジェクトで確認しています。
それとも、なにか根本的に間違ってます?
on〜とついてるし、イベントハンドラとあるのにメッセージが飛んでこない理由がそもそもわからなくて。
お願いします。

321 名前:名前は開発中のものです。 mailto:sage [2012/09/01(土) 17:16:02.59 ID:ransYfxN]
質問です。
playbgmで鳴らしているBGMがplayseで鳴らした効果音が鳴る度に
音量が急に下がり、徐々に音量が戻っていくというようになります。
playseで鳴らしたBGMの時にはならないのですが、
これは何が原因でしょうか?

322 名前:名前は開発中のものです。 mailto:sage [2012/09/01(土) 17:16:53.51 ID:5ZN1GHOE]
なんかフェードイン関係のマクロでも使ってるんじゃないの

323 名前:名前は開発中のものです。 mailto:sage [2012/09/02(日) 01:49:11.86 ID:UodBJEeH]
音声台詞時にはBGMをしぼるプラグインとか入れてそうだよな

324 名前:名前は開発中のものです。 mailto:sage [2012/09/03(月) 00:15:05.05 ID:2QjuY5XQ]
>>320
実験してみた
MessageLayerクラスのonMouseDownイベントが呼ばれるのは
メッセージレイヤ上に置かれた リンクテキスト をクリックした時

325 名前:320 mailto:sage [2012/09/03(月) 02:00:16.37 ID:n9rvNLh2]
>>324
ありがとうございます。
疑問はまさにお答えていただいたことで、
リンクテキストがない時に、onMouseDownイベントが反応しないのか?でした。
onMouseDown関数にリンクテキストに関する処理が書かれているのならまだしも、
関数にすら飛んでこないので意味がわからなかったのです。

あれから調べてみましたが、上記の原因はどうやらonHitTest関数にあるみたいでした。
リンクテキストの件では、internalHitTest関数内のfindLinkの戻り値がリンクテキストの無い場合はfalseを返すため、
その結果がonMouse〜に影響していました。

というわけでいろいろお手数をおかけしました。
メッセージキューイングの順序がわかればよかったのですが…

326 名前:名前は開発中のものです。 mailto:sage [2012/09/03(月) 02:25:32.49 ID:UX96RwYv]
>>325
吉里吉里新版リファレンスの Layer.onHitTest 見なされ

327 名前:名前は開発中のものです。 mailto:sage [2012/09/03(月) 02:28:04.51 ID:n9rvNLh2]
>>326
ほんとだ…俺がまず見るべきはこれだったのか・・・
ありがとうございます

328 名前:名前は開発中のものです。 mailto:sage [2012/09/03(月) 06:13:02.71 ID:KnmGucWV]
>>319
つか最大の敵の気もするw
ちっとは3の開発でやる気見せろ
Nスクの方はちゃんと2が出たらしいが

329 名前:名前は開発中のものです。 mailto:sage [2012/09/03(月) 06:16:27.73 ID:8XRU72BH]
なんでノベルゲー開発ツールの作者はキチガイばっかりなん?



330 名前:名前は開発中のものです。 mailto:sage [2012/09/03(月) 09:04:55.92 ID:mT08Ygkv]
何か凄いことすればキチガイが許されると思ってるからじゃないの?
もしくは大衆がキチガイを受け入れざるを得ない状況を楽しんでるか

331 名前:名前は開発中のものです。 mailto:sage [2012/09/03(月) 09:14:11.87 ID:9nCE33Vy]
吉里吉里を作らなかった人格者より
吉里吉里を作ってくれたキチガイのほうに感謝する
俺にとってはそれが全て

332 名前:名前は開発中のものです。 mailto:sage [2012/09/03(月) 17:37:05.83 ID:+Ne1mH6U]
情報系が基地外みたいなのは文化

333 名前:名前は開発中のものです。 mailto:sage [2012/09/03(月) 20:49:48.70 ID:ncHorYN9]
作者ごとにそれぞれタイプの違う方向にいっちゃってるのが面白いといえば面白い……か

334 名前:名前は開発中のものです。 mailto:sage [2012/09/03(月) 23:14:54.65 ID:iUJl2+ud]
質問です。
linkするときに、自動的にリンク先を決めるようなことをするにはどうしたらいいのでしょうか?

現状では、ふつうに列挙しているのですが、
要素数が多いとのと条件分岐で使う予定でめんどくさいなぁと思ったので……。

[link target="*hoge1"]あ[endlink][r]
[link target="*hoge2"]い[endlink][r]

これを……

for (var i; i < hoge.count; ++i)
{
[link target="*hoge[i]"]hoge[i].name[endlink][r]
}
こんな感じににしたいです。(KAGですのでfor文では書いていませんだが)
そして、こんな感じの文で処理をすると、iの値が最後になるので、どうしても上手く行かなくて……

335 名前:名前は開発中のものです。 mailto:sage [2012/09/03(月) 23:28:23.42 ID:ncHorYN9]
[link target="&'*hoge'+i"]hoge[i].name[endlink][r]


336 名前:名前は開発中のものです。 mailto:sage [2012/09/04(火) 13:40:19.79 ID:VKvvjtnb]
>>335
やってみましたが、どうにも上手くいきませんでした……。
なんというか、クリックされたらそのクリックされたオブジェクトを受け渡す感じにしたいのです。

for()
{
//以下部分を順次探索なり、条件文で処理して表示させる
選択肢:めろん←例えばめろんをクリックすると……*ジャンプ先に行き、
選択肢:りんご
}

*ジャンプ先
//このジャンプ先の処理自体はどの選択肢をクリックしても同じですが、
//処理対象が選ばれたオブジェクトになる。
//例えば、同じ「切る」でも「めろん」か「りんご」かの違いです。

という感じの仕様です。
オブジェクト自体が無理でも辞書配列のkeyさえ渡せればなんとかなるのですが……。

337 名前:名前は開発中のものです。 mailto:sage [2012/09/04(火) 18:51:10.52 ID:OERGP69/]
linkタグのexp属性でクリックした時に式を評価できるから
f.clickedなり適当な変数にkey入れるようにするだけでいいんじゃね?

338 名前:target= mailto:sage [2012/09/04(火) 19:55:06.28 ID:sjsgrzG7]
んだんだ

[link target=*branch exp="&'tf.tmp='+tf.i"]略[endlink]
...
..
.
[s]

*branch
[if exp="tf.tmp==1"]
[jump target="*s1"]
[elsif exp="tf.tmp==2"]
[jump target="*s1"]
[else]
[jump target="*s1"]
[endif]

339 名前:名前は開発中のものです。 mailto:sage [2012/09/05(水) 02:58:40.52 ID:Y0Mutfvy]
Dee氏はマゾ臭いからこのスレでも他人のフリして自分を
こきおろして快感覚えてそうw



340 名前:名前は開発中のものです。 mailto:sage [2012/09/05(水) 17:20:21.12 ID:2MC47uwu]
ペロ…これはDee

341 名前:名前は開発中のものです。 mailto:sage [2012/09/05(水) 20:23:01.11 ID:R54TDq9G]
吉里吉里3が出ていればまだしばらく変態やりながら求心力保てたのにな・・
吉里吉里3は出さない、でも変態は続けますじゃあねえ・・

342 名前:名前は開発中のものです。 mailto:sage [2012/09/05(水) 20:32:54.51 ID:dM73rIDd]
普通の変態になっちゃう

343 名前:名前は開発中のものです。 mailto:sage [2012/09/05(水) 20:50:01.43 ID:XYLqdSNU]
変態でもオタク系変態ならまだいいんだが体育会系セクハラ親父系の変態が入ってるからな

344 名前:名前は開発中のものです。 mailto:sage [2012/09/05(水) 20:53:42.60 ID:2MC47uwu]
ぜひ>>343氏の変態学の講義を受けてみたいな

345 名前:名前は開発中のものです。 mailto:sage [2012/09/05(水) 21:14:40.96 ID:XYLqdSNU]
オタク系変態
 ●具体的なマンガ・アニメ・ゲームのキャラに絡めた発言が多い
 ●エロトークはエロ漫画・エロゲに出てくるような二次ネタを前提にしていることが多い
 ●リアル女に対しては多少エロトークをすることはあるが基本的に及び腰でお姫様扱い
体育会系変態
 ●リアル女を見かけるとガツガツ絡んでいく
 ●(女に対する)エロトークは実際のセックスネタなどを使うことが多い
 ●はぁセックスしたい 風俗いきたい など直球発言が多い
 ●ちんこ まんこ などの小学生的エロネタを言うのは他の変態もありうるのだが、妙にしつこい
セクハラ親父系変態
 ●自分のリアルにおける収入や地位などをアピールすることが多い
 ●リアル女を見かけると多少距離を置きつつもしつこく絡み、脈ありとみると非常に馴れ馴れしくなる
 ●ある程度親しくなった女には胸揉ませろとか普通に言う
 ●マジメ系ネタとエロネタを合わせた寒い発言をする

346 名前:名前は開発中のものです。 [2012/09/06(木) 14:41:56.76 ID:RoK3Q8oX]
お世話になります。

アドベンチャー物で、クリア後にゲームのCGのみを閲覧するページについてですが
サムネイルをクリックして、基本CG画像を出すところまで出来ましたが
引き続きクリックで差分(例えば5枚)を全て見せるには、どのようにすれば良いかご教授ください。

秀和システムの参考書にあるテンプレのスクリプトですと、1枚閲覧したら最初のサムネイル画面まで戻るので
差分を全部紹介してから最初の画面に戻るには、どんな風にスクリプトを書き込めば宜しいでしょうか?

347 名前:名前は開発中のものです。 mailto:sage [2012/09/06(木) 16:11:16.24 ID:Hu03WtG7]
>>346
おおかたのCG閲覧はこんな動作だと思うので

1サムネクリック→2CGが表示→3画面クリック→4サムネ画面に

こう変更

1サムネクリック→2CGが表示→3画面クリック→[差分ループ判定]→4サムネ画面に
             ↑______________________________________|

CG差分を見た/見てないとか枚数とか
個々のシーンによってループ条件は違うと思うので、変数などで管理して工夫
とりあえずtf.cgcount=0とか作って
@if、@jump、cond属性あたりを用いて5回ループさせてみんしゃい

348 名前:名前は開発中のものです。 [2012/09/06(木) 17:15:20.56 ID:RoK3Q8oX]
>>347
ご厚意ありがとうございます。

ただ、勉強不足でたいへん恐縮ですが用語に関してサッパリなので
実際のスクリプトで例えて頂けないものでしょうか

出来れば引き続き宜しくお願い致します。

私もいろいろ試しているのですが、本編で画像表示に使うimage storageの応用ではないみたいですね。

349 名前:名前は開発中のものです。 mailto:sage [2012/09/06(木) 18:19:16.68 ID:sRKei9Bd]
コピペさせろってか?
レスからたった一時間で両手挙げるのはどうかと思うわー



350 名前:名前は開発中のものです。 mailto:sage [2012/09/06(木) 19:49:56.50 ID:kOO0ImXR]
出来ないことは諦めろ
言葉だけ丁寧にすれば手取り足取り教えてもらえる訳じゃない

351 名前:347 mailto:sage [2012/09/06(木) 20:34:53.27 ID:Hu03WtG7]
>>348
そちらのスクリプトがどんなのか分からないのに
質問だけ投げられたら、こっちは概念しか返せないよ
そのうえで「具体的なのくれ」では無償労働の依頼やね

その調子じゃ分岐するノベルゲーも苦労しそうだ
まず本編作ろうぜ
最後までできた暁には、CGモードも自然と作れるようになってるよ

画像表示の命令は@image storage=〜で合ってるけど
画像の内容を変えるにはif文で実行する命令を選択したり
もしくはエンティティでstorageを指定したり

352 名前:名前は開発中のものです。 mailto:sage [2012/09/06(木) 20:47:12.52 ID:Hu03WtG7]
あ「ループ」の意味わかる?プログラムの処理が同じところをグルグル回ること
(一般的には@jumpで以前のラベルに戻る処理)
無限に回り続けるのはまずいので、条件命令@ifなどで
条件(5枚表示した、とか)を満たしたときに無限ループから脱出させる

ご希望の動作をさせるためには
・上述のループ処理
・表示内容を順に変えていく処理 ヒント>>351
が必要

353 名前:346 mailto:sage [2012/09/06(木) 21:43:29.27 ID:RoK3Q8oX]
>>351
ヒントありがとうございます。
何とかやってみようかと思います。

album.ks
album_init.ks

ただCG鑑賞モードを構築する上の2種類のksのどちらを重点的に書き換えするのかが分からない状態でして
そちらを教えて頂ければと思います(すみません)。

現在、album.ksファイルの今の状態が下記のようになります。

; サムネイル画像が選択された(サムネイル画面からクリック)
*album_select
; イベント絵を前景レイヤに読み込み、表示
[image storage="&tf.album_storage[tf.album_select+20*sf.album_page]" layer="&tf.album_layer" page=fore visible=true left=0 top=0 index=1999999]
------------------------------------
(※この間に画像呼び出しのスクリプトを書き加えるものだと思って作業していました)
------------------------------------
; クリックを待つ
[waitclick]
; イベント絵の前景レイヤを非表示にする
[layopt layer="&tf.album_layer" page=fore visible=false]
[unlocklink]
[s]

(ここでサムネイル画面に戻ります)

すみませんが、何卒宜しくお願い致します。

354 名前:名前は開発中のものです。 mailto:sage [2012/09/06(木) 22:54:50.62 ID:41lq8MvN]
>>337-338
ありがとうございます。

まわしてみたのですが、一旦ループを最後まで回しているので、
tf.iの値が、for文の終了条件の値になってしまい、不正な値になってしまいますorz

リンク先はlink文にexpを入れることで、ひとまとめに出来たのですが、選択肢のループ構造は難しいようです。
愚直に全部書くか、吉里吉里そのものを改造するしか、方法しかないのかぁと諦めました……。

355 名前:名前は開発中のものです。 mailto:sage [2012/09/06(木) 23:43:04.83 ID:kOO0ImXR]
346も354も、まずは自分で分かる構文で全部書くべき
分からないならその機能は諦めろ
ちゃんと続けていけば、そのうち何言われていたのか分かってくるから

356 名前:名前は開発中のものです。 mailto:sage [2012/09/07(金) 01:52:44.19 ID:Pe8ZiBvW]
このくらいのループ処理とかならgoogle先生に聞きながらやればできるだろ。
ほとんど答え載っているようなもんだし

357 名前:名前は開発中のものです。 mailto:sage [2012/09/07(金) 02:41:34.18 ID:VnyU+LY1]
ふむう
・改造箇所は>>353の部分で合ってる。どの命令が、>>347の図の中のどれに対応しているか見極めよう
・[image storage="&〜 の&以降が何言ってるか分からない場合は諦める
 というより自分でイチから作った方が動くかも
・参考書とやらは俺ら持ってないので、それを前提に話されても困る

同人(ノベル)ゲーム界隈に元気があるのは良いことなので、作り手を俺は応援する!
しかし最低限の事は自分で解決しなければ、ゲームが完成しないんだよね
まぁCGモードが無くってもゲーム本編の面白さに影響はないってw

358 名前:346 mailto:sage [2012/09/07(金) 08:55:38.07 ID:asYtRRfj]
>>357
改造箇所が合っているという情報だけでも助かりました!
今後はここに絞って、いろいろ試してみたいと思います。

今回はお付き合い頂いて、本当にありがとうございました。

359 名前:名前は開発中のものです。 mailto:sage [2012/09/07(金) 18:29:08.72 ID:T/D6KsDh]
背景だけじゃなく、メッセージボックスの画像や立ち絵もグレースケールで表示したい場合って
別途それ用に画像を用意しないといけないのでしょうか?




360 名前:名前は開発中のものです。 mailto:sage [2012/09/07(金) 19:24:23.55 ID:4MGmxwGd]
>>359
Layer.doGrayScale() ってのがあるよ
セピアっぽくするのは無理

完全なグレースケールだと冷たい感じがするから別に用意したほうがいいと思う

361 名前:名前は開発中のものです。 mailto:sage [2012/09/07(金) 19:25:21.48 ID:lr1doojE]
セピアっぽくするのはガンマ値いじればできる
リファレンスに載ってるので参照

362 名前:名前は開発中のものです。 mailto:sage [2012/09/09(日) 00:27:57.82 ID:UoexBhAR]
TJS2で辞書配列の作成がやたらめったら遅い。多分コレが該当してる。
ttp://www.geocities.jp/keep_creating/DojinDOC/kirikiriSmallTips.html#aryvshash
配列で作り直して速度はなんとかなったけど、分かり辛くてメンテが
大変で困ってる。吉里吉里3なんか要らないから、辞書配列周りを
もう少し高速化してくれ…!

363 名前:名前は開発中のものです。 mailto:sage [2012/09/09(日) 01:51:24.80 ID:nEuJaSQ1]
辞書配列はよく使うところだしねえ

高速化の余地があるのかわからんけど、機能削減したLightDictionaryとかでもいいから
なんかあるとうれしいな

364 名前:名前は開発中のものです。 mailto:sage [2012/09/09(日) 02:13:33.81 ID:AWFXq19t]
>>362
そんなに差がでるってことは、C++のMAPとかと全然作りが違うんかな?

……辞書配列つかいまくってるけど、
自分のマシンは自作したばっかで高速だから、
本当はすげー重いとか考えると怖いなぁ。

365 名前:名前は開発中のものです。 mailto:sage [2012/09/09(日) 04:05:50.63 ID:UoexBhAR]
>>364
実測してみたら、数千要素くらいからがくっと速度が下がる。気持ち
O(n^2)になっているような。特にassignStructでコピーすると顕著。
件のURLにあるように、ちょっと長いゲームではセーブラベルが
数万くらいにはなるので、これや、これに付随するデータを保存する
のが大変なの。
逆にいえば、そんなに大きい辞書配列を使わなければ、そんなに
困ることはないだろうね。

>>363
うーん、きっと機能削減しちゃうとそれはそれで困る場面が
出るし、使う方も混乱するだろうと思うから、元のまま高速化
できないか考えた方がいいと思うんだ。

吉里吉里のソースコード見てみたけど、さらっと見るには範囲
大きすぎて、(assignStructは単純に要求に応じて確保してる
だけみたいだけど)どうやってるか正確にわからない。ので、
高速化できるかどうかまだわからない。内部仕様書が欲しい…。

高速化できたとして、pluginみたいな形で元のDictionaryを
置き換えることってできるのかなぁ。そうでなければ、BCCの
環境一式揃えて全コンパイルになってしまうから、手が出せ
ないねぇ…。

366 名前:名前は開発中のものです。 mailto:sage [2012/09/09(日) 09:32:01.28 ID:AWFXq19t]
いっそC++とか組み込めたりできんのw?
あんまりにも重いなら、その部分だけはtjsじゃなくてC++使うとか。

367 名前:名前は開発中のものです。 mailto:sage [2012/09/09(日) 12:00:23.88 ID:UoexBhAR]
>>366
辞書配列じゃなくて普通の配列なら速いことがわかっているので、今は
普通の配列で組みなおして速度的には問題なくなっている。ただ、
複雑になってメンテが大変なのをなんとかしたいんだよ。

C++でも組めるけど、それは更に面倒だし、単機能のためだけにdll書く
のもなー、というのが本音。辞書配列ならかなり簡単に書けるから…。

以下みたいなスクリプト書いて所要時間をプロットしてみたら、
見事な二次曲線になってた。辞書配列の要素数には要注意だね。
for (var i = 1; i <= 40; i++) {
var tick = System.getTickCount();
var hash = %[];
for (var j = 0; j < 1000*i; j++)
hash['abc'+j] = j;
dm('tick('+i+') = ' + (System.getTickCount() - tick));
}


368 名前:名前は開発中のものです。 mailto:sage [2012/09/09(日) 12:03:58.05 ID:UoexBhAR]
ちなみに同じスクリプトを配列ベースにすると、40000要素数の時に
手元の環境では辞書配列の1/100以下の時間で終わる。うーん面白い。

369 名前:名前は開発中のものです。 mailto:sage [2012/09/09(日) 12:41:53.87 ID:AWFXq19t]
ソースも読まずにかつ検証もせずにすげぇ適当なこと言うけど。

そんだけ時間に差があるってことは、もしかして、内部的に頻繁にソートとかしてんのかね?
重複を許さない仕様なら、ソートを一切せずに、線形探索をしているのかも?
ハッシュテーブルとか使ったら早そうだけどなぁ。



370 名前:名前は開発中のものです。 mailto:sage [2012/09/09(日) 15:07:27.31 ID:UoexBhAR]
線形探索しているから、じゃないはず。もしそうなら、既存の
巨大な辞書から要素を取り出す作業も同じくらい遅くなるはずだけど、
そうなっていないから。「作成」が遅いみたい。だから今はメモリ
かなーと思っている。要求の度に素直に確保してるんじゃないかなー、
と。作成時にソートしているかどうかはまだ不明。
ハッシュ持てば早くなるのはその通りだけど、要素の種類がたくさん
あるから、適当なハッシュ関数が作れるのかどうか。
ソースは↓のあたりね。
ttps://sv.kikyou.info/svn/kirikiri2/trunk/kirikiri2/src/core/tjs2/tjsDictionary.cpp


371 名前:名前は開発中のものです。 mailto:sage [2012/09/09(日) 18:43:01.57 ID:mfE2cjN2]
辞書作った後にループで一気に何万と要素を足すとハッシュテーブルが
小さいままだから遅いって話なので,ゆっくり足されるのは多分問題ないはず。
ScriptsExプラグインにrehash()を足したので,これ使って

Plugins.link("ScriptsEx.dll");
(中略)
for (var i = 0; i < NUM; i++) {
var elm = "hash_number_is_" + "%06d".sprintf(i);
Scripts.rehash() if (i > 0 && !(i % 1000));
hash[elm] = 1;
}
みたいにしてみると高速化される。理由の詳細はScriptsExのmanual.tjs参照のこと。
でもassignStructは吉里吉里本体をいじらないとどうしようもない予感。

372 名前:名前は開発中のものです。 mailto:sage [2012/09/09(日) 23:06:04.76 ID:UoexBhAR]
>>371
rehash()追加、ありがとう!
でも残念ながら、以下のスクリプトで実測すると、rehash()が
ある場合とない場合とで、実行時間の差は1%程度で殆ど変わらな
かった…。難しいもんだね。

Plugins.link("ScriptsEx.dll");
for (var i = 1; i <= 40; i++) {
var tick = System.getTickCount();
var hash = %[];
for (var j = 0; j < 1000*i; j++) {
Scripts.rehash() if (j > 0 && !(j % 1000));
hash['abc'+j] = j;
}
dm('tick('+i+') = ' + (System.getTickCount() - tick));
}

373 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 16:48:31.80 ID:sxxAr/QX]
>>372
そのテストコードは全体的にループ回数が少ない気がする。
i=40以降でどうなるか見てみた?
あとrehashの呼び出し条件を下記にするとより効果的っぽい:

Scripts.rehash() if (j>0 && !(j&(j-1)));

要素数が2^nのタイミング呼び出すようなコードね。
手元環境でtick(40)にて2倍くらいの差になった。
jが小さいと頻繁に呼ばれるのでj>0じゃなくて255とか適当に閾値決めてもいいかも


374 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 18:07:30.21 ID:8rk35zca]
TyranoScript ティラノスクリプト
KAG3/吉里吉里と互換性のあるHTML5ノベルゲームエンジン

tyrano.jp/

KAG互換?TJSの代わりにJS使うみたい。
サンプル見ると独自拡張もかなり入ってるみたいだけど。


375 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 18:08:41.02 ID:wEtTvUal]
Deeたんとユカイな仲間たちにさんざん突っ込まれてた奴じゃないのw

376 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 19:03:59.53 ID:w8Iin1y0]
なかなかいいなと思ったけど、
マウスポインタの絵変えたり右クリックと回転使えるの?
サンプルでは出来てないが

377 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 19:05:13.30 ID:FEZq0v87]
右クリック使えないのならきついな
スマホ対応を視野に入れてるのなら仕方ないか

378 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 19:38:22.95 ID:U+XwcDpe]
fillRectで枠線とか描けるようにしたけど、どうにも使い勝手があんまり……
いちいち画像で用意するほどのものでもないし、何か参考になりそうなのないかな

379 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 19:39:36.84 ID:wEtTvUal]
プラグインとかで拡張しない限り1pixelの幅or高さの
長方形を描く以上でも以下でもないだろ



380 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 19:42:31.53 ID:U+XwcDpe]
うーんと枠内に文字とか簡単に入れられるようになったり
ドラクエみたいに上が文字を入れられるように空いてる感じに出来たらなーと思って

381 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 19:46:16.41 ID:wEtTvUal]
そんなのはまさに自分で「こっからこう線を引いてここを空けて……」って
関数を試行錯誤していくしかない

テキストの幅とかはLayer.fontからこれで得る
devdoc.kikyou.info/tvp/docs/kr2doc/contents/f_Font_getTextWidth.html
devdoc.kikyou.info/tvp/docs/kr2doc/contents/f_Font_getTextHeight.html

382 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 19:51:12.25 ID:U+XwcDpe]
そっかー。あとはLocateで文字位置調整したりで何とかするしかないかな
どうもです。なんとか頑張ってみようと思います

383 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 19:53:06.04 ID:wEtTvUal]
正直デフォのKAG依存でやってるレベルの人がレイヤーへの描画に手を出すと
いろいろハマりやすいから画像で用意しとくほうが無難だとは思うけど

384 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 20:33:10.08 ID:hfu+dhq8]
っLayerExDrawプラグイン

385 名前:名前は開発中のものです。 [2012/09/10(月) 20:50:17.55 ID:FsWzzwS8]
フォローが千超えたらしいし、俺一人くらい抜けてもいいよね…

386 名前:名前は開発中のものです。 mailto:sage [2012/09/10(月) 23:17:20.59 ID:vGyK/NHW]
>>373
色々試してくれて本当にありがとう。
2^nのときのrehash()を試すと、ウチの環境(Corei3 2120T)では大体
全体的に20%くらい高速になった。ただ、n=50 の時で既に実時間で
2秒以上かかっていて、Pentium4 2GHz(個人的にユーザの最低ライン
だと思っている) あたりだと10秒以上かかった。10秒が8秒に
なってもあまり嬉しくない、というのが実情…。
辞書配列使わず、配列で作り直すと、同じ要素数でPen4でも
0.4秒以内に終わるから、やっぱり根本的な解決が必要なんだと
思った。
プラグインで辞書クラス作ってみようかなぁ…。


387 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 01:40:09.21 ID:4GvHH/gU]
またDeeたんが女にしつこく絡みすぎてマジレスされてるお……

388 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 03:13:17.11 ID:B/bXUMF5]
あなた頭大丈夫?とマジレスするのが普通なんだ

389 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 05:56:19.08 ID:/mp0HENN]
俺らはその変態が開発したツールを使ってるんだよなぁ・・・
















と考えると恥ずかしくなってきたw



390 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 06:50:56.48 ID:B/bXUMF5]
出来たゲームでさえも変態ゲーだったりしないか?

391 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 11:29:57.33 ID:JfcGKgtO]
>>386
どういう目的で辞書にそんな大量の要素を追加するのか知らんけど,
データ構造を根本から見直してみれば?
もちろん配列を使うのもひとつの手だけど,辞書を分割や階層化して
1つの辞書の要素数を減らす工夫をしてみるとか,一気にデータを格納せず,
必要になった時点で格納するようにするとか,色々と方法はあると思う。

392 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 18:16:51.39 ID:7lmoXcw9]
初ゲーム制作に使うエンジンをNスクか吉里吉里にするかか迷っていて、
最新OSとの相性は吉里吉里のほうが良さそうかなとこっちに傾いていたんだが、
吉里吉里の作者ってこんなおかしな人だったのか・・・
Nスクにした方が無難そうだな

393 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 18:24:54.50 ID:4GvHH/gU]
Nスクの作者も政治論議でわけのわからんことを
ぶちあげてる変な人だよw

394 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 18:28:12.48 ID:xybWlsMr]
ポストDeeたんとかいないの?

395 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 18:50:13.51 ID:lQqMX233]
>>392
プログラマーは基地外な方が、いいものを生み出す気がするwww
偏見だけどwww

396 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 18:54:57.22 ID:4GvHH/gU]
Deeたんの周辺もちょっと神経質な人とか多いよね
オープン系キチガイのDeeたんよりはいいと思うけどw

397 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 19:00:01.35 ID:xybWlsMr]
Deeたんってオープンソースだったのかw

398 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 19:43:05.38 ID:VVJjhHPk]
>>391
簡単に言えば、メッセージ画面に表示したままの履歴を持とうと
している。文字属性やルビなどが頻繁に出現すると、それらの
変更の度に保存すると2000行(要求仕様だから減らせない)保存する
だけで数万要素になる。ラベル通過時にセーブされるので、
最悪だとラベル通過ごとに数秒停止、みたくなる…。
今は配列を小汚く使って速度的な問題は出ないようにしたけど、
コードが汚いのでなんとかしたかったんだよ。

色々考えたけど、元テキストを履歴データにそのまま使うのは、
分岐時や[emb]でデータを表示した時の処理を考えると、別の
パーサを用意するなど複雑になりすぎる(実際作ってみたが
ちょっと速度的に厳しかった)。メッセージ画面をそのまま履歴に
使うことも考えてみたが、必要な変更が多すぎた。なので、
今回は今の実装で進むことにするよ。というか、辞書配列
使わないだけで速度が十分になるのがなんとも…。

「使い方によっては、辞書配列はびっくりするほど遅い」と
いうのが分かったのが収穫だったということで。みんな
ありがとう!


399 名前:名前は開発中のものです。 mailto:sage [2012/09/11(火) 22:26:25.02 ID:7Ppo+g9F]
最近興味が沸いたんだけど
みんな凄いなーどのぐらいで扱えるレベルになった?覚えるコツとかある?



400 名前:名前は開発中のものです。 mailto:sage [2012/09/12(水) 00:06:39.11 ID:p5BqBTpn]
>>392
YU-RISは?






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

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

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