サイドビューバトルの概要
第1回は、サイドビューについてご紹介します。
今回バトル画面において、従来のフロントビューに加えてサイドビューが選択可能になりました。
サイドビューバトルとは、敵キャラとアクターが向き合った画面構成の戦闘で、コンシューマーゲームでは「ファイナルファンタジー」で採用されているのが有名ですね。
ツクールシリーズでも、かつてRPGツクール2003では、サイドビュー戦闘が標準採用されていました。また、その他のツクールでも、イベントコマンドを駆使してサイドビューバトルを作る人や、RPGツクールXP以降、RGSSが搭載されてから、有志の手によって、サイドビュー用のスクリプト素材も多く作られました。
今回、標準で搭載されたことによって、データベースでの設定が可能になり、既存のツクールよりも、かなり設定が簡単になりました。
さっそくサイドビューバトルを試してみましょう
設定方法:まずは試してみましょう
サイドビューバトルに切り替えるための設定方法は、システムの「オプション」で「サイドビュー戦闘を使用」にチェックを入れる、これだけです。
試しにこれでサイドビューになったテストプレイを行ってみてください。
フロントビューと同様、大変タイミングよくバトルが進むのが分かると思います。爽快感ともいえる、心地よさがあるのではないでしょうか。
フロントビューと画面を比較してみましょう
まず、フロントビューバトルでの戦闘画面の例を示します。
これを上記の設定で、サイドビューに切り替えるだけで、以下の画面になります。
サイドビューに切り替えると、敵キャラの画像が自動的に変更され、画面右側にアクター達が現れるのが分かります。
サイドビューバトルのテストプレイを試された皆さんは、アクターのアニメーションのバリエーションが多いことに気づいていたことでしょう。攻撃の際やコマンドの待機時にも、随時アニメーションしているのが分かります。
例えば、アクターの攻撃時は、一歩前進し、アクターが武器攻撃を行うアニメーションを表示してから敵への攻撃アニメーションが出ます。
また、アクター側が攻撃や回復を受けたときに、そのアニメーションが表示されることも、フロントビューとの大きな違いです。例えば、回復時は以下のように表示され、その後回復HPの数値がポップアップします。
一方、画面左上にバトルログとして表示される戦況(「ダメージを与えた」など)は、フロントビューとそれほど違いはありません。
サイドビューバトルの仕様と設定方法
自動で変わる敵キャラ画像はどこで設定しているの?
フロントビューから切り替えたときに、敵キャラの画像が自動でサイドビュー仕様に変わったことには、驚かれた方も少なくないと思います。これはどういう仕組みになっているのでしょうか。
それは、敵キャラの画像は、フロントビュー用とサイドビュー用の両方が同じ名前で準備されており、異なるフォルダに格納されているのです。
◇実際に敵キャラ画像を見てみましょう
エディタのツールバーの「ゲーム」から「フォルダを開く」を選んでください。
このゲームのプロジェクトのあるフォルダが開きます。
この中から、「img」と書かれたフォルダを開いてください。
その中に「enemies」と「sv_enemies」というフォルダが見つかります。前者には、フロントビュー用、後者にはサイドビュー用の敵キャラ画像が格納されています。これらのフォルダを開き、中の画像を比較してみると面白いでしょう。
サンプルでは、このふたつのフォルダの画像は、同じ画像のものも、左右反転のみのものもありますが、若干異なる画像もあります。
アクターのサイドビュー画像の設定方法
さて、次はアクターの設定についてです。
データベースのアクターで「画像」を設定する部分があり、そこに、「[SV]戦闘キャラ」の設定項目があります。
ここでアクター部分をダブルクリックして選択すると、「画像の選択」ウィンドウが出てきて、どの画像を使用するか選ぶことが出来ます。
これらの画像を見ていると、アクターのポーズに相当たくさんのパターンがあることが分かりますが、果たしてこれは、どんな画像の仕様になっているのでしょう。
そこでまずは簡単に、アクターの戦闘画像の仕様を確認してみましょう。
◇アクターのサイドビュー画像の仕様
アクターのサイドビュー画像は、ひとつのアクションにつき3パターンのアニメーションで18種類の行動に対応しています。
それぞれのアクションは、以下の表に対応しています。
1. 前進 7. 突き 13. 逃げる
2. 通常待機 8. 振り 14. 勝利
3. 詠唱待機 9. 飛び道具 15. 瀕死
4. 防御 10. 汎用スキル 16. 状態異常
5. ダメージ 11. 魔法 17. 睡眠
6. 回避 12. アイテム 18. 戦闘不能
上記の画像のうち、赤い数字のパターンはループ(左、中央、右、中央の順番にループ)し、青い数字のパターンは1回だけ「左、中央、右」で表示されるものです。
ここまで読んでも、まだピンと来ないかもしれませんが、細かく理解する必要はありません。詳細は追って説明しますので、今は、簡単に感覚を掴んでおいてください。
ここまでで分かったことは、比較的シンプルになるように、一定の配慮がなされている、という点でしょう。1パターン3アニメ×18種類は、かなりサイドビューとしては素材の数が少ない方で、ドット絵に心得のある人なら、自分で素材を作ることも、やりやすいのではないでしょうか。
データベースでの設定方法
それでは、サイドビューバトルを設定するために、データベースではその他にどんな部分の設定を行えばいいのでしょうか。
具体的には、ここで紹介する、[SV]と書かれている部分を一通り設定すれば十分です。
◇システムの「[SV]魔法スキル」
ここで「魔法」に該当するスキルを設定します。
「魔法」とそれ以外(通常攻撃(スキルタイプなし)や必殺技)によって採用されるアニメーションが異なります。
「魔法」だとコマンド入力後、行動までの待機中が「3.詠唱待機」になり、それ以外は「2.通常待機」になります。
また、戦闘の行動の際も、魔法の場合「11. 魔法」のアニメになるのに対し、魔法以外のスキルの場合「10. 汎用スキル」になります。
◇システムの「[SV]攻撃モーション」
通常攻撃の際に使用する武器の「タイプ」ごとにアニメーションを設定します。
「モーション」は武器ごとに、「7. 突き」「8. 振り」「9. 飛び道具」の3種類から選択します。
アニメーションの関係でこの3種類より多くは増やせません。
「画像」は武器ごとに異なるものが選べ、ここで設定した武器が、攻撃時に表示される武器のアニメーションになります。このアニメーションは24種類+ユーザー定義6種類から選べます。
武器のアニメーションは、プロジェクトのimgフォルダの中のsystemの中にある、Weapons1.png、 Weapons2.png、Weapons3.png の3つのファイルで定義されています。この中で、Weapons3.png がユーザー定義用になっているため、新しい武器の画像を作りたいときは、こちらを利用するといいでしょう。
注意が必要なのは、「飛び道具」に設定する武器の代表には弓や銃がありますが、矢や弾が飛んでいくアニメーションは実際には表示されていないという事です。しかし、敵キャラのアニメーションの関連で意外に自然に見えているのが分かると思います。
◇ステートの「[SV]モーション」と「[SV]重ね合わせ」
状態異常のステートになると、待機時のアニメが変わります。
ここでは、「モーション」でその際のアニメーションの種類と、「重ね合わせ」でアクターの上に表示される状態異常アニメを設定します。
「モーション」は、「戦闘不能」「睡眠」「状態異常」および「通常」が選べ、そのステートになった時、「通常」以外だと、待機時のアニメがそれぞれ「18. 戦闘不能」「17. 睡眠」「16. 状態異常」に変わります。
また、特定のステートになっていなくても、HPが減った時にも待機時のアニメが自動的に「15. 瀕死」になります。
「重ね合わせ」は、そのステートになった時にアクターの上に表示されるアニメーションです。使用される画像は img/system フォルダの States.png で設定されています。
状態異常時の待機時のアニメの例を示します。
上のアクターから順番に、ステートが睡眠、戦闘不能、毒、HPが少ない状態となっており、待機時アニメが「17. 睡眠」「18. 戦闘不能」「16. 状態異常」「15. 瀕死」になっています。
最初のアクターには睡眠の、3番目のアクターには毒の「重ね合わせ」アニメーションが示されています。
以上を設定すれば、サイドビューの設定は完了となります。
注意点:サイドビュー導入に考慮が必要な可能性のあるケース
このように、シンプルで大変設定のしやすいサイドビューですが、それゆえに制限もいくつかあります。ここでは、サイドビュー戦闘にするかどうか、検討が必要になりそうなケースを挙げます。
デフォルトでは手裏剣やブーメランなどの飛び道具が設定できない
「武器が飛んでいく」というアニメーションは、デフォルトのシステムでは準備されておらず、そのような武器を作ることはできません。
しかしながら、後述する「プラグイン」という拡張機能を使えば、JavaScriptのプログラムに心得のある人なら、プラグインを自作することで機能を拡張し、アニメーションを表示させることはそれほど難しくはないため、このような武器を作りたい人は、プラグインの作成に挑戦してみる価値はあります。
子供キャラなど、体格や手の位置が異なるアクターがいる場合の対応
今回の仕様として、アクターの武器を出す手の位置が決まっています。実際、サンプル素材のアクターは、どれもほぼ同じ体型をしていますね。新たに素材を作られる方も、この体型を真似るとよいと思われます。
しかしこのため、子供のように頭身の低いアクターや、巨人のように頭身の高いアクターが戦闘に参加する場合、同じ体型に出来ず、武器を持つ手の位置が異なると不自然になるため、そのような登場人物がメインのゲームは、サイドビューは向かないかもしれません。
ただし、これを解決するプラグインも登場しています。(繰り返しになりますが、プラグインについては、詳細は後述します)
地獄カバさんのサンプルゲームでは「SVActorPosition.js」というプラグインが使われています。これはアクターの位置と武器のアニメーションの位置を設定できるプラグインで、実際に巨人をアクターとして登場させています。つまりこちらも、手間はかかりますが、不可能ではない、ということです
応用編:サイドビュー用アクター画像のより細かい仕様
ここまで読んで「自分でもサイドビュー画像を自作したい」と考えている方も少なくないと思います。特に、「新しいアクターのための素材を作りたい」という要望は多いでしょう。
そこで、どんなタイミングで、どんなアニメーションが表示されるのか。
これを細かく紹介したいと思います。
やや込み入った内容なので、素材作成にこだわらない人は、この項目は読み飛ばしていただいてかまいません。
コマンド入力中
コマンド入力前のキャラ(状態異常でない場合)
・「1. 前進」
コマンド入力中(状態異常にかかわらず)
・「1. 前進」
コマンド入力後、行動までの待機時(状態異常でない場合)
・防御を選んだ場合「4.防御」
・魔法を選んだ場合、「3. 詠唱待機」、それ以外(攻撃、魔法スキルでない必殺技、アイテムなど)は「2. 通常待機」
※コマンドが魔法かどうかの判断は、選んだスキルのスキルタイプが「システム」の「[SV]魔法スキル」に含まれているどうかかで判断。
状態異常の場合
・状態異常の際のアニメーションの判断は、「ステート」の「[SV]モーション」にて「状態異常」「睡眠」「戦闘不能」を 選ぶことが可能。複数の状態にかかっている場合、より重たい方が優先される。
・戦闘不能の場合「18. 戦闘不能」、睡眠の場合、「17. 睡眠」
・状態異常の場合「16. 状態異常」、HPが少ない場合は「15. 瀕死」
※ただし、コマンドで魔法や防御を選んだ場合のみは、通常通り「4.防御」「3. 詠唱待機」になる(状態異常とHPが少ない場合のみ)。
・状態異常時にアクターの上に表示されるアニメーションは[SV]重ね合わせ で設定。使用される画像は img/system/States.png で設定。
ターン中
攻撃を受けたとき
攻撃を受けたら「5. ダメージ」、回避したら「6. 回避」。いずれも、ループなし。
行動終了後
・防御の場合や、状態異常の場合は、引き続き待機時と同じ。
・それ以外の場合は「2. 通常待機
ターンでの行動時
ループなしで以下を表示。
攻撃の場合
・武器の種類によってアニメーションが異なる(二刀流の場合、最初に持っている武器)。「7. 突き」「8. 振り」「9. 飛び道具」のいずれかに。
※武器の種類によって、どのアニメーションになるかは、システムの「[SV]攻撃モーション」にて設定。
※武器の種類によって表示される武器のアニメーション画像も、「[SV]攻撃モーション」にて設定。画像は、img/system フォルダの Weapons1.png、Weapons2.png、Weapons3.png にて設定。このうち Weapons3.png はユーザー定義用。
その他のコマンドの場合
・防御の場合「4. 防御」
・魔法の場合「11. 魔法」
・魔法以外のスキルの場合「10. 汎用スキル」
※魔法かどうかの判断は、選んだスキルのスキルタイプが「システム」の「[SV]魔法スキル」に含まれているかどうかで判断。
・アイテムの場合「12. アイテム」
戦闘終了時
勝利時
・「14. 勝利」
※ただし、動けないキャラはアニメーションの変化なし。「動けない」とは、「行動制約」に「行動できない」が入っているステート(睡眠や戦闘不能)にかかっている場合のこと。
逃げるのに成功した場合
・「13. 逃げる」
※ただし、勝利時同様、動けないキャラはアニメーションの変化なし。
プラグインを使ってサイドビューバトルをカスタマイズしよう
サイドビューバトルをさらにカスタマイズするために、いくつかのプラグインが準備されています。ここでは、代表的なものをいくつか紹介します。
最初に:プラグインって何? どう導入するの?
プラグインとは、RPGツクールMVにあらかじめ準備された標準機能を拡張するためのもので、以前のツクールのRGSSにあった「スクリプト素材」と同じようなものだと考えていただければ間違いありません。
今回、ツクール本体からスクリプトのエディタがなくなり、代わりに「プラグイン管理」が追加されました。
赤い丸で囲まれたアイコンをクリックすると、以下の「プラグイン管理」の画面が出て来ます。
現在はリストに何もありませんが、ここにプラグインを一つずつ追加していきます。
プラグインの特長:より「親切」に使いやすくなった
プラグインは機能ごとに一つのファイルに分けられ、一つのファイルが一つのプラグインになります。このため、好きな機能だけを選んで追加することが可能です。所定のフォルダに導入したいプラグインをコピーし、前述の「プラグイン管理」の画面で導入することで使えるようになります。
プラグインの中身は、JavaScriptで書かれたプログラムです。このため、ツクール本体に標準で準備されている以外のプラグインも、プログラミングの知識がある人なら、これまでのRGSSのスクリプト素材と同様、自作することが可能です。
一方、プログラミングの知識がない人にとっても、今回は大変親切な設計になりました。
これまでのツクールでは、スクリプトエディタを開くことでスクリプト素材を追加していましたが、そこでプログラミングの文字の羅列を見ることになり、プログラミングに不慣れな人の中には、苦手意識がある人もいたのではないでしょうか。
また、RGSSスクリプト素材を導入する際にも、様々なパラメータ(プログラムの挙動を設定するもの)を設定するために、プログラム内の定数部分など、スクリプト素材の中身を直接書き換える必要がある場合があったため、どうしてもプログラミングの存在を意識せざるをえない部分があり、これも悩みの種だった人も少なくないと思います。
今回のプラグインでは、「プラグイン管理」の画面で「パラメータ」をウィンドウで設定できるようになったため、スクリプト素材の中に全く手を加えることなく、これらの設定が可能になりました。
このように、プラグインの最大の特徴は、利用者が、ほぼプログラミングの存在を意識する必要なく、RGSSプラグイン素材同等の機能拡張を利用できるようになったということです。
それでは、プラグインを設定する方法を具体的に見て行きましょう。
プラグインの設定方法
◇ステップ1. フォルダにプラグインをコピーする
プラグインを追加するには、まず、目的のプラグインのファイルを、プロジェクトの js/plugins フォルダにコピーします。
最初の状態では、上記のように7個のプラグインが入っています。これらは、後述する「公式プラグイン」と呼ばれるものです。必要に応じて、このフォルダに別のプラグインを追加して下さい。
◇ステップ2. プラグイン管理でプラグインを登録する
RPGツクールMVの「プラグイン管理」で空きの部分をダブルクリックし、ウィンドウを開きます。
「名前」の部分をクリックし、出てきたリストの中から、導入したいプラグインのファイルの名前を選びます。
ここでプラグインの説明が出るので、OKを選択すると、リストにプラグインが登録されます。
それぞれのプラグインに対して、それを行って下さい。
7個すべてのプラグインを登録すると、以下の画面になります。
◇ステップ3. 使用するプラグインを取捨選択する
上記で登録したプラグインの中には、あなたの制作にとっては必要のないものがあるかもしれません。例えば、「AltMenuScreen」は、登録するだけで、メニュー画面のレイアウトが切り替わってしまいますが、これを使いたくない時は、「状態」をONからOFFに切り替えることで、登録したままの状態で、効果を発揮させないことが可能です。
状態を設定する様子を以下に示します。
もちろんOFFにするつもりのプラグインは、最初から登録しない、またはリストから削除するという方法もありますが、試しに使ってみたい、いつか使うかもしれないから登録だけはしておきたい、というときには、この方法を試してみてください。
◇ステップ4. 必要に応じてパラメータを設定する
プラグインの中には、パラメータを持つものがあります。
「パラメータ」の欄に名前と、その値が設定されています。
ここをダブルクリックすると、パラメータの詳しい説明が表示され、数値や文字の設定を変更することが出来ます。
◇ステップ5. 必要に応じて、その他の設定を行う
プラグインの中には、パラメータの他にも、「プラグインコマンド」の呼び出しや、データベースの「メモ」での設定が必要にものがあります。
・プラグインコマンド
プラグインコマンドとは、実行時にプラグインを呼びだす場合や、パラメータでの設定が複雑になる場合に利用されるもので、イベントコマンドとして準備されています。
この「プラグインコマンド」は、イベントコマンドのリストの、3ページ目の右下に配置されています。
主な使い方は、プラグインの名前に続いて、いくつかの引数を設定するもので、プラグインごとにパラメータの設定、利用方法は、「ヘルプ」をクリックして開けば書かれています。
実践的な具体例として、第3回でプラグインコマンドを使ったプラグインを扱う予定です。
・ データベースの「メモ」
これまでのツクールでRGSSスクリプト素材を使っていた方にはお馴染みでしょうが、今回も健在です。
設定方法は、これまでとほぼ同じで、データベースのそれぞれの項目にある「メモ」の欄に、プラグインのヘルプで指定された書式で書くことで設定が可能です。
・具体例
公式プラグインの中のEnemyBookとItemBookは、プラグインコマンドとメモ、そしてパラメータのすべてを使って設定を行います。EnemyBookの方のヘルプを図示します。
ヘルプに、プラグインコマンドの使い方と、メモの設定方法が丁寧に記述されているのが分かります。
このプラグインでは、プラグインコマンドを、ゲームの実行中に、図鑑を開く際や、図鑑に敵キャラを登録したり削除したりするのに使っています。
また、メモについては、敵キャラに関する詳細な説明文を書いてもらうことや、図鑑に載せない敵キャラ(例えばボスの変身後の形態などを想定しているのでしょう)を設定するのに使っています。
以上で、一通りのプラグインの導入、設定を行いました。
まだ分かりづらい部分もあったかもしれませんが、実際に利用していくうちに慣れていくことでしょう。
「公式プラグイン」と「準公式プラグイン」
今回のツクールでは、「公式プラグイン」として7種類のプラグインが出ていることを紹介しましたが、それ以外にも、サンプルゲームなどで、それらとは別のプラグインも使われています。これらを「準公式プラグイン」と呼びます。
これら「準公式プラグイン」についても、あなたのゲームでの使用は自由となっています。サンプルゲームをプレイしていて「これはどんなプラグインを使っているのだろう?」と気になったら、プラグインのフォルダを調べてみると、準公式プラグインを発見することが出来るでしょう。
注意が必要なのは、準公式プラグインは公式プラグインと異なり、原則としてユーザーサポートの対象外となっていることです。この点、お気を付け下さい。
この講座で「公式プラグイン」の明記がないものは、全て準公式プラグインです。
それでは、プラグインの紹介を始めます。
SimpleMsgSideView.js (公式プラグイン)
サイドビューバトルにおいて、バトルログを表示せず、技やアイテムの名前だけを表示するようにする、公式プラグインです。
特に難しい設定を行う事もなく導入できます。
これまではサイドビューバトルであっても、画面の左上に「○○はファイアを唱えた」など一連の流れが表示されていましたが、このプラグインを導入すると、「ファイア」のように、技やアイテムの名前だけが表示されるようになります。
従来のサイドビューを見て、「ダメージはキャラの上にポップアップで表示されるのに、なぜ、さらにバトルログで『~のダメージを与えた』と二重に表示する必要があるのだろう?」と疑問に思っている方は、試してみる価値があります。インターフェースがすっきりするだけでなく、戦闘のテンポも若干速くなります。
BattlebackScroll.js
必要に応じて、戦闘背景のbattleback1をスクロールさせることのできるプラグインです。
船の上などでの戦闘で、背景のみがスクロールする戦闘シーンを作成することが可能です。
スクロールによってループするため、デフォルトで準備されている素材を使うと、つなぎ目の部分が不自然になってしまいます。このため、そのままでは使えず、つなぎ目のない画像を準備する必要があります。また、パラメータに変数を使用しているため、使いこなすにはある程度の知識が必要になります。
以上のように、導入には若干の手間がかかりますが、それらのハードルをクリアすれば、大変面白いプラグインです。
◇このプラグインが使われているサンプルゲーム
このプラグインの詳細な設定方法はこの講座では割愛しますが、代わりに、実際の使用例を紹介します。
MINAKI2424さんのサンプルゲームでは、鉱山を越える途中でのトロッコでの連戦でこのプラグインが使われています。
静止画なので分かりづらいですが、実際のゲームでは背景の部分が横方向にスクロールしています。
戦闘背景の表現には一般的に、battleback1とbattleback2という2つの画像ファイルを重ね合わせるのですが、このシーンの実現にあたっては、battleback1の画像を戦闘背景にし、battleback2をトロッコの中の画像にしています。
皆さんも是非プレイし、確かめてください。
WeaponSkill.js (公式プラグイン)
武器の効果を任意のスキルに変更できる公式プラグインです。
これはフロントビューバトルを使っている人でも、役に立つと思われます。
通常攻撃は1番のスキルの設定が採用されていたため、戦闘計算式や効果範囲は固定されていました。このプラグインを導入すると、好きな番号のスキルを選択することが出来るようになります。
主な利用方法
これまでの設定では実現できなかった、全体攻撃武器や、MP消費武器など、あらゆるスキルの効果を持つ武器を作ることが可能になります。
さらには、通常とは異なる戦闘計算式を使ったダメージを与える武器など、様々な応用が可能です。
設定方法
武器の「メモ」に以下の書式で書いてください。
<skill_id:8>
この場合、その武器で攻撃を行う際には、8番のスキルが、利用されます。
実際の設定例
試しに、全体攻撃を行う武器を作ってみましょう。
◇ステップ1. スキルの1番「攻撃」をコピーし、任意の番号(ここでは12番)にペーストします。
(その際、「メモ」の記述は消しておくといいかもしれません)
◇ステップ2. スキル12番の効果範囲を「敵全体」に変更します。
◇ステップ3.「武器」で全体攻撃武器を作ります。
メモ欄に
<skill_id:12>と書きます。
◇ステップ4. テストプレイを行います
全体攻撃武器を装備させて、実際にテストプレイを行います。
全体攻撃のためコマンド入力時にターゲットを求められないこと、攻撃時には順番にすべての敵に攻撃を加えているのが確認できます。
ChangeWeaponOnBattle.js
このプラグインを導入すると、戦闘コマンドに「装備変更」が加わり、剣(と盾)が、変更可能になります。この動作にはターンを消費しません。
導入にあたって、パラメータなどの設定の必要はありません。
装備変更を行うと、このような画面が呼び出されます。
前述の「WeaponSkill.js」プラグインを導入する人の中には、「攻撃力の低い全体攻撃武器(ブーメランなど)と、攻撃力の高い武器(剣など)を適宜交換したい」と思う人がいることでしょう。そんな方にお勧めしたいのが、このプラグインです。好きなタイミングで武器を適宜切り替えながら戦うことが可能になります。
短所は、コマンドの数が増えてしまい、煩雑になると思うプレイヤーが出てくるかもしれないということです。よく考えて導入するといいでしょう。