画像操作やクロスフェードの話。AIRNOVEL技術を高速習得-その7
記事 第1回~6回
NscripterからAIRNOVELに移植する技術を高速で習得する - フワフワソ・ラウンジ(NEW!)
NscripterからAIRNOVELに移植する技術を高速で習得するーその2 - フワフワソ・ラウンジ(NEW!)
*勉強会の資料も紹介*NscripterからAIRNOVELに移植を高速習得ーその3 - フワフワソ・ラウンジ(NEW!)
クラウドファンディング御礼と、AIRNOVEL技術を高速習得ーその4 - フワフワソ・ラウンジ(NEW!)
AIRNOVEL技術を高速習得ーその5 - フワフワソ・ラウンジ(NEW!)
Nscripterとairnovelの違いとは?AIRNOVEL技術を高速習得ーその6 - フワフワソ・ラウンジ(NEW!)
前記事、初心者はsub.anはいじらなくてOK!と一度書いたのですが、よく見たらsub.anの「定数」というところも見て置いた方が良さそうなので、訂正しました。
(クリックの効果音とか、スクリーンショットの対象レイヤとか決めてる。それも変えなくてもいいという人は見なくてもOKです)
●作業中の罠
属性「 」は異常です
というエラーが出る問題。原因は、全角空白。
タグ[ ]の中に全角空白が入ってるとエラーが出ます。タグの中で受け付けるのは半角空白のみ!
(全角を受け付けたりするときもあるが、いつか必ずエラーにつながるのでダメ)
対策:テキストエディタの設定で、全角空白を見えるようにしておく。
(meryだと、表示→記号のところから設定)
つまらないところでつまずいてしまったら悲しいので要注意です。
ここをよく読んでおくとよいのかも
http://famibee.web.fc2.com/tag_dev/dev.htm#f_and_g4pro
*** fn: line:0(UncaughtErr)【Error】TypeError: Error #1009
というエラーが山のように出てanbooksがフリーズする問題。
長時間anbooksを起動したままテストプレイを繰り返してたら発生。anbooks再起動で解決したものの、原因が分からず、夕街さんに問い合わせ。
夕街さん
オーバーフローかもです、再起動でお願いいたします。ビルド版では起こっていません
フワフワソ
ありがとうございます!スクリプトに問題があったわけじゃなさそうですね^q^
ビルド版で起こらないというので問題なさそうです。
ちなみに数日くらいanbooks立ち上げたまま、スクリプト修正→テストプレイ繰り返してたかもしれません。同じエラーが出た場合は参考までに。
(開発中画面。とりあえずアイテムボタンまで実装。「栞を挟む」ボタンが、アイテムボタンの代用)
●改造のときのヒントというか自分用メモ
*レイヤーの追加について
・立ち絵同時表示3人より増やしたいとき→main.anの冒頭をいじる。
だけで済まない。sub.anで「; 表示されるレイヤ(セーブ・スナップショットなどの対象)」のところなどもいじらなきゃいけない。
; マクロ 場面転換 [macro name="grp"]のところも、[img layer= を追加しておく。(場面転換のときに画像消さなくていいというときは、追加しなくていい)
([grp]だと、立ち絵レイヤ0,1,2と背景も含めた画面全体を出したり消したりできる。[grp]で操作する立ち絵レイヤをもっと増やしたいときはsub.anの該当場所をいじる。; レイヤ切り替え・メインの[img layer=0 となってるところを、コピペで増やして[img layer=3 [img layer=4 みたいに追加する)
・文字ウインドウ(つまりボタン用)を増やすとき→main.anの冒頭をいじる。
だけでは済まない。sub.anで「; 表示されるレイヤ(セーブ・スナップショットなどの対象)」のところなどもいじらなきゃいけない。
; マクロ 場面転換 [macro name="grp"]の中に、増やしたボタンレイヤを消す命令clear_lay入れておくと、[grp]で場面転換するときに一緒にボタンが消える。
(場面転換でボタンを消したくないときは[grp]の中はいじらず、以下のようにすると、タイトル画面に戻るときだけボタンが消える。
*title_sys の[grp bg="black" sys_menu=false b_alpha=0]の前あたりに、増やしたボタンレイヤを消す命令clear_lay入れておく。つまり、タイトルに戻るときにボタンを消す。
同様に、ss_000.anでタイトルに戻る部分の、[grp bg="white" time=2000 sys_menu=false]の前あたりに、増やしたボタンレイヤを消す命令clear_lay入れておく)
*grpやルール画像について
・grpでルール画像が使える
[grp bg="背景画像" rule="ルール画像" time=変化させる時間]
grpはタグじゃなくマクロなので、マクロリファレンスを見る
マクロリファレンスに、ルール画像についての言及はないように見える。(記述漏れ?)
また、小さいルール画像をタイル状に埋め尽くしてもくれないので、最初から埋め尽くした画像を使うor作る
・ルール画像の指定がないと、普通にフェードインになる
[grp bg="背景画像" time=変化させる時間]
*音楽の指定
[bgm fn="音楽ファイル名" time=クロスフェードにかける時間(省略で0)]
これもマクロリファレンスを参照。
しかしこのマクロ[bgm]は、一般的なクロスフェード(フェードアウトしつつフェードイン)ではなく、前の曲のフェードアウトを終えてから、次の曲をスタートさせる仕様。つまり、再生用のトラックが一個しかない。クロスフェード大好きなフワフワソにとっては、ちょっと使いづらかった。
何とかクロスフェード出来ないかと、SEのトラックをBGM用にしたりじたばたしてたのですが、そうこうしている間に、夕街さんがAIRNOVELをアップデートしてくださいました。
電子演劇部 【23:55更新】AIRNovel&ANBooks更新:厳密なBGMクロスフェード
これによって、曲同士が重なり合いながら変化するというクロスフェードが可能になります。夕街さんありがとうございます!
(delay=を指定することによって、次曲の始まるタイミングを遅らせることもできるので、たとえば、[bgm fn=曲名 time=500 delay=500]のように指定すれば、以前と同様の、「前の曲のフェードアウトを終えてから、次の曲をスタートさせる」という再生方法もできます。また現状、time=の記述を省略すると再生出来ない不具合もあるようですが、そのうち修正されるかと思います。対策としては、time=0で指定すればOK)
*フワフワソ流クロスフェードの使い方
ソラとピヨちゃんでは、DJのプレイスタイルを真似た手法を使っています。
・雑踏の音など、自然音型のBGM→クロスフェードに10秒くらいかけて(time=10000)→次の曲
これによって、雑踏の音の中からだんだん音楽が立ち上がってくるような効果が得られます。アニメのクライマックスとかで、ドラマが進行しながらだんだんエンディングテーマがかぶさってくる手法、かっこいいですよね。イメージとしてはあんな感じです。ここぞというところでは、20秒とか30秒とかかけてもいいかもしれません。
・リズムがないアンビエント系のBGM→クロスフェードに時間をかけて→リズムのある曲
これもいい感じです。
リズムがないBGM(or自然音系のBGM)と、リズムのあるBGMは、時間をかけたクロスフェードがうまく合います。
・リズムのあるBGM→クロスフェードは素早く(time=200とか500とか)→リズムのある曲
リズムのある曲同士をつなぐときには、重なった部分でリズムのばらつきが汚くなるので、素早くクロスフェードさせます。
*音楽ファイルの形式について
せっかくのogg対応でしたが、どうもうちの環境ではうまく動きません。過去記事に書いたようにoggoならちゃんと動くと思っていましたが、フェードインが働かないのです。また、再生時にプチノイズが入る現象もあり、フワフワソはファイルをmp3に変換して使用しています。
ちなみにmp3を使う場合、mp3のライセンスは、ゲーム組み込みのときに5000部売れたら2500ドル=30万円くらい
mp3licensing.jp | よくあるご質問 | 開発者・メーカー用
mp3licensing.jp | ライセンス実施料 | ゲーム
m4aの場合、ライセンス料は無料のようです。
↓「AACには使用料がかかりますか」のところ
http://www.vialicensing.jp/licensing/aac-faq.aspx
現状では、airnovelはm4aをビルドのとき暗号化出来ないのですが、airnovelは今後m4aを研究していく方向のようです。
なのでフワフワソは当面mp3を使うことにすることにしました。m4aの本格対応を待ちたいと思います。
*立ち絵の指定、[fg]タグについて
[fg]はマクロリファレンスに解説がない。
[fg fn="画像名" layer=レイヤ名 pos=l rule="ルール画像" time=変化時間]
ルール画像も指定出来る。(timeでルール効果の時間書かないとだめ。書かないと一瞬で表示されて、ルールが適用されないので)
posについてはタグ[layer]のところ参照。表示位置に関連した命令
[fg]は、全体としては[grp]と似たようなものか
「立ち絵を簡単に扱う」のところの[fg2]も参考
*複数の画像の同時操作
[fg]だと複数の画像の同時操作がよくわからないので、自分でタグ打った。
↓
・複数のレイヤの画像を同時にいじる方法。
[trans]で ” ” の中で , で区切れば複数のレイヤを指定出来る。ボタンのレイヤも指定出来るので、立ち絵とボタンを同時に出したりもできる。
・ルール画像を適用しつつ、レイヤ5と6の画像を同時に出す
[lay layer=5 fn="画像1" visible=true page=back]
[lay layer=6 fn="画像2" top=300 left=500 visible=true page=back join=true]
[trans layer="5,6" rule="ルール画像" time=変化時間]
[wt]
(「 rule="ルール画像"」を書かなければ、普通にフェードになる)
(top=300 left=500は、表示位置の指定。指定なしだと、画像1と画像2が同じ場所に表示されるので)
・ルール画像を適用しつつ、レイヤ5と6の画像を同時に消す
[clear_lay layer=5 page=back]
[clear_lay layer=6 page=back]
[trans layer="5,6" rule="ルール画像" time=変化時間]
[wt]
・レイヤ5と6を同時に消す。ルール画像なし
[clear_lay layer="5,6" page=both]
>clear_layの場合は、レイヤ名(半角カンマ区切りで複数レイヤを指定可能)
↓
transとclear_layが複数レイヤを処理できるみたいだけど、たいていのlayに関する命令は、一つのレイヤだけを対象としてる。