しょういちろうの徒然ブログ。

サークル「sound sepher」の活動やゲーム開発などをつれづれとまとめていくブログです。

【ゲーム】RPGツクールMVのこまかい色々と予測

 今回はRPGツクールMVであまりまだ話題にされてない、独自研究に基づいた情報をまとめていこうと思います。一度細かく書いた記事が保存されずに消えてしまったので、今回はわかりやすく箇条書きでいきます!(つらい)

 問題や間違いがあったら削除修正等を行いますので、ご連絡くださいませ。

RPGツクールMVいろいろ

便利になったこと

  • ゲーム画面の解像度をいくらでも大きくすることが出来るようになった(要スクリプト知識・rpg_managers.jsのSceneManagerの_screenWidth等参照)
  • スクリプトがRGSSからjavascriptになった。それにともなって描画エンジンがpixi.jsに変更された。例えばHPゲージ等はpixiのrect命令で描画されてる。pixiはspineも動作可。
  • javascriptになったことで、jsを直接外部エディタから弄れるように。ちなみにエンジンの全てがjavascriptで書かれてる。
  • Windowsの他、iOSAndroidMacOSHTML5等に対応。iOSへ書き出すには専用の認証登録が必要なためか、Mac必須。
  • マップチップのサイズを16x16pxにも、32x32pxにも、それ以上にもできる(要スクリプト知識・rpg_objects.jsのGame_Map.prototype.tileWidth等参照)
  • データベースはjsonで管理。見やすい・読みやすい。jsonそのままでデータベースをある程度書き換えることができるくらい読みやすい。
  • 便利になったわけではないけど、VXAで出来たことは多分全部できる上に、ちょっと便利になってる(多分)。
  • デフォルトで遠景画像ファイルに"!"をつけると視差ゼロの床を作ることができるように。(これまでは追加スクリプトが必要だった)
  • ゲームプレイ時のウィンドウサイズをドラッグで変更できる。

ちょっと気になること

  • マップチップのサイズを変えられても、マップエディタは追従しない?
  • プラグインスクリプトを追加してアクター等のパラメータを入力する場合、VXAceと同様に小さなメモ欄にまとめていかなくてはならない? メモ欄は大きくならないか?
  • ちなみにメニュー配置は絶対指定なので、スクリプトを直接書き換えないと配置やサイズを変えられない。わかれば簡単だと思うけど。
  • テキストはウィンドウを介さないと表示することができない、いつもの仕様の模様。ウィンドウのopacityを減らしたりで対応する感じで。

素材規格(たぶん)

  • アイコン:32x32pxを横16個、縦無限
  • キャラクター:48x48pxを横に3つ、向き配置は上段から下左右上、横4キャラ縦2段の合計8キャラ1パック
  • 顔グラフィック:144を横4キャラ縦2段の合計8キャラ1パック、多分キャラと対応
  • ウィンドウ画像:VXAと同じ規格で192x192pxに拡大
  • マップチップ:1チップ48x48pxであとはVXAの規格と全く一緒と思われる
  • サイドビュー味方:待機画像はたぶん64x64pxを横に3つ、仕様まではまだ不明
  • BGM・BGS・SEフォーマット:ogg / m4a
  • 他にも色々あるけどとりあえず現状わかってるのはこれくらい

公式プラグイン

AltMenuScreen
  • メニュー画面の別のレイアウトに変更。
AltSaveScreen
  • セーブ・ロード画面を別レイアウトに変更。パーティの顔グラフィックを出せるようにできたり。
EnemyBook/ItemBook
  • アイテム図鑑やモンスター図鑑を作ることができる。
SimpleMsgSideView
  • サイドビュー戦闘時、バトルログを消してスキル名表示だけに切り替える。
TitleCommandPosition
  • タイトル画面のコマンドウィンドウの位置や背景を変更。

 

steam版追加プラグイン

Yanfly Engine Core
  • Yanfly Engineのコアエンジンでは、解像度やお金の最大数、最大HPやゲージの太さ等のパラメータを一括設定できる。通常、解像度を変更した場合にメニューは追従しないが、こちらでは可能。
Yanfly Engine - 8 Directional movement
  • ナナメ移動対応。
Archeia - No AutoShadows
  • 自動でマップにつく影を消したり表示したりできるように。
Yanfly Engine - Massage Core
  • Yanfly Engineのメッセージコアを導入すると、メッセージウィンドウの内容を補強できる。テキストコードを利用して、名前ウィンドウの追加や、パーティ位置に応じたキャラ名や職業名をメッセージ側から指定できるように。
Yanfly Engine - Battle Core
  • Yanfly Engineのバトルコアを導入すると、バトルメッセージの表示方法の変更、スキルセレクタの位置変更、連続攻撃の表示方法の変更ができるように。
  • バトルコアではスキル発動演出も細かく調整可。アクションは(1)setup (2)whole (3)target (4)follow (5)finish……順に発動、全体、ターゲット、追従、フィニッシュの5つに分けられる。スキルのメモ欄にperform actionやdeath breakなどと記述すると、対応するエフェクト(ダメージ)が表示される。連続ダメージもここで調整可。
Shaz - Change Tile Size
  • マップチップサイズをプラグイン側から指定することで、スクリプトを弄らずにチップサイズを変更することができる。
Yanfly Engine - Action Sequence pack 1
  •  アクションシーケンスパック1を加えると、HPやTPを強制的に減らしたり、バフを追加したりお金を入手したり、コモンイベントを呼び出したりBGM再生したりもできるように。
Yanfly Engine - Action Sequence pack 2
  • アクションシーケンスパック2は、サイドビューバトル中、アクターがジャンプしたり後ろを向いたり敵に近づいたり等のキャラクターアクションを追加する。
Yanfly Engine - Action Sequence pack 3
  • アクションシーケンスパック3は、攻撃時などにカメラコントロールやズーム等、演出を更に強化する機能を収録。アクターにカメラを合わせてジャンプすればカメラもそれに追従したりと、かなり応用ができる模様。
Shaz - Battle Mode Changer
  • 戦闘をフロントビュー/サイドビューを切り替えることができるようになる。
Yanfly Engine & Yami -Skip Title
  • タイトルを飛ばすことができる。これで自作タイトル画面を作ることが可能
Yanfly Engine - Victory Aftermath
  • 戦闘処理リザルト(Victory Aftermath)も用意。EXPゲージ伸びてレベルアップする処理や、アイテム入手ウィンドウ等を表示できて、BGM等細かい設定もプラグインマネージャー上で設定可能。
Yanfly Engine - Skill Core
  • Yanfly Engineのスキルコアを使うと、スキルのコストをHPmax50%にしたり、HPとMP消費型のスキルにしたりなど、細かい設定も行えるように。また、ルナティックモード(機能名)で、直接メモ欄にスキルのパラメータを直接javascriptで作ることができる。
Yanfly Engine - Skill Cooldown
  • スキルクールダウンは、使用すると任意の一定ターン数のあいだ使えなくなるクールダウンスキルを作成することができるように。装備側からクールダウンを短縮するものも作成できる。
Yanfly Engine - Equip Core
  • 初期状態では装備できるスロットは全員固定だが、装備コアを導入すると、メニューレイアウトを変えることができ、また、装備できるスロットをキャラクターごとに変えられるようになる。また、ルナティックモード(機能名)で、直接メモ欄にスキルのパラメータを直接javascriptで作ることができる。
  • 例えばFF5のチキンナイフは、<Custom Parameters>atk = $gameSystem.escapeCount();</Custom Parameters>とすることで実装できる。※実際はもうちょい計算式があるけど
Yanfly Engine - Item Core
  • 見た目をEquip Coreに近いデザインに変更。アイコンが大きく表示されたり。
  • アイテム単体を固有アイテムとしてみなして、"アイテム x99"ではなく"アイテム1/300"のように、アイテム全体総所持数内でやりくりする仕組みに変更できる。最大総所持数は設定可。イメージ的には聖剣1やサガ1~3の仕様のような感じ。
  • 通常方式と総所持数方式は、アイテム・武器・防具と別々に切り替えることができる。スクリプトマネージャから指定可。
  • 上記に関連して、例えば武器のメモ欄に<Random Variance: XX>と記述すると、指定した数値分、該当武器の攻撃力がプラスマイナスされたりと、同じアイテムでもパラメータの異なるものを作ることができるように。
Yanfly Engine - Item Upglade Slots
  • 上記アイテムコアに加えてアップグレートスロットを導入すると、武器強化等を行うことができるように。導入することで、武器や防具が単体固有でアップグレード専用のスロットを持つようになる。
  • アイテムに<Upgrade Effect>タグを埋め込んで上昇するパラメータを設定すると、アップグレードアイテムとして認識する。これをアップグレードで使うことによって、武器や防具の固有スロットを消費して強化することができる。(デモを見てもらった方がわかりやすいと思う)
  • アイコン変更、名前変更、ランダム強化、スロット追加等の細かい設定もアップグレードから行うことができる。
Shaz's More Escape Codes Plugin
  • 会話中に表示される顔グラフィックをコード側から変更することができるように。
  • 表情差分などを顔グラフィックのフォーマットにあわせて並べて(横4x縦2)、"\f[5,4]"のように記述する。前者の5はアクターID、後者の4は顔グラフィックのインデックス番号。この場合はアクターID5の4番目の顔グラフィックに切り替える、ということ。(間違ってたらごめんなさい)
Yanfly Engine - Auto Passive States
  • オートパッシブステートを導入すると、アクターや敵バトラーのメモ欄に<Passive State: XX,XY>等と記入することで、指定したIDのステートをつけることができる。カンマで区切ると、指定したIDすべてをつけられる。
  • また、XX from YYと記入すると、XX番~YY番のステートを全てつけられる。
  • これはスキルも対応しており、パッシブステートをもつスキルを持っていると自動で発動するようになる。(間違ってたらごめんなさい)
Yanfly Engine - Main Menu Manager
  • メニューの内容を増やすことができる。ルナティックモードとして、ここに直接javascriptを記入することも。
  • メニューからお店を呼び出す際は、コモンイベント等から呼び出すことでも実行可能。
Yami Engine Delta - Hospital Core
  • イベントのコマンドリストから、プラグインコマンドで<OpenHospital>を実行することで、病院イベントを起動することができる。
  • アクター毎に料金を支払って治療したり、全アクターを治療できる。
Yanfly Engine - Base Troop Events
  • プラグインマネージャで導入したBaseTroopEventsのGeneral Settingsのパラメータ設定項目で、「Base Troop ID」の値を起動したいTroops(敵グループ)のIDに指定すると、指定した敵グループIDで設定されたイベントが、全敵グループIDで実行されるようになる。
Yami Engine Delta - Word Wrapping
  • CSS3のword-wrapプロパティと同等の処理を行う。
  • 通常では長いメッセージを入力した際、メッセージ内容がウィンドウ幅よりも長い改行されないメッセージははみ出てしまいゲーム中では見えなくなってしまうが、このプラグインを使うと自動改行されるようになる。具体的な使用法は下記。
  • メッセージに<wrap>と書き込んで改行せずに長いメッセージを入力すると、単語を維持した状態で自動改行される。例えば、「I have a dream」→「I have<br>a dream」といったふう。
  • また、<breakword>と入力すると、単語を考慮せずに自動改行する。例えば、「I have a dream」→「I hav<br>e a dream」といったふう。
  • 他機能として<br>タグを入れることで、指定した箇所で改行する。(通常、\nで改行されるのでは? 何か特殊機能があるのかな?)
Game Focus Plugin
  • ゲームをプレイしていないとき、つまりゲームウィンドウにフォーカスを当てていないとき(別ウィンドウを操作しているとき)のゲームの処理を変更することができる。
  • 「BGMを止めるか」「グラフィックを止めるか」を指定可。
Yanfly Engine - Battle A.I. Core
  • 敵のAIをFF12ガンビットのように細かい条件指定が行えるようになる。
  • 例えば状態異常が行動条件とするなら、<AI Priority>condition: skill X, target</AI Priority>のように記入。
  • 記法はこんな感じ。<AI Priority>HP% param <= 50%: Heal, Lowest HP% Party Alive Members > 2: Quake, Lowest HP% State !== Haste: Haste, Random</AI Priority>
  • ↑はHPが50%未満のときに回復、パーティ生存キャラが2人より多いときはクエイク、ヘイスト状態でないときはヘイストを使用……というような雰囲気だと思われる。
  • <AI Priority>タグの内容が発動条件を満たしていない場合は、通常のエディタ上の行動内容を実行。
Yanfly Engine - Region Events
  • ツクールMVではデフォルトで255コのリージョンが使えるが、このプラグインを導入することで、リージョンIDとコモンイベントIDを関連付けて、リージョンタグがつけられたマップチップをふむ事で指定したコモンイベントを実行することができる。
Yanfly Engine - Region Restrictions
  • つまりリージョンで行動制限をかけるプラグイン。プレイヤー、イベント等にそれぞれリージョン番号を指定すると、そのリージョンを書いた先には行くことができなくなる。
  • これによって、1グリッドの通路にイベントがはまって先へ進めなくなるうっかりミスを事前になくすことができる。VXAでもあったけどとても便利だったので使おう。
  • Pallarax Mapping、つまり遠景をマップ化する際は、このリージョン制限スクリプトで全キャラを通行不可にするリージョンを書き込めば簡単に実装可能。
Yanfly Engine - Save Event Locations
  • マップ詳細設定のメモ欄に、<Save Event Locations>と記入すると、このマップから出た際の最後イベントの位置が保存される。
  • これはイベントごとのメモ欄にも対応しており、同様に記入すると、そのイベントの位置が保存される。MVからイベントにもメモ欄が追加された。
  • また、プラグインコマンドで「ResetAllEventLocations」と記入することで、イベント初期位置をすべて元に戻すこともできる。
Yanfly Engine - Event Chase Player
  • イベント設定で追いかけフラグをオンにすると通常はどこにもいても自動で追いかけてくるが、これを導入すると一定範囲にプレイヤーが入らないかぎり追いかけてこない監視範囲を設定できる。
  • 例えばスクリプトで「this._chaseRange」は追いかけ監視範囲。
  • 「this._fleeRange」で逃げ監視範囲。範囲に入るとイベントが逃げる。
  • 「this._chaseSpeed」は追いかけてくる速さ。
  • 通常では柱等でプレイヤーが見えない場合は発見できないが、「this._seePlayer」をfalseにすると、見えてなくても監視範囲に入れば追いかけてくるようになる。
  • 「this._sightLock」は監視範囲から逃れた場合、何フレームの間追いかけてくるかのディレイを設定できる。
  • 「this._alertBalloon」は発見時のバルーン(ふきだし)表示の種類を指定できる。
  • 「this._alertSound」はサウンド名(IDではない)を''で囲んで指定すると、発見時の効果音を指定できる。
  • 「this._alertCommonEvent」は発見時に指定したIDのコモンイベントを自動で発動する。
  • これらは全てスクリプトマネージャでデフォルト設定可能。上記のように設定することでイベントごとに指定することもできる。
Yami Engine Delta - Transfar & Steal States
  • 自分がかかってる状態異常を相手に移し替えるスキルを作ることができる。
  • 逆に、状態異常を奪い取るスキルも作ることが出来る。どの状態異常をトリガーにするかは自由に指定可能。
  • ツクールVXAceのプロジェクトをコンバートできる。VXAプロジェクトにコンバート用スクリプトを追加して、ゲームを実行すると自動的にコンバートデータが出力されるので、それをツクールMVのプロジェクトにコピーすればOK。(たぶん仕様的にRGSSはコンバートされない思う
  • 戦闘画面のプレイヤー側のステータス表示部を、キャラクターの顔グラフィックに切り替えることができる模様。状態異常になれば、キャラの色が赤くなったりも。

Q&Aから抜粋
  • BGM作曲はNorth Soundさん(らしい)。
  • 敵のアニメは検証した限り、不可能ではなさそうだけど、プラグインが必要。(作る必要があるということ?)
  • ステータス追加はできるけど、プラグインが必要。Yanflyさんを信じよう!
  • アクション・ストラテジー・タクティカル系のプラグインはつかないよ
  • ATBやCTB的な追加戦闘システムはつかないよ
  • タイルサイズは48x48px以上もサポートするよ!
  • Q.3Dゲームは作れる? / A.………………がんばれ!
  • Q.Yanflyさんは男、女? YanflyさんとYamiさんは同じ人なんじゃ? この動画はYanflyさんの広告? / A.は?
  • イベントコマンドからスクリプトを呼び出すには、VXA時代のように直接スクリプトを書き込むイベントコマンドで、例えば”console.log('Hello,World!')”と書けばOK
  • 日本語版ツクールMVにYEは付属するのかについては、翻訳されるかはわからないけど、付属するようにしたいね~的な話をしてる
  • デフォルトではメッセージ表示中にバストアップキャラ画像は表示できないよ
  • 明かりスクリプトについては、KhasさんがKhas awesome Light effectより良いスクリプトを準備してるっぽい?
  • 少なくとも、明かりスクリプトは海外公式の方では作るつもりらしい。
  • Luna EngineとYanfly Engineは互換性がある。
  • 多言語対応ゲームやPixel Movement(より細かく移動可能にできる)プラグインはない。

参考:スクリプト考察

  • rpg_cores.js:コア部。操作や画像処理、サウンド処理等の基本機能を定義。
  • rpg_managers.js:MVの根底部を司る、総合管理スクリプト。データ、コンフィグ、ストレージ、画像、サウンド、そしてシーンを操作する基本処理がまとまってる。
  • rpg_objects.js:VXAでいう、Game_XXXを定義。Game_Actor、Game_Screen、Game_Interpreter(イベントコマンド)等の内部処理を司る処理がここにまとまってる。
  • rpg_scenes.js:シーンの基本定義、そしてScene_MapやScene_Menu、Scene_Battle等の場面ごとの処理はここにまとまってる。
  • rpg_sprites.js:まんまスプライトの定義。アクター、バトラー、エネミー、アニメ、ダメージ、アイコン、バルーン等々のあらゆるスプライトの定義などなど。
  • rpg_windows.js:VXAでいうWindow_Base、Window_Selectable、Window_Menu、Window_BattleLog等のウィンドウの定義はここで。キャラ描画やゲージ描画もWindow_Base上で行われている模様。まえといっしょ。

 rpg_coreで基本処理を準備したあと、managersで全ての処理を監視して、ここで設定したシーンごとの処理をscenesに投げてシーン毎の処理をobjectsとspritesとwindowsで表示・処理・操作している……といった形なのではないかなあと。

まとめ

 スクリプトレベルでは、可能性しか感じないくらいワクワクする仕上がり。解像度もHDなんて余裕で突破できる作り。これはエディタいかんによって化けると思う。javascriptベースだし、出来るかはわからないけどLive2Dとあわせられたら、DLsiteのエロRPG等も大喜びなのではないかと思ったのだけど規約的にだいじょうぶ?(知らない)

 ただ、RPGmaker公式のサンプルゲームをブラウザからソースを見ることで、スクリプトからデータベースから全部確認できるので、ブラウザゲーとして作るなら、中身を見られたり、最悪スクリプトを取られる事も覚悟したほうがいいかも。ふつーにexeとかにパッケージングするなら、問題ないですね。

 価格もsteamなら予約すれば10%オフで7182円。日本語はサポートされませんが、特典で素材とDLCをいろいろ貰えるそうなので、この値段なら買って損はないと思いますが、いかがでしょうか。僕はもちろんsteam版も日本語版も買います!

 (追記 '15 10/16) 日本語版の発売日は12/17に決まったそうです。価格は税抜き12,800円、税込みで13,340円。

参考 / 公式リリース

www.famitsu.com

www.famitsu.com

参考 / 他のMV考察ページ

tomotaka.tk

things-going.com

便利リンク