1 :
名前は開発中のものです。 :
2010/10/01(金) 10:44:25 ID:z47vESnT ノベルゲーム製作ツール吉里吉里/KAGのユーザーが雑談・質問をするスレです。
自作ゲームの進行状況や製作ツールについての話、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/
2 :
名前は開発中のものです。 :2010/10/01(金) 10:50:34 ID:z47vESnT
!,-/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ, i''./:::::::::::::::::::::://::::::l:l'i::::::ヽ:::::::ヽ:::::::::::::::l丶 お尻の穴に 〉!:::::::::::::::l:::::://l:::::/ll .lヽ:::l !ヽ::::l:ヽ::::::::i::l::l 指をいれて ヽ::::::::::::::l:l::::/:l .l:::/ l l,ヽ:l-l-l:::lヽ:ヽ::::::l:l.ll 匂いをKAGと l::l.l:::::::ll.l:::l''l~~∨' ' ' _,-'i-∨ l::::l::::l:l,,l_ _l::l .l::::l .l,l:l''~(~~i'' l ヽノiヽ.l:::::l:l:l::::::~''-,_ 新スレですよ _,-'':::l:l l:l.l '~l .ll||ll l l l|||l.ノ l:::::l-''''''''---,,'-,_ ,-':::::_,,,-ヽl::::::l ヽ,,,,,,ノ '--'' l::::::l ~ /-''''~ l:::::::l.l ____'___ ./l:::::::l l:::::::l'ヽ. l l / l:::::::l l:::::::ll ',,- ,_ ヽ-' _,-''--,,ll::::::l ~
再配布OKというか、作者HPで配布されてるものなんだけど、もうずっと作者居ないかHPメンテだけっぽい感じ。
楓さん。
これがDL先URL
ttp://kaede-software.com/krlm/plugin/ /ksを読む限りstopmoveのたびにinvalidateで動画捨ててるぽいし、デストラクタもされてるぽいんだけど、なぜかメモリーをチェックする限り消えて無い。
一応stopamovの後に必ず
var amovcls = new AlphaMovie();
amovcls.clear();
System.doCompact(clAll);
として、強制的にガベージコレクションしてるんだけどkag側分のゴミだけを収集してるだけみたいで、動画再生>消す>ガベージコレクション>再生>消す>ガベージコレクション・・・・とやってるとあっという間にパンクする。
検証してもらえるなら、とりあえず確実に動くamvファイルとfirst.ksを速攻作った。
クリックするたびにループするから、ループさせながらタスクマネージャーでも見てるとみるみる使用量が増えていくのがわかると思う。
ttp://www1.axfc.net/uploader/Si/so/86890.zip
ウィキペディアの議論見てきたけど実にどうでもいいな
10 :
名前は開発中のものです。 :2010/10/02(土) 04:21:52 ID:uOKAczia
確かにちょみっと増えてるかんじ? 俺だったら無視してユーザさんが適切な状態で連続をしない事を祈る程度だけどもw テストみたいにオブジェクトを使いまわさずに何度も作っては殺しってやること自体避けるべきと思うけどそれはそれとして これって、普通にMPEG再生でもこうなるんですかね? 光系のエフェクトならレイヤーモードで再生してレイヤの描写モードをltAdditiveだかにするのが枯れた手段だと思うけど。
えっと今回は同じエフェクトを使い回してこんな事してるけど、実際はα動画再生>ストップ>削除>別のα動画再生>削除また別の・・・・と言う感じで作ろうとしてるの。 で、そのあいだにも通常の動画再生したり、多少重めの処理をさせたりしてるのね。 すると、200を超えた当たりで普通の動画再生しようとすると、preparebideoしようとしたらそこでビッ!とエラーが出るのよ。もちろん、そこの構文が間違って無いのも確認済みだし、それはどこででも起きる。 実際それまでちゃんと動いてたところ何カ所ででも起きた。 で、負荷テストもかねて、いろいろきっつい処理をさせつつ、間にalphamovieを挟んでテストしたら、ものの3分でパンクするようになって、さすがにまずいだろうと・・・ 今回はささっと作ったから光系のエフェクトでそこそこ大きなファイルになる物って感じで作ってるだけだから背景は黒バックだけど、通常の彩色背景に差し替えればちゃんとαチャンネルが抜けてるのを確認して貰えると思う。 使い方のバリエーションとしては、最前面に配置して光線やワイプ(トランジット)用の動画にはめたり、背景と前景の間に挟んで、背景にエフェクトを掛けてるように動的に見せたり(それ自体はその動的な部分を通常の動画として作っても良いのだろうけど)、 複数のα動画を挟んで、Aの動画とBの動画を別々のエフェクトをさせながら前景合成させたりと言う感じに使ってたの。 もちろん背景に町並み>車道に車(α)>前景立ちキャラ>レンズフレア・・・的な使い方とか、もちろん通常動画+α動画と言う風にも使える。 1枚だけなら描画モードを変えるだけでも光系なら誤魔化しも聞くと思うんだけど、複数毎重ねると予期しない結果になるし、ちょっとどうしたものかと言う感じ。 良いツールだけに、このメモリ上手く消せてないのを除けば、トランジット時に透明度がそれに釣られてその間だけ変化してしまうとか、スロットが最大3つまでとか多少使い方にクセはあるけど、演出には恐ろしく使えるツールなんだけど・・・・・
prepare”v”ideoね。 た・・たまには間違うんだからね!
単に吉里吉里が使われてる作品リストがあれば便利だと思うけど wikipediaは編集のハードルが高くてwikipedia上にページ作ってもあんまり網羅できそうにない もっと別のwikiレンタルかなんかでまとめるのが良いんじゃないかな wikipediaからそのまとめwikiにリンクも張って
wikiは通例として、縦書きでタイトルを書いたりするから長大になりやすいけど、単に横列挙してOHPをリンクさせれば、年間100タイトル程度なんだから、取り立てて問題にはならない気がする。 もしくは他所のwikiに書けば済むと思うんだけど。 まずは議論の言い出しっぺ辺りが他所で作って、上手く行きそうなら本家にコピペしてもいいんじゃないかと思うんだけど、どうでも良い事で議論してるなーと思う。
Wikipediaってそんな情報は必要かって思ってる人間には向いてないんだよな 情報を詰め込む場所なんだから
>>10 とりあえず今通常のMPGもっと重い動画で試したんだけどまったく問題無い。
稀に5〜6M程度一時的に増えるけど(たぶん連打したから取りこぼし?)、すぐに回復する。
[l]を外して1時間ブン回したけど、これでもメモリ使用量は増えてない。
楓さん、仕事はわりといそがしそうだけど生きてるからメールすれ
ちんこかゆい
さっき楓さんにメールした返事が返ってきた。 忙しいらしくて現象の確認はしてるらしいけど、修正はずっと後だって。 同人だったらメモリパンクに目を瞑って使っちゃうけど、製品だから不具合出るのわかってるものを使えないのがとても残念orz すごく良いプラグインだったのにな・・・ アルファ動画に関しては、これで完全に手詰まりだ。
layerExBTOA使えばええやん
あっちを組み込めないか今必死にTJSを勉強してるところ。 昨日やっと静止画を新しい窓に表示する事に成功したレベルで、それを実際の吉里吉里のゲーム画面にどう表示すればいいか四苦八苦してるとこ。 今のところ、まだそれには成功してないorz せったー?げったー?これなんでこんな事してるの?レベル。 とりあえずの目標は画像を実際の画面に反映>ムービーの反映>ムービーコマンドののスクリプト化・・・先が見えない。 さっき新しい窓で自分で書いたクラスでムービーを表示しようとしたら、警告メッセージがずらーーーーっと出てきてハングしたorz
値にアクセスしたときに「何か」をするためにプロパティ(=setter/getter)があるんだよ
プログラム未経験でTJS触ってクラスとか完璧に理解できたら尊敬するわ 冗談抜きで天才
プロパティとか言われると、ウィンドウズのせいかread only的イメージがある。 実際はwinのも読み書き出来るんだけどね。 でもイメージ的にそうだからまずそこから改めないといつまでやっても覚えないんだろうな。 あと参考本とかだと、どういうコマンドかをまず書いてそのコマンドの実行が最下層って書き方だから、まず書いて、コマンドが必要になったらcallとかで下とか別のファイルに飛ばして・・・みたいな書き方をずっとしてきたから見た目が逆転してる構文に今一慣れない。 とりあえず別窓上で、イメージ通りに書いてなんとか動画を再生するところまではうまくいった。 でも、止め方も、実際のゲーム画面に表示する方法も、まだわからないからとりあえずまた参考書を読んで理解しないと。 でも二日前まではlayerEXBTOAのksファイルが何やってるのかチンプンカンプンだったのが、今日は書けないまでも読めるようになってたのには自分でもかなり驚いたよ。 ところで今日パンティー&ストッキングを観た。 まんまAEで作られてて、あのままKAGでゲーム作れるだろうとか思った。
ここはお前の日記帳じゃないんだ
オブジェクト指向の練習にはいいが デバッカがな これではつかいものにならない プログラム未経験でクラスを無意味に扱うとは無意味に思えるが本人が進んでやったことだから知らない
KAGのような原始的なタイプのスクリプトだけに慣れた人の悪い癖として 処理の流れを逐一追いかけてしまうというのがあるんだよな。 まず全体を眺めて、気になるところだけ関数の中身を覗くようにするのがソースの正しい読み方。
>ID:y+gpSIbX TJS覚えるまで消えろ
>>13 ~15
ErogameScape の属性検索で吉里吉里製の作品を一覧できるぞ
完璧な物なのかは解からんがこの先もやってくれるからこれでいいんじゃね?
rijargraph.tjsを改造してトランジション対応にしてくれる神はおりませんか?
吉里吉里のトランジションはもう少しどうにかならんのか
>>30 うおーー まじにありがとう、うまく行った! まだいろいろ検証してないけど、仕様が通常videoと一緒ならたぶんトランスとかもいけると思う。
負荷テストして、うまくゴミ掃除出来てるようなら、使わせて頂きます。
本当に本当にありがとう。 これで専門外のTJSを突貫で覚える必要がなくなった。 やっとシナリオに専念出来る。
ありがとうありがとうありがとう。
突貫でやる必要は無いかもだけど これを機に少しずつTJSを覚えていくといいさ
とりあえず検証終了。 結論から言うと、問題無くガベージコレクションを行うので、3時間くらい無理矢理ブン回しても問題無く動く。 本当にありがとう、使わせて貰います。 ところで、検証の段階でKAGの不具合っぽいの発見。 *test01 [layopt layer=message0 page=fore visible=false] [image storage="背景" layer=base page=fore visible=true] [freeimage layer=1 page=fore] [layopt layer=1 page=fore visible=false] ;[videolayer slot=1 channel=1 layer=1 page=fore] [videolayer slot=1 channel=1 layer=1 page=fore] [video slot=1 loop=true mode=layer] [openvideo slot=1 storage="検証テスト.mpg"] [preparevideo slot=1] [wp slot=1 for=prepare] [layopt layer=1 page=fore visible=true] [playvideo slot=1] [wait time=1000] ;[l] [stopvideo slot=1] [clearvideolayer slot=1 channel=1] @iscript //ガベージコレクション System.doCompact(clAll); @endscript [jump target=*test01]
元に戻して試してないから絶対にKAGの不具合かどうか言い切れ無い部分があるけど、上のようにloop=trueの状態で1秒だけ待って動画ストップ>メモリ消去>また描画・・・を繰り返してると、 30分くらいすると時々[wait]が無視されて[wv]に差し替わったような挙動になったり(挙動として、loop=true>weitでは無くloop=false>wvと言う感じに、1秒再生では無く最後まで再生してループとなる)、 画面が1秒再生したところでストップして、あれ?と思ってクリックするとまた動きだしたりと若干不安定になる。 この程度なら目を瞑っても問題無いし、第一書式としては本来1秒再生なんだからloop=falseとした方が良いところをtrueのままだから、こちら側のせいもあるのかも知れないけど、 書式上これでもちゃんと動くはずなんだけどね。 実際最初はちゃんとイメージ通りに動いてる。 バージョンはkr2_232。 最新ね。 TJSはシナリオ作業が終わったら、組み込みながらもう少しいろいろと覚えて行くよ。 実際今回作って貰ったファイルには見た事無い命令とかたくさん入ってて、まだ先が長そう。 動画を拡大>縮小しながら再生とか、動画自体に再生しながらリアルタイムにエフェクトをつけたりとかしてみたいし、 なにより現状だと細かい動画にいくつも切り分けして順次再生してるんだけど、前にも少し書いたけど、 ここからここまで再生>条件成立したら再生終了待って(もしくは待たないで)このフレームからこのフレームまで再生> 条件が揃わなかったらこのフレームからこのフレームまで再生したあとまたトップに戻る・・・・とか一度に読み込んでラグが無い方が無難な処理とかもあるし。
言ってることは解るし聞く耳もあるし検証乙なんだが 文章が冗長すぎて読んでて非常に面倒臭いw
申し訳無いけど文章構成能力が下手ですね
長く書きすぎたかー! いいよこれ。 通常ムービーと同じ感覚で使えるから、ものすごくいい。
喋ってる風にしてるところを直したり、箇条書き使ったりすると見やすくなったりするよ。 なったりなったり。 変数のソートというか比較というかで詰まってる自分。 ちょこちょこやりつつちょっとずつ噛み砕いて理解するぜ……。 ちょっとずつ進んでる道がずれすぎてないことを祈りつつ。
バカは3行以内にまとめないと死刑だよ
moveタグを実行中に背景を入れ替えたいのですが どなたか教えていただけませんか というのもスタッフロール(クレジット?)を流してる最中にその流れを止めずに背景を変えたいんですがうまくできません。 どなたか教えていただけないでしょうか [nowait] [locate x=300]~~~[r] [locate y=1000]~~~~ シナリオ [locate x=300]~~~~[r] [endnowait] [move layer=&sf.staffroll_mlayerNumber time=100000 path="(0,-1500,255)"] ;←ここの間で背景のトランジョンを数回行いたい [wm]
それ、wv入れてるからじゃない? wvは処理終わるまで待機だから、動画終わるまで動かないよ。
moveか いかん、寝る
>>42 >[move layer=&sf.staffroll_mlayerNumber time=100000 path="(0,-1500,255)"]
の下に
[move layer=&sf.staffroll_mlayerNumber time=100000 path="(0,-1500,255)" page=back]
追加
46 :
前スレ182 :2010/10/04(月) 01:42:43 ID:GH4uBMwp
Windows2000なんて化石はもう見放していいよ
俺のノートは2000です。見放していいけど。 サポートも終了だしね。
>>46 いつかあんたのプラグインを活用したゲームを作ってみせる
>>46 色々凄そうな事やってるとは思うんだが
Wiki見ても一体どういう用途でどんな風に使えるのかさっぱり分からん
51 :
名前は開発中のものです。 :2010/10/04(月) 05:15:27 ID:O7avlGYE
たかだかクエイクの種だしそれっぽい値が取り出せさえすればどうでもいいことなんだけど、物理知ってる人はどうやるんかな? //減衰振動 var time=1000; var cycle = 10; var stick = 0; var depth = 50; var accel = -2; for(var i=0; i<time; i+=0.1) { var tick = i-stick; if(accel < 0) { // 上弦 ( 最初が動きが早く、徐々に遅くなる ) tick = 1.0 - tick / time; tick = Math.pow(tick, -accel); tick = int ( (1.0 - tick) * time ); dep = depth * (1-tick/time); } else if(accel > 0) { // 下弦 ( 最初は動きが遅く、徐々に早くなる ) tick = tick / time; tick = Math.pow(tick, accel); tick = int ( tick * time ); dep = depth * tick/time; } tick = tick/time; var y = dep*Math.sin(tick*2*Math.PI*cycle); kag.fore.base.fillRect(i/time*800, 300+y, 1, 1, 0xffffffff); }
>>51 コード片なんか貼って何が聞きたいんだよ。
コミニュケーション能力皆無だな。
リアルな動きとリアルっぽい動きは全然違う。 ゲームや映画に求められるのはリアルっぽい動きだから、リアルな動きは不要。
つまりそもそも人間は現実を正確には認識できていないというわけだな
認識出来てないから、時代劇の殺陣で役者は斬られたように見えてるし、豪華なセットに見えて裏に回ればただのカキワリだったりしてる。 心臓はドキンとは言わないけど、ドキンと鳴らした方がときめいてござる。
リアルすぎる揺れなんて表現したら本物の地震思い出してゲームどころじゃ なくなるじゃないか すごい技術だろうなあとは思うけど
地震を思い出すようなリアルな揺れなんて作れないだろ……。 背景のオブジェクトを全部個別にレイヤー分けして、 独立して移動したり回転させないといけない。 そもそも、ゲームの「揺れ演出」って、地震じゃなくて主人公=プレイヤーの 揺れなんじゃ……殴られたり落ちた時なんかのさあ……。
今頃Deeは逆アセンブラして ソースコード エロ画像ウマーなんだろうな
ゲームや演劇に限った事じゃないけど、人間を楽しませるのは「リアルであること」じゃなくて「リアルな『ように思える』こと」だからな 本物を再現することが喜ばれるんじゃなくて、あたかも本物であるかのようにウソを見せて錯覚させるのが大事なんだけど そこんとこ勘違いして「やるからには当然、本物を再現しなきゃダメだろ」ってなっちゃうと白けた作品づくりになっちまったりするのよな
地震に関しては、知り合いに阪神大震災の直撃食らった奴がいるけど、その子はディザスター物の映画とかは怖くて観れないらしい。 テレビのドラマの安っぽいカメラ揺らしの地震の表現すらダメだっていってた。 2012とかも内容はともかく、大地震を車で逃げ回るシーンの地面の崩れ方とか、大地が割れて火山ができあがったその火口の目の前で棒立ちで突っ立ってたりとか、あり得ないだろうと思うけどやっぱり手に汗握る。 そう言うことだと思う。
61 :
名前は開発中のものです。 :2010/10/04(月) 19:14:48 ID:O7avlGYE
ただのバネ運動がやりたいだけで、リアリティがどうのってそんな恥ずかしいコト考えて無いっすよ 定規弾いたみたいに気持ちよくビヨヨー……ン、ンってさせたい。
つバネ運動 振幅 で検索 後は手打ち
63 :
名前は開発中のものです。 :2010/10/04(月) 21:04:00 ID:3OYq835g
おまえらが何いってるのかわからない。 つまりホラーは幽霊にあったコトがあるから怖いってコトなのか? 俺はUFOも幽霊もみたコトあるが、ホラーは全く怖くもなんともないんだが。
だから、あったコトも無いコトも、それが視聴者にリアルと思わせれば勝ちってコト。 UFOも幽霊もみたコトあっても、映画やゲームのホラーがリアルに感じ無いと言うなら、君にとってそれはリアルとは思えないと認識してるってコトだろう。 ちゃんと理解してるじゃないか。
バネ運動って言っても解をどうやってとくかで実装は変わってくるし素直に実装してもry
66 :
名前は開発中のものです。 :2010/10/05(火) 01:57:21 ID:dE3ITe/g
>>66 l*sin(a*t)*exp(-b*t)
完全にゼロに収束させたい場合には
l*sin(a*t)*(exp(-b*t)-exp(-b*T))/(1-exp(-b*T))
t: 揺れはじめからの経過時間
T: 揺れ続ける時間(定数)
a: 適当な正の実数(定数) 揺れの周期にかかわる
b: 適当な正の定数(定数) 揺れの減衰にかかわる
l: 適当な正の実数(定数) 揺れ幅にかかわる
sin -> Math.sin
exp -> Math.exp
絶対零度が好きです。 ところで誰かマルチコア版試した?
,個別layerのトランスをするとleft値が無視させる仕様は直らないのかな 前は気にならなかったんだけど今回動画のシンクロをきっちりやろうとすると、裏と表に同時に同じ動画を再生させつつトランスしなくちゃいけないんだけど、動画を一度裏から表にトランスすると、その段階で裏の動画はストップする。 だから二度目のトランスを行うと止まったままフェードしてくるんだけど、おそらくこれってどっちも不具合だよね?
そんな変な使い方自分で対処するしかない
せめて個別レイヤーのleftトランス不具合だけでもなんとかして欲しい 普通のトランスだとちゃんとなるから、いろいろと面倒
それ、原理からくる仕様。全然不具合じゃない。
不具合じゃないのか。 moveでleftを無理矢理変えると、トランスで今度はその座標に表示されるようになるから、なんとかなりそうな気もするんだけどなぁ 現状ではクロスフェード(transのcrossfadeじゃなくて用語として)的に現在の座標のキャラをFOしながら別の場所にFIさせるには別レイヤーを使ってるんだけど、グリグリ動かす事になるともうレイヤー管理が大変。
よくわからんが、自分のブログでやれ
少しは実装調べてから文句いえ。 それができんならあるもの使ってどうにかしろ。
ここは質問スレではあるけど要望スレではないぞ。
p[0] = 100 str = 'p[0]' 例えばこういう状態だとして、strの中には「p[0]」という文字列が入っている訳ですが これを、「p[0]」の中身を取り出して格納、つまり「str = 100」という状態にする方法はありませんか? [emb exp="&str"]だと、100という結果が返ってきますが これでmoveのpathを設定しようと思うと、正しく数値を取り出せません。
その設定しようとおもった記述をまず書いてみなされ
evalで
hoge.aaa[0]=100 hoge.bbb[0]=200 hoge.ccc[0]=300 みたいな配列があって、 @hogehoge str="aaa" みたいにして文字列を渡して、macroの中で「hoge.aaa」「hoge.bbb」という風に文字列を結合して 各配列を参照出来るようにしたい これが出来ないと、「str="hoge.aaa[0]"」みたいに全部記述しないといけなくて、不便なので
>>81 @macro name=test
@hogehoge str="&hoge[mp.str][0]"
@endmacro
@test str="aaa"
これでhogehogeタグのstr属性に「100」という文字列が入る。
mpとか細かいことはリファレンス・解説サイトを隅々まで読んでくれ。
TJS式でのpath指定はsprintfが役に立つかも。
>>81 それだと配列が意味をもってるようには見えないわけだが……
サイズ1つでいいの?
仮に hoge.aaa[0] hoge.aaa[1] hoge.aaa[2] といった形に配列がなっているとしてだが、
[iscript]
function concat(name){
var array = hoge[name];
var ret = "";
for (var i=0;i<array.count;i++) { ret += array[i];
return ret;
}
[endscript]
とか処理する関数を作っておけば
[hogehoge str=&concat("aaa")]
とか簡単に処理ができる。複雑な処理をしたければ tjs で関数を作っておいて、それを & で参照して使うのがてっとりばやい。
マクロで引数部をいろいろ差し替えるなら、mp も併用。
>>82-83 御陰様で、思っている処理が出来ました
ありがとうございます
krkrfont.exeでレンダリングしたフォントって、フォトショップと比べるとアンチエイリアスがかなりガタガタ?した感じになってるんですが、これってどうしようもないんですかね
4倍とか8倍などの倍率を設定するところがあったはず
メッセージレイヤを指定してトランジションしようとすると back側をerとかで消してから新しいテキストやgraphを入れても、消えてなくて 直前のback側に残ってる内容とトランジションして、それから瞬間的に新しい記述に切り替わる バグなのか、それともメッセージレイヤを指定してtransするのが間違ってるのか・・・ レイヤを指定出来ないと、前景レイヤをmoveさせながらトランジション出来なくて不便だ
俺も内容は違うが、messageレイヤーを指定してトランスしようとするとトランスされない不具合が起きてる。 指定無しで全体をトランスすると表示されるから、指定ミスでは無いと思うんだが。
>base 以外に対してトランジションを行わせる場合はかなりの制限があります。
もともと想定してないから
具体的にどう記述したのか書こうよ。 トランジションは原理わかってないとたいてい記述自体間違えた書き方になるぞ
その制限と言うのは、元と先画像のサイズが同じじゃないといけないとかって条件でしょ? リファレンスにはそう書いてある。 それと、messageを個別にトランス出来る事もリファレンスに書いてある。 なんでも想定してないの一言で片付ける人いるけど、リファレンスに書いてある以上想定の範囲内と考えるべきではないかな。 [trans layer=message0 method=crossfade time=1000] こう書いて、トランスしたけど表示されない。 ちなみに、 [trans method=crossfade time=1000] だと表示される。 message0には、自作枠使ってるけど原因はそのあたりかなとは思う。
公式であっさりダメだしされててワラタ
原因はわからないけど、上手く行ったからこれで行こう。
KAGEXのexeファイルが見当たらないけど どこにある?
KKDEと勘違いしてました orz
書籍を購入して勉強しているのですが、式中関数について質問させてください ;-------------------------------------------------- //引数p(価格)から消費税を計算し価格と一緒に表示する //関数を作る function foo(p) { var tax = function(n){return n * 0.05;}; System.inform("価格" + p + "円 \n[消費税" + tax(p) + "]円"); } //関数を使う foo(1000); ;-------------------------------------------------- 1) foo(1000) なので、function foo(p) の p には 1000 が入る と考えると function(n) の n にも 1000 が入ると 考えていいのでしょうか? n * 0.05 は 1000x0.05 で、50 になり、return で var tax = 50 になる という考え方で大丈夫ですか? 2) tax(p) の (p) はどう解釈したらいいのでしょうか? ちなみに (p) をなくして tax だけだと、(object 0x00C87A50:0x00000000)円 と表示されました。 お手数ですが教えて下さい。
>>98 1. ダメです。その時点で tax にはいるのは定義した関数そのものです
2. 名前の後ろの () は関数を呼び出す命令です。tax には関数が代入されてますから、
その時点でその処理が呼び出されて結果が帰ります
>>99 レスありがとうございます
書きかたが下手で伝わらなかったら申し訳ないのですが
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;} と同じ
この考え方で大丈夫でしょうか?
大丈夫だ、問題ない
その理解で大丈夫です。 なお、TJSでは、式中関数(匿名関数)と普通の関数は、物としては完全に同じものです。 つまり、function a(arg) {} は、 global.a = function(arg) {} と等価です。 通常関数と同じものなので、Javascript のレキシカルクロージャのようなローカル変数の引き込みはできません。 かわりに、実行コンテキストを内部保持していて明示的に差し替え可能という独特の機能があり(incontextof で明示指定可能) これを指して「クロージャ」と呼んでます。言葉の意味が他の言語と全然違うのでご注意を。
config.tjsのuserFaceでデフォのフォントを変更した場合って あとどこ変えればいいんでしたっけ!? ググるとsaveフォルダ内のファイルいじれってでてくるんだけど 初回起動なんでsaveフォルダ内にはlogファイル以外ファイルがないんです
>>101-102 ありがとうございました
これですっきりして次に進めます
PG未経験の独学なので本当に助かりました
クロージャについてはちょっと難しいのですが、
クロージャとコンテキストという項があったので
そこを読み解く時に
>>102 を念頭に置いて勉強します
今は他言語でいうクロージャとTJSでいうクロージャはまったくの別物、
という認識で、先に進みます
お手数かけました。感謝!
すんません
>>103 はナシで
例外通知出た時のコンソールのカーソル位置って
必ずしも原因の行ではないのでしょうか?
一定の場所のシナリオをユーザーが読んでいる間、キャラクターを左右にうようよ 等感覚で動かしたいのですがどうしたらいいでしょうか? コレのパスを永遠とかいてみたのですがいつかは止まってしまうので・・・ ↓ [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] ;←ここまで
アニメーションしたら
俺なら普通に動画で作るよ。 ループ再生するだけだし。 悩まずに30分もあれば組み込みまで終わる。
109 :
名前は開発中のものです。 :2010/10/11(月) 11:58:34 ID: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
ああああああああageてしまった! すみません。必死すぎました。。
111 :
前スレ182 :2010/10/11(月) 12:08:01 ID:TqmROLvI
一瞬で解決しました。
そういえば昔もこれでハマったことがありました。
どうみても学習していません。本当にありがとうございました。
というか
>>111 様本当にありがとうございました。
KAGを現役バリバリのプログラマに分かるように説明してくれるサイトってない? 初心者向けばかりで、どうでもいい先生のオナニーサイトばかりでうざい
現役ばりばりのプログラマならリファレンス眺めたあとソースよむのが最速だろう
>>106 Mover系のコードを改造してループ機能をしこむのが妥当
プログラマでない人間でも公式リファ見ればわかるのがKAG 講座サイトはそれでもわからない人間に親切に教えるサイト
>>114 俺も以前にそう言われて「なんだよ不親切な住人だなクソが!」と腹立ったけど、
実際リファレンスとソース読むのが一番だった
でもまだちょっと根に持ってるw
KAGParserはもうちょっと頑張ってTJSで書くべきだよなあ 速度的に重要な部分だけネイティブにしてほしかった
keydownhookでRが「メッセージ履歴を表示する」となるのを無効にするには どうすればよいでしょうか?
おもいっきり書いてあった… @iscript function myKeyDownHook(key, shift) { if(key == #'R') { // R のキーが押されたら kag.process('', '*label'); return true; } } @endscript これでよさげですね
>>113 KagParserとMainWindowとKagLayerとあとCondactor系読めばおk
>>118 tjsに永続化APIがないから無理。
KAGParser にどう永続化APIが関係するんだ?
KAGのParserはもともと大昔はTJSで書かれていた物が、 動作速度的にボトルネックになったからC++で書き直された件。
「TJSに永続化APIが無い事」と 「KAGParserがC++で書かれている事」が どう関係するのか不明。 あとTJS式自体には永続化のためのAPIは存在する。 (save/saveStruct/evalStorage)。 クラスオブジェクトの中身までは 完全には永続化出来ないけど。 「永続化」の言葉で差している内容が違う?
125 :
名前は開発中のものです。 :2010/10/12(火) 12:55:27 ID:b0vGB/c4
>>123 その通り。ボトルネックだけ書き直せばいいんだよ。
たぶん重いのはテキスト処理なので内部の状態管理とかはTJSでできるはず。
面倒だからごっそりC++にしてるようにしか見えない。
何がどう「その通り」なのか、さっぱり。 125=118(?)は、「KAGParserは、高速化に必要な最低限の部分以外はTJSで記述して欲しかった」と言いたかったの? だとしたら、118の書き込みからはそうは読み取れなかったよ。 でまあ、本題。 おそらくKAGParserレベルでの拡張性を求めて、コア部分のロジックはTJS側に残しておいて 欲しかったという事なんだろうけど、メンテナンス性を考えるとその選択肢が適切かどうかは けっこう難しいのでは無いかな。ロジックがC++側とTJS側に分散することで、確実にメンテナンス 性は落ちるからね。
ソースを覗いたわけじゃないので何とも言えんが、 KAGのシナリオの読み込みがC++でいう#includeに近い、単なるテキストの取りこみである以上、 構文解析と状態遷移の分離を少ないオーバーヘッドで実現するのは結構難しいように思うんだが。
まあ、現行の KAGParser 実装は微妙にかゆいところに手が届かない状態ではあるな。 もっともソースあるんだからそれこそ切り出してきて直してプラグインかけばすむ話ではある。
2.32にはそういうプラグインが付いてたぞ 中身はC++だけど、実行ファイルには触らずにプラグインを優先して使う仕組み
パーサーってめっちゃ速度が重要な部分だろ スクリプトでパーサー作ってるスクリプト言語なんてあるのか?
パーサーならいいんだけど、KAGParserはパーサーに留まってないんだよな 実際にはKAGのインタプリタなの
暇つぶしがわりに初めて一ヶ月の初心者なんだが 右クリック後の設定とかを作ろうと思ったんだけどネットで調べてもどうにも理解できなくて わかりやすい初心者用の本っていいのないか? あったら教えてほしい
>>131 javascriptのセルフコンパイラとかあるし、rubyのxmlライブラリは正規表現で実装されてた気がするが今は知らん。
KAGのシナリオファイルは単純だからスクリプトで書いても早いがネイティブのがもっと早いって理屈だよ。
137 :
名前は開発中のものです。 :2010/10/13(水) 11:23:13 ID:A1WwD10U
一文字一文字読んでいくことになるから、どうしてもスクリプト処理系の性能が クリティカルになってくる。でもKAGParserはほとんど(現実には全く) 全体のパフォーマンスに影響しないような部分も結構ネイティブで書いちゃってる感じ。
scalaならインタプリタなんて簡単に書けるんだが.netframeworkでscala製エンジンってのもいいかも知れん。
インタプリタなんて一回書いちゃえば終わりなんだからどうでもいい
..netはないわ
初心者だが swfを普通に挿入するにはタグどうなるんだ? 良かったら教えてくれ…
普通の動画にしろy
143 :
141 :2010/10/13(水) 21:30:15 ID:rhuk92R6
え、普通の動画とは…? ムービーとして挿入したいだけなんだが… swf以外の拡張子の方が良いってことか?
煽ってるのでもなんでも無く逆に質問なんだけど、PMGでは無く若干使いづらいSWFをチョイスした理由はなんだろう? 前スレのvideoを再生するタグ表記でいけると思うけど、WVは確か使えなかったと思う
ちなみに俺が作った感じだと、アルファ無しの動画なら、AVIで吐き出して、フリーの「動画変換無双」ってツールでMPGに再エンコすれば簡単にいける。 綺麗に出力しようとすると、それなりに知識必要だけど。 あとは1ヶ月の期間限定だけど、TMPGエンコーダとか。
別に編集ソフトとエンコーダはなんでもいいんじゃね?
そうなんだけどね、俺の経験で案外作る数が多いと使い勝手とか設定の細かさとか逆に簡略性とか、さくっとやれないと結構イライラする。 シェアウェアだとさすがにそのあたりのバランスが割と取れてる奴多いけど、フリーだと案外探すの大変。 今は製品使ってるけど、俺そこにいきつくまで10本くらいフリーソフト試してレジストリとかにゴミ作りまくった経験あるからとりあえずお節介。
148 :
名前は開発中のものです。 :2010/10/14(木) 17:00:38 ID:n+00dKRB
吉里吉里難しすぎる LIVEMAKERしかできない><
KAGにRAD付けたらいいんだな
とりあえず特殊な事をしようとしなければ、吉里吉里は簡単でわかりやすいツールだと思うけどな。 特殊な事をやろうとすると途端にハードルが天井知らずになるけど、普通にADV作るだけなら一通り欲しい物がほぼ全部揃ってるし、上から順番に記述していけばいつか書き終わるから楽。
特殊って笑わせんな。 ただプログラマーの領域に足を突っ込むだけだろ。 FLASHでつくったほうがいいんじゃねえのか?
吉里吉里のリンクダサい。 オンマウス時の半透明が気に食わない。 カッコよく下線とか出ないものか。
あんまりな、プログラムが出来るから笑わせんなとか言わない方が良いぞ。 人間性を疑われる。 お前は俺が出来ない事が出来るんだろうけど、俺はお前の出来ない事が出来る。 領分の問題だろう?
吉里吉里 リンクに下線を引くには でぐぐれ
下線がカッコよいかどうか知らんが MessageLayer.tjsいじればすぐ出来るだろ 別に質問してるわけじゃないようだからこれ以上はやめとくが
>>153 ゲ制でプログラマーの領域を特殊扱いするのもどうかと。
それよりも悪い方向に文章捏造して勝手に人間性疑う方が怖い。
157 :
名前は開発中のものです。 :2010/10/15(金) 00:18:14 ID:ZKjAD3kC
本当に初歩の初歩からできる参考書とかないのかな
158 :
名前は開発中のものです。 :2010/10/15(金) 00:28:28 ID:3PcpthzT
今出てる本は全部初歩からやってるよ
ほんとうに初歩からガッツリやるにはまず公式に言語仕様を公開するところからだな。 リファレンスはあくまでも補足だろ。 それ以前にスクリプトらしい構文とか用意してほしいもんだが。for-inすらないからな。
TJSリファレンスで十分じゃ
systemフォルダの中覗けばいいじゃない
162 :
名前は開発中のものです。 :2010/10/15(金) 11:58:00 ID:kl1PfIRf
ディレクテックス使ってよ吉里吉里
164 :
名前は開発中のものです。 :2010/10/15(金) 16:24:24 ID:UeJ2sYpH
TJSリファレンスなんか言語仕様になってないぞ。 断言するけど、あのドキュメントだけ読んでTJSの処理系作るのは不可能。 TJSは実装が仕様
なんか2〜3日前から自分の頭の悪さを宣伝してるバカが居るね。
164の頭のなかでは初歩からする=言語を実装する、なのか。うん、まあ、がんばれ。
クマー
クマー
クマー
[iscript] //関数 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 よろしくお願いします
function f(key, dic){ return 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 は非常に強力なので困ったらそれに頼るといいかと
>>172 今、実際に動かしてみました。 思い通りの動作をさせることができました!
配列を使わずに文字列を組み合わせて作る事が多いのでScripts.evalはとても重宝しそうです
こんなに早く、的確な答えを頂き助かりました。本当にありがとうございます
吉里吉里の素人なんだが、 選択肢を選んだときにSEをどうやって鳴らすかを必死こいてやってたらそれ専用の命令があったw そこで聞きたいんだが使える命令の種類と使い方ってどこに載ってる?
まずはダウンロードしたファイル一式に何がはいってるかを見るところからはじめれ
>>175 やっぱりそうですよね。
ありがとうございます。
kag3ってフォルダの中身を見ると良い事がある。 後は自分で調べろ。
過去ログ置き場作ってみました。
http://bbs.bokunatu.com/krkr/ 検索はgoogleまかせなので、そのうち使えるようになると思います。今はまだ自分とこの板のレスしか引っかかりません。
datを自動回収してるので余計なものまで拾ってるけどそれはご愛嬌で。
リンク集とか載せるべきと思ったけど情報を更新するのも面倒だし、新しいスレを追えばわかることだから不要と判断しました。
乙 でも一部ログが1000まで行ってないスレがあったり ログが壊れてるスレがあるな
>>180 あがー、それは失礼しました。
手持ちはこれしかないので正しいdatをお持ちの方が居たら差し替えさせてもらいます。
カットインの演出を入れたくて、色々がんばってるんですが 上手い事行きません。 TJSで画像レイヤを移動させて見たのですが、演出方法が悪く ずるずると画像が画面外から出てくるだけで、一般的なカットインの効果に 見えません。 また、プラグインがある事を突き止めましたが、実力不足か上手く起動 させる事が出来ませんでした。 だらだらと書いてしましましたが、演出方法を指南しているサイトか 一般的な方法の記載されたサイトを探しております。 ご存知の方がいらっしゃいましたらお願いします。
まずその「一般的なカットイン」がどういう風になっているのか 自分で箇条書きにでもしてみろよ
トランジションしながらmoveすりゃイイだけ
Storages.addAutoPathでパス追加するのって、Afterinit.tjsの先頭で問題無いですか? 以前、変な所に記述してしまったせいで、パッチファイルの上書きが出来なくなり困った事があるので・・
>>186 Initialize.tjs で パッチ用のエントリを足してるところより前に足さないと意味がない。
そのあたりに適当に外部ファイル読むエントリ足して、そっちの外部ファイルに足すようにすると良いと思われ
演出に凝りたい、最低限拡縮しながら動かせるようにならないと。 プラグイン自体はいくつかサードで出てるからそれ使えばいいだろう。 タグを組み込むプラグインならだいたい同梱のfirstとか見れば組み込み方は普通わかる。 けど、演出云々は教えようにも個人の感性だからどうにもならない。
>>183 moveタグ1つで出来んじゃね?
moveタグには、opacityも指定できるからこれにaccelあたり指定すればそれっぽくなるはず。
何をもって一般的かは不明だけど、画面外から加速して入ってきて、徐々に半透明からはっきり
する感じじゃねーかな。
みんなmoveだけでやってるのか。 俺は画面切り替えはほかにもいろいろエフェクト入れてるからクロスフェードでやってる時が多いな。 クロスフェードとopacityが被ると、意図と違う出方する事あるし。 たぶん183はずるずると画面外から背景を引っ張ってきてるんだと思うけど、フェードしながらやるだけでもずいぶん違うと思うから同人クラスならそれで良いんじゃないかな? 商業だとちと厳しいけど。
>>190 >>183 はカットインっていってるだろ。
カットインてのは多分最近の2D格げーとかテイルズとかスパロボにある魅せ場でフェイスアップだして煽るあれのことだろう。
それだとすれば画面切り替えとは全然違うだろ。
アニメしながらmoveが正解じゃね?
カットインとフェードインを混同してるように思うがな。 フェードイン出来るならカットイン普通に出来るだろうと。 フェードインもカットインもやらせる事は一緒なんだから、フェードインが出来てカットインが出来ないとか意味がわからん。
というか商業レベルのカットインってどんなもんなんだ 想像できん
カットインとして商業レベルの話をすると、最低限差し込んだ奴の顔の部分の背景を動的に動かすとか、差し込みと同時にもう一本レイラインなんかを入れるとか、別にそれに限らずもう一手間か二手間しないと商業レベルとしてはいただけないだろ。
>>195 そんなもんFDDとかの動的な演出を売りにしてる一部のゲームだけじゃねえの
コンシューマのカットインとかでも、そこまでやってるの少ないな。 アクションや格ゲーのだって、カットインいれた瞬間だけ画面光らすとか そのレベルだろう。 PCゲにいたっては、商業の大半が189程度の演出のはず。
そんなもんかな? 画面外からのカットイン>アウトだって、加速度的にイン>超スロウで1秒動かし続け>加速度的に反対側にアウト これだけでも劇的に違うんだけどな
> 画面外からのカットイン>アウトだって、加速度的にイン>超スロウで1秒動かし続け>加速度的に反対側にアウト これ普通に吉里吉里でもできると思う
うむ。 普通に出来るから、というかやってる。 このくらいなら、フェードイン・フェードアウト出来るレベルなら十分作れるはずなんだけどなぁ。
動画レイヤもmoveで擬似カットインできるのかな? だとしたら大概のことはでてきしまう気がするが
>>198 それ、moveタグ3つ並べれば簡単に出来るんじゃね。
ある程度以上は感性の領域だろうけど、この手のハウトゥサイトとかあると便利かもね。
俺はエロゲとかあまりやらんけど、「おじぎ」とか立ち絵を歩かせる演出とか、
それっぽく見える移動幅とかあると思うんだけど。
動画レイヤはムリだがあっちはα動画に出来るから、もはやカットインくらいならどんなムチャも出来るよ。 最悪全部動画で作ればいいから。 おじぎはどう作るかわからんけど、歩かせる演出は動画で作ってみたことある。 結論から言うと、髪の毛とか動かないからちょっと動きが気持ち悪い。 でもそう言うレベルの動画を使ってる駄ニメは多いから違和感はそう無いかも。
Fateで多用されてたけどなんか鬱陶しかったなあ>おじぎとか
立ち絵が右に左にと動くやつとか演出として成功してんのかね?
作る時は画面がさびしくならん程度に入れたいと思うけど、ゲームやる側の時に
この手の演出が楽しいを思った事ねーしな。
>>200 多分だけど、フェードインとフェードアウトを間違って使ってない?
もしくは何か言葉が足らんのだと思う。
>>195 も
>>198 もフェードイン、アウトと全く関係ないし。
フェードインとかフェードアウトってのは、画像が徐々に表示されたり
消えていく効果の事だから、吉里吉里の場合、トラジションやopacity等の基本機能で
普通に行える。
キャラを複数出す時に移動させないといけないから、これは演出とは関係無い部分だね。
キャラを左右に動かす程度なら別に演出としていらんだろうけど、逆にぼーっと突っ立ってるだけのキャラと言うのも寂しい。
会社によっては立ちキャラは表情変えしか出来ないところとかあるからどうしても寂しくなる。 だからエフェクトで誤魔化すんだが。
ちなみに間違って使ってないぞ。 フェード出来るなら、普通その間に発行するタグ群でだいたいカットインも出来るだろうと言う話。
それと
>>205 の説明は少し間違ってる。
画面効果に関してのフェードイン・アウトは、一色に対してイン・アウトさせる手法の事で、正確な意味でのフェードイン・アウトの機能は吉里吉里には無い……はず。
少なくともtranseタグでの挙動の物は違う。 吉里吉里で実装してるのは、すべてワイプイン・アウト。 クロスフェードがフェードイン・アウトに一番近い挙動でど裏画面に単色を置いたら疑似フェードイン・アウトなわけ。
opacityは透明に変化させるわけだからあれも違う。(単色を読み込んでmoveで動的にopaを変化させる事は出来るけど)
このあたりは映像やってないと良く意味を取り違えるから、まぁ普通は一緒くたにしててもだいたい意味は通じるけどね。
時々、フェードイン実装汁とか言う書き込みがあるけど、カキコしてる人はそう言う意味で使ってるの。
一応補足しておくと、ブラックアウトとかホワイトインとかはフェードイン・アウトの種類の名前ね。 吉里吉里のcrossfadeも一応はフェードの仲間なんだけど、これは正確にはクロスフェードディゾブルオーバーラップだったかな?そう言う長ったらしい名前がついてる。 ただ本当の意味でのそれと違うのは吉里吉里は残念ながらと言うか静止画をメインに扱う前提だからイン側とアウト側のフェードのタイミングを制御出来ないために結果として効果が固定されてしまってる事。 俺は音楽方面はあまり詳しくないけど、確かクロスフェードと言うと本来は音響関係の用語だと先輩に聞いた事あったな。 これに関してはうろ覚えだから間違ってたらすまん。
>>207 単色とのクロスフェードは表示としてはフェードイン/アウトそのものだろ。別に疑似じゃない。
あと、クロスフェード、ディゾルブ、オーバーラップ、はそれぞれ同じ表現を示す同義語で一つの単語じゃねーよ。ぼけたこと言うな。
ディゾルブ:TV業界用語
オーバーラップ:映画業界用語
クロスフェード:音楽用語が転じてデジタル映像でも使われるようになった
ちなみに、音声のクロスフェードとは異なり、片方をフェードイン、もう片方をフェードアウト相当の処理で
画像をつくると決して奇麗な表示にならない。画像で自然にクロスフェードするには、一方の画像に対して
不透明度を下げた画像を重ねるという処理が必要で(本来の映像用語、ディゾルブ=多重露出や、
オーバーラップ=上書きはまさにこのことを指している)、当然タイミング指定は一つになる。
さて、そんなわけで、吉里吉里は普通にフェードインもフェードアウトもできるわけだが、
間に暗転/白転をはさむ「アウト→イン」を一発でできないってってことならたしかに機能としてはない。
表現自体は複数コマンドを使えば実現できるが、記述がばらけるのでうれしくないという向きはあるだろう。
内部的に暗転処理専用の隠しレイヤをもたせて、ごにょごにょすれば単発コマンドで他のトランジションと同様に使うような拡張はできなくはないね。
映像用語的には、フェードとかワイプは、カット(ショットを切りつなぐこと)時に行うトランジションの個別技法の名前であって、
カットイン、は「あるショットに別のショットを重ねてわりこませること」だから、用語の階層が全然違う
例えばクロスフェードで、現在の画面の上に、別のショット的な別画像を重ねて表示、も、
これはこれで「カットイン」だ。ID:Im9E8ae1 が言いたいのはそういうことなんだろうとは思うが言葉の使い方としては不適切だ。
>>183 が求めてるのは動きのあるカットインかな。
move を使う案があがってて、実際それでやってる人が多いだろう。
ただ、これだと、他のトランジションとは記述の一貫性はとれない。
吉里吉里の機能的には、動きのあるトランジションも実現可能で、
例えば scroll トランジションを個別レイヤに使えば、画面外から入るように表示される(あるいは画面外に出るように消去される)。
これも立派な「動きのあるカットイン/アウト」だ。
ただ残念ながら scroll には加速度指定パラメータが無いので動き的には微妙。
自前で作るか改造するしかないね。
いかんいかん、俺も間違って覚えてるな。 ちと覚え直すとするか。 吉里吉里のcrossfadeは、ドットを最小単位にして、それをアウト側からイン側へなめらかに正比例で変化させるから何も考えなくても百点満点で80点くらいのアウトイン出来るからいいんだけど、 ふぅっとって感じ(感覚的にはわかり辛いんだけど、乗数曲線みたいに)には切り替わってくれないからそう言う映画的な切り替えに見慣れてるとどうにも物足りない。 これをやるにはアウト側とイン側とマットの3種類が必要になるから、そこまでやろうとすると自分で作るしかなくなってくるな。 ただの自己満なんだけどね。 ところで、おじぎって見た事ないんだけど、どっかにサンプル転がってないかな。
>>183 やってみたら見れなくはなかったんで一応記述例を。
前準備
・画面サイズの透明画像 transparent.png
・画面サイズで真ん中にカットイン画像がある(周囲は透明。トリミングしないこと) cutin.png
※両方同じサイズにすること
カットイン表示
@image layer=0 page=fore storage="transparent" visible=true ; 表に透明で画像を準備
@backlay
@image layer=0 page=back storage="cutin" ; 裏にカットインされる画像を準備
@trans layer=0 method=scroll time=500 from=right ; レイヤ個別トランジション。右から差し込み
@wt
カットイン消去
@backlay
@image layer=0 page=back storage="transparent" ; 裏に消去状態=透明画像を準備
@trans layer=0 method=scroll time=500 from=right ; レイヤ個別トランジション。右から差し込み
@wt
レイヤ個別トランジションする時は消えた状態を作るには透明レイヤが必要ってのがポイント。
相手が非表示(visible=false)だとうまく表示されない。
scroll の from 指定でどっちから表示されてどっちむいて消えるかとかを制御できる(消去時は「透明の差し込み」なので逆なのに注意)
この方法のメリットは、トランジションの種類を変えるだけで同じスタイルの記述でいろいろ表現を切り替えれること。
scoroll 以外だと、extrans に入ってる rotateswap が出現/消去 両方につかいやすい。
あと、出現:rotatezoom, 消去:rotatevanish を使うのもわりといけてる
ああ、おもいだした。 実は、吉里吉里のトランジションには callback というパラメータがあってだな。これで時間軸をいじる制御ができる。 ってことで、実は加減速制御も可能。KAGの範疇だと口がないので、いじりたい人は TJS勉強してくれってことでひとつ これ、time 指定されてる値と、現在の tick 値を引数でわたしてくれると使いやすいんだけど、互換性的に問題なさそうだし 拡張してもらえないかな。
>>206 フェードイン、アウトについて俺が一番知らなかった件
ただ、吉里吉里に限って言えばやっぱり
>>206 は言葉足らずだったんじゃねーかな。
上でも出てるけど、吉里吉里でフェードイン、アウトは単色噛ませてクロスフェードして
一般的に行われてる。
これ以外の方法でやってる奴もほとんど居ないんじゃねーかな、必要ないし。
※
>>195 と
>>198 がフェードインアウトの機能で実現できるのか理解できんがw
フェードは実装汁の人じゃないけど、やっぱり俺も欲しいなとは思う。
無くても出来るんだけど、タグの発行量が大杉。
195とかは、フェードインアウトの作業をやってれば、普通はその過程で覚えるタグを使えばカットインくらい簡単にできるだろうと言う事ね。
言葉足らずですまん。
>>214 の今ざっと見た感じワイプが良い感じのがあるね。 細かく設定出来るかどうかわかんないけど。(例えば厚みとか)
これ使えば、簡単にそこそこ良い感じの作れるんじゃない?
ところで、stmoveみたいに動的に拡大縮小出来て、エンドレスループさせられるのって無いかな?stmoveは複数はダメだし、ループ機能も無いし。
結構ペジェ使えて使い勝手良いから使いまくってるけど。
CutInPlugin.ksが複数定義出来そうだしよさげなんだけど、注視点は常に中心らしいのが難点。
昼間歩きの話が出てて、昔のAEプロジェクト引っ張ってみてたら、拡大しながらエンドレスでループする機能があればタグコマンドだけで結構自然にいけそうなのよね。
背景だから動画にしてもいいんだけど、動画に60秒のエンドレス素材作るのはもったいないのよね。容量的に。
質問です メニューバーの任意の座標にボタンを追加する方法をご存じの方いますか? addだと順番に左詰めになってしまい希望通りにはなりません 通常のメニューボタンから少し離した位置にまたボタンを設置したいのです ボタンレイヤークラス作って表示させようとしても適当すぎたのかまるで駄目でした どなたかご教授お願いします
ゆっくりズームしながらレイヤ上下ですかね。
でも、「このエフェクトの行き着く先は?」とか試されたら嫌だからやらないかな。
俺だったら試すもの。
FORTUNE ARTERIALのバイクで海岸を走るシーン
そして明日の世界よりの背景の雲の動き
ぼけーっと眺めてる自分が嫌になるまで頑張った。
>>216 リファレンスみた限りじゃ座標を指定する項目は見当たらないようですよー
ダミーを作って、そいつのenabledをfalseにしたらそれっぽく見えるかも?
>>216 適当に caption にスペースもった enabled=false なダミーの項目を足す
背景をゆっくりズームアウト。 手前の人物はon乗馬でもそこそこ見栄えはするもんだけど、エロゲはミニが多くて足が動いてないのバレバレで見栄えが良くない。 スカート丈が長いと誤魔化せる事を発見した時には小躍りして喜んだ遠い昔の記憶…… 吉里吉里は、NULLを入れておかないと案外まずい挙動をするコマンドが多い。 逆にNULLで誤魔化せるコマンドも多いから、とりあえず行き詰まったらまず透明なデータとかダミーデータで誤魔化せるか?って考えると案外上手く挙動する物が多い。
ぬるぽ
ガッ
>>219 問題があると思った挙動があるならきちんと報告しとけ。
たいていの場合は明確に仕様で使い方間違ってるだけだと思われ。
いままでのおまえさんの投稿全部そうだったろ?
223 :
183 :2010/10/20(水) 00:26:15 ID:P4gHNwZj
皆さんありがとうございました。
moveタグと
>>211 さんの方法で希望のカットインが出来そうです。
>>211 さんの方法は色合いは違いますが、カッコイイカットインに
なったので、こちらも別マクロとして登録しておきました。
拙い質問にお答え頂きありがとうございます。
>>222 いやいや実質的に俺のタグの書き方がまずくて仕様でダメだったのは一つだけだ。
あとは、質問に答えて貰ったから謝ったような書き方してるけど、とりあえずそれで動いてるからいいやって感じで使ってるだけで根本解決はしてない。
とりあえずそれで動いてるから細かくは書かないけど、やはりなぜか止まったり、なぜか表と裏の動画が入れ替わったり、根治してるわけでは無く、そのシーンのその後のトランスの仕方によって問題が少ない方をチョイスして使い分けてると言うのが実情。
一言だけ言いたい。 お前いい加減もっと文章を短くまとめろ。
3行で書けって言うから、一応3行で書いたのに・・・・・
文脈や会話の流れから推測する能力が著しく低い人なんじゃねーかな。 ここ数回のレスでも噛み合ってると思われる物は全くない。
アスペってやつか
>>224 あんた公式で質問してる「四つ葉」だろ?
具体的な記述を出さないから何言っても言い訳にしか見えない。
しょうがないな。 噛み合って無いとか言われるとそれなりにかっこいいカットインを書き込まなくちゃいけないじゃないか。べ、別にあんたのためじゃないんだからね! 800*600版で調整してる。やってる事は単にmoveを三回使ってるだけなんだけど、調整すればそれだけでもこのくらいはかっこよく出来る。実際には、ブレーキ中にほかのエフェクトを繋いだりするんだけど。 ポイントは、当然なのだけどimageタグとmoveタグのopacityは連動してると言う事。 あと全画面の半分しか移動させてないのは、丁度画像の中心線が画面端にかかる頃にopacityを0にするため。 透明度が20%を切ると背景にもよるけど、ほとんど消えたように見える。 全画面分移動させると、消え方がぬるい。 このあたりは感覚的な事なんだけどね。 ;とりあえずベース表示 [image layer=base page=fore storage="ベース" visible=true] ;カットインされる画像を準備 [image layer=0 page=fore storage="右から左" visible=true left=400 visible=true opacity=0] [image layer=1 page=fore storage="左から右" visible=true left=-400 visible=true opacity=0] ;アクセルイン [move time=500 path="(30,0,255)" layer=0 accel=5] [move time=500 path="(-30,0,255)" layer=1 accel=5] [wm layer=0 canskip=false] [wm layer=1 canskip=false] ;ブレーキ [move time=1000 path="(-30,0,255)" layer=0 accel=0] [move time=1000 path="(30,0,255)" layer=1 accel=0] [wm layer=0 canskip=false] [wm layer=1 canskip=false] ;アクセルアウト [move time=500 path="(-400,0,0)" layer=0 accel=-5] [move time=500 path="(400,0,0)" layer=1 accel=-5] [wm layer=0 canskip=false] [wm layer=1 canskip=false]
見事なかみ合ってなさっぷりにワラタ
お前ちょっと前までムービーが動画がって言ってた奴だろ? 荒らしとか悪意とかそういう意図を持ってないなら、頼むからもう黙っててくれ
>>230 具体例まで書いてる以上、悪意ではなく病気と判断して忠告してみる。
たとえば、230を見ても相当におかしい。、まず吉里吉里の勉強する前に
医者の診断を受ける事をすすめる。
■230のおかしな点
1.いきなりカットインの具体例を書いた
>>229 のレスを受けて書いた物だろうが、すでにカットインの話は終了している。
>>223 が解決のお礼を言ってるし、スレの流れも完全に変わっている。
2.前提を理解していない
W具体例”がないと言うのは、
>>230 の過去の書き込みに対してである。
よって、NULLを指定しないとバグる例や、フェードイン、アウトを行うタグでのカットインの具体例を出さなければ意味がない。
3.噛み合ってないと言われて具体例を提示した
噛み合ってないと言う人物と、具体例を指摘している人物は同一人物ではない。
また、噛み合ってないと言う人は話が理解できていないという意味で書いてあり、具体例を指摘する人物は、
過去の書き込みに対してであり、全く別種の物である。
■総評
230の具体例を見るに質問された「カットイン」を理解している事がわかる。
また、具体的なタグを使用しており、吉里吉里初心者が知ったかだけで話している訳ではない事もわかる。
この事は逆に230が病気である可能性を高めている。
カットインの質問をされたにも関わらず、フェードの話をつけて返し、しかもそれは
吉里吉里と映像技術上のフェードを別種と理解した上で同一に語っている。
上で上げた3例からも、“噛み合って無い”や“具体例”の指摘は理解しているのに“実質的に相手が何を言っている”かは分かっていない。
別に侮蔑とかではなく医者に行く事を進める、精神障害以外にも脳障害という可能性も十分にある。
要するにアスペだな
そろそろふるぼっこされる予感はしていた。
俺が病気かどうかは別にして上から順番に答えてもいいんだけど、まぁ要点として少しおかしな具合に解釈されてるようだが、ヌルに関しては入れないと不味い挙動をするものがあると言ってるだけで不具合では無いだろう。 フェードとカットインに関しては、フェードでトランスを使えるレベルなら、普通カットインもそれと同じタグ群で作れるんだから難しくないだろうって事だ。 今回のもカットインとして出したが、実際には俺はこれはトランスの代わりの画面切り替えに使ってる。 opacityの代わりにクロスフェードトランスでも同じような挙動は作れるだろう? 画面を切り替えるフェードやトランス・ムーブのタグ群は理解してるわけだから、それらを組み合わせるだけで特別なタグを使うわけじゃないんだから普通作れるだろうって事。 movieの不具合どう書いたら問題かと理解してるからもういちいち残してないが、要は表にダミー・裏に実際の動画を準備してそのレイヤーを個別にトランスするとトランスのたびに表>裏>表>裏となるって話だ。 こう言う使い方する奴はほとんどいないだろうから普通の人にはたいした話じゃないだろうけど。 もう一つの不具合は構文しないと説明し辛いから割愛。
言葉でいってんのに理解できないのはアスペじゃないな。
>>236 すまなかったな。
とりあえず、今から医者の予約をとれ。
それから治るまではトリを付ければ解決だ。
誰かID:poA/8cd6にNULL入れろ、不味い挙動してるぞ。
アスペや発達障害は病気じゃないしID:poA/8cd6がそうかはともかく おまいさんは動画に関して専門的にやってるかこだわりを持ってるのかもしれんが この話題に鳴門自分の知識や持論をひけらかすことに夢中で 質問に対する回答にならないことを延々語ってるわけだ それも改行もろくにしない長文で 改行しない、長文、一人による大量レスが2chで嫌われるのは知ってるな? ID:poA/8cd6は荒らしと変わらない事になってんだよ
invalidate ID:poA/8cd6;
リアルでも知識や考えを押し付けたりすると嫌われるよな? それと同じことだ。
こういう場だと知識の押しつけ自体はそれが正確ならさほど問題視されないんだが、かなり間違い入ってるからな……
ID:poA/8cd6です。 あなた方の指摘どおり病院に行ったところ高次脳機能障害であることが分かりました。 これからは皆様に迷惑をかけないように生きていきたいと思います。 指摘ありがとうございました。
ジャンジャン病院送りにしてw 同じ吉里吉里使いとしてはものすごく迷惑
ということは こんなキチガイと一緒に仕事組まされてたのか
吉里吉里で一定の場所から場所まで 処理にかかったつ[時間はかり、logとして出力させる方法どなたかご存知ないですか]
つ[メッセージ] で囲んだつもりが酷いところに反映されたのでもう一度かかせてください^^; 吉里吉里で一定の場所から場所までの処理にかかった時間はかり、logとして出力させる方法どなたかご存知ないですか
>>248 吉里吉里2リファレンスのSystemクラスにあるgetTickCountを見るといい。
質問です 今までいくつかmp.tagnameを条件式に使った関数を作ってきたが これでbeginMoveは問題なく使えても何故か beginFrameMoveはこの条件式だと使えないんだ 無理に使おうとは思わないがどういう仕組みか原因が気になる 誰かわかる人はいませんか?
その実際にうまくいかない記述を示してもらわんことには回答不能。
252 :
250 :2010/10/20(水) 19:33:19 ID:jtoaSqEE
言葉足らずで申し訳ない function hogehoge(mp){ if(mp.tagname == 'hoge1') kag.fore.layers[mp.layer].beginMove(%[ path:+mp.x +','+ mp.y +', 255', time: +mp.time, accel:-1]); else if(mp.tagname == 'hoge2') kag.fore.layers[mp.layer].beginFrameMove(%[path: '(10,'+ mp.x +','+ mp.y +', 255 )('40,'+ mp.x +','+ mp.y +', 255 )(45,'+ mp.xx+','+ mp.y +', 0']); } 部分的に書き出すと例えばこんな感じで [hoge1]でレイヤーを動かすのは問題ないんだが[hoge2]だと何も起こらない else if(mp.tagname == 'hoge2') を else if(mp.hoge2 == 'hoge2')にして hogehogeを呼びたす適当なマクロで [適当なマクロ hoge2]とすれば、beginFrameMoveも動かせるんだ 試してみたがどうにも他は出来てもmp.tagnameだと駄目なようだ beginMoveとbeginFrameMoveで何が違うのか気になる
間違えた ×else if(mp.tagname == 'hoge2') を else if(mp.hoge2 == 'hoge2')にして ○else if(mp.tagname == 'hoge2') を else if(mp.hoge2 !== void)にして 何度も申し訳ない
>>252 40 の前の ' が不要とかじゃなくて?
255 :
250 :2010/10/20(水) 21:24:26 ID:jtoaSqEE
>>254 レス用に書き換えた時のミスですお恥ずかしい
mp.tagnameじゃなきゃちゃんと動くことは一応確認してあるんだが
腑に落ちなくてむず痒いから原因が知りたい
バージョンアップしたのが関係あるのかとにかくさっぱりだ・・・
>>255 あっ、他にも誤記っぽいのが
(45,'+ mp.xx+','+ mp.y +', 0']); → (45,'+ mp.x+','+ mp.y +', 0)']);
最後の方の ) は無くても良いけど mp.xx →mp.x なら問題
その function hogehoge(mp) はどこからどうよんでるんだ? 見たところ特に問題のある記述じゃなさそうだから呼び出し側でなんかとちってるとみた というか、わざわざ tagname で判定する理由がよくわからないんだが… それぞれのマクロでそれぞれの関数を呼べば良いだけではないのか?
文章の表示についてちょっと苦労してるんだが、よければアイディアもらえないか 1番目の段落[l][r] 2番目の段落[l][r] 3番目の段落[l][r] みたいな感じでシナリオを用意した場合、 最初は1番目の段落が通常の色で表示されて、 2番目の段落に突入した場合、1番目の段落が灰色などの少し地味な色に変化して、 3番目の段落に突入したら、1番目同様2番目も地味な色に変化して…… という具合に、現在表示中の段落を強調表示したいんだが、シナリオ全体に適用するにあたって上手な方法はないだろうか マクロにまとめられないような面倒な手順を使えばなんとかなるんだが、 モジュールとして自作で使い回せるレベルにスマートにまとめる方法がひらめかない 愚直な方法しか使ってこなかったから、こういう応用的なことがどうも苦手なんだが、どんな手を使えばいいと思う?
>>258 現在表示中の段落以外は表示されてないんじゃないの?
[r]の代わりになるマクロの中で、カレントメッセージレイヤを 次々新しいものに変えていけばいいんじゃないかね あと用が済んだレイヤのopacityを順次下げるのと で[cm]の代わりになるマクロの中でそれらをリセットする
261 :
250 :2010/10/20(水) 22:44:19 ID:jtoaSqEE
>>256-257 >>250 は所々ミスってるがtagnameで判定しなければ普通に動くから
実際のpathには問題がないんだ色々考えてくれたのにすまない
それと関数はマクロからevalで呼び出してる
これだけだとtagnameで判定する必要はないが行数節約のため一部抜き出しただけなんだ
tagnameについて書いていたサイトにも裏技的なものと書かれてたから
beginFrameMove以外にも上手くいかないものがあるのかもしれん
よくわからないまま使うのもなーと思って思い切って聞いてみたが
そろそろIDと同じくらい顔真っ赤になりだしたんでこの辺で締めるよ
色々考えてくれてありがとうな
262 :
259 :2010/10/20(水) 22:53:25 ID:AoiRMOA2
>>259 は忘れてくれ
段落=ページ と勘違いしてた
>>261 試してみたら問題なく動作しましたよ。
たぶん他の部分の記述に問題があると思います
>>260 レイヤーを切り替えまくると、短期的にはよくても長期的には混乱したりしないかな?
裏レイヤーで画像処理して表レイヤーにコピーとか?
なんか混乱してきたから適当に試してみる
>>262 分かりにくい書き方ですまん
>>261 @iscript
function hogehoge(mp) {
if(mp.tagname == "hoge1") return 1; else
if(mp.tagname == "hoge2") return 2;
}
@endscript
[macro name=hoge1][eval exp="tf.hoge1 = hogehoge(mp)"][endmacro]
[macro name=hoge2][eval exp="tf.hoge2 = hogehoge(mp)"][endmacro]
現状見て推察できる
>>261 の状況・環境だと[hoge2]は
tf.hoge2に値が入らない事になるんだが。
まぁそれまでの流れから行数節約に気を使ったんだろうけど
そこで具体的な、肝心な部分を切り落としたのは確か。
>>261 function の先頭で mp.tagname を System.inform で表示してみるなり、Debug.messages でコンソールに出すなりして何がきてるか
確認してみればすぐ問題の原因がわかるんじゃないかな
267 :
250 :2010/10/21(木) 00:37:08 ID:TC3xSXua
>>263 ,
>>265-266 ありがとう解決した
266の通りSystem.informでtagnameを表示してみたら"hoge2"と出た
だけど実際マクロ名で登録したのは"hoGe2"みたいに
2単語あわせた名前だったから一部大文字を使ってたんだ
もちろん条件式はif(mp.tagname=='hoGe2')
エラーもでないし何も起こらないから不思議だったが
原因はtagnameでは大文字使えないからだったようだ
皆知恵を貸してくれて本当にありがとう
ところで
>>265 [macro name=hoge2][eval exp="hogehoge(mp)"][endmacro]
って今まで普通に記述してたんだが、本当はよくないのか?
使えないというか、マクロに限らず辞書配列のキーっては基本的に すべて小文字としてみなすような動作じゃなかったかな。 例えば @HOGE param1="ABCDE" PARAM2="FGHIJ" PaRaM3="klmno" みたいにシナリオで呼びだすと、実際には mp.tagname = "hoge" mp.param1 = "ABCDE" mp.param2 = "FGHIJ" mp.param3 = "klmno" という辞書配列が造られてる( tagnameがHOGEではなくhoge, PARAM2がparam2になっている点に留意)動いてるっつう訳だわね うろ覚えだから話半分で聞いてね。
>>268 Layer を拡張したプラグイン作るときに嵌ったなぁ
hitThreshold だけどうしてもうまくいかなくてしばらく悩んだw
>>258 KAG 3 version 3.30 Rev.2 だと
段落の数にかかわらずメッセージレイヤ三枚で実現できるっぽい
他のバージョンではどうなんだか知らない
>>267 @iscript
function hogehogeA() { return 1; }
function hogehogeB() { return 2; }
@endscript
[macro name=hoge1][eval exp="tf.hoge1 = hogehogeA()"][endmacro]
[macro name=hoge2][eval exp="tf.hoge2 = hogehogeB()"][endmacro]
>>257 が既に言ってるけど
tagnameで分岐して処理を分けるという余計な手間を入れるより
元からある関数をそれぞれに割り当てる方が手っ取り早くね?って話。
処理を目で追いやすいとかならある程度までは個人の自由だと思うけど。
beginFrameMoveって初めて聞いた
>>270 検証ありがとう
もし保存してたら、ちょっと見せてもらったりできないか?
質問です。 吉里吉里のスクリプトエンジンに組み込みの機能(System.getTickCount とか Debug.message とか) を複数のスレッドから呼び出しても問題ない(スレッドセーフ)でしょうか。
>>267 無事解決したようでなにより
>>268 辞書配列自体はキーは大文字小文字区別する。KAGParser が、タグ解析時に小文字に正規化してる
>>274 吉里吉里は基本スレッドセーフではない。
ただ、iTJS2Dispatch2 の呼び出し機構自体は別にスレッド的には問題ないはずなので、
問題あるかどうかはその呼び出し先の機能の構造次第なのでなんともいえない。
getTickCount はたぶん参照だけだろうから大丈夫。Debug.message のほうはどうだろう。
不安なら呼び出し部分離してクリティカルセクションではさめばいいんじゃないかと。
呼び出しよりもクラスやそのメンバの取得がまずくない? メンバアクセスはアトミックじゃなかったはずだから、 同時にメインのTJSスレッドでグローバル変数の新規作成が行われてたりしたら壊れそう
なるほど、ありがとうございます。 ・呼出先の処理が外部リソースで競合を起こしたりしない ・別スレッドから、メインのTJSスレッドから参照される変数や関数に同時にアクセスしたりしない ようにすれば、並列的にTJSのコードを実行しても問題ない (Debug.message などは複数のスレッドからログが書き込まれる可能性があるため、内部で排他してなかったらやばい) と考えられますかね。
あー、確かに>メンバアクセスはアトミックでない。 参照用のプロパティでもあらかじめ直接その対象まで取得しておかないとダメやね 「別スレッドからメインのTJHSスレッドから参照される変数や関数に同時にアクセスしない」ってのは 基本的に無理筋。Debug.message とか使われまくりだろうし。 「メインスレッドと通信してそちらで呼び出して結果を格納してくれる機構を作る」が正解かな。 方法論は2つ。 ・Window オブジェクトが Windows のメッセージ機構経由でメインスレッドから呼び出される口を持っているのでそこに機構をしこむ 呼び出しの安全性はWindowsが保証してくれる ・TVPAddContinuousEventHook で登録した処理はメインスレッドから呼び出されるのでそこに機構をしこむ 呼び出しの安全性はクリティカルセクションなどで確保する 前者の例はレポジトリのプラグインに多数ある。後者は無いか。 後者は登録しっぱなしにすると更新制限かけないと無駄に高負荷になるので注意。 コマンド実行させてる例はちょっとみあたらんね。 なにかしら実行キュー的なものをつくっておいて、コマンド文字列ないしは関数を登録しておいて、おわったら結果を登録した上で イベント(CreateEvent() でつくるやつ)経由で通知をくれるようなハンドシェイク処理を実装して、スレッド側では WaitForSingleObject で待つってのが無難かな
280 :
名前は開発中のものです。 :2010/10/21(木) 17:03:24 ID:E1DM/3kN
>>281 まだ微妙に格闘中なので、サンプルいただければ嬉しいです
風邪ひいたせいで頭が働かないです
>>282 メッセージレイヤの数を3以上にしてから first.ks として保存してちょ
[position layer=message2 left=100 top=100 width=440 height=200 visible=true frmae="" opacity=0]
[position layer=message1 left=100 top=100 width=440 height=200 visible=true frmae="" opacity=0]
[position layer=message0 left=100 top=100 width=440 height=200 visible=true frmae="" color=0x0000ff opacity=100]
[layopt layer=message1 opacity=128]
[backlay]
[current layer=message2]
[macro name=hoge]
[eval exp="tf.mes1=kag.fore.messages[1]"]
[eval exp="tf.mes2=kag.fore.messages[2]"]
[eval exp="tf.mes2ll=tf.mes2.lineLayer"]
[eval exp="tf.mes1.operateRect(0, 0, tf.mes2, 0, 0, tf.mes2.width, tf.mes2.height)"]
[eval exp="tf.mes1.operateRect(tf.mes2ll.left, tf.mes2ll.top, tf.mes2ll, 0, 0, tf.mes2ll.width, tf.mes2ll.height)"]
[eval exp="tf.mes2.clearLayer()"]
[endmacro]
[macro name=hoge_r]
[hoge][r]
[endmacro]
[wait time=200]
*start|スタート
自動改ページには対応していないので[l][hoge_r]
改ページの箇所には全て[[cm]タグを挿入してください[l][hoge_r]
でないとどうなるか[l][hoge_r]
試してみる事にしましょう[l][hoge_r]
てす[l][hoge_r]
てす[l][hoge_r]
ほらね[l][hoge_r]
ごらんのありさまだよw[p][cm]
[jump target=*start]
>>283 さんくす、熱が冷めてからちょっと読み解いてみる
パッと見た感じ、自分が苦戦してた部分がTJSですんなり解決されてるように見える
最低限の心得はあるから、そっちにも手を出してみるわ
>>283 いまさらだが frmae って typo してるなw
>>283 なんか挙動がおかしいと思ったら、こちらのコピペミスだった
丁度こんな感じのをやりたかったんだ さんくす
これからリファレンス見ながら解析に入る
>>286 どういたしまして
簡単に説明するよ
それぞれのレイヤの役割
message0 メッセージフレームを表示する
message1 少し目立たないテキストを表示する
message2 こいつがメインのメッセージレイヤ
メッセージレイヤを三枚使っている理由
message0 は実はキャラクタレイヤでもいいけど、メッセージレイヤにしておくと適当なマクロで position タグを置き換えるときに楽できる
message1 はメッセージレイヤにすることで cm タグでクリアされる
message2 はメッセージレイヤでないとダメ
ロディマスがコンボイだなんて認めない!
前景レイヤ0と1を立ち絵に使っているのですが 背景をそのままで立ち絵のみ二人同時にトランジションしたいのですがエラーになります トランジション先のサイズ(32x32)と一致しませんと出ます 32x32の画像なんて使っていないのですが 原因分かる方いらっしゃいますか? [backlay] [image storage="hoge1" page="back" layer="0"] [image storage="hoge2" page="back" layer="1"] [trans time="500" method="crossfade" layer="0"] [trans time="500" method="crossfade" layer="1"] [wt] [wt]
そのまえにこれでいいだろ [backlay] [image storage="hoge1" page="back" layer="0"] [image storage="hoge2" page="back" layer="1"] [trans time="500" method="crossfade"] [wt]
吉里吉里から書き出せる(saveLayerImageなどで)画像ファイルって やっぱりbmpだけですか? スクリーンショットを任意に記録できるようにしたいのですが、bmpだと 容量大きくって……。 pngとか可能になる方法があったら嬉しいです。
>>289 foreの各レイヤーに何も無いから。
ずっと上の方で書いてあるように同じサイズのnullデータを準備してダミーとして使うか、
>>290 のようにまとめてtransすれば良い。
[image storage="hoge1" page="fore" layer="0" opacity=0]
[image storage="hoge2" page="fore" layer="1" opacity=0]
[image storage="hoge1" page="back" layer="0"]
[image storage="hoge2" page="back" layer="1"]
[trans time="500" method="crossfade" layer="0"]
[trans time="500" method="crossfade" layer="1"]
[wt]
[wt]
null準備めんどくさいけど個別transしたいならこれでもok
null データってのはこと TJSにおいては意味が違うから「同サイズの透明画像」と正しくいったほうが良い
295 :
名前は開発中のものです。 :2010/10/22(金) 21:54:35 ID:8hH9Ig8p
FATEみたいなADV作りたいんだけど、吉里吉里の知識が全くの0の人向けの参考書とかってありませんか? 今日TSUTAYAで探したけど見つからなくて・・・
>>295 『吉里吉里/KAGノベルゲーム制作入門』+公式リファレンスで基本的なことは何の問題もなく理解できた
前述の本そのものが、丁寧に説明するというよりはチュートリアル的に流してくって感じだから、
自分は後で詳細な説明を探したけど、深く気にしないんなら充分だと思う
FATEはしらん すまん
ADVなんて絵とテキストが全てです。吉里吉里の知識なんてはっきり言ってどうでもいいです。 基本的なコマンドが使えればあとはスパイス程度のものです。
吉里吉里の知識がゼロならまず普通のADVを作るところから始めて Fateみたいな演出とかエフェクトはそれにプラスして覚える形だろう 吉里吉里を一通り勉強したんだけどFateみたいな演出ができません、 ならわかるけど
299 :
名前は開発中のものです。 :2010/10/22(金) 23:13:40 ID:8hH9Ig8p
>>296 ありがとうございます。その本って通販とかで取り寄せるしかないですかね?
本屋にはなかったんですが、どこで買いましたか?
>>297 その基本的なコマンドができないんですよね・・
それほど初心者なんで、すいません。
>>298 確かにそうですね。早とちりでした。
Fateの体験版と言うのをさっきやってみた 具体的にどこを目指してるのかわからなかったけど演出面ではたいした事はしてない 冒頭とかインサートされてるアニメ−ションぽい効果の事を言ってるのなら吉里吉里じゃなくAEを勉強すべき 吉里吉里的には単なる動画再生してるだけ
吉里吉里に限った事じゃないけど、プログラムやスクリプトを学ぶっていうのは "その言語で○○というモノを作るにはどうすればいいか理解する"んじゃなくて "○○というモノは本当にその言語で作られているのか、作る事が出来るのかを理解する"って事でもあるからな 実際、KAGの命令群を理解してモーションの演出とかを作成するよりも、 AEなんかで「モーションの動画」を作ってそれを再生させた方がマシな出来になる事もある。 まあ何が言いたいかっつうと、学び初めたばっかの段階で壮大なゲームをつくろうと考えるな(将来の理想として持っておくのは可)ってこったね
まあAEを動かすPCの敷居も下がってユーザーのストレージの余裕も増えてきているし、 動画でやっちまえってのは間違った解決策ではないだろうな
>>299 うちの近所の大型店にならどこにでも置いてあるけど、未だに 確かアニメイトにもあったわ
応用編のTJS版と間違えなければ、本屋を探し歩いてもAmazonでぽちってもどうでもいいと思う
補足だけど、「FATEみたいなのの作り方」は多分書いてない
他の人が言っているように「吉里吉里の基礎」を学ぶ手助けでしかないから、
その範囲を一通りマスターしてから難しいことを考えればいいと思う
スタンス的にも「いいからサンプルプロジェクト動かして身体で学べ」って感じの本だしな
Fateは全然動画使ってないのがポイントだよな 動画はどうしても動的には使えないから同質の作業をしようとしたときのコストが桁違いになるお
>>302 最初の戦いの所まで進めて見たけど、特にお互いが一枚画で対峙してるあたりの演出が動画とMOVEの複合演出のようには感じるけど、斬撃とかあきらかに動画
もしくは数枚程度の動画だから吉里吉里側で処理してるのかも知れないけど
>>301 が言ってる通り細かいファイルたくさん作ったり、いちいち起動させてチューニングしたりするくらいなら、AEで作った方がはるかに良い仕上がりになる
>>306 いや、あれ動画じゃないんだ……
極力少ない枚数の静止画とトランジションと枚数重ねと動きだけでなんとかしてる
>斬撃とかあきらかに動画 んー? なんでそう断言できるんだろ やろうと思えば普通に吉里吉里の機能だけで作れるっしょ
動画じゃないよなあ……
>>306 ごめん……訳知り顔で語っているところ申し訳ないんだけど、
>>305 が言う通り動画は使ってないんです。
全てがトランジションや回転・拡縮で表現されてます。
動画にしか見えないのだとしたら、まさに吉里吉里開発者やスクリプター冥利に尽きる
最高の評価です。本当にありがとうございました。
1分強で4人からフルボッコされましたねw
上には上がいるということを理解して精進してくださいね
>>306
>>310 だよな
動画ではない
ただその神演出をやった人はいまTM新作のスケジュール遅らせてるって噂も出てる……
諸行無常
動画じゃない? 数枚だから吉里で処理してるのかもとは思ったけど 言いたい事は ○aftereffectsよりTJSで良い演出が出来た ×一生懸命がんばったら、aftereffectsで作った動画と同じ事が出来た
清兵衛氏が同人専門雑誌のインタビューでFateのエフェクトについて語ってたね 拡大縮小と回転をαブレンドしながら組み合わせてるみたいな事だったと思う 他にも特殊なエフェクトを実現する為に専用のプラグイン作ったとか言ってた
ID:8RbUSk6b のドヤ顔が見る見るうちに曇っていく様子が手に取るようにわかってメシウマです
でも手間かかるだけでただのオナニーだよね 動画に見えるなら動画で作った方がどう考えても早い
317 :
名前は開発中のものです。 :2010/10/23(土) 00:14:30 ID:DXTMAmpE
>>316 最新PCがPentium4(つまりシングルコア) ハードディスクも100GB前後のご時世だぜ
当然それよりはるかに劣るPCも現役だったわけで、Fateはクソ重いとか批判もされてた
AE勉強するのは悪いことではないですな。あとついでに Flash もやっとくといい。 しかし動画でいいじゃん!を追求してると、なんで吉里吉里さわってんの?という究極問題に直面することになるw
なんだかんだで他のツールで文字周りを吉里吉里並みにやろうとするとめんどい
吉里吉里の文字列描画はとってもプリミティブでしょ 細かい泥臭い処理はKAG担当
何にしても動画の人はほんとROMに徹したっ方がいいなw 俺すげぇ、をやりたいんだろうけどあきらかに動画。 FatePS2版は演出移植が難しくてムービーに落とし込んだんだっけか。
>何にしても動画の人はほんとROMに徹したっ方がいいなw >俺すげぇ、をやりたいんだろうけどあきらかに動画。 解読班たのむ
演出を吉里吉里/KAGでやらずにAE等で動画として出力したものを吉里吉里で再生させてる人たちは ”動画を作れる俺SUGEEEEEEEEE”をしたいんだろうけど、 動画の職人なんて世の中にはいて捨てるほどいるわけで、更にそれだとここに来て得るメリットがないからROMに徹するべき。 ってこと? 解読になってねえorz
>>323-324 ユーモアを持って解読せよ。
>俺すげぇ、をやりたいんだろうけどあきらかに動画。
↓
>俺すげぇ、をやりたいんだろうけどあきらかにDoga。
↓
>俺すげぇ、をやりたいんだろうけどあきらかにDogggaaaaaaaN!
明らかに自爆or自滅です、と言いたいんだろう。
なんか違うような気もするけど、他に説明がつかない。
動画の人は全く会話が通じない点を除いても、微妙に吉里吉里から ずれてるんだよな〜。 この間のカットインも、最初の質問後に即出してれば印象違うだろうけど ドヤ顔で出す程の物じゃなかったし、ノベルゲで使うには使いにくい印象。
ユーモアになってない件
動画やってる人が悪いとかそんなんじゃないけど、 なんだろう、それだと本当に吉里吉里を使う理由あるの?って思う ただ用意された素材を切り貼りして作ってる感じがして吉里吉里の利点というか特徴を出し切ってないというか殺してる感じがする。 これぐらい吉里吉里側でできるだろと思うことでも全部動画任せにしてるとことかスマートじゃない。
スマートかどうかっていうより、単に生産効率性の問題じゃないかなあとも思う。 一つ一つエフェクトのアニメーションを吉里吉里に表示させるのと それらを別のソフトで"動画"として作ってしまうのと、どっちが吉里吉里的に軽いかはともかく 「どっちのほうが早く(または綺麗に)エフェクトとして用意出来るか」って所で判断されてんじゃないかな。 もっとも、その判断基準こそ作り手のスキルに直結するところなんだけども
>>329 ああ、そうだった。趣味でやってたりするとそこらへんが欠如しちまう。
そっちのほうがあってる。
同じ演出なら動画だろうがスクリプトだろうがプレイヤーには何の関係もない。
まあここで動画の作成法やらなんかを講釈するのはスレチだな。
まああえて言うなら動画は再利用が利きにくいわな スクリプトで処理すれば似たようなエフェクトをスクリプト記述で増産できる 動画はいちいち書き出さないと駄目だから
fate初めて見たがこれすげぇなw >吉里吉里の知識が全くの0の人向け にfateと同じ演出したいなら動画をまずやれってのは強ち間違ってはないと思う 吉里吉里の知識ないのに同じ演出するなら動画のほうが手っ取り早いし ただスクリプトを解説したところで演出スキルなしでは再現出来ないだろう スキルかもしくはセンスあって初めて吉里吉里で神演出ができるというもの まず吉里吉里かアニメーション制作のどっちか学ばないことには話にならん 動画の人はわかりやすいからいつフルボッコにされるのかハラハラしてたw
>>335 動画の知識無くてもセンスがあり吉里吉里の知識があればなんとかできるが
吉里吉里の知識なしでやりたいなら動画でやれ
動画の知識もセンスもないならまず動画入門書や技法書でも見てろってことですよ
動画いじってセンスがなかったら動的演出諦めたほうがいいんじゃねーの
ってとこまで言うのは余計なお世話だろ?
スレチ上場だが 無料で動画作成ソフトってない?
338 :
名前は開発中のものです。 :2010/10/23(土) 16:44:12 ID:vt0DlvMi
>>337 一応FLASHで作れる
吉里吉里にも簡単に組み込めるぞ
340 :
名前は開発中のものです。 :2010/10/23(土) 17:39:17 ID:DXTMAmpE
ここにいる人たちって皆FATE並の演出できますか?
>>340 質問の意味がちょっと広いから切り分けて答えます。
・純粋に可能か不可能か、という意味での質問であれば「可能」と答えます。
・なら実際にやってるのか、という意味での質問であれば「いいえ」と答えます。
技術的にできるかできないかよりも、やりたい演出があって、それが期待通りの
動きを実現するまでトライアンドエラーを続けるだけの時間があるかどうかの方が問題です。
同人はどうか知らないけど、商業の方ではそんな研究期間を持てる会社はそれほど多くありません。
大金持ちのタイプムーンだからできる演出というのが私の見解です。
342 :
名前は開発中のものです。 :2010/10/23(土) 17:52:17 ID:vt0DlvMi
>>340 ここにいる人 と 皆 とは同意義ではないでしょうか?
質問が破綻しているのでお答えできません
343 :
名前は開発中のものです。 :2010/10/23(土) 18:00:20 ID:19BPjpEt
俺はFateはPC版のstay nightとhollow ataraxiaしかやっていないが
何年か前にFateのオリジナル続編の同人ゲー作ろうと思っていた時期があって
トランジションの仕方やメッセージレイヤーなどマクロ作って原作に似せた雛型のシステムは作った。
しかし
>>314 でも言っている拡大縮小と回転をαブレンドみたいなエフェクトが吉里吉里で実装できなくて
いつの間にかお蔵入りしていた。
もう詳しくは覚えていないが、今思えば静止画にブラーをかけたりして上手く演出したりしていたのかもしれない。
Fateのようなエフェクトが実現できたら是非やり方教えてくれ。
>>333 作られたムービーを使ってMADを作るアマチュアならそうだろうけれど、
動画を作成したツールのプロジェクトファイルがあるならいくらでも再利用できるだろ??
つまりエフェクト多用すればするほど僅かな違いの動画が山の様に出来上がる訳だな
BGMに関しての質問です。 セーブデータAのBGMとセーブデータBのBGMが同じだった場合で セーブデータAをプレイ時にセーブデータBをロードすると BGMが最初から再生されてしまいます。 これを最初から再生せずに、途中から再生することはできないでしょうか?
大量生産大量消費大量広告大量収入大量団塊大量就職大量流民 ものがあふれる現代が一番幸せなのを作ったのはど〜れ? 一本化しないと面倒くさい
ちょっともうひとつ分からないところがあるんだけど、 プログラム言語経験があってTJSやってる人いたら、質問して構わない? TJSの無名関数は上位のスコープが見えるクロージャとして働くの? 関数の返値を無名関数にして、イテレータとかは実装できる……のか? 実験してみたんだけどなんかうまくいかないんだが、自分のTJSに対する理解不足の可能性が高いので
いいえ。TJSの無名関数のコンテキストは、その無名関数が定義されてるスコープでのthisと同じ。 無名関数の中から外側のローカルスコープは見えない。
>>352 働かないけど、上位のスコープの存在を明示出来るなら使えない事もない。
例えば
var foo = function(bar){
System.inform(bar);
};
みたいな物を作ると、System.informを呼び出す時にエラーでコケる(Systemが見当たりません的な理由?)。
ただしこの場合、global.System.inform という風に修正するとちゃんと動く。
似たような理屈で、kagオブジェクトを参照したけりゃglobal.kag のように呼べば一応は扱える。
実際の所、無名関数の中で使われる変数や関数というのは、キチンと明示してならない限り
「その無名関数の中で定義された変数or関数orクラスオブジェクト」等のように認識されてるってこったね
明示して"ならない"ってなんだ……。明示して"ない"ね
function iterator() { var state = %[]; state.x = 0; return function() { return x++; } incontextof state; } var it = iterator(); System.inform(it()); System.inform(it()); System.inform(it()); こんなかんじ?
>>353 ,354
とある説明でクロージャとして働くって書いてあったけど、
じゃあ執筆者のミスか無知って解釈でOK? さんくす
愚痴っても仕方ないけど、微妙に言語仕様が分かりにくいんだよな……
>>355 それはちょっと、美学的問題で避けたいかな?
まあクロージャが使えなくても、ちょっと迂遠な方法とればいいだけなので割り切る
>>358 単に言葉の定義の問題。実行用の環境をプログラマブルに変更できるからクロージャの定義には合致する。
javascript とかの「レキシカルクロージャ」ではないだけ。
>>359 ああ、失礼
実質クロージャ=レキシカル〜みたいな認識だったから、つい
TJSの仕様は確かに不明なことが多い 多分こういう実装だからこうなるだろう と仮説を立てて実験してみることがしばしば
TJSリファレンスみてわからなかったことが無いんだが……。 実は読んでないだろ。
トリッキーな構文書いたときのことでしょ
Javascript に比べるとよっぽど素直なつくりだと思うけどなぁ。Javascript は仕様ごと変態だ。
>>364 世の中にはそういう変態的仕様が好きな人間がいて、
TJSでそれらを使う使う機会はないと分かっていても、それでも気になっちゃうというか……
さっきの質問もクロージャを吉里吉里で使いたいから聞いたわけじゃないんだ すまん
たとえば関数の中に関数やクラス書いたらどうなるかリファレンスにかいてある? オブジェクトを作った後にそのクラスのメンバが変更されたらどうなる? スーパークラスではどう?
そりゃ「未定義」だろ? iTJSDispatch2 の仕様からしてあきらかに未定義。その先のクラスがどう実装されてるかによって実際変わるし。
未定義が多い言語が嫌いだってことなら、そりゃご愁傷さまってことで
吉里吉里がやりたいことは分かる 要するにスクリプトだろ? しかし、実際にWEBで個人で公開されてる吉里吉里入門では ほとんどがそのさわりだけで セーブデータの作成方法や、ロードの方法、画面の座標指定、エフェクトの入れ方 音声の途中からの再生、ジョイスティックの対応方法、dll作っての拡張方法などなど 実際に誰もがでくわすような、すこ〜し入った問題になると途端に情報がなくなるか 更新がとだえる
>>367 平行線になりそうな気もするけど、
言語に実用性を求めるか美学(あるいは変態性)を求めるかが違うんだろ
そんなことをしても意味がないという意見はもっともだし、反論する気もないけど、
そもそもTJSそのものに魅力を覚えているから変態的になるという点は理解してほしい
別に互いに相容れないわけじゃない
>>366 そして調査結果があるのならぶちまけてほしいw
371 :
名前は開発中のものです。 :2010/10/24(日) 15:30:46 ID:vkm4xYOz
君達、沢山議論していくと良いよ バタン
373 :
名前は開発中のものです。 :2010/10/25(月) 01:15:40 ID:svWzhBJm
初心者丸出しで申し訳ないんですが、ムービーの上に テキストレイヤーを表示させる方法がわかりません。 過去記事漁ると、初期は無理だったけど今はムービー(例えばswf)を レイヤーとして扱って出来ると書いてあるんだけど、 そっから先の情報が見当たらなく困ってます。 なんかプラグインが必要なんですか? ちなみに吉里吉里2 2.32 安定版です。
あげてしまったゴメンナサイ。
>>283 今更でごめん
このスクリプト、自動改ページに対応させるとしたら、
KAGの挙動を拾わなきゃいけない気がするんだけど、それを実現しようとすればKAG改造必至?
あまり煩雑になるようなら自動改ページは諦めるけれども、
手出ししたことがないから作業量の見当がつかない……
378 :
373 :2010/10/25(月) 16:10:07 ID:svWzhBJm
>>376 >>377 回答ありがとうございました!
理解できてませんが望む処理はできました。
書籍買ったり本家サイト調べたりでも全然進まなかったのですが、
2ちゃんで聞けるって日本もまだまだいい国だと思いましたw
もっと勉強します。
>>375 KAG改造に手を出さなきゃ無理
中でもMessageLayerを扱うのはものすごく面倒だからcmタグをうったほうがいい
初歩的な質問でごめん。 RGBそれぞれでランダムに0〜255の数値を設定して、それを元にmcolorでカラーフィルターみたいにして使いたいんだけど、10進数を16進数に変換する方法がわかりません。 ↓ここまでは書いたんですけど…… [eval exp="f.mc_r = intrandom(0, 255)"] [eval exp="f.mc_g = intrandom(0, 255)"] [eval exp="f.mc_b = intrandom(0, 255)"] [eval exp="f.mc_all ='0x' + f.mc_r + f.mc_g + f.mc_b"] [image layer=1 page=fore storage="black.png" visible=true opacity=25 mcolor="&f.mc_all" mopacity=255] 当然これだと数値が10進数のままなので上手くいきません。 分かる方いたらお願いします。
f.mc_all = '0x%02x%02x%02x'.sprintf(f.mc_r, f.mc_g, f.mc_b)
>>382 朝早くからありがとうでした!
おかげで上手くいきました。
オクテット列って何に使うの?
なんか処理するプラグインでもかかない限りは使うところはない>オクテット
ネットワーク通信とか文字列エンコードとかするには必須。
長文ですみません。 メッセージウィンドウを「大モード」と「小モード」で任意に切り替えたいと 考えています。例えば、大の時には以下のように ああああ いいいい と2行表示され、小のときには いいいい と最新の1行のみが表示されるようにしたい、というものです。 ウィンドウサイズの切り替え自体は出来たのですが、小から大に戻したときに ああああ いいいい というように、過去の表示可能な文字列まで含めて表示させる(要するに もとの大モードの時に表示されていた部分が再現される)ようにできません。 代替策として、messages[0]とmesssages[1]をそれぞれ大モード、小モード として表示サイズを変え、両者に同時に同じ文字列を表示させつつ、 表示させておくのは常に片方のみにして、それを切り替えることで同じ効果が 出せないか、と考えましたが、両者を同期させる具体的なやり方がわかりません。 同じ効果が出せれば他の方法でも構いませんので、どなたか御指南頂ければ 幸いです。
kagをいじるのでなければ、何かマクロを作って @macro name=mymacro @layer message=1 @emb exp=mp.text @r @layer message=2 @emb exp=mp.text @r @endmacro @mymacro text=あいうえおあいうえお みたいな感じでやるのかね
ああ間違えた 吉里吉里しばらく使ってなかったもので 意図汲んで下さい
390 :
387 :2010/10/27(水) 22:37:58 ID:OTLuPYax
>>388 マクロを使ったことがなかったせいでkagをいじることしか頭になく、
その発想が抜けていました。
どうもありがとうございます。
剛さんが商業に提供してるシステムは 表情変更非同期できるけどあれってKAGEX? KAGならどうやってんだろう
相談させて下さい。 hitThresholdを255に設定したレイヤで画面全体を囲って 半透明にして、調度カーテンの様に後のボタンなどを無反応にさせています。 このレイヤをクリックした時、メッセージレイヤのメッセージを進めるには、 どんな処理を呼び出したら良いでしょうか?。 このレイヤのonMouseUpイベントから呼び出したいので、TJS上からの呼び方を 教えて頂けるとありがたいです。
kag.onPrimaryClick()
>>391 KAGEXやね。キーワードは delayrun と nosync
KAGだとトランジション自体はもともと非同期だけど、コマンド実行を非同期に割り込ませる機構が存在しないので冒頭以外では無理
396 :
391 :2010/10/30(土) 19:08:40 ID:gAUPWccS
>>394 ありがとうございます。参考になりました!
やはりKAGじゃ無理か・・・
ならKAGEXの使用も視野に入れようかな
>>396 非同期に表情変更って意味が分からないけど
アニメーションで大概のことは出来るよ
tjsで配列に文字が1文字づつ入っていて これらをいちどにdrawtextで書き出すにはどうすればよいでしょうか? var arr = new Array(); arr[1] = a; arr[2] = b; arr[3] = c; として、abcと平易に出力したいのです。 今は無理やり、 while(arr[i]!=""){ kag.fore.layers[1].draw.text(10+20*i, 20, 0xfffff); i++; } のように並べてるのですが…。。
今は while(arr[i]!=""){ kag.fore.layers[1].draw.text(10+20*i, 20, arr[i], 0xfffff); i++; } とやっています。失礼しました。
何度もすみません。 書き出したい配列の個数(文字列の文字数)は 1個〜約30個、とバラバラなので forかwhileでうまく書きたいと考えています。
join メソッドは、配列を結合し、一つの文字列にします。 構文 : join(<デリミタ>, <(予約)>, <空の要素を無視するか=false>) 配列の各要素をデリミタで結合し、結合した文字列を返します。 空の要素を無視するか、が true の場合は、要素中の void は無視されます。 例: var ar = [ "a", "b", void, "d" ]; var s1 = ar.join(","); // s1 には "a,b,,d" が代入される var s2 = ar.join(",",,true); // s2 には "a,b,d" が代入される
上のレスでdrawTextがどうって言っているということは KAGは使っているんじゃないのかな そのリンク先のはKAGを使わずにTJSだけでやる場合の注意だと思うよ
>>401 うおー!joinメソッドですか。ありがとうございます。
配列の1個目を無視して2個目以降のみを文字列にする方法をググっているところです。
>>403 TJSだけ使っているのですが、intrandom()が普通に使えてしまうのです。
まぁ、気にしなくて良い… のでしょうか。
joinメソッド 構文 : join(<デリミタ>, <(予約)>, <空の要素を無視するか=false>) この<(予約)>とは何でしょうか…?
将来引数追加するかもしれね〜からとりあえず引数用の場所取っておこうかな〜 ってことじゃないかな。とりあえず無視して ", ,"と飛ばしておけばok ケツに付け足すことをせずにわざわざ予約としてる辺りこだわりを感じますなぁ
今は使ってないが、昔は使っていたため、詰めると互換性が失われることから、 予約にして公開したという可能性も……配列の個数を指定していたとかw
>>404 >kag.fore.layers[1].draw.text(10+20*i, 20, 0xfffff);
とか見ると普通にKAG使ってると思うぞ。
Initialize.tjsでUtils.tjsを読み込んでるから
intrandom()を何処かにコピペしなくても使えるのは当然。
>>405-406 なるほど。ありがとうございました。
>>407 失礼しました。自分が勘違いをしていたようです。
joinは配列全部をつなぐしか出来ないっぽいですね。
元の配列を変更することにします。本当にありがとうございました。
レス番ミスりました。失礼しました。。
たびたびすみません Arrayクラスのjoinメソッドで実際にどう処理が行われているか確認して、 それを拡張したメソッドを作りたいなと思ったのですが joinでいったい何が行われているか、はどこに書いてあるのでしょうか? systemフォルダの中身を見ましたがjoinという文字列が見つからなかったのですが…。 そもそもやろうとしていることが頓珍漢ですか?
吉里吉里開発サイトから吉里吉里のソースコードをダウンロードする C++で書かれているので悪しからず
最初に自分で書いてる while の方法で別に間違いじゃないよと言っておく count 見て for で回したほうがちょびっとだけ軽いだろうけど誤差の範囲
>>412 ありがとうございます!
TJS_BEGIN_NATIVE_METHOD_DECL(/* func.name */join)
{
// join string with given delimiters.
// arguments are : <delimiter>, [<reserved>],
// [<whether ignore empty element>]
TJS_GET_NATIVE_INSTANCE(/* var. name */ni, /* var. type */tTJSArrayNI);
if(numparams < 1) return TJS_E_BADPARAMCOUNT;
tTJSString delimiter = *param[0];
bool purgeempty = false;
if(numparams >= 3 && param[2]->Type() != tvtVoid)
purgeempty = param[2]->operator bool();
// join with delimiter
bool first = true;
tTJSString out;
tTJSArrayNI::tArrayItemIterator i;
for(i = ni->Items.begin(); i != ni->Items.end(); i++)
{
if(purgeempty && i->Type() == tvtVoid) continue;
if(!first) out += delimiter;
first = false;
out += (tTJSString)(*i);
}
if(result) *result = out;
return TJS_S_OK;
}
TJS_END_NATIVE_METHOD_DECL(/* func.name */join)
見つけたけどお手上げでした∩(・ω・)∩
そこは細かいこと省いてTJSっぽく書けば var out = "", first = true; for (var i = 0; i < array.length; i++) { if (!first) out += delimiter; first = false; out += array[i]; } こういうことをしてるだけ。+=が実際にどういう動作をするかはtTJSStringの方を見ないとわからん。
吉里吉里を落としてきてデスクトップに解凍したのですが起動できません。 試しにCドライブに移動させてみたら起動できました。 デスクトップだと起動できないんでしょうか?
OSはvistaです。
418 :
名前は開発中のものです。 :2010/10/31(日) 12:42:56 ID:yHE5VzNS
いつのまにか新バージョン出てたのか。
うわwマジだww永久凍結かと思ってたわwwwwww
BGM.tjsとかちょっと書き換えてるから、吉里吉里バージョンアップすると 全部書き換えしなおしで面倒臭いんだけど 何かいい方法無い?
書き換える部分はafterinit.tjs等に書くようにする、というのが一番いい方法かと
便乗して聞いてみたいのだけれど、例えばsaveBookMarkWithAskの中の var prompt = "栞 "; を var prompt = "Data "; みたいに変えたいだけの場合は、Override.tjsに書くんだろうけど、どんな風に 書くのがスマートなんだろうか? 新しい機能を付け加えるのは出来るんだが、既存のものを上書きするやり方が 良く分からない。
正直、その辺の定数は外部のTJSに切り出している仕様が良かったなあ…… 初期にとりあえず書いたコードがそのまま続いちゃって、今更変えるのも 難しくなっちゃったんだろうけど
最悪、array.loadでテキストとして読み込んで文字列置換→Scripts.exec という荒業もあるな
質問です。マクロの属性のデフォルトの値(|以下)を、変数で指定するにはどのように記述すればいいのでしょうか?
426 :
名前は開発中のものです。 :2010/11/01(月) 11:44:25 ID:Va/KcZFc
>>425 省略値をありえない値にして、中で条件判断して、その値だったら変数に入れ替えたら?
>>425 [eval exp="mp.hoge=tf.huga" cond="mp.hoge===void"]
>>425 スマートなやり方かは知らんが
@macro name="マクロ"
@eval exp="mp.属性 = f.デフォルト" cond="mp.属性 === void"
@tag *
@endmacro
な感じにかまたは
@tag 属性=&mp.属性!==void?mp.属性:f.デフォルト
ってやってる
マクロって静的なものだろ? 実行中の変数を動的にデフォルト引数にしたいってどんな状況よ? とか思う俺は吉里吉里スクリプタ初心者ですかそうですか
>>429 何章かに分かれてて章毎に主人公の名前が変わるとか
それはマクロじゃなくて[emb]タグとかでやることでは
>>432 >>全て私が独裁するので難しいコトは考えなくて構いません。
日本語<お前らは俺様の道具だから俺様のすばらしいプラン通りヤレ 売れたら俺様の手柄 売れなかったらおまえらのせい
絶対イヤです
フクロマンスにマジレスするおとこの人って……
>>430 そういうのはマクロの再定義をするのがあり方としては正しいんじゃない?
別に同じ内容を重複して書けってわけじゃなくて、
実際の機能を司る部分と、ラッパーとに分けて、ラッパーだけ定義しなおすとか
436 :
425 :2010/11/01(月) 20:58:08 ID:ImJv1JK2
>>427 >>428 ありがとうございました。
>>429 wait値なんかをまとめて定義しておいて、テストプレイ時の調整に
利用したいという、くだらない理由だったりします。
プリプロセッサで静的に定義するか、ワークにwait値をつっこんで、そこを操作/参照するだけことじゃ…
日本語でおk
話の流れとは関係ないんだけど TJSのプリプロセッサって結構使われてるもんなの? 独立した組み込みのプリプロセッサがあるスクリプト言語なんて珍しいと思うけど
>>440 個人的にはプリプロセッサはC言語あたり以外では使わない方がいいと思ってるからな
TJSでも選択肢に入れてない ……宗教かもしれないけど
使うポイントとしてはデバッグ版固有の無駄な機能を完全無効化したりとかかな コンパイル時に処理なので、判定自体を無かったことにできるのがプリプロセッサのいいところ
[move]タグで動かしてる画像を、Enterを押したときそこで止める みたいなことは可能ですか?
タグの機能としては無理 TJSいじる必要あり
TJSで止めるにはどうしたらいいのですか?
その質問レベルではおそらくTJSの基礎を理解してないだろうから 答えをもらっても解決できないんじゃないか
失礼しました。ググり足りなかったようです。 [eval exp="kag.fore.layers[1].stopMove()"] でできました。
>> 449 Enter を受けて、move の ContinuousHandler を外す。
tjsで[ws]のような動作をするにはどうしたらいいですか?
KAGのタグがどう動いてるかは MainWindow.tjsのタグハンドラ群を見れば大体は解る。
なんか色々画面に表示させようとしたらレイヤいっぱい必要になってしまったのですが [laycount layers=30] って多いですか?環境によっては標準に作動しないレベル?
余裕 全部いっぺんにmoveさせるとか言うなら知らんけど
>>455 ありがとうございます。安心しました。
moveは1,2個程度っす。
某社のCGモードは50枚くらい使ってたはず
吉里吉里を最新バージョンにしたら、起動ごとにユーザアカウント制御画面が表示されるようになった件
それはWindows側の問題だ。
え?
配布されてるバイナリにはなんの問題もない。あんたの環境の問題だ。 IEでダウンロードして、エクスプローラでzip展開すると、デジタル署名が無いファイルはセキュリティ警告が出るはずだが、それとUACを勘違いしてるってことはないか?
え?
よくわからんのだが、7を買うとそうなるのか?
>>463 win7だけどUACなんか発動しないぞ
>>463 7でなるんならVistaでもなるはずだけど、完璧に設定次第
仮にそうなったとしても数クリックで解除できる
フォルダの場所が変わっただけじゃね
セキュリティの問題じゃね? 俺も最初なんかインストールするたびにアカウントがどうのこうのと五月蠅かった 7とかセキュリティがちがちにしたせいで、逆に使いづらくなったって印象だよな 買っていきなりその洗礼を受けたら、初心者とかまず無理
栞に関してなのですが、 記述の一番頭に @store enabled=true その後 *scene1|シーン1 *scene2|シーン2 *scene3|シーン3 と言う風に適当な場所にラベルを挟んでみたのですが、どのラベルで 栞を挟んでもシーン1の場面が保存されています。 かぐや姫で書いてるのですが、ブラウザのラベル移動のアイコンを 押せば1,2,3とそこに飛ぶので、記述ミスではないようなのですが。 どなたか回答頂けますでしょうか?
多分縦棒が全角だから
吉里吉里は公式にWindows 7を動作環境に認定してないので問題ない。
>>469 ありがとうございました。
アッサリと解決してお恥ずかしい。
自分のPCでは|の入力を半角で受け付けなかったので
コピペしてきました。
>>471 受け付けないことはないと思うけど……
プログラミングとかすれば多用する記号だし
全角で|を入力した後にF8を押して半角にするなり、最初から半角で | と入力できないか?
>>471 プログラムの前にPCのいじり方くらい調べてからこいや。
インクルードガードとデバグ版管理にTJSのプリプロセッサ使うけどみんな使わないの?
プリプロセッサが必須なほど大規模なもん組まないしなあ…… 美的には受け入れがたいから
あれは本来IDE側であればいい機能だからな 言語に入れちゃうのは古臭い
新しめの言語C#ではプリプロセッサが活躍中だよ。 まだか define ことだけさして古いとか言っちゃってる??
いやあそれも含めて2段階に構文や意味論の解析が入るのはエレガントでないだろう
C#でお仕事もしてるもんだが、 過程や必要性を無視して「プリプロセッサが〜」と言うのは正直どうかと
ああ、479は477に対してね プリプロセッサを導入した場合のメリット・デメリットなんかを考えずに、 最新の言語でもプリプロセッサがあるからOKというのは暴論すぎやしないか?と 本当に手放しで推奨できる機能なら、あらゆるコンパイラ言語が取り入れてるだろうよ
>>480 C言語の#defineやマクロでバグを出した人たちが過敏症になってるだけだろ。
まあおかげでC#ではそこら辺は削除されちまったけどな。
Cのプリプロセッサ実装は大抵独立してるから他の言語でも容易に使えるよね
VC++のExpressでもダウンロードしてcl.exeのプリプロセッサだけ使うとかよくやるよな。
メリットとデメリットとがあると言ってるのに、 過敏になってるだけと切られたら、水掛け論にしてくれと言わんばかりなんだがな
プリプロセッサはファイルが処理される順番に依存するので 依存関係を自動で解決する最近の主要な言語とは相性が悪いんだよね。 おかげでC#なんかシンボルを定義できる場所と有効範囲に厳しい制限がある。 TJSは明示的に他のファイルを読み込むのでその点については相性が良いといえば良いけど設計が古いといえば古い
設計が古いことそれ自体は責められるべき事由ではないけどね。 枯れた発想が安定した挙動につながる事もあるし
ノベルゲームで、途中でミニゲームをはさんだりするとき 通常のノベルズのときに使っているレイヤと、 ミニゲームで使うレイヤって 変えた方が良いですか? 同じでかまわないですか? 管理のしやすさや、その他不具合が生じるか、などを教えていただきたいです。 例) 通常はlayer=0,1,2,3 くらいを使っていて、ゲームのときはレイヤを10くらい使いたい →このとき、ゲームの画像を表示させるレイヤを layer=0,1,2,3,... と使うべきか layer=4,5,6,... と使うべきか layer=10,11,12,... あるいは layer=100,101,102,... など どう振り分けるのが良いでしょうか。
参考にならんと思うが、俺は最初に50枚くらい確保しておいて、 ベース 00−09 背景および重ね背景・エフェクト・動画・イベント画 10−29 各キャラ立ち画 30−39効果背景・エフェクト 40−48ミニイベント ミニゲーム パラメーター 49 全前景レイヤーリセット時のダミー背景 みたいに使ってる。 正直実に無駄な使い方だが、注釈書かなくてもレイヤーナンバーだけでだいたい何をしてるのかわかる利点はある
無機質な番号だと間違いのもとになるから変数にしたらいいんじゃね
あとから「あ、レイヤーもう一枚いるわ」ってなった時に ・立ち絵レイヤー・・・0と1と14 とかになった時が切ない
メッセージ履歴開閉時にトランジションさせるにはどうすればいいでしょうか
>>488 ありがとうございます。
予めそれぞれに割り当てておいた方がやはりラクですよね。それでやってみたいと思います。
>>489 ご教授ありがとうございます。
drawTextだと、書き出す左上の位置を決めて、そこから左寄せで文字を描画しますが 右上の位置を決めて、右寄せで文字を描画する方法はありますか? 点数の表示などをできればそうしたいな… と思ったのですが
>>493 getTextWidthだっけ(違うかも)、名前忘れてしまったけれど
「この文章を表示したら横幅がどれだけになるか」っていう関数がある
それを使って横幅を求めてからそれに応じて適切な場所に表示する
>>494 うーん、生易しい方法はないのですね。
ありがとうございました。勉強になります。
>>493 自家製レイヤ上での話だよね?
str : "123456" // 123456を描きたいなってとき
hogehoge_top // 書きたい行の高さみたいな
var tw = font.getTextWidth(str); //strが画面で取る長さを計算
var def_left = {本来書き出される(画面上での)左上の位置を取得};
var def_width = {一行の(画面上での)長さを取得};
drawText(def_lef + def_width - tw, hogehoge_top, str, 0x000000, 255);
多分大体こんな感じで行けると思うよ
テキストの描画面がどうなっているのか分からないので何とも言えないが、 一般的には、長い桁の後、短い桁が表示された場合のことをちゃんと考えておこう。
あと
>>496 のようにする場合、長すぎて左がはみだす場合への対処なども必要だな
画像をゆっくり下に移動しながら見えなくしていきたいのですが… [eval cond="tf.flg==1" exp="tf.img_left=300, tf.img_top=275"] [image layer=2 storage="test" left=&tf.img_left top=&tf.img_top page=fore visible=true] [move layer=2 path="(&tf.img_left, &tf.img_top+100, 0)" time=1000] こうすると、左上にポーンと飛んでいくのはなぜでしょうか? condのフラグはしっかり成立しています(なので、imageでは(300,275)に表示されます)
試してないからわからないが、たぶんそれだと明後日に飛んでいくだろうな そう言う時は、とりあえず適当に数値入れて目的の位置に微調整してその数値を補正値にすればいい。
[move layer=2 path='&@"(${tf.img_left},${tf.img_top+100},0"' time=1000]
で解決しました。
>>500 ありがとうございました。
>>499 [move layer=2 path=&"'('+tf.img_left +','+ tf.img_top+100 +', 0)'" time=1000]
ってしてみたら?
すまんリロってなかった 解決したようでなにより
503が「ロリってなかった」に見えた……疲れてるな
袋文字の太さと強調度をゲーム起動中に変えることはできないでしょうか
kag.current.edgeExtent = 2; // 袋文字のふとさ kag.current.edgeEmphasis = 0xff << 2; // 袋文字の強調度 assignやstoreにも対応してるはず [er]や.clear()ではリセットされないので 変更後、初期値に戻す際もevalで
>>506 ありがとうございます
無事問題解決しました
あんまり見ない気がしますが [iscript]中じゃなくて、KAGで [if]や[else if]、[endif]を使ったとき インデントってしますか? [if]の中に[if], [else if]などが入ってきたときややこしくて…
>>508 自分はする
ややこしいと思うのならしてみればいいんじゃないか?
>>509 ありがとうございます。やりたいならやれってかんじですね。やります。
あと質問なのですが
zoomプラグインを使っているのですが
「スクリプトで例外が発生しました
(Int)12からObjectへ型を変換できません。Object型が要求される文脈で…」
というエラーが発生するのですが、これはどういうときに発生するのでしょうか?
何をやってもこのエラーから抜け出すことができず…
function _zoom(c1,c2){
zoom_object.startZoom("pic.png", 12, 1, void, 150, 35, c1, 30, 150, 35, c2, 30, 150, 0);
}
このようなソースですが、c2が600を過ぎるとエラーを吐くっぽいのです。
エラーを吐いたときに出るスクリプトエディタはMainWindow.tjsの下記を指しています。。 //--------------------------------------------- 属性->レイヤオブジェクト -- function getLayerFromElm(elm, prefix = '') { // elm に指定されている page と layer 属性から、該当する // オブジェクトを返す // prefix には、属性名の前につけるプレフィクスを指定する var base; if(elm[prefix + 'page'] == 'back') base = back; else base = fore; var layer = elm[prefix + 'layer']; if(layer == 'base') return base.base; // 背景 if(layer[0] == 'm') ←←←←←←←←←←←←←←←この行の先頭 { // message? ( ? = 数値 ) // ここではあまり厳密にエラーチェックはしない if(layer == 'message') return base.messages[currentNum]; return base.messages[+layer.substr(7)]; } return base.layers[+layer]; }
初心者質問で申し訳ありません。 メッセージ履歴で、通常のメッセージ窓と同様にフォント関連を設定したいのですが、 影や縁取りなどといった指定はConfig.tjs内では出来ないようで この場合はHistoryLayer.tjsなどを変更改造するものでしょうか? またその場合、具体的には何処をどう書き換えるものでしょうか?
Stratosphereの「ハイパーテキスト&ポップアップ」プラグイン導入したら、 トランジション時に落ちるようになってしまいました。 できればプラグインもトランジションも使いたいのですが、どうすれば両立できるでしょうか? (公式過去ログでも一つだけあった記事では解決していない様子)
・トランジション実行時の動作確認を行っていません。 って注意書きがあるぞ。 プラグイン使って手に負えない状態になるなら まず諦めて別のやり方を模索するべき。
色々調べてるうちに混乱してきたんだけど ますウィンドウがあってその内側にクライアント領域がある そこにプライマリレイヤー表示されていて、それを親レイヤーに背景や前景、メッセージレイヤーが存在している という理解であってますか
間違い。 KAGは fore.base がプライマリレイヤ。 トランジションで入れ替わるのでいろいろ動作が複雑。それを嫌ってかKAGEXはプライマリレイヤは別にわかれてる
広義では合ってるけど狭義では間違ってる、ってとこじゃないかな?
大まかな流れを把握する、という意味でなら
>>516 で大体のとこは合ってる。
プライマリレイヤの下に背景・前景(or キャラクター画像等々表示用)・メッセージレイヤが存在してるという感じね。
ただ細かく見ていくと、プライマリレイヤは常に一定とは言えない。
>>517 の言うようにfore.baseがプライマリレイヤ(imageタグなんかで使う layer="base" page="fore" がコレ)なんだけど、
同じような役割を果たす意味合いでback.baseというのが存在する。layer="base" page="back" がコレね。
transタグなんかでトランジションを行うと、このfore.baseとback.baseがそれぞれ役割を入れ替える。
fore.baseがback.baseに、back.baseがfore.baseに。といっても名前が変わるワケじゃなくて、
プライマリレイヤがfore.baseという変数(オブジェクト)であることは変わらない。ただしfore.baseの中身は変わる。
まあつまりくそややこしいってこってす
>>517 ,518
レスありがとうございます
つまり裏表の背景レイヤーが一番上の親レイヤーということであってますでしょうか
>>513 laycountで40枚くらい用意しています。
521 :
510 :2010/11/09(火) 21:58:35 ID:OzwgQ3+b
前スレ
>>313 を参考に、レイヤ数のところを ' ' で括ったらエラーが出なくなりました。
お騒がせしました。
よくわからなくなってきた transするとforeとbackが入れ替わるの? 上書きのイメージだったんだけど
入れ替わりじゃないと、トランシジョンにならないじゃん
いちいち書き換えてたら無駄だから差し替えてるだけだと思うけど
>>522 トランジション処理は最初から最後まで両方の完全なデータが必要なので上書きしたら成立しないよ
内部的にはトランジション実行中は、内部的な隠れバッファに元レイヤと先レイヤの合成結果が生成されて、
それが元レイヤのかわりに画面に表示されている状態になる。
トランジションが終了した時点で元レイヤと先レイヤを完全に入れ替えることで処理が完了する。
トランジション元と先を両方visibleな状態で実験すると動きがよくわかるよ
なお、KAGは常時表裏全部のレイヤを2枚づつもってるけど、これは特に必然性があるものではない。
処理の説明をわかりやすくするためにああなってるんだろうけど、構造が複雑で
トランジションの本質という意味では逆にわかりにくいかもしれない。
ダブルバッファリングという技術がだな(ry
ダブルバッファリングとは、描画中バッファと表示中バッファとをわけることで、描画のちらつきが画面に出るのを防止する技術のことで トランジション機構とは特に関係あるものではないよ
急に質問が具体的になる時期が年に二回ほどあるなw
コミケのマスターアップまでCDプレスならあと3〜4週間くらいか
530 :
名前は開発中のものです。 :2010/11/10(水) 15:26:46 ID:+QKG3uQe
誘導されてきました。 格闘ゲームの体力ゲージみたいなのってどうすれば再現できますか? 初心者なので詳しく教えてほしいです。
単色の四角棒で良ければ、LayerクラスのfillRectメソッドも簡単だあね 最初から凝ったことをやろうと思わないのが、完成させることにとっては大事よ
棒グラフのプラグインは3つか4つくらいは出回っているんじゃね
質問です。 現在、セーブロード画面を作っています。 01:セーブタイトル 2010/11/11 11:50 02:セーブタイトル 2010/11/11 11:57 03:セーブタイトル 2010/11/11 11:59 と表示しています。 その表示を横二行に表示したいのですが式が分かりません。 セーブナンバーだけ書きますと、 01 04 02 05 03 06 のように並べたいのです。 現在 [locate x=100 y="&30+31*tf.save_i"] と繰り返し処理をしています。 どうぞよろしくお願いします。
xの値もエンティティで示せばいいんじゃないかな [locate x="&( (tf.save_i % 2) ? 100 : 200 )" y="&( 30+ 31*( (tf.save_i % 2) ? tf.save_i : (tf.save_i-1) ))"] みたいな具合。この場合、tf.save_iが1ずつ増えていく(0, 1, 2, 3.....みたいな状態)を想定してて、 ・今のtf.save_iの値が値が偶数(2で割った時に余りが出ない) → xの座標は100, yの座標は 30+ 31*tf.save_i になる ・奇数(tf.save_i を2で割った時に余りが1出る) → xの座標は200, yの座標は 30+ 31*(tf.save_i-1)になる=つまり↑の偶数と同じy座標 実際に挙動チェックしてないんで↑のlocateタグだと正常に動作しないかもしれないけど、 まあちょっとした考え方のヒントだと思って見てくれ。 " ? 100 : 200"みたいな式がどういう意味か判らないってのなら 吉里吉里にくっついてるTJSリファレンスの「式と演算子」とかいうページ見てね
いけね、今更ながら間違ってることに気付いた。
これじゃ
01 02
03 04
05 06
みたいな表記になっちゃうね。
>>534 みたいな形で実現したいんであれば、xの値を
[locate x="&(tf.save_i < 3 ? 100 : 200)" y="&30+31*tf.save_i"]
みたいにしてやるのが適切か。3の部分は1列辺りに表示したいセーブデータ個数に応じて変えてね
537 :
530 :2010/11/11(木) 22:58:11 ID:fNzqkKjv
>>531 pimageのタグを見落としてました。
ありがとうございます。
538 :
名前は開発中のものです。 :2010/11/12(金) 11:32:00 ID:mqJpnlZR
DirectDraw対応してよ
539 :
名前は開発中のものです。 :2010/11/12(金) 16:35:56 ID:GGq9T9kq
ウィンドウサイズを800×600に変えたんですけど ユニバーサルトランジションがうまくいかなくなっちゃいました 640×480のときは特に問題なかったのですが 800×600にしてからは変化が始まるところがズレてしまいます・・・ ぜひご指摘願います
恐らくルール画像のサイズが合っていない リファレンスをちゃんと読め
>>540 まぁ640×480で出来て800×600で出来ないのは
サイズがおかしいのかな?と思ったのですが・・・
元のファイル画像が640×480だし
サイトを見てもサイズについて触れられていなかったのでどうしたもんかな・・・と
もう少し調べてみます
ありがとうございました
何も考えずにルール画像を800*600に拡大するよろし バックアップは忘れずにネ!
>>542 やっぱりそうしてみます!
ありがとうございました
吉里吉里でフォントをフリーフォントに変えたいのですがどうしたらいいですか?
リファレンスを一通り読んでみることをお勧めする。
読者のPCにフォントがインストールされてない場合のことも考慮してくれな レンダリング済みフォントという方法も可能だけど その場合はフォントの規約をよく確認する必要がある
拡大縮小と反転がうまくいきません。 例えば32*32の絵が敷き詰められてるツクール素材みたいな画像があってそこから 切り抜いて拡大したいんだけど、 loadImages(img); setSize(64,64); stretchCopy(0,0,64,64,this,0,0,32,32); なら動くんだが loadImages(img); setSize(64,64); flipLR(); stretchCopy(0,0,64,64,this,0,0,32,32); にすると上手く動かない。 なんででしょうか。
多分だけど flipLR() で画像全体が反転してコピー元の座標が変わったため。 例えば 素材が 640*32 なら stretchCopy(0,0,64,64,this,640-32,0,32,32);
配列の個数によって、時間の長さを変化させたいと考えています。 macro.ks 中 [macro name=inputtime] [eval exp="tf.inputtime=20000" cond="mp.ttime >20"] [eval exp="tf.inputtime=10000" cond="mp.ttime <=20"] [eval exp="tf.inputtime= 6000" cond="mp.ttime <=10"] [eval exp="tf.inputtime= 3000" cond="mp.ttime <=5"] [endmacro] として [inputtime ttime="tf.test_array.count"] [emb exp="tf.inputtime"] としましたが、test_arrayには要素が8や10や15などあっても、 tf.inputtimeが3000にしかなりません。なぜでしょう?
[inputtime ttime="&tf.test_array.count"]
表に読み込んである画像名と変数が同じ場合は トランジションしないようにしたいんですが すでに読み込まれてる画像名を参照する方法ってありますか?
自分でとっておけばいいんじゃ…
>>554 ググったらありました
ヒントありがとう
r2若干動作が重くなったな。 軽いファイルだとたいした事無いけど複雑にレイヤーを重ねると若干駒落ちやラグが出るようになった。
557 :
名前は開発中のものです。 :2010/11/19(金) 09:48:36 ID:LHC10uOj
Direct2D対応しろよ
吉里吉里はベクターグラフィックス使わないんだからDirect2Dなんか無意味 GPU使いたいなら3Dで十分
Layer.stretchCopyを厳密にチェックしてるのか厳密すぎるくらいチェックしてるのかそのあたりで重くなってると思われ 実際多数同時に拡縮moveとかすると232では問題無かった物がカクカク重い
232 rev2 の変更点って、232 で入った「Layer.stretchCopy での stCubic, stLinear が効かなくなってた」というエンバグの修正だぞ。 つまり 230のころの動作に戻ったってこと。 特定条件にマッチしなかった時は affineCopy に流れる実装なので、はじめから全部 affineCopy にしておけば 232 と同じになる。 ただし stCubic, stLinear は使えない。 affineCopy だとマルチコア効果があるはず。一応
230に先祖返りしたんだろうと俺も思ったが実際重くなってるのは事実 232に戻すとまともに動いてるのだから、じゃぁ後はどこの問題なんだろうな 画面サイズより大きめの拡縮回転を5〜6個同時に動かしてベンチ取ってみると良い
>>561 いや、書いてあることを良く読んでほしい。
stretchCopy の type指定を、stCubic か stLinear 「以外」、例えば stFastLinear とかにすると、
232rev1 と同様、そのまま affineCopy にフォールバックするコードになってる。
ってことで、まずはそれをためしてみなされ。stCubic / StLinear が重いのは元からの仕様で、
232 でたまたまそれが機能しない状態になってた、ってことだ
もし既にそれを試して、それでも極端に重いってことなら、他になんか問題があるんだろうから、
dee たんに報告をしたほうが良いと思われる
俺の書き込みが乱暴で読み直すとキレてるように見えるな。悪い。 一人で検証するとどうしても足場まわりの問題の可能性とかも出てくるので、出来れば複数の人で検証して欲しかったのだけど。 そうすれば確実なので。 230以降はあるのだが、それ以前の環境を入れたDVDが見つからす焦ってる^^;
なんかサンプルコードあげてくれたらこっちでも検証するよw
>>564 氏に同じく、コードあれば検証したいです
多分
>>560 の指摘で合っているかと思われますが・・・
拡縮回転は多少使っていて、肝心なところでカクつかれると怖いので。
つまり拡大縮小は吉里吉里にやらせないで そっちで画像用意してね☆っていうDeeタンのお願いだったのさ
ノベルゲームのユーザーって驚くほど低スペックだからな
3Dエロゲーマーの産廃スペックをなめちゃいけない。 本当に窓から投げ捨てろと言いたくなる
豚切りですみません。よくある質問かもしれませんが…
セーブデータがサムネイルの場合[copybookmark]がエラーになります(.kdtだと正常に動く)
公式の過去ログでこういった記事を発見し、
http://www.kirikiri.info/bbslog/log/006954 MainWindowとひたすらにらめっこしたのですが、私の読解力ではまだ少し追いつくことができませんでした;
「サムネイル部分とセーブファイルとしての部分は別に取得」を理解する手がかりとなるヒントを
少しでもいいのでお力添えいただけると幸いです。
iPhoneアプリをwinにも移植する事になり今日から吉里吉里を使う事になりました。 スレの内容を色々と参考にさせて頂きます。
WindowsPhoneじゃなくてPCのWINなのか
おお がんば
>>569 過去ログ6955さんの言っている意味が分かるかい
サムネイル型栞ファイルは、BMP画像とセーブデータがくっついた形式ってわけだが
デフォルトのcopyBookmarkはどこまでがBMP画像で、どこからがセーブデータか
判別することが出来ない
結局
function copyBookmark()内の
Scripts.evalStorageと
Dictionary.saveStruct〜に
オフセット値を与えてやればよい
でオフセット値の算出方法ほかは
loadBookMarkFromFileとsaveBookMarkToFileの中にヒントがあるよーんと
574 :
569 :2010/11/21(日) 19:22:57 ID:zYgN0HfG
>>573 ありがとうございます!MainWindowだけは触るのに物怖じしていましたが、
なんとか教えていただいた場所に該当の式を入れたら無事にコピータグが動作しました。
データとは別にサムネイル画像の更新には手間取りましたが…
内部的な理解はあらゆる意味で必要ですね。がんばります。
素朴な疑問 ”|”って正式には何て読むの? 初心者とかに説明する時に結構手間取る
「バーティカルバー」でググれ
”|”でぐぐったら検索結果すら出なかった バーティカルバーって言うのか 勉強になったありがとう
縦棒って身も蓋もないなw
JIS的には「縦線」です
あいつにバーティカルバーなんてカッコイイ名前があったなんて・・・
582 :
| :2010/11/22(月) 21:18:41 ID:LX++krLF
「きごう」を変換していくと | は「縦線」となっているな。 という訳で「半角の縦線」でいいんじゃないか?
【正しい説明】 エ……エルの小文字じゃないんだからね! ボクには”バーティカルバー”ってちゃーんとした名前があるんだから……もう!
える しっているか
俺が初めてやつにあったときは、そう、棒線
ふだんあんだけスレに難解で高度なスクリプト書いてるオマエらがなんでバーティカルバー知らないんだよw
だってあれ縦棒だし・・・
える「わたし、気になります」
「パイプ」は?
それは UNIX民の方言だな
なぜそんなバイブなんて名前になるんだ・・・・
ひぎぃ
パイプだyp!って自分に突っ込んどきますorz
吉里吉里のソースコードではvertline
すみません。 吉里吉里公式ガイドブックのサンプルの音楽モードのカスタマをしてる 最中なんですが、横一列のグラフィカルボタン(曲の画像)の表示数を 設定するには下記のサンプルをどう変えればいいかわかりません。 一列目に5曲表示したら6曲目から10曲目までは二列目、 11曲目から15曲目までは三列目にいう風に表示したいのです。 座標はいいのですが、ボタンだけ改行せず右端まで表示されて 困ってます・・・ [eval exp="tf.sound_x = [1, 31, 61, 91, 121, 1, 31, 61, 91, 121, 1, 31, 61, 91, 121]" cond="tf.sound_x === void"] [eval exp="tf.sound_y = [10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 30, 30, 30, 30, 30]" cond="tf.sound_y === void"] *sound_loop ; 曲名を表示 [locate x="&10+10*tf.sound_i" y=10] [emb exp="tf.sound_caption[tf.sound_i]"] ; 曲名の上にグラフィカルボタンを表示 [locate x="&tf.sound_x[tf.sound_i]" y="&tf.sound_y[tf.sound_i]"] [button graphic="soundmode_m_waku_button" target=*sound_select exp= "&'tf.sound_select='+tf.sound_i" hint="&tf.sound_caption[tf.sound_i]"] [jump target=*sound_loop cond="++tf.sound_i < tf.sound_caption.count"]
貼られたスクリプトでは質問と違って ボタンはちゃんと5列3行になって曲名が横1列に並ぶように見えるんだが。 どういう変えるかとなると [locate x="&10+10*tf.sound_i" y=10] を [locate x="&tf.sound_x[tf.sound_i]" y="&tf.sound_y[tf.sound_i]"] みたいにすればいいんだけど。 エンティティや配列がよくわからないなら ループ処理やらずにembとbuttonを単純に15個ずつ設置した方が悩まずに済むよ。
598 :
596 :2010/11/26(金) 15:18:45 ID:6dF4PoD3
>>597 うまくいきました!
ありがとうございます\(^∇^)/
600 :
名前は開発中のものです。 :2010/11/27(土) 20:43:12 ID:93hEsKCs
すみません、質問なのですが。 メッセージレイヤ0=全画面 メッセージレイヤ1=読み込んだ固定枠内 というように使い分けているんですが、メッセージ履歴を表示した時、全画面表示した時の文字しか履歴に残らないんです。 両方の文字を履歴に残すには、どのようにしたらいいんでしょうか;; 初歩的すいませんorz
[history output=false]にしてなきゃ全部残るはずだが。 ソース見ないとそれ以上はわからん
レイヤ1の文章量が少ないなら、レイヤ0の履歴の後に改行なしで くっついてて見落としてるだけとか。
603 :
名前は開発中のものです。 :2010/11/27(土) 23:31:43 ID:93hEsKCs
今、再三確認しましたが[history output=false]というタグは使ってませんでした。 そして履歴の後にもくっついてません・・・!! となればconfigいじった時に何か変なことをしてしまったのか;; と思い、見直すもどこがまずいのかわからず・・・。 い、いざとなれば[history output=true]で・・・? 回答、ありがとうございます! もう少し考えてみます・・・;
あとは、マクロやサブルーチンの中に使っている可能性くらいしか思いつかない
605 :
名前は開発中のものです。 :2010/11/28(日) 00:20:22 ID:/qoj5KsZ
冒頭に[history output=true]をいれたら、全て上手く行きました。 ・・・何がいけなかったのか。 根本的解決ではないようでスッキリしませんが、なんせ助かりました! とにかくこれで万事おkです!! ほんとうにありがとうございます!! これからも精進します;;
history outputでグローバル検索でもしてみるといい。 どっかにfalse設定されてるんじゃないか?普通に考えて。
他人の作ったサブルーチン組み込んでて、指定間違えてるとかな。
608 :
名前は開発中のものです。 :2010/11/29(月) 22:07:02 ID:kykm2Jnx
グローバル検索したら・・・ありました;; ほ、ほんとうに申し訳ないです;完全な見落としです。 助言を下さった皆様、心から感謝いたしますっ!!! お騒がせして本当にすみませんでした;
またよくありそうな質問ですみません。 ゲームをプレイ→kag.goToStartWithAsk()でスタートアンカーに戻る→ そのまま吉里吉里を終了せずにニューゲーム開始 とやると、 ニューゲームの中でもその前にプレイしていた栞の変数が反映されたままなのですが これは吉里吉里の仕様なのでしょうか? スタートアンカーは栞の1000番をロードしているんですよね… みなさんはどう対処されているんでしょう。clearvarとか使っているのかな。
スタート画面でclearvar
初めに自前で変数やらレイヤやら音量やらリセットさせればいい
612 :
名前は開発中のものです。 :2010/12/03(金) 04:17:51 ID:6wJn4leS
またもや質問、本当に申し訳ありません; 前景レイヤについて迷っているのですが・・・ configで前景レイヤの数を増やすのと、fgimageの画像数を増やすのと、 どちらがシステム、容量的に大きくなってしまうのでしょうか…; 具体的に何を迷っているかというと、 1のっぺらぼうのキャラ立ち絵に、表情のレイヤを載せる or 2それぞれ表情の違うキャラの立ち絵を作る の、どちらの方がシステム 容量的に良いものとなるのか、というもの所です。 自身で計算しようとしたのですが、計算方法がわからず;; 皆様の経験上、計算上どちらを最良とするか よろしければ教えて頂けないでしょうか;;
>>612 「レイヤの10枚や20枚では大差ない」が答えになると思う
それって1msと2msどっちが早いですか?と言う質問と一緒 負荷的にはどっちでも大してかわらん 個人的にはレイヤーは少ない方が管理が面倒じゃなくていい 一人のキャラに1レイヤーで済むところを、一人のキャラに2レイヤー使うわけで。 実際に組んで見るとわかるが、シナリオソース500k程度のゲームでも立ち絵差し替えは結構膨大になるから同じ結果が出るものにわざわざ倍の手間をかける必要は無いだろ? あと、キャラをmoveさせる時とかエラく面倒になるぞ……と忠告 あとノッペラボウに表情だけ差し替えるなら問題無いけど、首から上とかを別レイヤーでごっそり差し替える場合、継ぎ目が拡大したりしたときに切れたりかぶったりして微妙にわかってしまう事がある あくまで滅多に出ない事だけど、まぁそう言う部分も考えると一枚ペロンと変えた方が無難だな
>>612 じゃないが…つまり、単純に1の方が画像サイズの合計が少ないので良い、ということか。
深く考えずに1の方が軽いなーと思ってた
…ていうか、pimageタグ使えば一枚のレイヤで立ち絵(表情付き)表示できるぞ
あっすまん そこ読み飛ばしたorz
いや、実測しようも無い部分なんだが、二回読み込みに行くのと、一回で済むのとじゃ単純に2の方が早くないか?とは思う あと合成する画像の書式はわからないが例えばPNGにしたとしてもまったく何も無い透明だけの画像でもヘッダー^やフッダーその他諸々の無駄情報がついてくるわけで小さいとは言え無駄な読み込みだろう? 処理が早い=処理が軽いと言う図式にはならないんだけど、処理上はたとえばレイヤー1とレイヤー1.5(そんなの無いけど)に二枚読み込ませて表示させてるような物なんじゃないのかな?
顔パーツ(表情)が少ないなら2 多いなら1 眉3種類 目6種類 口3種類 服2種類の場合、全部で108通りの組み合わせになってしまう 2なら108枚の画像を用意しないといけない(使わない組み合わせもあるだろうけど) 1なら14枚の画像ですむ
>>618 あっ、そこまで細かくわけるのか
それなら1.がいいな
そこまで細かくわけるのなら、俺が作ってみたい
>>617 毎回2枚読みさせると当然そっちのが時間かかる、んだけど、実際にはキャッシュ効くから思ったほどはかからなかったり。
レイヤわけたまま保持しつづけるといろんなところで処理が大変になるけど、
image でベース読み込み、pimage で差分合成読み込みってするだけなら結果は1枚になってるのでそのあとの手間は差がない。
あとは結局
>>618 の言ってる通り素材の管理の手間だね。
621 :
名前は開発中のものです。 :2010/12/03(金) 16:48:00 ID:6wJn4leS
なるほど・・・!!ありがとうございます!!
基本的には微々たる差、手間を考えるなら2の方が良い…といった感じでしょうか!?
>>618 さんの言っている数よりは少ないんですが、
キャラ一人につき 立ち絵3種、表情5種、服2種があるので
2 にした場合一人に使う素材が30種×人数約15人で
合計450枚。
1 の場合、合計150枚 (・・・あれ?計算あってます?あってるな
差が300枚…とみたらいけるような…でも2の画像の方が大きいものばかりですよね;;
と思い、1にしようかと考えると、
1にした場合、configで前景レイヤの数を(現在4)最低8にはしないと、で。
これは…問題アリ?ですかね;
説明には「数が多いと速度が低下したりメモリを消費します」とあるのですが;なんとも微妙;;
あ、あとあまり関係ない話かもしれませんが、
皆様は前景レイヤの画像の書式を何でなさっていますか?
私個人的には、今回かなり画像数が増えそうだと感じたのでjpgで抑えているんですが…
622 :
名前は開発中のものです。 :2010/12/03(金) 16:57:39 ID:6wJn4leS
・・・ん!?
>>615 さんのおっしゃったpimageを使えば…configでレイヤ数を増やす必要なし!?
すみません、今までpimageタグを使ったことがなくて;
数回読み返して気付きました、せっかく助言していただいたのに、
無視したかの様な事を書いてしまい、本当に失礼いたしました;;
>>622 自分は前景レイヤはtlgが多いな
それとさっきからゴミがいっぱいついてるよ
つ;
速度の問題に関して まあふつーのノベルでしょ?ペンティアム3とかの骨董パソコン相手にしなきゃ大丈夫でしょう 適当な立ち絵画像用意して ラベルとジャンプ命令で100回ぐらい立ち絵表示を繰り返してみよう メモリ使用量はタスクマネージャ見ればよいし アドバイス求めるのはいいけど、最終的には自分で確かめようぜ ゲームのユーザーに対してサポートを行うのは君だ 自分はPNGで作ってTLGへ変換
立ち絵jpgは無いだろ
626 :
名前は開発中のものです。 :2010/12/03(金) 18:07:28 ID:6wJn4leS
>>622 あ…ありがとう//
・・・な、なんかすいません。
とにかくdataフォルダに入ってるメモリ数が気になって気になって…!!!
とにかく軽くしないと軽くしないとと考えてました…!
>>625 jpgはない!と言ってもらえて救われました
思う存分、tlgにします!
そしてメモリ使用量、タスクマネージャーで見てみます!
>>624 ユーザーに対してサポートを行うのは君だ に、なんか胸打たれました!
この人若すぎてまぶしい 死にたくなってきた
いや私は何か、この人がオンの知り合いに似ている感じがして
ついほっとけなくなってしまう。
>>626 まあがんばれ
ネットブックは骨董品並みのスペックだから、軽くて悪いことは無い
俺はレイヤーいつも前景50枚くらい確保してるが一度に全部使うわけじゃないからぶっちゃけ大してかわらんよ jpgは圧縮率にも依るけど劣化がちょっときつい PNGがアルファチャンネルも使えて圧縮率も良いからお薦めする マスクを別に準備しなくて済むから管理も楽だし あとこれは指標になるかどうかわからないけど、俺がいつも発注する分はヒロインキャラ5*表情8*裸込みで服6 一応全パターン立ち絵で貰って、それ以外のイレギュラーな物(たとえばブラでけでショーツ無しとか)は発注するの面倒だからこっちで切り貼りして作る グラフィッカーさん何人かに以前聞いた時には、「クソみたいな話しの時に立ち絵100なんか作りたくもない 逆に面白そうな話しなら300でも作る」と言うのを聞いてるから、ようは面白そうな物を作ればグラフィッカーさんもある程度協力してくれると思う
クソみたいなキャラグラに100KBなんか書きたくもない 逆に神キャラグラなら300KBでも書く
632 :
名前は開発中のものです。 :2010/12/03(金) 20:00:14 ID:6wJn4leS
>>627 というかゴミ(;)とったぶんを!≠ニかに置き換えて表現力カバー
しようとしたら我ながら輝くキャラになってしまった…orz
>>628 …!?あ、焦る…!
>>629 確かに軽いにこしたことはないですよね…。そして画像荒れても駄目ですよね…
>>630 そうなんですか!?
なるほど、でしたらキャラ画像合計450枚〜500枚をpngで保存しても
そこまで大したことにはならなさそうですねっ!…いや、なるのか???
>>631 確かにそこでやる気の上昇度は変わりますよね…!
回答が嬉しく、つい長くなってしまいましたが
前景として適しているのはtlgかpngなんですね!
どちらを選ぶかは個人の好み…という感じでしょうか。
とりあえず作ってみて、比べてみてみようと思います!
色々サイトを調べたところ、どちらもアルファチャンネルを使えるようですし・・・。
今までマスクを用意していた分、これでかなり管理しやすくなりそうです!
本題から追加質問まで、皆様本当にありがとうございます!
>>632 自分語りはその辺でな
あと画像は理由がなければpngにしとけ
あとあと使い勝手が違う
立ち絵なんか画面半分以上抜けてるんだから800*600でも200kbいかないだろ 500枚でも100Mくらい
635 :
名前は開発中のものです。 :2010/12/03(金) 23:34:34 ID:6wJn4leS
試してみたのですが差がよくわからなかったので、ご助言頂いたよう pngに書き換えることにしました! 100Mというのはあまり大きな数字ではないんですね; 丁寧な回答、ありがとうございました! 長文すみませんでした;
>>635 は時期的に同人かな?
ゲーム屋なら100mがどの程度の大きさかわかりそうな物なんだろうけど
それすらわからん初心者に全部組ませるとかちょっと危なくないか?
>>653 解決したようでよかったな
だけどノリがうざい
2chに慣れるか少しは自分で物を考えられるようになってから来い
きっちり反応を返してくれる分、たまに現れる
「聞くだけ聞いたらさっさとサヨウナラする」タイプの人間よかよっぽど印象は良いな。駆け出しの子って感じがする。
もうちょっと落ち着くと良いとは思うけどね。
というわけで
>>653 、次からは気をつけるようにな
653ってどれよw
ksk
恐くて650番台には書き込めないじゃないかwwww
でも俺は
>>653 みたいな奴好きだな。
あれ?ここって吉里吉里スレだよね?
今年も吉里吉里のおかげで飢え死にせずに生きられました Deeたんありがとう わりと冗談抜きに感謝しています
飯食えるレベルなら別に吉里吉里でなくても飯食えると思うがな
ライターは絵描きと比べるとプレゼンが難しいから、吉里吉里をある程度自在に使いこなせると言うのは、それだけでまずとっかかりの部分で天地ほど違う 特に外注の場合はね、どっかの会社のを無断で使うわけにいかないし
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| ぞろぞろ・・・・・ | 次でボケて! | ̄ ̄ ̄ ̄ ̄ ̄ ̄| |__| ̄ ̄ ̄ ̄ ̄ ̄ ̄|ボケて! ! . . .∧| 次でボケて! |____.| ̄ ̄ ̄ ̄ ̄ ̄ ̄| ぞろぞろ・・・・・ . . ( ゚ |_______| || . . | 次でボケて! | / づΦ∧∧ || ( ゚д゚)|| . . |_______|ぞろぞろ・・・・・ .. ( ゚д゚)|| / づΦ ∧∧.||  ̄ ̄ ̄| / づΦ ぞろぞろ・・・・・ .( ゚д゚)|| .| ̄ ̄ ̄ ̄ ̄ ̄ ̄| ケ..| ̄ ̄ ̄ ̄ ̄ ̄ ̄| ./ づΦ | 次でボケて! | __| 次でボケて! | | ̄ ̄ ̄ ̄ ̄ ̄ ̄|. |_______| .......|_______| | 次でボケて! | ∧∧ || . ∧∧ || .|_______| . ( ゚д゚)|| ( ゚д゚)|| . ∧∧ || . / づΦ / づΦ ( ゚д゚)|| ぞろぞろ・・・・・ ./ づΦ
失礼いたします。
>>638 ですがすみませんでした。レス番を間違えてしまいました。
あれを書いたときはイライラして確認を怠ってしまったのです。
今はもうイライラも収まって、寛大でなかった自分が恥ずかしい気持ちです。
これからは一時の感情で書き込まないように致します。
皆さんもそういうふうにイライラが収まらないときってあるのでしょうか?
ご意見いただけましたら幸いです。是非参考にさせていただきます。
どうぞよろしくお願いいたします。
>>653 いやいや そこはボケをみんな期待してたんだから・・・・・
でも
>>638 を書いた人間が出てくるというのも、オチとしては悪くないと思う。
面倒くさいから
>>653 の質問には答えないけどもw
656 :
名前は開発中のものです。 :2010/12/06(月) 01:57:44 ID:G4py8SSu
とりあえず寝ればいいb
吉里吉里で製品作って、インストーラーはどんなのがいいんだろう? 製品DVD起動させて、ランチャーでインストールやゲームスタートさせたいけど、これってTJSちょっとかじった程度の.スクリプトで作れるものなのかな? それともそう言うランチャーってどこかのサイトにある?
>>658 レジストリ汚すインストーラーはウザいだけだと思う
俺もそう思うけど会社としての体裁のために必須らしいOr2 しかもDVD起動でランチャー表示だって
>>660 そりゃ残念
とりあえず「フリーソフト インストーラー」でググればいくらでも見つかる
WiX autorun.inf
>>659 うざいと考えてるのはごく一部
CD入れたら自動でセットアップ画面が出てくるというのが一番分かりやすくてユーザーにやさしい
>>662 wixだとインストーラーまでは問題無いと思うんだけど、ランチャーをどうすべきか・・・・
一応wixとcreateinstallは試してみてうまくいったんだけど、ランチャーの方は作らないとダメなのかな
むかーし、どっかで簡単なランチャのサンプル見た記憶があったんだけど、必死にぐぐってもなかったOr2
インストールの最後でソフトを起動して完了みたいなことやればいいだけじゃね
全部吉里吉里でやったけどえらいめんどかったから 今ではインストーラーだけフリーの使ってる。
うちのコピープロテクトはいってるから毎回DVDを入れなくちゃいけないらしくて、そうなると入れるたびにインストーラーが起動するとよろしくないぽい どうせセキュリティで自動起動は阻止されるんだからautorunを書かずにそのままでもいいんじゃないかとは思うけど社長的にそれはダメらしくて、ランチャー式にしろってOr2 どうしろって・・・・・・
私は吉里吉里でランチャーを作ることを許可したい
どうしろって・・・って自分の仕事なんだから頑張れとしか
ランチャーなんてGUI開発環境あれば楽に作れるだろ
今は意外と難しい。
どっかにランチャープラグイン無いかな。 切実に思う。
asdファイルで[resetwait]タグ使えるように出来ない? 微妙にwaitがずれるんだ・・・
クリッカブルマップで領域にマウス載った時に音を鳴らしたいんだけど、どのあたりを弄るんだろう?
自己解決した 普通に.maに書きこめばよかったのね
677 :
名前は開発中のものです。 :2010/12/10(金) 02:12:11 ID:UUZCsgIq
ウィンドウを最小化する方法って誰か知りませんか? ママキタボタンを作成していて あるボタンを押すとウィンドウが最小化するようにしたいのですが。 知ってる方いたらお願いします
WindowEx プラグイン(ぼそ
ママキタボタンなら、最小化よりもダミー画像表示の方が……。
680 :
名前は開発中のものです。 :2010/12/10(金) 17:58:12 ID:B0BQlzqz
声が流れてる最中にママキタボタン押したら 瞬時に声も止まる実装は実現されたの?
そんなのsestopさせるだけだろ
というか、エロゲやるのにスピーカーって言う発想が俺には無い ヘッドホンか、音声切るかにしとけw
エロゲって半分はエロヴォイスを楽しむものじゃないの?
あやまれ90年代のエロゲにあやまれ
[position layer=message2 page=fore frame="b.png" top=410] [layopt layer=message2 page=fore visible=true] [current layer=message2] [nowait] [ruby text="A"]A [endnowait] 超初心者でもうしわけないんだが↑の奴がエラーが出るわけでもなくメッセージレイヤが表示されないんだ 初期状態のメッセージレイヤの数はConfig.tjsで5に指定してあるから問題ないはずなんだが…
事故解決したよスレ汚しスマン
JBシリーズって出せてあと一本だな 規制前に出さないとアウトだろ
吉里吉里よりPygameで作った方が動作軽快かな?
pygameってソフトウェア描画だった気がするから似たようなもんだろ どうせならハードウェアを活かせるのを選ばないとメリットがない
ソフトウェアエンジンは今でも結構あるけど、今時のPCで軽快に動作しない そういうエンジンを使ったゲームとかあるか?
いいえ僕のMMX200MHzで動かすんです
じゃあオレはi486持ち出すわ
Z80を忘れてはいかん
ならば俺はCOMETで。
286を倍クロックCPUボードでパワーアップしてる俺に隙は無いな
697 :
名前は開発中のものです。 :2010/12/20(月) 19:44:06 ID:OL4N5Fxn
吉里吉里で、メッセージレイヤーはそのままで文章を表示させながら キーボードやマウスを使って画像をインタラクティブに動かすことはできますか? あああ[p] ;ここでキーボードやマウスを使ってリアルタイムに変数などを更新したい ;↑を押すと画像が上に移動する ;スペースが押されたら下の「いいい」に進む いいい[p]
>>697 可能か不可能かでいえば可能
透明のレイヤーを一番上に乗せて focus で指定
onMouseMove とか onKeyDown を書けばできた
ただ、そのままだと全ての入力を奪ってしまうので使い物にならない
※ on〜 系を全て書いていずれかのレイヤーに投げればいけるかもしれない
quakeでメッセージレイヤは揺らさない方法って無い? しばらく揺らしてたい時とか、メッセージレイヤまで揺れると文字が読みにくい
>>698 >※ on〜 系を全て書いていずれかのレイヤーに投げればいけるかもしれない
というのはどういうことでしょうか?
サンプルお願いできませんか?
701 :
名前は開発中のものです。 :2010/12/21(火) 07:43:42 ID:yEDiuI89
再生するBGMの曲名をテキスト?で表示するプラグインを どこかで見た気がするんですが、見つけられませんでした 御存知の方いますか?
そんなのtjs使わなくても、タグ使えればどうにでもなるレベルの話しだろ
>>704 乙
お前の気持ちは自分のことのように良く分かるぞ
そりゃ分かるだろうよ
…!?
わろた
709 :
名前は開発中のものです。 :2010/12/22(水) 03:41:00 ID:wan3o0fi
>678 できました!ありがとうございます!
www
711 :
名前は開発中のものです。 :2010/12/23(木) 12:50:54 ID:dSnKDYBi
>>704 ありがとうございます
これはメッセージが勝手に進むのでしょうか?
>>698 Layerクラスを継承してon系を全部オーバーライドするのでしょうか?
すみませんがサンプルお願いします
吉里吉里はタグとTJSしかほとんどやっていないもので
712 :
名前は開発中のものです。 :2010/12/24(金) 07:10:21 ID:4Yx9yQyf
TJS書ける人なら言ってることは理解できるはずなので
>>711 は100年ROMることから始めようか
タグというのがKAG3のタグという意味なら、KAG3とTJSしかほとんどやってない ということになって、そりゃ誰だってそうだろという話にもなってくるしな。 KAGでもTJSでもないものをメインに吉里吉里を使ってる人なんて……一人ぐらいしかいないw
714 :
名前は開発中のものです。 :2010/12/24(金) 12:36:20 ID:obwzkICH
イヴにまでエロゲ開発とか死にたくなるな
魂が宿る作品になりそうだな
レイヤーを作成し、そこに文字を描画して動かしたりするスクリプトを作ったのですが 通常時は問題無いのですが、トランジションが行われている最中にそのスクリプトを動かすと トランジションに巻き込まれて正しく描画されなかったりします。 トランジションに巻き込まれず、visibleをtrueにしている間は何があっても表示されるようにしたいのですが 良い方法はありませんでしょうか?
まず基本としてbacklayかそれ同等の作業はしてるか?
backlayもonExchangeForeBackもonCopyLayerもやってますが
ただ表示するだけではなく、レイヤを移動しながらフェードイン・フェードアウトさせたりするので
背景や前景のトランジションとタイミングが重なると、おかしくなります。
それで、
>>716 の質問になりました。
Timerを使わずに、ContinuousHandlerを使う…とか?
ググるとプライマリレイヤをもう一枚作るとか出てきたのですが、 その作り方がどうしても分からないので、表も裏も両方同じ書き込みをして両方同時に動かすという 力業でどうにか解決できた事にしたいと思います ただ、やはりスマートではないので、トランジションに影響を受けないレイヤをデフォルトで用意してくれたら 楽も出来ると思うのですが・・・
>>720 吉里吉里というかKAGの設計の問題やね。
ベースになってる fore/back がプライマリレイヤなので、トランジションに巻き込まれないレイヤがない。
プライマリレイヤから切り離してしまえば可能だけど修正点は多い。
自前のレイヤーオブジェクトでループアニメさせたい時、 コンティニュアスハンドラとTimerどっち使っても処理的なものとか負荷的なものは一緒?
>>722 Continuous Handler は、機会があれば常によばれる。タイマは指定時間以上経過してないとよばれない
タイマの指定を1ms とかにしてあればだいたいいっしょ
色々調べてみたつもりなんですが、さっぱりなので質問です。 吉里吉里で、1月1日〜1月7日までの一週間だけ「あけおめイベント」を 発生させるというようなことは可能なのでしょうか? 可能であれば発生させるのはifコマンドでだと思うのですが、 そもそも現実の日にち(というか、パソコン内の日にち?)を吉里吉里は 認識しているのでしょうか? 認識しているのだとすれば、どういう風に書けばよいのでしょうか?
726 :
名前は開発中のものです。 :2011/01/02(日) 16:11:12 ID:GPBuQZZN
CELTのプラグイン配布して
吉里吉里プラグインとかごった煮的配布場所のところの雪と桜のプラグイン テストプレイの時にシナリオの再読み込みするとエラー吐いて面倒なので ここ見てたら修正御願いします
>>727 >ご意見ご要望バグ報告のある方は、メール頂けると死ぬほど助かります
直接言いなよ…
ごった煮の雪プラグインは相当使ってるがあれが原因でエラー吐いた事無いな。 どんなエラーだ?Log書いてみろ。 桜は使った事無いから知らん。
>>729 シナリオの再読み込みとかでプラグインを2回ロードするとエラーが出る
だから、エラーならログを吐くだろう? ただエラーが出るとだけ書かれても、本当にそれが原因かわからん。 Logを書いてみろと言ってその返答だと初心者レベルだと思うが、何か他のエラーと勘違いしてる可能性もある。 krkr.console.logにエラー吐いたら書き出されるから、該当部分をコピペしてみろ。
15:37:03 ==== An exception occured at SnowPlus.ks(389)[(function) onRestore], VM ip = 12 ==== 15:37:03 -- Disassembled VM code -- 15:37:03 #(389) (Dictionary.assign incontextof opts)(dic.opts); 15:37:03 00000012 gpd %1, %-6.*2 // *2 = (string)"opts" 15:37:03 -- Register dump -- 15:37:03 %-6=(void) %-5=(void) %-4=(int)1 %-3=(object)(object 0x02CEA3F4:0x02CEA3F4) 15:37:03 %-2=(object)(object 0x0018D544:0x00000000) 15:37:03 %-1=(object)(object 0x0DA45578:0x0DA45578) %0=(void) %1=(void) %2=(void) 15:37:03 %3=(object)(object 0x04FA46E0:0x04FA46E0) %4=(void) 15:37:03 ------------------------------------------------------------------------------------ 15:37:04 スクリプトで例外が発生しました (void) から Object へ型を変換できません。Object 型が要求される文脈で Object 型以外の値が渡されるとこのエラーが発生します 15:37:04 trace : mainwindow.tjs(1485)[(function expression) (anonymous)] <-- mainwindow.tjs(598)[(function) forEachEventHook] <-- mainwindow.tjs(1484)[(function) internalRestoreFlags] <-- mainwindow.tjs(1528)[(function) restoreFlags] <-- mainwindow.tjs(1987)[(function) loadBookMarkFromFile] <-- mainwindow.tjs(1994)[(function) loadBookMark] <-- mainwindow.tjs(897)[(function) onReloadScenarioMenuItemClick] <-- menus.tjs(202)[(function) click] <-- menus.tjs(210)[(function) onClick] <-- immediate event
15:39:23 ==== An exception occured at sakura.ks(478)[(function) onRestore], VM ip = 12 ==== 15:39:23 -- Disassembled VM code -- 15:39:23 #(478) (Dictionary.assign incontextof opts)(dic.opts); 15:39:23 00000012 gpd %1, %-6.*2 // *2 = (string)"opts" 15:39:23 -- Register dump -- 15:39:23 %-6=(void) %-5=(void) %-4=(int)1 %-3=(object)(object 0x02E5A3B8:0x02E5A3B8) 15:39:23 %-2=(object)(object 0x0018D544:0x00000000) 15:39:23 %-1=(object)(object 0x0D8B9568:0x0D8B9568) %0=(void) %1=(void) %2=(void) 15:39:23 %3=(object)(object 0x04FD4BA4:0x04FD4BA4) %4=(void) 15:39:23 ---------------------------------------------------------------------------------- 15:39:23 スクリプトで例外が発生しました (void) から Object へ型を変換できません。Object 型が要求される文脈で Object 型以外の値が渡されるとこのエラーが発生します 15:39:23 trace : mainwindow.tjs(1485)[(function expression) (anonymous)] <-- mainwindow.tjs(598)[(function) forEachEventHook] <-- mainwindow.tjs(1484)[(function) internalRestoreFlags] <-- mainwindow.tjs(1528)[(function) restoreFlags] <-- mainwindow.tjs(1987)[(function) loadBookMarkFromFile] <-- mainwindow.tjs(1994)[(function) loadBookMark] <-- mainwindow.tjs(897)[(function) onReloadScenarioMenuItemClick] <-- menus.tjs(202)[(function) click] <-- menus.tjs(210)[(function) onClick] <-- immediate event
menus.tjsの202行〜210行あたりでごちゃごちゃしてるようだが、このあたりで問題が無いのか? あとデバッグモードの再読み込みは完全に挙動を保持する物では無い。 例えばbaseのopacityを255以外の数値にしたまま動かそうとしても問題無く動くのだが、再読み込みするとエラーが出る。 実際に栞のロードセーブで問題無ければ、それは吉里吉里の仕様。
>>727 そもそもテストが目的のところに、ユーザーが使えないデバッグコマンド使うのって変じゃね
「テストプレイ」が何を指すのか分からないが
736 :
sage :2011/01/05(水) 23:00:40 ID:tucw+2Pi
偶然見てたので…。ごった煮プラグインの中の人です。 >> 727 そういえば昔直したのをupしてなかったので上げました。 SnowPlusの方は直してたけれど、Sakuraも同じだったので そちらも今回合わせて直してupしたので、確認してください。 バグ報告ありがとうございます。 …報告は大変助かるけれども、2chは滅多にチェックしないので、 見逃しを防ぐために、直接知らせて頂ければと思います。 エラーログの正しく詳細な読み方はどこにも解説されてない気がする…。 エラーログの読み方(今回ならdic === void だからエラーになっている) の文書化って、必要な人居ます?
737 :
727 :2011/01/05(水) 23:27:32 ID:TvBNDpS2
>>736 エラーが出なくなりました、ありがとうございます
ちょっとメールの使えない環境にいたのでここに書き込みました、済みません
SnowPlusに回転が欲しいと言ってみるボソッ
回転ってどんなのかしらん。 粒のX/Y/Z軸回転(雪の結晶がくるくる回るのをやりたい)? それとも移動座標の回転(竜巻状の降雪を竜巻中から見上げるような効果)? 回転軸はX/Y/Z任意に組み合わせられる?それとも一軸のみ?
大抵はAfterEffects等で作成して、ムービー貼り付けるほうが早くて簡単じゃないの? 動的に雪の状態を操作したいなんて希だし。
雪の結晶クルクル落ちる感じを作れないかなぁと考えます。 なので画像定義も必要なのですけど、今まで通りの通常の雪も当然使いたいので、雪の結晶画像は一時定義>不要になったら破棄みたいな形だといいかなと思います。 あと使い勝手の問題なのですけど、揺れ幅を定義出来たり、下から上へ昇るようにもなるとうれしいかなぁと。 そうすればたとえば風船とかハートとか、そう言う画像で別の表現も出来るので便利かな。 でもそれを実現するには、結局アニメ定義みたいにした方が楽かも知れませんね。 それをasdみたいにコマ送りをwaitみたいにコントロールするとか。 あとそれとは別にZ軸を意識したものなんかもあるといいかなと思います。 例えば真上から>目線正面へと変化出来るような。 さすがに無茶振り。調子乗ってスミマセン。ごめんなさいごめんなさい。
AEで作るのは楽なんだけど、プレイする人の中には動画再生やっとこさなスペックのマシンでやってる人が案外多いのよね・・・・
奴隷募集はよそでやれ
変形が多数含まれたり、要素数が増えていくと、ムービー再生のほうが ずっと軽いんじゃないのと思ったりもするわけだがw
KAGEXでレンダリング済みフォントにedge=trueすると文字が表示されないのはデフォ?
>>741 Sakura.ksを作った時にも思ったですが、画面上を流れる雪粒が50を
超えると、AffineCopy()でリアルタイムに変形しながらコピーするのは、
実行速度の観点からかなり難しいです。50粒でCore2Duo(1.83GHz)で
20%くらいCPUパワーを食うので、誰かが言うようにムービーの方が
軽くなります。
やるなら、おっしゃるように、アニメーションパターンを最初から
用意しておいて、それを流せるようにすればいいでしょうね。
それならできそうなので、ToDoに追加しておきます。
下から上へ降らすのは[snow_opts yspeed=-6]くらいで既に実現
可能です。触れ幅もxaccelqとかxaccelmaxとかで変更できます。
> それとは別にZ軸を意識したものなんかもあるといい
これは雪粒の移動座標にZ軸を意識せよ、ということですね。
雪粒の大きさ変化が入るので、今のままでは無理かなぁ…。
吉里吉里ってバックで動画ループで流してそのまま進行ってできるの?
普通に出来るよ むしろスクリプトで動きをループ再生するプラグインの方が無いと思うからTjs直打ち込みしてる
大きさにもよるけど激・重くなりそう
>>747 出オチ
うちの会社アホだから本体VUしないからビデオのレイヤーモード使えないんだぜ
tjsの説明サイトとかは結構みかけるけどゲームの演出を教えてくれるサイトみたいなのは無いの? fate作りたい
またお前か
使いたい演出を何回も見てTJS/KAGで再現すればおk その過程でスキルも付いて一石二鳥
時間経過とともにパラメーターが変化していくようにしたいんだけど、どうすればいい?
756 :
名前は開発中のものです。 :2011/01/10(月) 22:44:59 ID:tXfWy01T
しつれい。あげ忘れました。
時間ってリアルの時間?ゲーム内の時間? リアルの時間なら、TJSのTimerというものを使うのが一番簡明かと 詳しくはTJSの説明書を TJS打たなくてもwaittransとかを駆使してできるかもしれないけど
758 :
名前は開発中のものです。 :2011/01/10(月) 22:57:55 ID:tXfWy01T
リアルの時間です。 TJSってkagの元になってるプログラムですよね? [xxxxxx] とか @xxxxxx って感じでタグを使うのと同じように仕えるんですか?
TJSについてあまり詳しくないっていうことなら、KAGの説明書の中の 名前忘れたけれど「TJSを使うには」みたいな感じのタイトルの章を 一回読んでみるとイメージがつかめると思うよ Timerを使えば、たとえば「○秒ごとに○○を行う」みたいなことができるので 10秒ごととか適当な時間間隔ごとに、パラメータを変化させるプログラムを呼び出せばよい とかそんなイメージ
760 :
757 :2011/01/11(火) 00:32:58 ID:+3Nak4F2
>>759 ありがとうございます。
やり方を調べてみます。
>>761 セーブロードや中断等に対応させたりとか考えると、
結局KAGプラグインを作ることになるとは思う
実は、必要な箇所で時計を読んでそれにしたがって分岐させるだけで済むんだったら笑える。
>>761 公開されてるプラグインからタイマー部分だけ抜き出して改造すれば簡単じゃね?
766 :
755 :2011/01/11(火) 22:16:28 ID:+3Nak4F2
[eval exp="f.x=0"] [iscript] var x=x; function onTimer() x=x+1; var timer=new Timer(onTimer); timer.interval=500; [endscript] [l] [eval exp="timer.enabled=true"] [l] [eval exp="timer.enabled=false"] [emb exp="f.x"] ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 500ミリ秒ごとに function onTimer() x=x+1; の部分が繰り返されて、変数xが0.5秒に1ずつ増えていくようにしたいんだけど、文法エラーとかなる。 うまいこと修正しつつ俺に知恵をください。
>>766 修正するのは4行目
変数の初期値は定数でないといけない
var x=0;
それと6〜7行目
functionの中身は{}で囲ってないといけない
function onTimer(){
x=x+1;
}
かな
内緒だけどダミーのレイヤー用意して .asd 使えば余裕
770 :
755 :2011/01/11(火) 22:57:14 ID:+3Nak4F2
>>767 ありがとうございます。
助かります。
>>768 時間待ちじゃなくて、シナリオが進んでる間も変数がどんどん変化していくようにしたいんです。
イメージとしては、
画面の片隅にバクダンと時計が表示されていて、時計の時間はどんどん進んでいく。
テキストを読み進めるのが遅ければ途中で爆発してしまう。
とか、そういうことがしたいんです。
まあ、私の作ろうとしているのはエロゲーなんで、バクダンは関係ないんですけど。
771 :
755 :2011/01/11(火) 23:24:59 ID:+3Nak4F2
>>767 さんのおかげでエラーもなくなりました。
ほかに、7行目のxをglobal.xに変えたりして動くようになりました。
それで、ついでにもう一つ質問です。
kagのタグってTJSではどんなふうに書かれているか、どうやったら見ることが出来ますか?
[iscript]〜[endscript]の中ってTJS式しかかけないじゃないですか。
だから、kagのタグで簡単にやってたことをTJSでやり直さないといけないので。
>>771 system フォルダの中を見ればすべてあるだろ
急に規制されてOUTFOCUS wikiに入れなくなった。俺のエロゲ製作はここで終わるかもしれん
>>773 頑張れ頑張れ!!
出来る出来る!!
絶対出来る!!頑張れ!!もっとやれるって!!
やれる!!気持ちの問題だって!!
頑張れ頑張れそこだそこだ諦めるな
絶対に頑張れ積極的にポジティヴに頑張れ!!
初歩的な質問ですみません。 変数のプロパティ(.countとか)ってどこかに記載があるのでしょうか? ネットで調べてみたのですけど、よくわからなくて。
wikiって規制されるのかよ 怖いな・・・
>>775 ネットよりもまずついてるドキュメントを見ましょう。全部書かれてます
わかりました TJSとKAG両方もう一度読んでみます
一応。TJSリファレンスの「キーワード検索」を使えば一発で見つけられるかと。
fやtfのような変数の場合どこを探して良いか分からずネットで必死に探してました。 もう一つすみません。 iscript<>吉里吉里の値の受け渡しのテストをしていたのですが。 kag.flags.test = [1,10,100,1000]; で、 [emb exp="f.test[0]"] [emb exp="f.test[1]"] [emb exp="f.test[2]"] [emb exp="f.test[3]"] だとちゃんと表示されるのですが、 kag.flags.test = []; kag.flags.test[0] = [1]; kag.flags.test[1] = [10]; kag.flags.test[2] = [100]; kag.flags.test[3] = [1000]; で、 [emb exp="f.test[0]"] [emb exp="f.test[1]"] [emb exp="f.test[2]"] [emb exp="f.test[3]"] だと、(object0x....)と表示されてしまいます。 それに”kag.flags.test = [];”を書かないとエラーが起きるのですが、何がいけないのでしょうか?
kag.flags.test = [1,10,100,1000]; と kag.flags.text = []; kag.flags.text[0] = 1; kag.flags.text[1] = 10; kag.flags.text[2] = 100; kag.flags.text[3] = 1000; が同じ意味
[]いらないのですね。 こんな単純な事から間違ってどうすんだ ありがとうございました。
>>780 781が言ってくれてるのに補足すると、
kag.flags.test = [];
は配列宣言。
配列は宣言しないとエラーになる。
で、
kag.flags.test[0] = [1];
と書いてると、配列の中に配列を宣言して入れてる。つまり、
[emb exp="f.test[0][0]"] と書くと「1」と表示されることになる。
なるほど、なんとなく理解出来ました。 それだと二次元配列になるから、存在しないとなるのか。
初歩的すぎてすみません。 制作はWin7で、吉里吉里2.23です。 トランシジョン差し込んでAVIムービー再生してるんですが、 Win7だとちゃんと再生するのですが、Vistaだとトランシジョンだけ 行ってムービーが再生されず、テキストだけ進みます。 @image storage=X layer=base 「やきいも〜」[p][cm] @layopt layer=base visible=true @videolayer channel=1 page=back layer=base slot=0 @video visible=true loop=false mode=layer slot=0 @openvideo storage="x.avi" slot=0 @preparevideo slot=0 @wp @playvideo slot=0 @image storage=XX page=fore layer=base @trans method=universal rule=800 time=600 @wt 「ら〜めん」 [p][cm] こういう流れで書いてるんですけど、記述に問題があれば ご指南頂きたいです。 初歩的でほんますいません。
追記 krmovieはちゃんと置いてます。 ただVISTAのPC自体ネットにも繋がず半年以上放置していました。 一応回線繋いでOSとグラボの更新は済ませ、他の同人ソフトを 動かしてみたのですが、こちらは問題ありませんでした。 やれることはやってみたんですが、疲れ果ててしまいここに 漂流しております・・・。
>>772 やっぱり場所が分かりません。
変数を表示させたいんだけど、[emb exp="○○○"]
とおなじことは、TJSではどう書けばいいんですか?
VISTAのほうは、フォルダが仮想化されていて、アップデートするつもりでコピーした 各種ファイルがちゃんと更新されなかったというオチはない? そうでなければ、単にそのAVIを再生するフィルタがインストールされていないとか。
>>788 様
トランシジョン無しでのAVIは再生できたので、そっちは問題ないと思うのですが、
吉里吉里公式にはAVIはサポートできないとの記述がありますので、おとなしく
mpegに変換したら正常にトランシジョン後に再生しました。
ちょっと原因が分からないですし、特に画質に拘るものでもないのでこれでいきます。
回答ありがとうございました。
mpegの何かによってはXPではデフォで再生できない
>>787 MainWindow.tjsの最後のあたりとか
>>4 の解説サイトも素敵だよ、必見
aviだろうとmpgだろうと画質は設定次第だから関係無いと思うが
それ以前に
>>785 の書式だとたぶん動画は一瞬しか流れないと思うが?
>>790 様
あららそうなんですか・・・。
mpeg-1で勘弁してくださいとするしか仕方ないかなと
思っているのですが、
皆様は動画形式は何が一番広範囲のユーザー様に扱いやすいと
お考えでしょうか?
>>792 様
動画は問題なく流れるんですが、何かいらぬ記述がありますでしょうか?
折角ですのでご意見参考にさせていただきたいです。
動画を再生した直後にcanskip定義してないまま同じレイヤーにimage定義したら再生した瞬間にtransで上書きするんじゃないのか?
すまん 少し違ってたな storage=xxを表示しておいて、そこにbackからvideoをtransしてるのか すまんすまん、読み間違ってた お詫びに一つ [wp]は[wp for=prepare]が無難 あと[freeimage layer=base page=back]をvideolayerの前に入れておいた方が良い
>>795 様
ありがとうございます。
調べて理解できるよう努力いたします。
理解出来るものじゃないと思うが video再生をタグリファレンスなど見ないでそらでタグ打ち込みでちゃんと書けたら、その人はもっと別な事にその才能を使った方が良いと思う そう言うもんだと何も考えずにコピペした方が良い
>>797 様
了解しました笑
色々とありがとうございました^^
drawTextで袋文字が作れないのを知って、font.edgeもないことに気付き詰まっています。 どうしたら袋文字が描写できるでしょうか? よろしくお願いします。
俺はゴリ押ししてる(´A`) 縁色で縁に相当する描画をしてから最後に真ん中に文字色で抜きに相当する描画を……って。 他に標準的でスマートな方法があるなら俺も知りたい。
袋文字の作り方どっかになかったっけ 同じテキストをフォントサイズちょっと上げて重ねれば袋文字には見せられるけど
標準的じゃない方法なら layerExDraw プラグインを使って var app = new GdiPlus.Appearance(); app.addBrush(0x80ff0000, 3, 3); // 影用にブラシを足す。3づつずらす app.addPen(0xffff0000, 2, 0, 0); // 縁取り用のペンを足す。太さ2 app.addBrush(0xffffffff, 0, 0); // 文字本体の塗り用にブラシを足す var font = new GdiPlus.Font("MS ゴシック", 32, 0); layer.drawPathString(font, app, 0, 0, "テキストABCDabcd"); // パス描画 とかするとスマートやね
kag.fore.base.drawText(5, 10, "abc", 0xffffff, 255, true, 2000, 0x000000, 2, 0, 0); // 袋文字 kag.fore.base.drawText(5, 50, "abc", 0xffffff, 255, true, 2000, 0x000000, 2, 2, 2); // 影文字 shadowofsx, shadowofsyを0にしておけば袋文字になるんじゃないのか。 細かいことは解らないけどKAGレイヤじゃなく自分で用意したレイヤだと話が違うのかな?
804 :
名前は開発中のものです。 :2011/01/15(土) 17:42:26 ID:cNokbv82
一定時間ごとに変数xがどんどん増えていき、その表示がどんどん更新されていくようにしたいのですが、 この描き方だと、数字がどんどん上書きされていって、しまいにはごちゃごちゃになって読めなくなってしまいます。 先に書いてあったテキストを消してから新しいテキストを表示させるにはどうしたらいいですか? [iscript] var x=0; function onTimer() { global.x=global.x+1; kag.fore.base.drawText(0, 0, global.x, 0xFF0000); .visible = true; } var timer=new Timer(onTimer, ""); timer.interval=500; [endscript] クリックすると500ミリ秒ごとにxは1ずつ増える。[l][er] [eval exp="timer.enabled=true"] クリックするとxの増加がとまる。[l] [eval exp="timer.enabled=false"]
>>804 drawText の直前で fillRect
806 :
804 :2011/01/15(土) 17:59:31 ID:cNokbv82
>>805 ありがとうございます。
fillRectについて調べてみます。
807 :
804 :2011/01/15(土) 18:41:13 ID:cNokbv82
やった、できた! kag.fore.base.fillRect(0, 0,220,50, 0x00000000); ってTJSでかくと、 Kagのベースレイヤの一部(x=0 y=0 横幅220 高さ50) を透明(0x00000000)にすることが出来るんですね。 一部だけ消すことも出来るなんてしりませんでした。
808 :
名前は開発中のものです。 :2011/01/16(日) 01:55:23 ID:bhoqU/R+
条件によって 同シナリオファイル内の栞*sss1か*saにジャンプさせたいのですが、 このTJSの書き方はどこがまちがっていますか?。 if(f.h>999) { kag.process.('', '*sss1'); } else if(global.count1==20) { kag.process.('' , '*sa'); }
809 :
808 :2011/01/16(日) 02:08:20 ID:bhoqU/R+
すいません。
>>808 は忘れてください。
processと(の間に . が余分なのを除けばとくに問題ないようです。
悪いのは他のところみたいです。
タイマーイベントでなぜかエラーがでるんですが、もうすこしかんがえて、
だめだったら聞きに来ます。
810 :
808 :2011/01/16(日) 02:16:44 ID:bhoqU/R+
なんか分かりませんが解決しました。お騒がせしました。
すみません。 パースペクティブ変形をtjsに組み込もうと、その前段階として [macro name=perspectivecopy] [eval exp="kag.getLayerFromElm(mp,'dest').perspectiveCopy(kag.getLayerFromElm(mp,'src'),+mp.left,+mp.top,+mp.width,+mp.height,+mp.x1, +mp.y1,+mp.x2,+mp.y2,+mp.x3,+mp.y3,+mp.x4,+mp.y4)"] [endmacro] を参考に、まず [perspectivecopy srclayer=1 srcpage=back destlayer=1 destpage=fore left=0 top=0 width=800 height=600 x1=0 y1=0 x2=799 y2=0 x3=0 y3=599 x4=1099 y4=599] ここまではうまくいきました。 で、これを・・・・ [eval exp="kag.getLayerFromElm(%['destlayer'=>'1', 'destpage'=>'back']).perspectiveCopy (%['srclayer'=>'1','srcpage'=>'fore','left'=>'0','top'=>'0','width'=>'800','height'=>'600','x1'=>'0','y1'=>'0','x2'=>'799','y2'=>'0','x3'=>'0','y3'=>'599','x4'=>'1099','y4'=>'599'])"] こう書いたのですが、エラーが起きてしまいます。 どこの部分が間違ってるのか、ご教授ください。
getLayerFromElm() に第二引数が与えられてない perspectiveCopy() は辞書配列で引数を渡すタイプじゃない
>>812 [eval exp="kag.getLayerFromElm(%['layer'=>'1', 'page'=>'fore'],'dest').perspectiveCopy(kag.getLayerFromElm(%['layer'=>'1', 'page'=>'back'],'src'),0,0,800,600,0,0,799,0,0,599,1099,599)"]
ヒントを参考にこんな風に書き換えてみたのですが・・・・・うまくいきませんでしたorz
こう言う書式じゃ間違ってるのでしょうか。
[eval exp="kag.getLayerFromElm(%['layer'=>'1', 'page'=>'fore','prefix'=>'dest']).perspectiveCopy(kag.getLayerFromElm(%['layer'=>'1', 'page'=>'back','prefix'=>'src']),0,0,800,600,0,0,799,0,0,599,1099,599)"] できた! 少し間違ってた。ありがとうです。
質問させてください Windows7で吉里吉里2.23を使っています [if exp="askYesNo('文字')"] 処理 [endif] を実行して「はい、いいえ」のダイアログボックスの「はい」を選択してもif内の処理が実行されません 色々やってみたのですがどうにもうまくいきません よろしくお願いします
>>815 askYesNoは、結果をtrueかfalseで返す関数じゃないです。
TJSがわかるなら、YesNoDialog.tjsの中身を見て使い方を調べましょう。
>>816 ありがとうございます
TJS調べて拡張してtrue,false返すようにしたら処理が実行されました
818 :
799 :2011/01/17(月) 08:38:57 ID:+252ttyq
>>800 ,
>>801 ,
>>802 ,
>>803 遅くなりましたが、レスいただきありがとうございました。
>>803 の方法で上手い事いきました!
まさかそういうアレだとは思わなかったので、試さずに聞いてしまいました。
皆様本当にありがとうございました!
やはりそう言うオチだったか・・・・ 影と袋を同時に実現しようとしたんだな
標準的でない方法とKAGを使う方法しか出てこないか…… やはりゴリ押しするしかないのね
>>803 のやり方はKAGじゃなくてもできるな。読み違えてた、ごめん
同時より袋をより大きくしたい。背景がどんな色彩でも文字が読めるように。
POPデザインの基本として、白縁を大きくとって中に黒字を書いて文字を浮き出させると言う基本テクニックあるけど、枠を半透明でデザインして重ねた方がゲームの場合はずっと都合はいいぞ。 POPデザインのそのテクニックは、それでも見栄えが悪くなった場合ずらしたりするんだけど、ゲームの場合はそれが絶対固定なわけだから。
824 :
名前は開発中のものです。 :2011/01/18(火) 18:38:08 ID:z2lfsjtp
すみません。質問です。 layerの中身が空かどうかを取得したいのですが、たとえば [if exp="(kag.fore.layers[1].hasImage)"] ;;なにか処理 [endif] だと、中身に何か入っていても、完全に空でも"真"を返してきます。 それで、 [image layer=1 page=fore storage="xx_xx" visible=true opacity=255] [emb exp="('このレイヤーには'+kag.fore.layers[1].Anim_loadParams.storage)"] [freeimage layer=19 page=fore] [emb exp="('このレイヤーには'+kag.fore.layers[1].Anim_loadParams.storage)"] これだとfreeimageで空になるとエラーが出てしまいます。 どのようにして中身が空かどうかを取得すれば良いのでしょうか?
[freeimage layer=19 page=fore] では無くlayer=1です すみません
hasImage は画像データそのものをもってるかどうかだから全然検討違い 標準機能の範疇なら、Layer.getMaskPixel()で全点をチェック 外部プラグインを使っていいなら、LayerExSave プラグインを使って、 Layer.isBlank() で判定あるいは Layer.getCropRect()
てか、その例だと、Anim_loadParams がvoid になってんだろ。 まずそちらの判定をしなされ
>>827 828
LayerExSaveは知りませんでしたので、あとで探してみます。
で、
[if exp="(kag.fore.layers[1].Anim_loadParams.storage === void)"]
このレイヤーはvoid
[else]
[emb exp="('このレイヤーは'+kag.fore.layers[1].Anim_loadParams.storage)"]
[endif]
これだと、中身が無いとエラーが出ます。
中身があるとちゃんと動きます。
voidになると思ったのですが、どうしてなのでしょうか?
Anim_loadParams.storage を参照してしまうと、Anim_loadParams が void ならエラーっしょ?
あっ、なるほど。 こうですね。 [if exp="(kag.fore.layers[1].Anim_loadParams === void)"] このレイヤーはvoid [else] [emb exp="('このレイヤーは'+kag.fore.layers[1].Anim_loadParams.storage)"] [endif] うまく行きました。 fontを持ってたり直書きには対応しないみたいですが、とりあえずそれを回避すればなんとかいけそうです。 ありがとうございました。
TJSって極めればポトリスみたいな簡単なアクション(シューテング?) みたいなものも作れる? キャラクターを動かすのってどうやればいいのか見当がつかないんだけど。 もしできるなら、今作ってるエロゲ(初作品)完成後に挑戦してみたい。
C++勉強したほうがいいと思う 初学者にとっての難易度を決めるのは、言語じゃなくて情報の量と質 TJSで勉強するのは厳しい
せっかく多少なりともTJS覚え始めたのに、C++をまた一からやったほうがはやいのか。
原理それ自体で考えれば可能だよ。 特定のレイヤ、あるいは画面クラス……この場合はglobal.kag(を構成するMainWindow.tjs)の中で function onKeyDown(key, shift){ if( sf.ActionMode ){ // ← ポトリス云々のシステムを実行中、ってフラグを自分で建てておく switch(key){ /* フラグが建ってる時はキー入力によってレイヤなり何なりのオブジェクトを操作する この場合、キーボードの←キーが押されたらレイヤ0(自機画像でも表示させとけ)を動かす */ case VK_LEFT: if(kag.fore.layers[0].left > 0) kag.fore.layers[0].left--; break; } } } 的な処理を書いてけば、一応TJSでアクションなりシューティングなりを作る事は出来る。 ただしぶっちゃけ、TJS(というか吉里吉里というゲームエンジン)でADV/ノベルゲー以外を作るのは 不毛っちゃ不毛。処理速度はCPUどっさり使うので速さはさほど見込めないし、メモリも食うし、他にも色々とね。 そういう意味では、一からC++とかで作った方がマシだとは思うね。それ判っててあえてTJSで作るってなら止めないが
C++には優秀で簡単なゲーム用ライブラリがたくさんあるからTJSと比べてそんなに難しいこともないし なによりC++使えるのとTJS使えるのとでは応用の幅に差がありすぎる せっかく少ない情報で頑張って勉強してもTJSじゃあんまり役に立たん
C++既に使えてて、かつマゾいならTJSで挑戦してもいいな ノウハウ蓄積されるから無駄にはならんし。 ただリアルタイム系は重過ぎて遊べないと思う。トランプゲーム・できても落ち物くらいだろう
tjsに比べてC++が簡単なの? c++はまったく分からない初心者以下なんだけど、とっつきやすいならやってみようかな
>>838 C++を極めたいとか思わずに、割り切って使える部分だけ使うならイイと思う
横レス申し訳ない。
>>827 の言うLayerExSaveってLayerExSave.dllの事?
俺も
>>825 と同じ感じのところで前にはまった事あったんだけど、LayerExSave.dllでそんな事出来るってしらなかった。
概要をググって見たけど、なんかエロゲの画像抽出ツールの説明とかばっかなんだけど、どこかに.dllの概要書いてあるページ無いかな?
リファレンスには載ってないみたいだし。
>>841 おぉありがとう。
なんか調べたら使えそうなのがいっぱいある。
色々読んでみる。
xp3encをkrkrrelのフォルダーに置いてxp3にパックしたけど、何も変わってないように思うんだけど、何かコンパイルかやり方まちがってるのかな? xp3dec.tmpをkrkr.exeにおかなくても普通に動いてるし、ハッシュも出来ない。 サイズは46,080バイトです。 ちなみにc++はまったくわからないまま試行錯誤してとりあえずdll作りました。
ごめんなさい 解決しましたorz tmpってなんじゃーーーでしたorz お騒がせしましたすみません
845 :
名前は開発中のものです。 :2011/01/22(土) 04:54:25 ID:uiD6ulQK
>>814 の書き込みを見てlayerExRaster.dllを使って見たんだけど、何がどうなってるのかまったくわからない
kag.getLayerFromElm(%['layer'=>'1']).copyRaster(1,4,2,16,1000]);
こんな風に書いたりしてみたけど、syntax errorだし、そもそもtimeってなに?って感じ
誰か書式のサンプル教えてください
パラメーターにpageの設定が無いから、とりあえず裏表どっちにも設定してある まったく使い方がわからないの
すみません。 今、ノベルゲームを作っております。 ものすごく初歩的な質問なんですが、 前景レイヤではなく、 単純に一枚絵のイベントシーンを見せたい場合はどうすればいいのでしょうか? どういったタグを使えば、イベントシーンだけを表示でき、 どういったタグを使えば、元の文字画面に戻すことができるのでしょうか? 大変、基本的な質問で恐縮ですが、 教えてください。
850 :
510 :2011/01/22(土) 20:37:21 ID:+xsZly77
>>849 前景とメッセージウィンドウを消せばいいんじゃないの?
なんかいつの間にかタグの種類増えてたし そろそろKKDE2の更新を一つ・・・
>>850 ありがとうございます!
それだけでよかったんですね。
で、イベントシーンの表示を終了させ、
メッセージを戻す。
という手順ということですね。
たとえば kag.fore.layers[1].copyRaster(%['layer'=>'1'],20,40,100,10000); こうするとエラーは出なくなったけど、相変わらずうんともすんとも・・・・・
使い方以前に第一引数に入れるのはレイヤオブジェクト名だと思うんだが。
>>854 なんとなく出来た、ありがとう
これはトランジション"波"みたいな効果を出すための物なんだろうか
ほかにもリプルとかの物もあるのかな
波はネイティブコードだろ TJSでやるには重過ぎる処理
そのあたり自在に扱えると面白いと思うけど、解析するとかそう言う技術は全く無いからな
色々試してるけど、 kag.fore.layers[1].copyRaster(kag.back.layers[1],4,4,5,200); だけだとうまく描画されない upfateすると描画されるんだけど、なんか挙動が今一わからない timeって結局なんなんだろう・・・・・
質問 今表示してる全ての拡大縮小そのほか諸々してる画像(つまり表示されてるそのままでプリントスクリーンみたいに)を一枚のレイヤーにしたいのですが、そういうのはどうすればいいのでしょうか? まったく見当がつかなくて
多分piledCopyで出来る
861 :
名前は開発中のものです。 :2011/01/24(月) 23:56:14 ID:Ipp1jCxA
アニメーションを入れたいのですが、 アニメーションファイルを作るのにお勧めなソフトはありますか?
piledCopyではpngはうまくいかなかったので、colorRectでなんとかうまくいきました ありがとうございます
>>861 特に取得制限がなくて、2Dなら AfterEffectsが定番。
動画を作るならAEだけどセルアニメだと何になるんだろう?
AEでいいんじゃないの? レタスシリーズとかもあるけど、使っている人をあまり見かけない。
レタスはもろアニメ方面の決定版といえるだろうけど安くなってからそんなに経ってないからなぁ。 数年やってる人はそれ以外の手段導入しちゃってもう間に合ってるんじゃないだろうか。 自分もPhotoshopで作ってAEでパラパラさせて確認、連番で出力してImageMagickをバッチファイルで使うって手順で落ち着いてる。 AE使うと、ついエフェクト足したりしてコマ枚数増やしちゃうんだけどね。
そういえば、アニメで使われてるプロジェクトを売ってる会社ってどこだっけ? 深夜アニメとかで安くあげる時に使われてるの結構見かけるのよね 前に調べ物してる時に見かけたけど、今ググったらちょっとわからなかった。
レタスって何?
つかここは吉里吉里スレだよな?orz 両方観てる俺が一瞬勘違いした 吉里吉里でアニメってmpgで作るのかな? 全画面だとasdファイルで動かせるものなの? 容量的にはasdの方が小さくなりそうだけど、CPU負担がとんでもなさそう ファイルの座標取りとかも面倒そうだし 前にasdでwave再生とシンクロしてたらリップとズレまくってorzだったんだけど、 ちょっと前に見たどこだったかのブログでvideo再生とseplayは完全にシンクロして重くなって少々処理落ちしてもずれないって書いてあって mpgで試してみたらマジで俺のあの苦労はなんだったんだと思った
数年前のローエンドだがリップシンクくらいjavaでmpegとogg vorbisのエンコをCPUのみでやっても余裕だったぞ。 一番時間食ったのは一度エンコしてメモリに乗っかってるデータをOpenGLに転送するために OpenGLが扱える形式に変換する作業とメモリの転送の部分だから多分パワーごり押しでどうにでもなる。 だからおそらく遅いだの負荷がどうのこうの言ってやらないだけでやってみればだいたいの事は解決するんじゃないかと。 ましてやネイティブな言語とDirectXからハードウェア叩けるんだからやれないことはないだろう。 いまやスマートフォンに乗っかってるJavaで物理エンジン組んでおっぱい揺らしてる時代だぜ。
無料RPG製作ツール「ロープレジェネレーター」 直感的操作で簡単なゲームが作れます。 簡単に配布可能な状態に出力することができます。 (HSP製のソースコード付きで、スクリプトの知識があれば自由度の非常に高いカスタマイズ ができます) 他にも仲間預かり機能(100人も)や、仲間の状態/状態異常を細かく設定できたり、 乗り物が作れたりゲーム中に画像を差し込んだり、回転やフラッシュなどのエフェクト なんかも簡単に作れる様です。戦闘はデフォだとドラクエ系。 移動は矢印キーの他に、キャラがマウスを追っかけたりするとのこと。 他にはオートアクションというのがあってオリジナルシステムの製作に役に立つかも しれない機能です。これは、マップエディタで設定することで、「マップに入った時・ 出た時・一歩歩いた時・戦闘開始前」に自動的に実行されるアクションを設定できる 機能です。 ■分からないことや要望は掲示板へどうぞ。他にもいろいろ進化中みたい。
リンク針忘れてるぞ
音声から周波数とってリップシンクさせるのが一番楽かもしれない
目新しくない方法だけど ループチューナでラベル打ってリップシンクさせてる。ズレはない 波形解析して.sli自動生成とかの…技術はない
fftgraphを非表示のレイヤに描写して、座標の色を拾って音のON/OFFを判別? それくらいしかおもいつかねぇ……けなげな実装で泣けるorz
まぁでも、自分は立ち絵にリップシンクと目パチは不要派。 立ち絵が記号から離れていくと背景とのパースとか気になって仕事が増えるからw
今時、奥行きを使う演出は普通に見られるから、立ち絵のアニメが 無くても背景とのパースは気にしなくちゃだめな場合が多いと思うが。
奥行きの演出はOPとか以外ではあんま見かけないけどなぁ
想像以上に演出に手間が掛かる
>>753 のサイトでソファーとかの障害物の間を行き来させたり奧に行くほどぼかしたりしてるけど
手作業らしいから手間を考えると・・・・・・・
そもそも画面上で拡大縮小に目パチを追従させるプラグインを以前作って貰った事あるけど普通に再生させようとしたらどうしてもアニメ部分が馴染まず いちいち通常サイズで描画させて縮小させてたら処理が重すぎて古いマシンだと固まった
>>877 そういう演出は勿論やるけど、目分量。topも倍率パターンも一部除いて固定。
パース気にしたら背景ごとに微調整しなきゃいけなくなるんじゃないかと。
そういう微細なズレが違和感として余計に目立ってきてしまうよという考えです。
プロや大手なら立ち絵の座標が三次元あってーとかしてもいいのだろうけど。
いやいや背景の方をあわせるぜっていうリッチな状況にもなれそうもないし。
目パチ口パクを否定してるわけではないんですよ。
演出に動画ファイルを多用するかってのと同じで
配布形態やかけられるコストによっても違ってくるでしょうし。
ていうか最終的に好みですよねはいすみませんもうひっこみます。
>>875 なるほどw でもシナリオ量は大したことないのでループチューナで満足しちゃった
自分のゲームは、画面上のキャラをクリックしたりとか
文字送り以外の能動的な操作があるので、口パクあったほうがオイシイと判断
zoomプラグインで、背景と複数の前景レイヤーを一緒に拡大縮小したいんですが どのようにすればできますか?
>>881 引っ込む事はねーだろw
議論大いに結構
スクリプターが組むにしてもライターが組むにしても、背景は描き手の領分だからパースまでいちいち指定したりはしないな
どうしてもこいつだけは!って言うのはそうして貰うけど、ほとんどの場合はお任せ
だから立ち絵の位置はパースにあわせて擬似的に3Dに見えるように手作業で調整だよ
少なくとも俺はcenterとかcenterleftとか使った事無い
全部leftとtopで打ち込み
>>883 zoomは使ってないからわからないけど
[実行タグ1]
[実行タグ2]
[実行タグ3]
[実行タグの終了待ち1(wなんとか)]
[実行タグの終了待ち2(wなんとか)]
[実行タグの終了待ち3(wなんとか)]
この書式で同時に動かなければたぶん無理
それと追記 プラグインによって違うと思うけど、baseはたぶん動かせないと思うぞ
いまどきロースペックとか最初から切り捨てでおk
あそこまで行くとシングルコア1G程度じゃキツイんじゃないか?
889 :
861 :2011/01/26(水) 20:35:44 ID:DWqWW+sp
アドバイスありがとうございました。 AEを進められて、どういうものか見てきたのですが、 15万円もするような本格的なソフトは今のところ必要ないです。 調べてみて、モーフィングというやり方で簡単なアニメーションを入れることが出来そうなので試してみます。
なんだったかAEみたいなフリーソフトがあったはず かなり高性能って話しを聞いた事あるから、それで試してみてはどうだろう?
891 :
861 :2011/01/26(水) 22:01:03 ID:DWqWW+sp
>>890 試してみたい。
ぐぐったらそれらしきものが3つみつかった。
AviUtl
CrystelEngine
NicoVisualEffects
それとは別に、軽いソフトを一つダウンロードした。
sqirlz morph ってんだけど、使い方が分からん。
日本語での説明をしたサイトはなさそうだし
日本語版はダウンロードできないし。
まあ、単純ぽいから適当に試してみる。
>>881 >>884 背景?フリーの写真素材加工ですよ?パース?何それ美味しいの??
な人は、紙芝居だと割り切って背景と立ち絵を分離するって手もありだと思う。
2つが違う層にあることにしちゃえばパースもクソも無くなるからね。
背景を縁取りして縁より前に立ち絵を載せるとか、立ち絵の周りを直線的に白抜きするとか。
・・・単純な動きならともかく目パチ口パクさせると違和感バリバリだけどね!
逆に背景は背景と割り切って、映画のスクリーンみたいに細長く表示して手前にキャラを立たせればそれなりに雰囲気は出る
立ち絵など使わなければいい
メッセージ枠の左とか上にキャラチップで表情を出すのも紙芝居的にはありだとおもうけど少し寂しいかな
吉里吉里は文字表現にあまり選択肢がないのが惜しい。
897 :
861 :2011/01/27(木) 02:10:45 ID:KMchEVI+
898 :
名前は開発中のものです。 :2011/01/27(木) 02:49:38 ID:05xyTCRU
ムービー作って再生したほうが早いというか。 吉里吉里だけじゃできんよ。
900 :
861 :2011/01/27(木) 03:06:18 ID:KMchEVI+
>>898 お好きでしょう?
>>899 sqirlz morph ってソフトでモーフィングアニメーションを作ってやろうと試みているところです。
AEとちがって、レイヤを含む画像は扱えないので、透明部分はカラーキーで透明にします。
でも、カラーキーで抜くとふちがぎざぎざになるから嫌なんですけど。
901 :
861 :2011/01/27(木) 03:18:32 ID:KMchEVI+
アニメーションはどうしてもいれたいけど、とりあえずこれはおいといて製作をすすめます。 いい感じの方法がみつかればまた報告に来ます。 では。
>>897 1つめのやつ、吉里吉里じゃなかったっけ
二番目は髪の毛と翼は物理演算ぽい感じなんだけど俺AEそれなりに扱える方だと思うが少なくとも簡単に行える方法は無い AEで物理演算で胸をプルプルさせてる実験をやってる人がいるけど、そんな感じのエクスプレッションを使ってるんじゃないかと思うが、エクスプレッション自体は公開されてないから似たようなのを自作なんじゃないだろうか 腕の動きとかはモーフィングだろうただしレイヤーはかなり分解されてる 一番目はモーフィングと言うより膨張させるエフェクトを有機的に見えるようにかけてる感じだが、これを行う吉里吉里のプラグインは知らないからオリジナルじゃないかと思われ
>>897 素材を同調達するかで吉里吉里でどう実装するかはまた別の話すなー
一個目のは流行の手法で好きな人多いみたいだけど機械くさくて個人的には気持ち悪い。
3Dモデル作ってトゥーンシェーディングとかもモブ以外ではやってほしくないかも。
二個目のはアニメーターさんが入ってる気がする。そうじゃなかったら神w
実装ですが、全画面サイズに関わらず20コマ程度だったりコマの使いまわしが多ければ、動画再生開始のタイムラグで苦労しない分
asdの方がコンパクトで使い勝手も良くなると思います。
10秒とか連続して動きまくる場合はもちろん動画が有利なはず。互換性の問題で結局mpg一択になると思うので
圧縮率という点ではそれ程恩恵は得られないかも。x264とか吉里吉里に組み込めたらいいのにねー。
黒背景で作った光系のエフェクトをレイヤモード加算にして表示するとキレイになじんで面白いよね。
嬉しがってしばらくアホみたいに多用したw
1個目の流行の手法ってどうやってるの? AEでやるのは簡単だけど吉里吉里だとわかんないなぁ
asdファイルのcsv版みたいなタイムシートを読み込ませて Timerクラス使ってコマ画像をコピー、アニメ描画 素材作成はフォトショのみでごり押し 俺は少数派っぽい
つまりAEで作ってゴリ押しって事? するとスクリプターの技術じゃなくて絵描きスキル頼みなのかな あと光学系の話題出たからついでの質問なんだけど886に書いてあるブログの動画で右上からの光はこれもレイヤーモード変えてブレンドしてるのかな? 通常だとたぶん白だよね? オリジナルのプラグインなのかな?
>>907 そ、AEや3D系ツールでゴリ押し。絵描きやツール使いのスキルの出番です。
スクリプターの技術が問われるのはその素材を如何に無駄なくスムーズに動かせるか。
配布形態に合わせたサイズに収めるかっていう部分ですね。
頑張っても誰にも気付かれず褒めてもらえない部分でありながらちゃんとできないと重いとか吉里吉里はダメだとかいわれてしまう……
886のは楓softwareさんとこのアルファチャンネル付き動画プラグインとのこと。
動画素材はぽけいたじゃなくて他所のか自作でしょうね。
>>908 絵描きスキル無い俺でもAEならいけるから、AEでいけるならちょっと作ってみるかな
その前にasdをtimerに同期させるプラグイン作らないとダメか
光学エフェクトは楓さんのところのか
ちょっと使って見たけど、あれってリソースが溜まる不具合があって商用には向かないって言われてるから使用は難しいか
でもあれ?楓さんのところのってレイヤーモード変えられましたっけ?
>>909 ざっとみたところalphamovie.ksに手を入れるといけそうです。デフォではkag.*.base。まぁ、透過表示にしたらレイヤーモードいじる必要はないですね。
なので、あれは触手とかそういうのでこそ威力を発揮するものだと思ってますw
余談だけどNiveってソフトに可能性を感じる。
金がなくても根性があればかなりAEにせまれそう……。
いやレイヤーモード弄らないとあの透過処理は出来ないんじゃないか? alphaのままだとぽけいたの太陽光エフェクトみたいに白い光になるだろう? あのサイトのって、突き詰めて行くとこう言う微妙な部分でかなり謎な部分多いんだよな
レイヤモードいじるなら、そもそもアルファムービーでなくてかまわないのでは
>>912 いやフォトショで試すと分かるけどレイヤーモードを変えただけだと白黒の部分をキープしつつ抜く事が出来ない
どのモードも基本的にその画面の何かの色を基準に合成されるからレイヤーモードだと不可能な合成がある
それ以前にそもそもvideoタグでレイヤーモード変えるパラメータってあったっけか?
や、スクリーンとかで光かさねるなら、中立色があるから、アルファなくても効果部分が抜かれた エフェクト作れるから、別にアルファじゃなくてもいいだろってだけの話なんだけど……・ 使うのが駄目ってわけではないけど見た目そうかわらないのに処理重くなるからメリットないよね。 レイヤモードかえる処理ぐらい tjs でちょちょっとかけばいいのでは
915 :
913 :2011/01/27(木) 18:19:55 ID:z7DThXxy
>>914 たしかに言う通り光学系だけならpsscreenあたりで重ねればいけるな
事実上動画サイズも小さくなるし、レイヤーモード変えられる技術あるならそっちが確かにいい
前にvideo自体を拡大縮小しようとvideoタグ関連読んだ時、ヘタレレベルじゃ見た目案外複雑で読みづらいイメージあって挫折したけどもう1回読んで見るか
技術ってほどのもんでもないよ [videolayer channel=1 layer=1 page=fore] [video visible=true mode="layer" loop=true] [openvideo storage="hanabi.mpg"] [preparevideo][wp for=prepare] [playvideo] [layopt layer=1 page=fore top=0 visible=true] [eval exp="kag.fore.layers[1].type = ltLighten"]
917 :
861 :2011/01/28(金) 05:16:55 ID:q5eIDIBU
質問です
zoomプラグインで画像を拡大すると
ちょっとずつ画像が大きくなっていきますが、それと同じように画像を変形させたいです。
こういう風に書くと、いきなり変形後の画像が表示されてしまいます。
ゆっくりと変形させていくにはどうしたらいいですか?
[iscript]
var layer0 = kag.fore.layers[0];
var tempLayer = new Layer(kag, layer0);
tempLayer.assignImages(layer0);
layer0.setImageSize(800, 640);
layer0.setSizeToImageSize();
layer0.neutralColor = 0x00000000;
layer0.affineCopy(tempLayer, 0, 0, tempLayer.imageWidth, tempLayer.imageHeight, false, 10, 0, 790, 0, 0, 630, stFastLinear, true);
invalidate tempLayer;
[endscript]
画像の変形を繰り返せば、
>>897 の1つめみたいなことを擬似的に出来るんじゃないかと思って。
>>916 直接モードを変えるわけナルホロ
>>917 俺もタイマーを使ってパースで同じような事が出来ないか考えたけど、制御するパラメータが膨大杉て考えただけで挫折した
タイマーを使って変化させれば可能だけど、1点に対して完了値(最終的な座標)と増加値(完了値までどのくらいで移動するか)
XY別々制御なら1点につきこの倍 三角関数使うならもっと複雑になるから挫折
たぶん実際はもっと単純な事をやってるんじゃないかと
919 :
883 :2011/01/28(金) 10:26:33 ID:PSPrGeRb
exmoveのお陰で狙い通りの演出ができるようになりました。 教えていただきありがとうございました。 しかし、拡大すると周りが白くなるのはどうしよう… 重ねると浮く…
>>919 ちょっと意味が分かりづらいが、拡大でまわりが白くなると言うのはもしかしてマスクを使って画像を抜いてるのか?
画像はαチャンネルつきpngが基本
922 :
883 :2011/01/28(金) 13:01:09 ID:PSPrGeRb
すみません、解決しました。 png透過の立ち絵と表情差分(顔部分だけ四角く抜き取ったもの)を 重ねて動かしてたんですが、差分の画像を立ち絵と同じ画像サイズにして 作っていたのを差分の部分だけの画像にしたらきれいにいきました。 位置設定がメンドイとか言ってる場合じゃなかったです。 立ち絵の周りが微妙に白いのは、あんまり気にならないのでよしとします。
微妙に白くなったりと言う不具合や仕様は無いから、それは単にαの作り方の問題 吉里吉里よりPSスレで聞いた方が良い
いや。それは、このスレで十分解決が得られる問題 拡大時に境界にノイズがでるのは、周囲の透明で隠れてる部分のピクセルの色をひろってしまうからで、 これはα部から外に色を拡張したデータを作っておくことで防止できます Photoshopはこの機能は無くて、市販ツールだと OPTPiX Pro とかを買えばこのための機能が専用でついてます。 そういうものを特に買わなくても吉里吉里には既にツールがあるのでそれを使いましょう。 画像フォーマットコンバータ(krkrtpc.exe) で、オプションを表示して、 透明部分のある画像/完全透明部分の色情報、の指定を「合成」にした上で 変換かければ、このαの境界処理がおこなわれるので、色漏れしない画像になります。 PNGを使う場合も、他の画像ツールから出力したそのままを使うのではなく、 一度 krkrtpc を通すような作業フローにしたほうが良いです。 # どうせ変換するなら tlg にしたほうがロード軽いんですが デフォルトで 合成(8pixel) になってるのですが、PNG/TLG画像の場合は 1ないし2pixel 指定で十分です。 メイン/マスク分離方式でJPEGを使う場合は、これが小さいと境界でのモスキートノイズ防止効果がないので 8pixel のままが良いでしょう。 ただ、どうも今確認してみたところ、吉里吉里2.26以降の krkrtpc.exe はこれが正しく機能してません。 2.24 以前は大丈夫なようです。バグとして報告いれておくので次の版では直ると思うけど、とりあえず 今必要な人は krkrtpc.exe は 2.24 をダウンロードしてきて使うべしです。 なお、「αチャンネルつき32bitBMP」に変換して適当なビューワで開いてみれば どういう処理がおこなわれるか一目瞭然なので、一度見ておくと良いかと
それは単にアンチが掛かってる場合1〜2ピクセル小さく取るじゃダメなの? AEや他のツールでも同じく外側を拾うから、基本的にアルファ出力が必要な物は必ず数ピクセル削ると駆け出しの頃に教わったんだけど。
切り抜き作業ならともかく、すでにぴったりで描かれたデジタルデータがある場合はプログラムで外側に拡張するのが普通です
立ち絵とか当たり前にそうやって上がってくるから、当然やってあたりまえの技術だと思って気にも留めてなかったけど、そこまで気を使ってる方が珍しいと言う事なのか。 地味な事だけど、スクリプターも彩色さんにずいぶん助けられてるんだな。
>>927 だな
俺もシナリオ兼スクリプタだけど、結局は絵師さんがいないとメシが食えないわけだし
ありがてえありがてえ
中にはぶっころころしてあげたいくらいムカつく絵師もいるけどな ほんとピンキリ、特にアホはTwitterとか頑張りやがるから今何してるのとかすぐバレる
陰口をたたくのが生きがいの、典型的な能なし嫌われ者。
せめて pngで 下さい (´・ω・`)
「もう、マスク画像すら無いjpg画像を渡されて『コレそっちでちゃんと透過処理して立ち絵の部分だけ見えるようにしといて』と言われる仕事はお断りだお」とか そんな残念すぎるパターンではないと信じたい
吉里吉里に入っているzoom.ksで背景と前景レイヤーを同時に拡大縮小するように改造することってできますか?
なぜzoomにこだわるのかよくわからん
席が隣同士なのにtwitterで会話するのはアホだと思う そんなどうでもいいことは置いといて、月末マスタだお
月末スマタに空目したのは俺だけじゃないと信じるぜ
tjsで初心者の質問です。 自分でオリジナルのtimeクラスを作ってkag.addPluginで登録しました。 その後吉里吉里でそのクラスを使って定期的に画像を変えるスクリプトを組んだのですが、その状態でセーブして適当にロードして別のシーンを読み込むと、オリジナルのtimeクラスが動いたままになってしまってます。 たぶん他にオリジナルで作ったクラスも同じように内部的には動きっぱなしになってるのではと思うのですが、これを回避するにはどうしたら良いでしょうか?
セーブロードの処理の流れで動作を止めるように書きましょう。プラグインにはそのための口があります。
今試してるのですがまず起動中かどうか"f.起動中=true"とかしておいて onStoreでstopして、onRestoreで"f.起動中=true"かどうかをチェックしてstartかstopのままかにすればいいのでしょうか? onStoreはセーブ可能なラベルのところにきたらその状態を保存とあるのですが、これは例えばonStoreの中でフラグの中身を書き換えるようにしたらその状態で保存されるのでしょうか? 同じくonRestoreでは、読み込まれたあとに書き換えると言う処理になるのでしょうか?
>>940 吉里吉里に同梱されてる雨や雪プラグインの該当箇所を参考にするといいよ
>>941 これ1つを動かすのはなんとなくわかったのですが、仮に2つのレイヤーにそれぞれのクラスで定期的に画像を変えようと newで2つ作って同時に動かしました。
すると片方は上手く止まってるようなのですが、もう片方が動きっぱなしみたいでちょっとバグったようになってしまいます。
やってる事は
>>940 で書いたように適当に変数を作って動いてるかどうか判定して
onStoreは何もしないで、pnRestoreの時に判定してます。
//読み出し
function onRestore()
{
if (swtch_onoff)
{
start();
}
else
{
stop();
}
}
こんな一番単純な形です。
start()の方は、一応一度stop()してから動かすようになってるので二重起動はしないはずなのですが・・・・
原因がわかりました 同じオブジェクトをnewでコピーしてパラメーターだけを弄って別々に使っていたため、onStoreで配列保存した時にf.で上書きされてしまったためみたいなのですが。 newで複製したオブジェクト自身の名前を取得する方法はあるのでしょうか? f.[オブジェクト自身の名前][中身のパラメータ]としないとたぶんうまくいかないんじゃないかと思いますが、ほかにうまい方法はありますでしょうか?
affineCopy じゃ、画像をひし形に変形させることは出来ても 台形に変形させることは出来ませんよね? 台形に変形させるにはどうしたらいいんですか?
過去ログ見てたら その7 あたりで 4年ほど前に俺と同じことを質問してるやつがいた。 >506 名前:名前は開発中のものです。 :2006/03/20(月) 13:04:44 ID:84J249Lb >レイヤの変形についてなんですが、 >射影変換の方法をご存知の方がいらっしゃいましたら >ご教示願えませんでしょうか。 > >具体的にはレイヤを拡大しながら矩形を台形に変形させたいのですが、 >方法がわからず難儀しております。 >当方、数学はからっきしダメですが、 >二次元アフィン変換で出来ないということは理解しているつもりです。 それに対する回答は、プラグインを探せというものでした。
台形だと、お絵描きソフトに入ってる変形・歪め処理レベルのコードが必要な気が。 画像処理に詳しくないと、綺麗な変換は難しいんじゃないか?
透視変換のならプラグインあった気がするけど
吉里吉里付属のperspective.dllでいいんじゃないの?
perspective.dllは前から気になってる事があるんだけど、 たとえば斜め下の方に絵を引っ張ると、なぜか引っ張った側の上の方(例えば右下を引っ張ると右上)に画像が多少引きつるのよね。
950 :
942 :2011/01/31(月) 12:08:09 ID:NrtQfKPr
onStoreの処理はうまく出来たけど、結局複製したそれぞれのオブジェクトで保存しようとすると吉里吉里側からは見分けがつかなくなって誤動作しまくってどうしようもなくて、 結局一個のプラグインで複数動かせる形に作りかえたんだけど、今回みたいにnewで複数複製したオブジェクトそれぞれ自身を見分けさせる方法って結局無いのでしょうか? オブジェクト自身の名前を取得するプロパティかなにかあると思ったんだけど、探したけど見つからなかった。
適当に var name; とか var id; とかメンバつくって、そこに自分でつけた名前ないしIDないしいれておけば簡単に区別できるのでは。 単に固有の文字列がほしいだけなら (string)obj; でユニークな文字列にはなりますが言語仕様できまってるものではないです
>>951 そこに思い至らなかったです。orz
次回作る時にそうしてみます。
ありがとうございました。
少し質問いい? movie.tjsを読んでるけどVideoOverlayクラスがまったくわからない セグメントループをさせてみようと、とりあえず・・・・・ VideoOverlay(kag.getLayerFromElm(%['layer'=>'0', 'page'=>'fore'])).setSegmentLoop(0, 59); こんな風に書いてみたんだけど上手く行かない slotをたぶんどこかで設定するんじゃないかと思うけど良くわからない どう書くのが正しいんだろう?
>>953 クラスって知ってる?使う前に new でオブジェクト作成しないと駄目だよ。
slot は前景レイヤの番号なんかと同じで KAG 側の機能。
VideoOverlay クラス自体にはない。
>>954 ごめん初心者すぎる俺が悪いんだけど、tjs式一発でビデオのセグメントループを
>>953 みたいに制御するのは出来ない?
再生スピードとか色々変えられそうだと思ったけど無理なのかな?
えとKAICHOさん作なのかな。 RunOnExit.ksっていうプラグインを使用させてもらってるんだけど、 これをある特定の場所でしか機能するようにしないってできるのかな 例えばシナリオの部分でしか機能せず、 タイトルやセーブ画面とかでは機能させないとか
それは最後に終了前の挙動を制御する奴でしょ? 単にタイトルとかセーブロード画面とかにフラグおいておいて、それで分岐させて終了方法を変えるんじゃダメ?
>>957 初心者なものでその方法がよくわからず…orz
つまりフラグがある場所では終了時に設定した処理を機能させない…ということでしょうか
>>957 すみません、言われた方法を試したところ意図した動作ができました。
ありがとうございます。
普段変数を使わないので盲点でしたorz
>>955 kag.tagHandlers.videosegloop(%["slot"=>"0", "start"=>"0", "end"=>"59"]);
でいいんじゃね
再生速度変えたいなら
kag.tagHandlers.video(&["slot"=>"0", "playrate"=>"2.0"]);
ところでそろそろ次スレの季節。テンプレとか何か変更ある?
過去ログは
>>179 に変えたらいいと思う
>>960 ありがとう
2つともうまく行ったよ
ところで短いloop動画をplayrateを1より小さくして再生すると、なぜか定期的に終端で停止するのはどうしてなんだろうかと新たな悩み・・・・・
そういえばよく次の選択肢へジャンプ(スキップではない)する機能があるんだけどあれ動やってるんだろうか。 選択仕事にフラグでも立ててるのか?
単純にgotoするだけじゃまずい部分は描画せずに内部処理だけ進めればいい。
KKDEを使ってます。MIDIをBGMで鳴らしたいのに音が出なくて困ってます。 スペルミス、configのBGM設定をMIDI、プロジェクトフォルダ内のbgmファイルにMIDIを入れてる、 これらのことを全てチェックしても改善されませんでした・・・。 ちなみに、普通のワードパッドにタグを打ち込んで、krkr.exeでプロジェクトを開くと、 ちゃんと音が鳴るのに、KKDEで作ったプロジェクトのみ音が出ないんです。 原因がわかる方、同じようなトラブルで改善できた方いませんか?
>>964 さすがにそこまでの技術が無いから、出来るようになるまでそこは放置するしか無いみたい
canskip=falseみたいに処理中は入力や進行を停止させる処理って出来るのかな? waitや一時停止とかtjsじゃ出来ないって聞いたんだけど
>>967 intervalに処理時間渡してtimerで擬似sleepすれば良いんじゃね?
やっぱりそうするしか無いんだね あってもよさそうな物だけど結構困る事多い
吉里吉里のムービーの対応拡張子ってmpgとwmv? どっちでもWindowsユーザーはデフォで再生できるよね
んなこーたない
>>970 mpgとwmvは飽くまで拡張子、もう少し言えばコンテナであって、中の動画のコーデックを保証する物では無い。
唯、弄ってないwindowsでも、MPEG1やWMVの古いバージョンを再生出来ない事はあんまり無い。
まあ、汎用性を気にするなら、MPEG1にしときゃそんなに間違いは無いと思う。
なるほど、まあリファレンス見たら普通のwmvでDirectX9がどうこう書いてあったから 大丈夫かな MPEG1よりwmvの方が画質いいらしいし
>>974 lat式ミクにLove&Joy踊らせて輪郭線処理したα付き動画その他をレイヤで重ねて再生してるだけじゃん。
というか動画の説明にも動画中の解説にもそう書いてある。
どうせならDance Evolution風にして欲しかった。
輪郭線抽出してるから自前でやったのかMMD関連でそういう機能があるんじゃねーの?
自前でやるにしてもそう難しくない。
何故俺なんだww まあ、他畑の話になると、途端に解んなくなるのは良く有る事。 実際には、至極簡単な事であってもね。
>>975 MPEG1よりWMVの方が画質が良いのは事実だと思う。
唯、それはMPEG1が非常に古い技術だからであって、WMVが優れたコンバータと言う訳でも無いんだよなぁ。
今なら、H.264をチューニングするのが、コスパ的に最強何だけど、誰かH.264の再生をサポートしてくれんかのう…。
wmpは吉里吉里はやめた方がいい 特に商品にするなら vistaや7はos依存で吉里吉里側じゃ対処出来ない問題がある
>>976 泡とかAEの力業なんだな AEとか無理
MMDを吉里吉里にリンク出来ないものかな
なんかいけそうな気もするんだけど
>>978 H.264 はライセンス的に危険(mp3と同様)
OS内蔵コンポーネントならMicrosoftが肩代わりしてくれるけど Windows7 以降でないと搭載されてない
>>979 800×600 より大きいサイズだともう mpeg だとビットレートに対する画質が割にあわない(mpegで満足がいくビットレートにするとでかすぎて重い)ので、
商品でもWMV使ってるところは普通にあるよ
Vista以降でのWMV再生で出る問題は、オーバレイを使わずにVMR(ミキサー)を使えば基本おこらない。
ただし、ドライバのバグでミキサーがおかしい時もあるので、レイヤー再生できる機能もつけておくのが
サポート的には無難ではある。
御社はHDTVにもう対応してるのか OS側の問題だからそっちで勝手にドライバーを更新汁!とか言いたいけどお客様は神様だからそれが出来なくて、いちいちサポートするのが面倒だからmpgでずっとやってる
984 :
名前は開発中のものです。 :2011/02/02(水) 15:17:50 ID:GH102q30
商用ならWMVの方が安心安全でいい 依存することは無駄な仕事を減らすいい手段 趣味でやってるならリスクとってもいいけど
ちょっとkag.fore辺りのオブジェクトのことについて聞いても良いかな。 バージョン2.32を使ってて、AfterInit.tjsにて Layer.foo = function(bar){}; みたいな感じの記述をしてるんだ。要はLayerクラスにメソッドを後付けで足そうって話。 これはKAGLayerやその更に子クラスにはキチンと継承されてるみたいなんだけど、 kag.fore.baseをコンソールでチェックする(kag.fore.base.foo と打ち込む)と 『(例外発生)メンバ "foo" が見つかりません』 ってエラーが出て未定義扱いになってるんだ。 fore.baseのクラス(BaseLayerクラス)には継承されてねーのか?と思って global.BaseLayer.foo ってコンソールに打ち込むと、それはちゃんと存在してるらしい。 つまりkag.fore.base(やback.base, ほかにもfore.layersなど、kagオブジェクト内の子レイヤ)に限ってだけ fooメソッドが行方不明になってるんだ。 何でそうなっちまうのか分かる人居ないかな?
H.264 はややこいからなぁ 作成と再生: 商用ツールなら、ツール側がライセンス料を払ってるので基本意識しなくて良い 「フリーソフト」はぶっちゃけ×。趣味はお目こぼしされてるが仕事で使うのは危険 吉里吉里での再生については、FlashPlayer 経由で再生という手が一応つかえる 配布: H.264 はここにもライセンス料かかる。困ったことに。 12分以下なら無料、それを越えたら、タイトルに払われた料金の 2% もしくはタイトルあたり 0.02ドル まあ、ゲーム中でのOPとかED、あとワンカットだけの演出とかなら 12分越えることはまずないだろうからあんまり気にしなくてもいいといえばいい
>>985 そりゃ AfterInit で定義してるからだろ。
TJSはインスタンスをクラスからのメソッドの複製で作成するので、インスタンスを生成後にクラスにメソッドを足しても
それは個別のインスタンスに反映されない。
機能追加は Override.tjs でやりなされ
>>987 あ、そういうことか。Overrideの存在をすっかり忘れてた。
で、個別の存在に追加部分が適用されないってのもそういう理屈だったのか。
なるほどようやく合点が行ったよ。ありがとう
デコーダのライセンスはフリーにして欲しいよなぁ 普及させる気があるのかと……
ちょっと質問お願いします。 画面の絶対的起点0.0が欲しいのですが、書式がうまくわかりません。 kag.fore.layers[1].fillRect(0, 0,kag.innerWidth,kag.innerHeight,0xffffffff)とすると、レイヤーがtopやleftの数値が入ってるとずれてしまいます。 それとkag.〜のメソッドやプロパティはどこに書いてあるのでしょうか? tjsを直接読むしかないのでしょうか?
>>990 強引な方法で無理矢理解決しました^^;
がやっぱりkag.〜系はどこに書いてあるんだろうと必死に検索中orz
俺も向こうに誤爆ったprz
>>990 その例だと絶対座標(0,0)は、レイヤー1的には「画面外」なので塗りつぶせないのでは?
kag.fore.layers[1].left, kag.fore.layers[1].topをそれぞれゼロにするしか
kag系って何のことだよと思ったけど
吉里吉里2 リファレンス>Layerクラス>プロパティ
参照のこと。でいいのかな
リファレンス読めよ
995 :
992 :2011/02/03(木) 14:26:44 ID:DHSzvFPS
>>993 似たような処理で解決しました^^
ありがとうございます
やっぱりそう言う方法しか無いのかな
kag.何とかって例えばtagHandlersとか、有名なのは検索すればすぐ出てくるんだけど、そうじゃないのはどこかに一覧が無いのかなと思って
吉里吉里のパッケージの中身をたとえばtagHandlersで検索してもMainWindow.tjsくらいにしか書いて無いのでコマンド一覧があれば勉強になるかと思ったのですが
だから
>>3 の各種リファレンスや、
>>4 のinsideKAG3じゃあダメなのかい^^;
言葉の定義が色々と食い違ってるみたいだ…
一応リファレンスも全部読んでinsideKAG3なんかも活用してるんだけど insideKAG3は主要な物だけですべて掲載されてるわけじゃないらしいと言われたし。 参考書のあどばんすど吉里吉里/TJSも併用して読んでるけどあれも全てが掲載されてるわけじゃないし。 それともやはりinsideKAG3とリファレンスを付き合わせたら全部載ってるのかな? 初心者なもので、ネットでウロウロと検索してて時間が非常にもったいないと思ってはいるのだけど。
MainWindow.tjsってわかってるんだから読めばいいじゃん 読んだほうが早いから全部載ってるリファレンスなんてない
>>997 これは嫌味とかそういうの抜きで、各種tjsにGERPかけて読むのが結局はいちばん効率いい
やっぱりtjs読むのが一番早いんですね。 初心者だとまだ何やってるのかよくわからない部分が結構あって完全に読み切れなくて結局ぐぐるんだけど。 すでにGERPがよくわかってないorz ぐぐったらもしかしてgrep?って出てきたのでそれのことですか?
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。