今回は、イベントコマンドやデータベースの新機能を中心に扱います。
前半では、今回の新機能を使って、テレポートの作成の実践を行います。
どうか皆さん、今回もお付き合いください。
テレポートとは、町や村など特定の場所に一瞬で移動できる技やアイテムのことです。ドラゴンクエストシリーズでは「ルーラ」、ファイナルファンタジーシリーズでは「テレポ」と呼ばれる魔法が該当し、非常に多くのゲームで採用されているシステムです。
RPGツクールXP以降のツクールでは、テレポートが標準では搭載されていませんでした。このため、これまではRGSSを使って、テレポートを実装していた人や、そのようなスクリプト素材を使ってテレポートを作った人は少なくなかったのではないでしょうか。
今回、「アイテム選択の処理」によって、イベントコマンドだけで簡単にテレポートが作れるようになりました。そこで今回は、皆さんとご一緒に、テレポートを作成してみようと思います。
イベントコマンドを使ったテレポートは、実を言うと、RPGツクールVX Aceでも実現可能でした。そして、実際に実現している作品がありました。それが、代表的なサンプルゲーム「きみは勇者じゃない!2 ニルスのお仕事」で、「大事なもの」を使ってテレポートを実現していました。
しかし、他の大事なものを一旦退避し、テレポート復帰後に戻すなど、かなり手間のかかることをしていました。
今回、「アイテム選択の処理」の選択項目に、「隠しアイテムA」「隠しアイテムB」という要素が追加されました。これを利用することによって、より簡単にテレポートが作れるようになりました。
アイテムの設定方法
今回アイテムの「アイテムタイプ」に「隠しアイテムA」「隠しアイテムB」が追加されました。
これらを選ぶと、このアイテムは、メニューの「アイテム」にも「大事なもの」にも表示されません。最初にデータベースでアイテムを作っていた方は「何に使うのだろう?」と疑問に思われたかもしれませんが、これは、もっぱら「アイテム選択の処理」の処理のために使われることを想定されています。
作成に先だって:試験用マップを準備しましょう
テレポートの実験を行うためのマップを作成しましょう。
あなたのプロジェクトで行う場合、フィールド1枚を準備して、あちこちの街の近くにテレポートする形式でもいいでしょう。
一方、今回講座で使用するマップは、サンプルとなる町のマップを5つ作成し、それぞれの町は、1画面で作られた簡単なものです。フィールドはなく、テレポート先は、町の中になっています。
以下に、今回の講座で使用する町の名前を示します。
このうち「内部処理用マップ」は、内部的にのみ使用し、ゲーム内で登場することはありません。残りの5つが、今回使用するマップになります。
これらの街の名前は、前述の「きみは勇者じゃない!2」にリスペクトを払い、町の名前をそのまま拝借したものです。今後の内容はそれに沿って説明をしていきます。
出来上がったサンプルプロジェクトは、ダウンロード可能にしていますので、分かりづらい部分があったら、それを起動して確認してみてください。(アドレスはこの章の最後に掲載されています)
最初に:スイッチ(フラグ)の仕様を考えてみましょう
イベントを組み始める前に、まず「どんなフラグが必要か」をあらかじめ考えておくことが必要です。どんなフラグが必要になるか、少し考えてみましょう。
テレポートが出来る時と出来ない時がある
「テレポートが出来る時」のスイッチが必要になります。
冒険を進めるごとに行ける場所が増えるようにしたい
「テレポートで行ける場所」のスイッチが場所ごとに必要になります。「○○の街」に行けるときはON、そうでない時はOFFというように、行き先の数だけ準備しましょう。
ひとまず考える必要があるのは、以上でしょう。そこで、これらのスイッチを以下のように準備しました。
他にも、乗り物を登場させるなど、拡張する場合、その都度検討が必要になりますが、
それは後々考えていくことにします。
テレポート用のスキルとコモンイベントを作成しましょう
以上を踏まえて、テレポートを用のスキル(またはアイテム)の作成を開始しましょう。
テレポートのイベントの記述は、コモンイベントで行い、スキルやアイテムから、そのコモンイベントを呼び出す形式にします。
◇ステップ1. 隠しアイテムAでテレポート先の地名一覧を作る
最初に、「アイテム選択の処理」で表示するためのアイテムを作成しましょう。
データベースのアイテムリストを開き、アイテムを作ります。
テレポートでの行き先の数だけ、作成する必要があります。今回は、アイテムIDの11番から、15番を使用しています。アイテムの名前は、それがそのままテレポートのウィンドウでの表示名になります。
それぞれのアイテムの「アイテムタイプ」は「隠しアイテムA」にしてください。
また、好みに応じてアイコンを変更するといいでしょう。
◇ステップ2. 「アイテム選択の処理」を含むコモンイベントを作る
テレポート本体はコモンイベントで作成します。
若干長くなるため、5つの項目に分けます。流れを追いながら、ひとつずつ作って行きましょう。
1. まずテレポート可能かどうかを判断し、不可なら中断
テレポート可能かどうかは、専用のスイッチのON/OFFで判断します。
2. テレポート可能な場所の隠しアイテムを追加
それぞれの場所にテレポート可能かどうかのスイッチを見て行き判断します。
可能なら、その場所に該当する隠しアイテムを「アイテムの増減」で追加します。
3.「アイテム選択の処理」を行い、テレポート先をプレイヤーに選択してもらう
「アイテム選択の処理」では、プレイヤーが選択したアイテムIDを入れるための変数が必要になります。
そのため、まずそのための変数を準備しましょう。ここでは、1番の変数を使うことにします。
それから「アイテム選択の処理」を開き、「変数」をこの変数に指定し、アイテムタイプは「隠しアイテムAにします。
設定を行うと、イベントコマンドでは以下のように表示されます。(分かりやすいように注釈をつけていますが、これは説明のために書き加えたもので、自動では追加されません)
これがゲーム中に実行されると、画面に選択肢が表示され、「テレポート先」という変数にプレイヤーが選んだアイテムIDが入ります。キャンセルの場合0が入ります。
4. 実際にテレポート処理を行う。キャンセルした場合は何も行わない
選ばれた数値に応じて、それぞれの場所に移動を行います。
5. 終了後、(テレポートを行ったかどうかにかかわらず)隠しアイテムを削除
2.で一時的に加えたアイテムをここで削除します。
これでコモンイベントの制作は完了です。
◇ステップ3. 当該コモンイベントを呼び出すスキル(またはアイテム)を作る
使用効果で、先ほど作成したコモンイベントを呼び出すようにします。ここでは「テレポート」という名前にしています。
範囲は「なし」、使用可能時は「メニュー画面」にしてください。
画面写真はスキルのものですが、アイテムの場合でもこれは共通です。
◇ステップ4. 任意のアクターに覚えさせて、実行
スキルなら任意のアクターに覚えさせましょう。アイテムならイベントコマンドなどで入手させましょう。これで実行の準備は整いました。
テストプレイを行いましょう
◇テストプレイ用の初期化イベントを設置しましょう
テストプレイを行うにあたって、最初にテレポート可のスイッチと、テレポート先のスイッチをすべてONにしておくと便利です。
そのため、プレイヤーの初期マップに初期化イベントを作成し、設置しましょう。
例えば、以下のようなイベントがいいでしょう。
最初に一度だけ実行されるように、セルフスイッチを使っています。
また、トリガーは自動実行か並列実行がよいのですが、このイベントのように、マップ読み込み時に実行されてすぐ消去されるイベントは、並列実行にした方が、実行のタイミングが早くなります。
◇いざ、テストプレイ
こうしてテストプレイを行い、期待通りの動作になっているか、確認してみましょう。
応用1:乗り物に対応してみましょう
「小型船」「大型船」「飛行船」これらに対応しましょう。
◇ステップ5. それぞれの乗り物を所持しているかのスイッチを設定
乗り物を所持している場合は、テレポートの際に、一緒にその乗り物も移動するようにします。
乗り物の所持の有無は、特定のスイッチのON/OFFで表すのが一般的です。以下の例では、スイッチの2番から4番を使用しています。
◇ステップ6. それぞれの乗り物の行き先を場所ごとに指定
乗り物を所持している際には、テレポートの際に、プレイヤーだけでなく、それぞれの乗り物の移動先を設定する必要が出て来ます。
一例を示します。
赤く囲んだ部分が、乗り物のために追加された部分です。この処理を、それぞれの移動先ごとに追加してください。
◇ステップ7. 乗り物に乗っている時にテレポートが行われた時の処理を追加
乗り物の導入のためには、ここまでの処理だけでは、実はまだ不十分です。なぜなら、乗り物に乗っている時にテレポートを行うと、不具合が起こるからです。陸地に船がめりこんだままになり、動けなくなります。
それでは、どうすればいいのでしょう。具体的には、以下のようにします。
・フェードアウト後、指定の場所に乗り物とプレイヤーを移動させる前に、『一旦任意の陸地に移動し、「乗り物の乗降」を行う』。
『』部分の実際のイベントは以下のようになります。
「内部処理用マップ」というダミーのマップの、通行可能な位置に一旦移動し、そこで乗り物を降りた後、本来のテレポートによる移動を行う、という流れになります。
なお、飛行船はテレポート後に降下のアニメーションを始めるため、主人公の隣あたりに移動させた方が、見た目が自然になります。
以上で乗り物に対応しました。テストプレイを行ってみてください。
応用2:地名の後のアイテムの個数を消してみましょう
ここまでの設定では、場所を選択するときに、地名の後に、アイテムの個数が「:1」と表示されていましたが、これを不自然と感じるなら、プラグインによって消すことが出来ます。
それが、「KeyItemNumber.js」というプラグインです。
◇ステップ8. 「KeyItemNumber.js」の導入
「KeyItemNumber.js」は、メニュー画面の「だいじなもの」や、「アイテム選択の処理」でアイテムの個数を表示するかどうかを、アイテム種別ごとに別々に設定できます。
使い方はプラグインのヘルプに詳しく書いてありますが、
ここでは、テレポート時の「隠しアイテムA」のみ個数非表示にしてみます。
コモンイベントの最初に、イベントコマンド「プラグインコマンド」で以下を実行するようにします。
KeyItemNumber 3 0 大文字と小文字は区別するので、間違えないように書いてください。
上記を設定し、注釈をつけると、以下のようになります。
これで実行すると、アイテムの個数が表示されなくなりました。
サンプルプロジェクトをプレイしましょう
今回のサンプル作成で使用したテレポート機能を使ったサンプルプロジェクトを準備しました。
『RPGツクールMV』での使用(利用)方法は、本プロジェクトフォルダ内の[readme.txt]をご参照ください。
【ファイル:kouza3_teleport_sample.zip】
※本データに関するサポートは行っておりません。
このプロジェクトでは、あらかじめ準備されたテレポート先への移動の可否を切り替えたり、乗り物を追加したり削除したりできます。また、テレポートの一時禁止や解除も可能です。
なお、このプロジェクトの利用はフリーです。イベントをそのままコピー&ペーストしてあなたのゲームに使っていただくなど、利用はご自由にどうぞ。
最後に:さらにあなた自身で手を加えてみましょう
以上で、基本形が出来ました。あとはこれに、効果音を付けたり、アニメーションを付けたりして、あなたなりのアレンジを加えてみてください。
なお、今回はスイッチを使い、必要な時だけ隠しアイテムAを登場させる方法を採用しましたが、これは、別の用途にも「アイテム選択の処理」で隠しアイテムAを使いまわすことが出来るようにするための配慮です。
隠しアイテムAをテレポート専用にしてもいいという人は、今回紹介したやり方より、もっと簡単なやり方もあるでしょう。興味のある人は、そういった作り方も、考えてみてください。
最初に特筆すべきは、「メッセージが続く場面で連打を行い、途中で表示された選択肢で、意図せぬ選択を選んでしまう」という誰もがやってしまいがちだった問題が対処された点です。
決定キーの長押しで、メッセージを早送りする機能
あなたがこれまでのツクール作品をプレイしていて、長くメッセージが続いた場合、そこで連打を行った結果、途中で選択肢が出てきて、よく吟味しないまま、一番上の選択肢を選んでしまう……そんな経験は誰にでも一度はあったはずです。
そこで今回、新たな仕様が追加されました。
「メッセージ表示の際に、決定キーを押しっぱなしにしたときに連打扱いとする」というもので、途中で選択肢が表示された場合、そこで連打が止まり、選択肢は確定されない仕様になりました。このため、長いメッセージを、キーを押しっぱなしで早送りして、選択肢だけゆっくり選ぶ、という事が可能になりました。
イベントコマンド「選択肢の表示」にて「デフォルト」が指定可能に
これまでの選択肢では、常にカーソルは最初一番上を指していたため、例えば「はい・いいえ」の選択肢の場合、かならず「はい」が選ばれるようになっていました。
今回、「デフォルト」を変更することで、最初のカーソル位置を「いいえ」にすることも可能になりました。これによって、プレイヤーに望ましくない選択をさせる可能性が下がることが期待されます。
また「デフォルト」は「なし」にすることも可能です。より慎重に選択肢を選んでもらいたい場合は、この設定にするといいでしょう。
写真はデフォルトを「なし」にした場合の最初の状態です。最初は「はい」「いいえ」のどちらも選ばれておらず、ここで決定することはできません。カーソルを動かして選択をすることで、初めて決定が可能になります。
他にも細かい点が配慮された
◇選択肢が最大6択に
これまで選択肢は最大4択でしたが、今回は6択まで可能になりました。
これは6択の選択肢を表示した様子です。
◇選択肢の表示位置を中央や左にすることが可能
画面写真では中央に置いています。
◇選択肢の背景表示を変更
メッセージウィンドウと同様、ウィンドウの背景を、通常の「ウィンドウ」以外に、「暗くする」と「なし」が選択可能になりました。
上記はメッセージウィンドウと選択肢を「暗くする」にした場合の画面写真です。
データベースの「タイプ」の一番右側に「装備タイプ」があります。
5つのタイプが設定されていますが、実はなんと、この数を増減するだけで、装備のタイプそのものを増減することが出来るようになっています。装備画面でもきちんと反映されるのです。これによって、アクセサリ類や防具類を簡単に増減させることが可能です。
以下に、実例を示します。
装備部位を増やす例:「足防具」を追加
「装備タイプ」に「足防具」を追加します
。
これで、「防具」の「装備タイプ」で「足防具」が選択可能になります。
テストプレイを開始し、装備画面を開くと、装備のスロットに「足防具」が追加されているのが分かります。
装備部位を減らす例:「装飾品」を削除
逆に、必要のない防具を減らすことも可能です。例えば、「装飾品」を作らない前提で、これを削ってみます。
テストプレイを行うと、装備のスロットから「装飾品」が消えたのが分かります。
これまで、「その部位の装備はない」と表現するために、その部位の名前の部分を「------」などとしてとしていた作者さんも多いと思いますが、今回は、このように直接、削除することが可能です。
なお、戦闘のないゲームなどを作るなどの理由により「装備を全く使わない」という場合、ここを変更するのではなく、後述する「システム」の「メニューコマンド」で「装備」のチェックをはずし、装備画面自体を出さないやり方のほうが簡単です。
TP操作系コマンド
今回、イベントコマンドで「TPの増減」が追加されました。
フィールド上でこの操作を行った場合、「TP持ち越し」の設定になっている場合は、次の戦闘で増減した値が反映されます。一方、そうでない場合は、次の戦闘が始まるとTPは通常通り、0~25のランダムな値にリセットされます。
「TP持ち越し」でない場合、フィールド上でのTPの値は、「TPの増減」などの操作を行わない限り、0になっています。
現在のTPの値の取得方法
現在のTPの値を変数に取得するには、イベントコマンドの「スクリプト」を使います。
◇アクターのTPを変数に入れる方法
例えば、ID3番のアクターのTPを変数15番に入れる場合、イベントコマンド「スクリプト」で以下の1行を呼び出します。
$gameVariables.setValue(15, $gameActors.actor(3).tp);
適宜、変数とアクターの数値を変えて呼び出してください。
◇変数で指定したアクターのTPを変数に入れる方法
例えば、変数20番の値をIDに持つアクターのTPを変数10番に入れる場合、イベントコマンド「スクリプト」で以下の1行を呼び出します。
$gameVariables.setValue(10, $gameActors.actor($gameVariables.value(20)).tp);
長いため、以下のように2行に分けて記述することも可能です。
◇注意:イベントコマンド「スクリプト」について
イベントコマンド「スクリプト」は、「上級」のカテゴリに入っていることからも分かる通り、間違った使い方をすると、ゲームに不具合を起こす可能性が大変強いコマンドです。十分用心して使ってください。
今回紹介したコマンドは、スペルなどを間違えないように注意して入力してください。特に、大文字と小文字を区別するためそこを間違えないこと、全て半角文字にすることに気を付けてください。そして、きちんと動くか、十分にテストするのを忘れないようにしてください。
また、スクリプトの内容で起きたエラーについては、メーカーのサポートの対象外となっています。このため、スクリプトで起きた問題は、自分自身で試行錯誤して解決するか、ネット上の知り合いやコミュニティなどで相談しあうなどして解決していく必要があります。
復習:そもそもTPとは何か
TPとは前作RPGツクールVX Aceから導入された概念で、タクティカルポイント(Tactical Point)の略です。戦闘中に行動を行ったり、ダメージを受けたりしたときなどに増加する値で、0~100の間で変動します。TPを消費する技を作ることが出来、前作でも重宝した人は少なくなかったのではないでしょうか。
TPは戦闘の開始時に0~25の間でランダムに決まる他、特徴で「TP持ち越し」を選ぶと、前回の戦闘終了時のTPの値を次の戦闘に持ち越すことが出来るため、「TP持ち越し」を採用していた人も多いと思います。
TPは、使い方が厳密には規定されておらず、本来様々な使い方が出来るパラメータです。しかし「自由にTPの操作が出来ない」ということに不満を感じていた人も多かったでしょう。
今回、イベントコマンドで増減が可能になったことにより、より自由度が増しました。現在のTPの値を取得する方法も説明いたしましたので、ぜひこれで、あなたなりの面白い使い方を見つけてください。
まだまだ、新機能は数え上げるときりがありません。ここまでの紹介に比べると大きな要素ではありませんが、多くの人が歓迎するであろう機能を、いくつかご紹介します。
データベースの一部の項目の最大数が2000に
今回、最大2000まで指定可能になったのは、スキル、アイテム、武器、防具、敵キャラ、敵グループです。特に、アイテムについては、日常シミュレーション的なゲームを作りたい人にとって、「1000個じゃ足りない」という人がいたかもしれません。そんな人にとっては、朗報だと言えるのではないでしょうか。
◇それ以外の項目は依然1000(または999)
例えば、アクター、職業、ステートなどがそれに該当します。これらは、あまり数を作ることがないので、この数で十分かもしれませんね。
また、マップの最大数も、依然として最大999です。大規模なゲームを作りたい場合、いくつかのマップをまとめるなど、工夫が必要になってくることでしょう。
使わないメニューコマンドを消せる
「システム」に「メニューコマンド」が追加されました。
これで、使用しないコマンドを表示しないようにすることが、簡単に出来るようになりました。
◇使用例
・セーブをイベントでしか出来なくする場合、「セーブ」をメニューから消せる
・戦闘のないゲームを作る場合、「装備」「ステータス」をメニューから消せる
試しに「ステータス」と「セーブ」を消してみると、以下のようになります。
敵キャラの画像の色相に数字が出るようになった
敵キャラの画像で、色違いを作るために色相を変更することが出来ますが、これまでは、スライドバーしかなかったため、同じような色合いを再現するのが難しいことがありました。
今回、数値が出るようになったことで、数字を覚えることで別の同じ色違いキャラを作り場合に、簡単に同じ色相が再現できるようになりました。
これは地味な改善と言えますが、大変便利になった部分であると言えます。
アイコンの横に数字でIDが表示されるようになった
敵の色相と同様、地味ではありますが、大変便利になった部分です。
データベースのアイコン番号が表示されるようになったことで、「大体どの位置にそのアイコンがあるか」が分かるようになりました。
これは、指定がしやすくなったということです。
このように、「地味だが、配慮されている」という部分が、今回のツクールには大変多く追加されたと言えます。
まだまだ紹介しきれない機能はたくさんあります
他にもこの講座では紹介しきれなかった小さな点がいろいろと変わっています。実際に試しながら見つけていってください。
BGMや効果音は全て、.m4a .ogg の拡張子のファイルで同じ内容のBGMを準備します。環境によってどちらを流すかが決まるので両方が必要です。
wavファイルをこれらの形式に変換するには
wav形式で作成された音楽や効果音がある場合、検索エンジンで検索すれば、多数の変換ツールが見つかることでしょう。「wav ogg 変換」「wav m4a 変換」などのキーワードが良いでしょう。
midファイルをwav形式に変換するには
それでは、midファイルをwav形式に変換するには、どうすればよいでしょう。
一応、「mid wav 変換」などで検索するといろいろ出て来ます。しかし、一般的にmidファイルは、wav形式などへの変換は変換ツールが少ないうえ、あまり再現度が高くないことが多いため、既存のmidファイルを使うことに高い期待は持てないかもしれません。
そこで、可能であれば、midファイルの作曲者にお願いして、wav形式などで作成しなおしてもらったり、古いPC環境でMIDIを演奏し、それを録音したりするなどの方法を検討してみてください。
ユーザーインターフェースを考えての措置です。
これまで99ページなど、多くのページを使ってイベントを作っていた人は、いくつかのイベントに分けるようにする、少ないページ数で実現できるようにするなど、工夫をするようにしてみてください。
画像素材が32×32ベースから48×48ベースへ
今回、ゲーム解像度が従来の 544×416 から 816×624 へと変更になりました。これは単純計算して、縦横ともに1.5倍になったということです。それに伴って、画像素材も全て、従来サイズの1.5倍になりました。具体的には、タイルやキャラの基本サイズが32×32だったものが、48×48になりました。
これによって表現の幅が広まった反面、既存のツクール用の素材がそのままでは使えなくなりました。画像加工ツールを使って既存の素材を拡大して使うか、新しい素材を作る必要があります。
ドット絵を描くのに不慣れな方の中には、もはや素材の自作は難しい、そう考える方もいることでしょう。そういう方は、フリーの素材サイトや、今後販売されるであろう素材を探すことも、選択肢に入れてください。
なお、既存のツクールの素材は、そのツクールでユーザー登録をしている人であり、なおかつRPGツクールMVでもユーザー登録をしていれば、自由に改変して使うことが可能であるため、それも検討の価値があるでしょう。
RTPの廃止
今回、「RTP(ランタイムパッケージ)」が廃止されました。このため、ゲームひとつひとつのファイルサイズが大きくなることがありますが、逆に、オリジナル素材を多く使う人にとっては、RTPを一緒にダウンロードしてもらう必要がなくなり、便利になったと言えるかもしれません。
ただしここで必要になってくるのが、新規プロジェクトを作成した時に作られたファイルのうち、自分のゲームで全く使用していない素材が多く、そのまま配布すると、無駄にファイルサイズが大きくなりかねない、ということに気を付ける点です。
このため、自分が使用しているファイルの管理は、きちんとしておくことが大切になってくるといえます。