公式テンプレートで回想モードを作る

 
回想モード

2.回想モードの画面作成

今度は回想モードの画面を作っていきます。シナリオ側の作業は後回しで大丈夫です。

今回は初期プロジェクトのファイルreplay.ksをそのまま使っていきます。
画面のカスタマイズについては別の記事を予定していますのでお待ちください。

行番号やタグの内容はティラノスクリプトVer507cのものなので、使用しているバージョンが違う場合はズレが生じます。目安程度にしてください。

回想シーンから戻ってきた時用に、情報をリセットする

V507c時点のバグですが、回想モード中であることを記録する変数(tf.flag_replay:後述)がうまく動作していないため、「回想シーンを見た後に通常どおりゲームをプレイすると、回想シーンが終わる場所と同じところで回想モード画面に戻される」現象が発生します。
それを防ぐためにreplay.ksの*page_0のラベルより上の範囲に、下の1行を追加しておいてください。

[eval exp="tf.flag_replay=false"]

回想用ボタンを設定する

replay.ksをテキストエディタで開きます。
公式マクロ[replay_image_button]を使ってボタンを配置します。

先ほど準備した「フラグ名」「フラグ開放時のボタン画像」「未開放時のボタン画像」すべての情報が必要です。

まずは最初から入っている[replay_image_button]を確認します。「*page_0」のラベルの下、38行目です。

[
  replay_image_button
    name="replay1"
    graphic="cat.jpg"
    no_graphic="../../tyrano/images/system/noimage.png"
    x=60
    y=130
    width=160
    height=140
    folder="bgimage"
]

※属性を分かりやすくするため、改行・インデントして表示しています

これを以下のように修正します。

属性説明変更前変更後
nameフラグ名replay1和室
graphic開放時のボタン用画像cat.jpgwashitsu_s.jpg
no_graphic未開放時のボタン用画像../../tyrano/ (省略)nodata.png
xボタンの配置(左端)6060
yボタンの配置(上端)130130
widthボタンを表示する幅160256
heightボタンを表示する高さ140144

「no_graphic」についてはtyranoフォルダに含まれているものを使う場合は変更しなくても大丈夫です。
「folder」については、507cの段階では変更しても反映されません。

[
  replay_image_button
    name="和室"
    graphic="washitsu_s.jpg"
    no_graphic="nodata.png"
    x=60
    y=130
    width=256
    height=144
    folder="bgimage"
]

※属性を分かりやすくするため、改行・インデントして表示しています

全部で5か所、修正しました。
あとは、このタグをコピーして必要な数のボタンを準備します。「x」「y」の値を修正しないとボタンが重なってしまうので注意してください。

フラグ開放前の状態を確認する

必要な数だけボタンの準備が出来たら一度保存して、ティラノスタジオからゲームを再生してみましょう。
該当シーンを見る前の状態(=フラグ未開放のボタン)がきちんと表示されているか確認しておきます。

回想モード
回想モード画面

3.回想するシナリオを調整する

回想の初めに目印になるラベルとフラグを設定するタグ([setreplay])を書けばカタチとしては整いますが、それだけではうまく動作しません。
意外とやること・考えることが多いので、ひとつずつ進めていきます。

回想するシーンの初めに準備をする

まず、必須なのはラベルです。これを目印に回想ボタンからジャンプしてきます。
特にルールなどはないので、回想を始めたい場所に分かりやすくつけておきましょう。

ラベル:「washitsu」「ishi」

これで回想モードのボタンから飛んでこられるようになりました。
しかし、飛んでこられる「だけ」です。

あとはフラグ設定用のタグを書けば回想モードとして動作はしますが、本来シナリオを読んだ時に動作していた情報やパーツがありません。
必要な情報を「回想モードから見た時用」に設定する必要があります。

  • 背景
  • キャラクター画像
  • メッセージウィンドウ
  • システムボタン(role属性のボタン)
  • BGM
  • シナリオに影響するフラグ情報
  • プレイヤー入力式の主人公名  など

この中で、特にシステムボタンには注意が必要です。
オートモードやスキップモードは使うかもしれませんが、「回想モード中にセーブできる」必要はないでしょう。
また、通常通りにシナリオを進んだわけではないので、「role=sleegame」を使って表示するような画面は表示しても意図しない画面になってしまう可能性が高いです。

必要な情報は、先ほど作ったラベルの下に準備します。

[if exp="tf.flag_replay==true"] 
(bg、positionなど、必要な情報に応じたタグ)
[endif]

tf.flag_replayは変数です。
回想モードからジャンプしてくるときに、中身が「true」になります。
これを上のように[if]タグで使うことで、「回想モードの時だけ読み込まれる部分」を作ることができます。

もし逆に、「通常のシナリオでは使ったけれど、回想モード時には使いたくないタグ」があれば[if]タグやcond属性を使って「tf.flag_replay!=true」の条件付けをすると回想モード時には使われなくなります。

回想するシーンの終わりに準備をする

回想モードを終わらせるタイミングに[endreplay]タグを書きます。
ですが、これだけではやはり回想モードに戻っても画面がおかしくなってしまう可能性が高いです。
[endreplay]タグのすぐ上に先ほどと同じ[if]タグを使って、今度は必要のない情報を非表示・リセットしてください。

フラグを設定するタグを、開放するポイントに設置する

ここまで準備ができたら、あとは回想シーンを開放するきっかけになる、フラグを設定するタグを設置します。
フラグを設定するタグはこんな感じです。

[setreplay
 name=”和室”
 storage=”scene1.ks”
 target=”*washitsu” ]

※属性を分かりやすくするため、改行して表示しています

それぞれの属性の意味は、下の表を見てください。

属性説明
nameフラグ名和室
storage回想するシーンのファイル名scene1.ks
target回想するシーンのラベル名*washitsu

[setreplay]を書く場所はどこでも構いません。
ただ、このタグを読み込んだ時点で回想シーンが見られるようになるので、回想として使う場合はシーンが終わる前([endreplay]の前後など)をおすすめします。

テスト→完成

おつかれさまでした。
最後に、回想モードが正しく動作しているか、確認してみてください。
完成後にテストプレイするときでも構いませんが、ひとつだけ注意事項があります。
該当のシーン見るときは必ずボタンをひとつずつ確認してください。
例えば、ボタンのname属性を入れ間違えた場合。
入れ間違えた二つのシーンを回想モードで確認する前にまとめて見てしまうと、入れ間違いに気づくことができません。
参考までに確認の順番とポイントを載せておきます。丁寧に進めましょう。

  1. ボタンを作った段階(フラグを開放する前)で回想モードを確認する
  2. 該当するシーンを通過して、フラグを開放する
  3. 他のフラグを開放する前に、回想モードに戻ってボタンの画像が変わっているか確認する
  4. 開放されたボタンを押して、回想シーンを確認する
  5. 回想モードへ戻ってこれるかを確認する

「公式テンプレートで回想モードを作る」への1件のフィードバック

コメントは受け付けていません。