イベント/メッセージ

Last-modified: 2024-07-03 (水) 19:06:58

メッセージカテゴリについて

メッセージカテゴリには、RPGの主役となるストーリー演出の基礎となる文章や選択肢を取り扱う、まさしく基本のカテゴリ。
数値入力やアイテム選択といった上級者向けコマンドもあるが、これらの用途は慣れてから覚えると良いだろう。
基本でありながら奥深さを持っており、次項で述べる制御文字をマスターすれば、文章を色々な手段で彩る事が出来るだろう。

ちなみに、Switchにキーボードを接続すれば入力はグッと楽になるだろう。
正直、キーボードを使ってもSwitchの入力周りは貧弱なので不満は残るのだが
それでも有りと無しでは大きく差がつくので、特に文章の表示コマンドを多用する作品なら是非お勧めしたい。

なお、ここのイベントコマンドの処理中はおそらくすべて並列処理イベントで、
同じくメッセージカテゴリのコマンドによる割り込みが不可能に設定されている。
メニュー画面やセーブ画面も同様に割り込み不能。

制御文字

本カテゴリに限らず、データーベースの説明文でもあらゆる場所で使う事が出来る。

文字出力効果
\C[n]色を変更出来る。
\FS[n]文字サイズを変更出来る。文章表示コマンド、スクロール表示コマンドでのデフォルトは28。
文章表示コマンドの場合、6以下にすると変な挙動になる。後述。
負数指定出来ず、不正な数値や数値未記入の場合はデフォルトの文字サイズに直される。
\N[n]n番目のアクター名。19番と190番台だけは\n[019]と0を頭に書かないとSwitchのNGワードで弾かれる。*1
\P[n]パーティーのn番目のアクター名。
\G通貨単位を表示。
\$今持っている金の量をウィンドウごとを表示する。文章表示コマンドのみ。
初期バージョンのみ:通貨単位が反映されないバグがあった。v1.1.1で修正。
\>\<が出るまで、同じ行の残りの文章をすべて一括表示。文章表示コマンドのみ
初期バージョンのみ:この制御文字を指定されたとき、文章の表示が遅延していた。v1.1.1で修正。
\<\>の動作を中断する。文章表示コマンドのみ
\^ボタンが押されるのを待たない。文章表示コマンドのみ
\.次の文字表示を0.25秒間待つ。Aボタンでスキップ可能。文章表示コマンドのみ
\|次の文字表示を1秒間待つ。Aボタンでスキップ可能。文章表示コマンドのみ
\!Aボタンが押されるのを待つ。文章表示コマンドのみ
\V[n]n番目の変数。
\\\を表示
文章の色のリスト

全32種。簡単に表にしてみたが、編者は色のイメージには明るくない。お手柔らかに。
また、カラーコードはSwitchの撮影機能で撮ったjpegから採取したものなので、やや正確でない事を留意されたし。

制御文字イメージ備考
\c[0]■白色デフォルトカラー
\c[1]■青寄り空色
\c[2]■薄紅色?
\c[3]■暗めの黄緑おそらく、メニューの消費TPに使われる色。
\c[4]■白寄り水色
\c[5]■白い紫色
\c[6]■白い黄色
\c[7]■濃い灰色選択不能の色?
\c[8]■薄い灰色
\c[9]■青色
\c[10]■僅かに薄い赤
\c[11]■緑色
\c[12]■僅かに濃い空色
\c[13]■薄い紫
\c[14]■金色
\c[15]■黒色ウィンドウに置くとかなり見づらい。透明用
\c[16]■空色
\c[17]■原色系の黄色
\c[18]■原色系の赤色戦闘不能の色
\c[19]■暗めの紺色ウィンドウに置くとかなり見づらい。透明用
\c[20]■やや濃いオレンジ
\c[21]■オレンジ色瀕死時の色
\c[22]■濃い目の青色
\c[23]■原色系の水色メニューの消費MPの色と項目名の色
\c[24]■蛍光色ぽい
\c[25]■暗めのピンク
\c[26]■青紫色
\c[27]■原色系のマゼンダ
\c[28]■僅かに明るい緑色
\c[29]■原色系の緑色
\c[30]■紫色
\c[31]■薄めの紫
過去作で使えた制御文字やそれに纏わるテクニック

過去作からなくなったもの
\N[\v[n]] 他の[n]でも可能だった、「[n]に変数をあてがう制御文字」。本作でこれをするとソフトが強制終了することもある。
\OC \OW アウトライン
\I[n] アイコン
\FB 太字
\FI 斜体字
\W[n] ウエイト
\MS[n] 文字スピード(一部作品では\S[n])
\AF[n] アクターの顔
\AN[n] 二つ名
\PF[n] パーティメンバーの顔
\PC[n] パーティメンバーの職業名
\PN[n] パーティメンバーの二つ名
\NC[n] 職業名
\NI[n] アイテム名
\NW[n] 武器名
\NA[n] 防具名
\NS[n] スキル名
\NT[n] ステート名
\_ ハーフスペース(半角スペースの半分)
$A~$Z、$a~$z 外字(専用に登録された絵文字)

一部Switchでは出しづらい文字の出す方法

文字の出し方が一般的ではないものや、RPG MAKER WITHで頻繁に使う文字の出し方を紹介。

出したい文字入力する方法
\、|、$等
制御文字で使う文字
ローマ字入力モードなら「記号」で、50音モードなら「1#※」で
使える記号の一覧を出せる。そこに制御文字に使う記号が全て揃う。
…(3点リーダ)「てん」と入力してから変換すると出せる。
全角数字(1、2…)「いち」「に」など数字の日本語読みを入力してから変換すると出せる。
♡、☆マーク等地球のボタンをおして、「記号」を選択。種類はそこそこ豊富。
記号にない数式(不等号や≠等)「きごう」と入力してから変換すると出せる。
矢印(⇒、↑等)「やじるし」変換で基本4種類。この他「きごう」変換や地球のボタンの「記号」からならもっと豊富な種類の矢印を出せる。
─、┤、┼等の罫線「けいせん」と入力してから変換すると出せる。
組文字(㍗、㍑、㌠等)恐らく再現方法は無い…。

イベントコマンド一覧

文章の表示

文章を表示するメッセージカテゴリの、そしてイベントの花形コマンド。
文章の他に顔、名前、ウィンドウ有無、表示位置の設定も可能な他
制御文字で装飾する他文章送りを遅らせたり、ボタン入力を待たずに次のコマンドに移行したり出来る。
また文章表示は画面のほぼ最前面であり、他のコマンドの演出の効果を受けない。

顔と名前

指定しなければなしで動く。
顔は指定した場合、文章が全角5文字分くらい右に寄ってしまい、結果表示できる文章の量が減る。
立ち絵を表示する場合は顔指定の必然性は薄くなるが、発言者が名前以上に分かり易くなる。

文章

実際に表示する文章を記入出来る。メッセージウィンドウをハミ出てしまっても良いが、4行までしか表示できない。
イベントを作るときに4行を超えた文章を表示コマンドを作ると、超えた分は連続した文章表示コマンドにされてしまうので注意。
(例えば、7行の文章表示コマンドにすると 4行→3行の文章コマンドになる。長い会話シーンを一気に作ることは出来る。)

このコマンドは最も多くの制御文字を利用可能。詳しくは上の制御文字で確認されたし。

なお、ここで表示できる文章は横幅に制限はないが
縦幅には表示制限があり、制限からはみ出してしまった文章は4行以内でも表示されない。
だからといって、文字を小さくして5行以上にしても別の文章表示コマンドにされてしまうが。

また、フォントサイズ6以下にした場合は挙動がちょっとおかしなことになり
行間が負数になるのか、前の行よりも上に数字が出る。
数字が小さいほど文字は上に出るが、フォントサイズに負数の指定は出来ない。

背景とウィンドウ位置

背景は「ウィンドウ」「暗くする」「透明」を選べる。文章の下地。
ウィンドウにするとほぼ黒のウィンドウが現れ、その上にメッセージが表示される。
暗くする の場合は半透明のウィンドウが現れるような形。
透明 の場合はウィンドウなしで表示される。
ウィンドウはピクチャで装飾したり1から作ったりできる為、コモンイベントで工夫の余地が大いにある。

ウィンドウ位置は上・中・下の3つから選べる。
プレイヤーの位置を見て自動的に避けてくれるような機能は今作には搭載されていないことに注意。

メッセージウィンドウの位置とサイズも調べて書こうかと思ったが、編者の環境では少々難しい。いずれという事にさせていただくが
サンプルゲームにその手のコモンイベントが同封されていたり、アセットも公開されている筈なので気になる人は調べると良いだろう。

文章表示の仕様

  • Aボタン押しっぱなしにすると早送りモードになる。
  • 制御文字\.などで文章表示を遅くしても、早送りやAボタン連打で送れてしまう。
    イベントによる演出と連動した文章表示には不向きな仕様。
  • 制御文字\^と\>で組み合わせた、素早い文章表示よりもAボタン連打のほうが速い悲しさ。
  • 並列処理イベントに文章表示を組み込んだ時、文章表示コマンドと同時にできない処理をしている最中だと
    文章表示コマンドは「予約された」ような状態となり、文章表示が可能となると同時に実行される。
  • 並列処理イベント中に文章表示すると、プレイヤーによる通常の操作を受け付けなくなる。
    タッチで移動している場合、移動が止まるのがすこし遅れるのでコントローラーより長く歩ける。デバッグ時に注意。
  • 文章表示中もキャラクターの移動は可能で、イベントは自身の自律移動で移動可能だが、
    プレイヤーキャラクターは操作を受け付けなくなるためイベント制御でしか動かない。
  • また、別の並列処理イベントの条件分岐によるプレイヤーの入力は受け付ける。
    • 上の2項と合わせることで、「条件分岐でメッセージ表示中にも無理矢理移動する」ことが可能である。
      並列処理イベントの併用は必須であり、中級者以上に向けたテクニックだが。
  • ウィンドウを透明にして文章をなにも設定しないことで、Aボタン入力待ちを設定可能。
    これによって文章を出さずに場面を見せてプレイヤーの反応を待つことが出来るし
    ▼が出るので入力待ちなのが僅かだが分かり易くなっている。

選択肢の表示

1~6個の選択肢を表示することが出来る。
どの選択肢を選ぶかの初期位置の設定も可能な上、「なし」の設定も可能。
なしの場合、方向キーが入力されるまで決定を受け付けなくなり、入力ミスを減らせる仕組み。
また、キャンセルした時の挙動も幅広く設定可能。
「禁止」ではキャンセルは出来ず、「分岐」だと1~6の選択肢とは別にキャンセル用選択肢になる。
キャンセル時の挙動に選択肢1~6を選んだ場合は、当該選択肢を選んだ時と同じ挙動になる。
最大で6つの選択肢にキャンセル専用分岐を含めると、最大で7種類の分岐が作れるということになる。
ちなみに「分岐」の場合、キャンセル用のタッチパネルが表示されるので
使い方を工夫しないと、「実はキャンセルできる」事を利用した隠し挙動なんかはバレやすい。

また特殊な仕様として、文章表示コマンドの直後に実行されるとメッセージを出したまま選択肢が出る。
これは文章表示コマンドの表示位置に関係なく、メッセージ画面の邪魔にならない位置で選択できるように
選択肢側が、メッセージ位置に配慮した位置に出現する専用仕様が搭載されている。

選択肢の画面は位置を調整することも可能。左・中・右の3種類。

数値入力の処理

専用の数値入力画面を出すことが出来るコマンド。タッチ操作にも対応。
変数に対して使うコマンドで、プレイヤーが入力した数値を変数が受け取る仕組み。
桁数を1~8の範囲内で選ぶ事が出来るが、負数には対応していない。
また、これで出現する画面をキャンセルすることは出来ない。
初期値はもともと変数に入っていた値が適用される。0以外だと意味深になることもあるので
他でも扱う変数で使うなら、実装意図に沿った初期値を予めセットしておくといいだろう。

また特殊な仕様として、文章表示コマンドの直後に実行されるとメッセージを出したまま数値入力画面が出る。
これは文章表示コマンドの表示位置に関係なく、メッセージ画面の邪魔にならない位置で入力できるように
数値入力画面側が、メッセージ位置に配慮した位置に出現する専用仕様が搭載されている。

主にパスワード入力画面や、購入の数量を選んだりなどに利用出来る。
基本的には条件分岐とセットで使うことになるだろう。

アイテム選択の処理

持っているアイテムのリストを表示し、そこから選ぶ選択肢を形成する。
このコマンドではアイテムのカテゴリを選ぶことが出来る。隠しアイテムA、Bはこのアイテム選択の処理の処理のために作られているようなものだ。
選ばれたアイテムは指定された変数に情報が格納されるので、選ばれたアイテムを識別するにはイベント条件か条件分岐で変数を確認する必要がある。
アイテムのリストでは、アイテムの説明文を確認することも可能。

なお、このアイテム選択処理はキャンセルすることが可能。だがこのキャンセル機能は重大な注意点がある。
それはキャンセルされたら変数は一切変化しない事である。
このため、最初から0の変数ならまだ良いが
2回このコマンドを実行して、2回目はキャンセルした場合は2回目はキャンセルしたのに1回目と同じ選択になってしまうという不具合に繋がる。
この仕様で失敗しないように、このコマンドを実行する前に必ず変数を0にしておくようにしよう。

武器や防具のリストは形成出来ない。
また、個数は必ず表示されてしまい、これを消すことは出来ない。

隠しアイテムA,Bの使い方

隠しアイテムA,Bはこのリストでのみ確認できるが、「アイテム」という枠組みに囚われないほうが良いだろう。
本質は「いくらでも数を増やせる選択肢」のようなものであると考えた方が良い。

そのうえで、いくつか使い方を紹介しよう。

使い方その1:テレポート呪文
ルーラっぽい呪文でマップの行先が選択肢で賄いきれなくなってきたら、隠しアイテム選択処理の出番。
「ニセン村」「エクスピシティー」「ブイエクス帝国」「エムブイ街」「トリニティースラム」「フェス港」「廃村ダンテ」というふうに
町を訪れるたびに対応する隠しアイテムを入手しておけば、それがテレポート先として使えるわけだ。
この例だと選択肢が6つを超えているが、選択肢の制約を気にせずに使える事も利点の1つ。

簡単に作り方を紹介しよう。まず、町の名前に対応した隠しアイテムを作る。
先の例でいえば、「ニセン村」「エクスピシティー」などを隠しアイテムAで作る事になる。この時、名前以外の項目は設定不要。
次に、テレポート呪文とそれに対応するコモンイベントを作る。呪文を唱えるたびにこのコモンイベントが呼び出される。
コモンイベントが呼び出された時、アイテム選択処理画面に移行するようにすれば、持っている隠しアイテムのリストが表示される。
プレイ時は上で紹介したような地域の名前の一覧のなかから1つを選ばれると、アイテムのIDが変数に格納されるので
格納された変数に応じた場所に移動するようにすれば、テレポート呪文の完成だ。
乗り物を使える場合は、乗り物を到着地点の近くに配置するように設定することも忘れないようにしたい。
飛ぶ際はアニメーションで演出を加えるなど、ひと工夫を入れてみるのも良いだろう。

また、隠しアイテムとして入手しなくても、訪れた街をスイッチで記憶して
コモンイベントを呼び出すたびに、スイッチで記憶した町の対応アイテムを入手してリストを呼び出す形式でも良い。
勿論選択したら対応アイテムを再びすべて失うようにする必要がある。
こうした場合、他の隠しアイテムを使う処理も共存することが出来るだろう。
何しろ、隠しアイテムは「アイテム選択処理が来るまで持っていることが分からない」ので
処理に応じてアイテムをとっかえひっかえしても問題ないのだ。

使い方その2:スキル習得システム
レベルアップやお店とはまた別のスキル習得システムを作ってみよう。
例えば、魔法の研究所を作るとする。
研究できる魔法の一覧を隠しアイテムBに実装しよう。*2こちらも名前だけ合わせれば良い。
「ヒール」「レイズ」「ファイア」「サイレンス」「ウェポンブレス」「マナドレイン」など多様な魔法から好きなように覚えられれば
プレイに個性を見出すことが出来る要素にプレイヤーの意欲も掻き立てられるだろう。
習得すると決めた魔法を、お金で買わせるか 習得を決めた後に戦闘回数などでカウントして研究が進んでいる扱いにするか
専用のポイントで覚えさせるか、レベルが一定値に達したら覚える権利がもらえるか、モンスターのドロップアイテムで覚えられるか…
色々な工夫のしようはある。あなたなりの答えを出してみてほしい。

また、スキルを習得する都合上 説明文を出せないのは歯がゆいところだが
MP消費量か、または習得に必要なポイントを出すくらいのことは出来る。
隠しアイテムの所持数が表示されるのだから、隠しアイテムの所持数をそのままリンクさせてしまえば良いのだ。
所持数を隠すことは出来ないが、もともとこの画面以外では見られない隠された存在。
例えばファイアⅠなら一度に15個渡しておいて「魔法の右に書いてあるのは消費MPだよ」などと言わせておけば
もうそれは所持数ではない。消費コストにしか見えなくなるのだ。
但し、この場合は想定より多くても少なくても成立しない。内容に齟齬が発生しないよう、渡すイベントは重複しないよう慎重に。
また、アイテムは99個までしか持てない。それよりも大きい数字は実現できないことに注意しよう。

文章のスクロール表示

下から上に文章がスクロールする。文章の表示コマンドより長い文章に向いている。
スクロール速度も調整も可能で、1~8の値を設定できる。初期値は2。
早送り機能がついているが、それを禁止することも可能。早送りできる場合はAボタンで早送りする。
早送りすると、速度が2倍になる。

文章表示コマンドより長い文章を表示できるとはいえ、500文字の制限がついていることに注意。
但し、アクターの名前をスクロール表示専用に長い名前を設定し(例えば「1000年前に起こった人類と魔族の戦争…人魔大戦」という名前。)
制御文字でアクターの名前を表示することで、500文字を大幅に超えた字数での表示が可能。
(先の例を1行目にアクター名で表示すると、18文字ほど短縮できるだろう。)

冗長でダレる恐れがあるため、使用頻度はなるべく抑えないとプレイヤーが投げる原因を作ってしまうだろう。
ダレさせないようにと速度を8にしたら今度はプレイヤーが読むのについていけなくなる。

スクロール速度の確認について

実はデーターベース>システム>エンドロールのほうでも似たような形で画面のスクロールが行われている。
ここでは、速度や早送り可否の設定後ロードを挟まずにプレビューが可能である。
プレビュー中にやめることが出来ないのが欠点だが
エンドロールの内容を適当に埋めてから、見たいスクロール速度でエンドロールを流すことが出来る。
スクロール速度を確認して調整したいのであれば、こちらから見たほうが速いだろう。

文章スクロールの具体的なフレーム

文章スクロールの表示コマンドで経過するフレームを具体的に調べてみた。
まず、一切文字のないフレーム数一覧を紹介させていただこう。

速度1速度2速度3速度4速度5速度6速度7速度8
フレーム6003002001501201008675
秒数1053.332.521.671.431.25

このフレーム数、実は全て600(10秒)を速度で割った数だという事に気付かれた方はいるだろうか。
全ての速度は速度1でのスクロール速度を基準に、そこから除算した時間だけ
スクロールなされるようになっている。

このフレーム数は前述したように、文字を含んでいない文章スクロールの時間なので
実際にはここから文字のフォントサイズと行数分だけ増えることとなる。
こちらは検証してもハッキリした法則性は掴めなかったが
フォントサイズの合計をピクセル数として
速度1の場合、1フレームあたりおおよそ1.25ピクセル進むことが分かった。
例えばデフォルト(28)のフォントサイズの文字が2行の時はそのピクセル数を28x2=56と見立てる計算である。
つまり、スクロールにかかるフレーム数は以下の計算式で求められる。

(【文章の縦幅】× 0.75 + 600 )÷【速度】
【文章の縦幅】は文章の全ての行のフォントサイズを合算したもの。また、早送り中は速度が2倍になる。

ただし、正確にその通りになるわけではなく誤差がかなり生じやすい事は心得ておくこと。

また、この検証によって早送りをした場合
本来の2倍の速度でスクロールされることが分かった。

アップデートによる修正

  • Ver1.1.1
    • イベントコマンド「文章の表示」内で、制御文字「\>」を実行時に、表示が遅延していたのを修正。
    • イベントコマンド「文章の表示」内で、制御文字「\$」を実行時に、通貨単位が反映されていなかったのを修正。

コメント欄


*1 公式に問い合わせたところ、Switch由来のNGワードなので修正できないとのこと。あとどうでもいいけどこれ送ったあとXでで対策書かれた。
*2 Aでも良い。先のテレポートと同時に実装したい方はBにどうぞ。