見出し画像

TRPGスタジオでリプレイ動画を作る6


処理の自動化マクロを作成


  1. 画像・BGM(SE)ファイルのリネーム

  2. 過剰記述の削除

  3. シナリオファイルの分割・1・2

  4. プレビューしやすい一工夫

  5. プレビューしながら余計なものや時間を削る

  6. 演出に必要なものを付け加える

  7. 動画再生のための一工夫

  8. プレビューを自動撮影

  9. おまけ:外部ツールでさらに演出アップ


あとは自由にやれ!!

といったところまで来ました。
事実そうなのですが、最後にプレビュー周りを楽したいと思います。

ちなみに、ティラノスクリプト及びスタジオはHTMLのように
その箇所を修正したら即プレビューでリアルタイムに反映!
みたいなのはありません。
(※HTMLで画面構成してる時は除く。)
一応、そのシナリオを読み込む前なら反映しますが基本的には
プレビューウィンドウを閉じてスタジオ側から「ゲーム再生」を押すか、
プレビューウィンドウの「リロード」を押すのが基本的です。


[jump]や[call]や[sleepgame]でシナリオを再読み込みしてもその間に修正したものは反映されませんでした。

さて、基本的にここからは
プレビューを見る→修正箇所を発見する→コードを修正する→最初に戻る←
になります。

有志が作った拡張機能

先に楽できる(かもしれない)プラグインをご紹介します。


[s]で止めて、ラベル(*string)があり、[p]で進むような極一般的なADVの時
真価を発揮します。
ただやはり、プラグインやマクロなど事前に読込みを終えていないと
ジャンプ先でエラーになります。
また、ラベルまでに表示させる背景やキャラクターなどはラベルジャンプ
した場合表示されません
そのシナリオの冒頭にジャンプした後、読み進めたいところまでを
ここまでスキップ」で定めて進める必要がありそうです。
そのスキップも[wait]の数値で止まります。

例えるなら

;(tes4に今回は飛びたい)

;[jump storage="scene1.ks" target="*tes1"]
;[jump storage="scene1.ks" target="*tes2"]
;[jump storage="scene1.ks" target="*tes3"]
[jump storage="scene1.ks" target="*tes4"]

デバッグの度コードを書き換えて見ていたものを

GUIしてる。

ボタン一つでジャンプできちゃうというものですね。
ただこちらも、修正を即反映させるという機能はないです。

上記は全てコードで記入することができます。
そのコード記入CUIボタンで視覚的に行うGUIことができる
というのが、平たく言うとこの拡張機能なのだと思います。
ただ、コード記入以上の事はできないっぽいです。



スクリプトコンバーター

ティラノスタジオ(Pro版)で使えるスクリプトコンバーターを作りました。

インポートした後に不必要手順部分は削除できるので都合に合わせて使ってください。
なお、TRPGスタジオのログそのままの状態を想定して作ってます。



Atom置き換え機能

他のエディタでも多分大体同じだと思います。

正規表現で置き換えます。
使うことが多いだろう方法だけ書きます。

↑わかるようになると一番わかりやすかった記事

特定のタグの特定のパラメータを選択する

[playbgm storage="music.mp3" time="1000" volume="50" loop="true"]
;↑のtime="1000"のみを選択します。

;^\[playbgm.* で範囲選択
;time=".*?" 範囲内のtime=" "を選択
①Use Regexa(「.*」) を押して正規表現モードON
②記入
③「すべて検索」ボタンを押してから
④Only in Selection で範囲を固定
⑤記入
⑥「すべてを検索」ボタンを押す

結果:

playbgmタグのtimeパラメータのみを選択


特定のタグのパラメータを入れ替える

[chara_show storage="chara/GM/07.png" left="38" top="338" time="1000" wait="true" zindex="1" name="gm" reflect="false" depth="front"]
;↑のnameパラメータを1番目に持ってきます。
;上の欄に
;(\[chara_show )(storage=".*?" )(left=".*?" )(top=".*?" )(time=".*?" )(wait=".*?" )(zindex=".*?" )(name=".*?" )(reflect=".*?" )(depth=".*?"\])
;下の欄に
;$1$8$2$3$4$5$6$7$9$10
イメージ

tip:解説
置換対象をAtomでは「$n」で取得ができます。(Atomでは)
( )で囲った部分は検索物の一部分をグループ化したものです。
( )で囲った8番目がname="gm"なのでこれは$8です。
なので$1$8$2$3$4$5$6$7$9$10としてグループ化したものを置換ました。



SAVE&LOAD

名前ままですが。
基本ですがなんやかんやこれが一番おススメです。
これを行う前にプロジェクトIDを変更しておきましょう。


  1. 開始地点(修正完了点)

  2. 修正発見地点

  3. 不具合発生地点

これらを順繰りにセーブしてはロードしていきます。
1つ注意なのは、1.以前の個所を修正した場合。
2.や3.をロードしても修正されません。

事前読み込み地点を修正した場合などは注意が必要です。
その場合、1.の地点まで[skip]して進めるのが一番確実です。

ゲーム開始地点
[startskip]
1.の1つ手前
[stopskip](または[cancelskip])

なお[skip]といってもテキストの表示スピードが限りなく0になるだけなので、ボタンで進行を止めたり、[wait]で止めたり[dialog]表示などでは
止まります。
テキスト以外で上のようなskipの邪魔になるタグはcondパラメータでティラノ内部の判定を対象にすることで「skip中は表示させない」ということができるようです。(自分未検証)
以下方法

なので、置き換え機能で
]

cond="tyrano.plugin.kag.stat.is_skip != true"]
で全部置き換えちゃえば多分いける。


JUMP&TARGET

(かっこよく言ってみただけ。)
基本的にはSAVE&LOADなのですが、SKIPがめんどくさい場合や、シナリオが切り替わった節目などに使用すると便利です。
注意としては、[bg]や[chara_show]など画面に表示するタグをすっ飛ばして[jump]すると何も表示されないということです。
[layout]などでレイヤー自体が表示されていなかったということもしばしば。
もちろん変数も。
これを愛用するなら、シナリオ(.ks)の一番頭にそのシナリオで扱う事前読み込みや画面表示タグをまとめて置いた方がいいですね。
前に作った[theater1](bg1.ks)や[jukebox1](bs1.js)マクロをシナリオ開始1行目に置くというのはこれを想定しています。

コメント文

コメント文はコンピューターに存在を無視されます。
再生の時に読み込まれない区域です。
1行をコメントにする場合は行の先頭に「;」
複数行をコメントにする場合は「/*」と「*/」で囲みます。
後で人間が見やすい様にコードの中にメモを残す使い方が本来ですが、
コードの一時的な除去にも利用できます。
不具合箇所の特定や、特定のタグのみを機能停止にするには最適です。

[iscript]の中身は//か/**/でコメント文になります。;ではなりません。


表示位置を視覚的に修正

開発者ツールを使うことで、主にfix系の表示物のxy値を変更して表示位置を変えることができます。

「fix系」は造語ですが。
つまるところfixパラメータを持ってる奴で、[cm]などでも消えないものです。[clearfix]以外無効な奴。立ち絵もそう。

なお、この方法では見た目は変わりますが、大元のコードは書き換えられないので、ちょうどいい位置を見つけたらその部分のxyをメモってコードに手打ちで反映させましょう。



マクロでシナリオを置き換える

それでは

で作った諸々を入れて行きます。

first.ks

first.ksはゲーム再生をしたときに一番最初に読み込まれるシナリオファイルです。(正確にはJSやらjQueryなどティラノ構成要素が読み込まれた後
->index.html)
firstからデフォではtitle.ksへ[jump]しますが、書き換えればどこへでも[jump]できます。TRPGスタジオログ出力の場合はscene1.ksに飛びます。
イメージとしてゲーム起動してタイトルが表示されるまでの暗転部分。

このファイルは必ず通るファイルなので、読込必須な色々が入ってます。
なお、ここで色々入れ過ぎるとクラッシュするので最低限がいいです。
タイトル画面があり、必ずそこを通るのであればそこに書いてもいいし。
指標としては、Loadで再生した時に不具合がでない範囲がいいかなと。

よくプラグインの説明にある必ず通る場所に配置と明記してあるやつは大抵ここを指してたりします。

手を入れる箇所は以下の通りです。

first.ks


[title name="ティラノスクリプト解説"]
;↑ウィンドウに表示されるタイトル名を変更できる。
;このタグ自体を消した場合 system>config.tjsの;system.titleと同義になります。


;(略)

[call storage="system/chara_define.ks"]
;削除かコメント文にする。


;=====================================
;キャラと表情登録
[call storage="macro/chara.ks"]
;BGM/SE/BGの設置[ms][bgi]マクロ
[call storage="macro/item.ks"]
;=====================================下記解説
;↓より上の部分に書く

@jump storage="scene1.ks"

[s]

立ち絵の登録マクロの読み込みが記載されたシナリオファイルを読み込ませるようにします。
[call]で読み込ませる場合は、読み込ませたいファイルの一番下に[return]を入れる必要があります。
なお、[call]で|呼び出し中《return前にさらに[call]することはできません。
(できるけど、1番目のcall元へ戻れなくなる)

[jump]と組み合わせるか、上のようにファイルごとにcallで呼び出すのがいいと思います。



scene1.ks

まず分割目印をつけておきましょう。

;========================--

[chara_hide_all]や[stop_bgm]が目安になるかもしれません。
画面上にシーン数をテキストで表示していたら [ptext が目安になります。
セッション時にシーン切り替えのルーチンを決めておくといいかもしれないですね。

(TRPGスタジオ)
キャラクタータブの「全員退場」ボタンを押すと
[chara_hide_all]になる。
ctrl+F。
Atomだとこういう置き換えができる。
置き換え先はメモ帳で改行したのを貼り付けるのが楽かも。

SAVE&LOAD

プレビューを流すための仕込みをします。

fitst.ksに[showload]をコメント文で仕込みます。

;1行目で良い。
;↓1つセーブポイントを作ったらコメント文を解除する。
;[showload]



(略)
@jump storage="scene1.ks"

[s]

scene1.ksに[showsave]と[s]を仕込みます。

scene1.ksにて



[dialog text="今日はここまで!おつかれさま!"]

;止める箇所に[s]、その直前に[showsave]を入れる。
[showsave]
[s]



;(略)
;↓コードが続く・・・

この[s]の入れる箇所はその日の編集予定範囲の最後あたりがいいです。
[dialog]などでここが終わりであるということを書いとくといいかも。

autosave&autoload

ADVにあるクイックセーブ、クイックロードと同義です。
1つだけ勝手に記録されます。
ちょっと直して直で見たいっていうときに便利です。

直したい直前で[autosave]、first.ksの1行目に[autoload]を入れます。
[showload]は2行目になりますね。
これらloadは使いたくない方をコメント文にするなど切り分けて使います。


この時点で[plugin name=seek_point ]は壊れてるので、コメント文か削除しておきましょ。



最終確認

SKIPで最後まで見れるか確かめる

SKIPでエラーで止まった場所を修正していくのが楽かもしれません。
最終的に最後まで見れれば編集の下準備は完了です。

エラーが出た時のためにデバッグを表示するにチェックを入れておきます。
画面上ではalertが出て止まる場合もありますが、何もなしにいきなり止まることもあります。
このコンソール(開発者モード)は基本的に出したままの方が得です。

上の表示の場合、2214行目がエラーで止まっているのでエディタで見ます。
Atomの場合、ctrl+Gで出たウィンドウに行数番号を入力エンターでその行にジャンプができます。

ちなみに上の原因は、名前変更前の名前でオブジェクト名(name)を記述して呼び出そうとしていたのでエラーになりました。


以下は発生して止まったエラーのやつです。

name変更で起きるエラー

[chara_show][chara_new][chara_hide]はnameを変更してるとエラーです。
chara.ksで定義したnameにしましょうね。

name="GM"はない。
name="gm"はある。
[chara_show で検索かけて、それの
name="〇〇"を置き換えるのがいいかも。

この置き換えの作業のためにscenarioファイルを1つのままにしていました。

文字化けでエラー

キャラ名は変更しましたが、背景画像は依然文字化けのままです。

背景の名前も立ち絵と同じで
日本語は文字化けしてます。

scene1での呼び出し名(日本語)にファイル名を修正するか、
この機会に編集しやすいような名前にscene1とファイル名両方変更しちゃうのもアリです。
なお、ファイル名は半角英数が鉄板です。

tip:『ファイルが日本語だと何が問題なのか?』
結論から言うと、半角英数字だとどの環境でもほぼ問題なく対応できる。
それ以外だと環境次第でエラーが発生する。
OSの違いとか、バージョンの違いとか。
フリーゲーム投稿サイトではウイルスチェックが行われるが、その機械が
日本語対応しておらず「問題アリ」として弾かれるのがほとんど。
もちろん、自分ひとりの環境で最終的に録画して動画にするのであれば
日本語でも何も問題がない。


以下「いらないもの」は消さなくても問題ないです。


まだいらない記述があるんだけど

消していいもの(残していても問題ない)

local_file=" "

tip:『local_file=" "って何』
わからん。タグリファレンスにない。
TRPGスタジオのログをティラノ形式へ変換時にできた副産物と思われ。
消しても問題ない。
消す場合、正規表現を使うなら
local_file=".*?"
で選択できる。こういうのを「最短マッチ」という名前でいいます。

Atomの場合こう書く

storage=" ”

場合による。
[chara_~~]なタグの場合、[chara_new]や[chara_face]で事前にface記述の
仕込みが済んでいる時はいらない。

[chara_hide] > pos_mode="true"

pos_mode のデフォ設定がtrueなので、書いても書かなくても一緒。

pos_mode
キャラクターの立ち位置自動調整が有効な場合に、このパラメータにfalseを指定すると退場後に立ち位置の調整を行いません。

https://tyrano.jp/tag/

上記のようなデフォ設定のデフォが記述されている

調べ方
①公式タグページを見る

左のパラメータ、右の初期値
な記述だった場合、基本的に消して良い。
;例
[chara_hide name="hoge" pos_mode="true"]
;↓
[chara_hide name="hoge"]
;でも結果は同じ。

②おわり。
③公式タグページに記述がない→消していい。


title.ks

デフォで入ってるやつです。基本無視でOK。

もともとログはV4出力なので
二世代前のV4title画面。

他シナリオファイル

scene1.ks以外では
make.ksとtyrano.ksは削除NG。
他のconfig.ksは微妙、cg.ks、replay.ksは消してもOK。

いらないものは別フォルダに入れて
全体のシナリオ数を少なくすると
整理しやすくてわかりやすい。

いらない画像ファイル

imageフォルダ内のものは、ティラノのゲームを作成するときに自動的に
作成されるものなので中身を見ていらなければ削除して大丈夫です。

この☑が付いてるのはGitを使って編集しているからです。

同じく、使用用途がなければbgimageフォルダ内のtitle.jpg(png)も削除していいと思います。



やったこと、結果

  1. ~6までに変更して発生した不具合を全て修理(skipで終わりまで到達)

  2. 編集するのに便利な知識や方法や道具の紹介


  1. 画像・BGM(SE)ファイルのリネーム

  2. 過剰記述の削除

  3. シナリオファイルの分割・1・2

  4. プレビューしやすい一工夫

  5. プレビューしながら余計なものや時間を削る ←いまここ

  6. 演出に必要なものを付け加える

  7. 動画再生のための一工夫

  8. プレビューを自動撮影

  9. おまけ:外部ツールでさらに演出アップ


ここまでで前準備は終了です。
これで完全に
『TRPGスタジオのログ』から『ティラノスタジオの作業データ』
になりました。

5230行が4051行に。重さだと416kbから230kb。

次回は編集テクです。
(動画出力して動画ソフトで編集した方が早いというツッコミはほっといて)




外伝tip:『どうして無駄を省こうとするのか
「コードをどれだけ短くするか」は長年行われてきた宗教戦争らしいっす。新参なんで知らんけど。
私は2つ恩恵を感じていて、
ケアレスミスの減少」と「拡張性の開発しやすさ」があります。
また、短く単純にすると処理の自動化なども狙えます。
まあここらは性癖と似たようなものなので他人に強制せず自分が一番いいという所まで極めていくのも楽しいのかもしれません。(集団制作は除く)

いいなと思ったら応援しよう!