2020年8月19日水曜日

RPGツクールMZ向けプラグインの開発方針に関するご説明

 RPGツクールMZの発売おめでとうございます! 本項ではRPGツクールMZ(以下MZ)のプラグイン制作について、移植やRPGツクールMV(以下MV)プラグインの両立に関する方針の説明と、各種資料の提示を行います。

自作のプラグインについて

動作確認済みのプラグイン

 MVプラグインをMZ向けに移植し動作確認したプラグイン、もしくは新規にMZ向けに作成したプラグインはこちらに配置します。これらはすぐにMZで使用可能です。ライセンスは引き続き全て『MITライセンス』となります。

https://docs.google.com/spreadsheets/d/1BnTyJr3Z1WoW4FMKtvKaICl4SQ5ehL5RxTDSV81oVQc/edit#gid=1411848872

 公式プラグイン『PluginCommonBase.js』をベースプラグイン指定している場合があります。その場合は当該プラグインを先に適用してください。

動作確認していないプラグイン

 MVプラグインに@targetアノテーションを機械的に付与したプラグインを以下に配置しました。対象は現在公開しているすべてのMVプラグインです。これらはMZで動作するとは限らないのでご注意ください。移植に関してリクエストがあれば随時受け付けますが、対応時期についてはお約束できません。

 また、もし上記のシートにないプラグインでMZでの正常な動作が確認できたプラグインがあればぜひご一報ください。シートに追加します。

https://github.com/triacontane/RPGMakerMV/tree/mz_master

リポジトリの運用方針(プラグイン開発者向け)

 MZプラグインは、従来のMVプラグインから派生させた『mz_master』ブランチで運用します。双方のブランチで軽微な修正が入った場合は、cherry-pickでもう片方のブランチに反映させます。ただし差分が拡大したプラグインは反映を断念する場合があります。

 Pull Requestを頂ける場合は、マージ先のブランチを間違わないようお願いします。

公式プラグインについて

 私が作成した公式プラグインについては、GitHub上での公開は行いません。本体に付属しているのでそちらからご利用ください。公式プラグインの紹介記事はこちらです。

https://triacontane.blogspot.com/2020/08/rpgmz.html

MZの非公式スクリプトリファレンス

 公式プラグインおよびプラグイン講座作成に際して、非公式のスクリプトリファレンスを作成しました。データベースやゲームデータへのアクセス方法やイベントコード、特徴コードなどをまとめています。

https://docs.google.com/spreadsheets/d/1aqY-xzFqT0vnZE-OkfsMYsP9Ud91vWTrBLU-uDkJ-Ls/edit#gid=270496334

2020年8月15日土曜日

RPGツクールMZ 公式プラグイン紹介

 RPGツクールMZの発売おめでとうございます! 今作の発売にあたり、いくつかの公式プラグインを作成、提供しました。本項では、公式プラグインの機能や使い方を紹介します。

配置場所

 公式プラグインはRPGツクールMZをインストールしたフォルダの『dlc\BasicResources\plugins\official』配下に置いてあります。必要に応じてプロジェクトフォルダにコピーしてください。

配置例

Windowsかつストア版の場合

C:\Program Files\KADOKAWA\RPGMZ\dlc\BasicResources\plugins\official

WindowsかつSteam版の場合

C:\Program Files (x86)\Steam\steamapps\common\RPG Maker MZ\dlc\BasicResources\plugins\official

PluginCommonBase.js

 他のプラグインから参照されることを前提としたベースプラグインです。プラグインパラメータ、コマンドの型解析や制御文字の処理を一括で提供します。また、本プラグインを導入すると様々な場面で以下の制御文字が使えるようになります。

\v[n]  : n番目の変数の値に変換されます。
\s[n]  : n番目のスイッチの値(true, false)に変換されます。
\ss[n] : セルフスイッチの値(true, false)に変換されます。
n -> A, B, C, D

 制御文字を利用可能な場面は以下の通りです。他の公式プラグインで追加した制御文字も同様となります。

  • 文章の表示
  • メモ欄(※)
  • プラグインコマンド(※)
  • プラグインパラメータ(※)
  • スキルなどの説明欄
    ※ PluginCommonBase.jsをベースとして取り込んだプラグインのみ

プラグインパラメータの型解析(開発者向け情報)

 プラグインパラメータを自動で型解析し変換します。また、パラメータ取得時に制御文字の変換を自動で行います。以下のメソッドを呼んで戻り値を取得します。引数には必ず「document.currentScript」を指定します。

const param = PluginManagerEx.createParameter(document.currentScript);

 ただし、パラメータ名の末尾が(大文字小文字問わず)以下の値の場合、制御文字や型の変換は行われず、そのままの値を返します。

  • text
  • name
  • note
  • desc
  • script

プラグインコマンドパラメータの型解析(開発者向け情報)

 プラグインコマンドパラメータを自動で型解析し変換します。また、パラメータ取得時に制御文字の変換を自動で行います。PluginManager.registerCommandの代わりに以下を使用します。引数には必ず「document.currentScript」を指定します。

PluginManagerEx.registerCommand(document.currentScript, "command", args => {
    // 任意の処理
});

メモ欄の解析(開発者向け情報)

指定したオブジェクトからメモ欄情報を取得します。制御文字の変換を自動で行います。名称は複数指定することも可能です。

const metaValue = PluginManagerEx.findMetaValue(obj, tagName1, tagName2...);

動的コモンイベントの実行(開発者向け情報)

動的コモンイベント(並列処理可能なリスト型のコモンイベント)です。同一IDのコモンイベントも好きなだけ並列実行できます。実行が終わったものから自動で破棄されます。

$gameMap.setupDynamicCommon(commonEventId);

TextScriptBase.js

 テキストやスクリプトなどの複数行の文字列をプラグインパラメータとして登録、管理できるデータベースです。登録したテキストは以下の制御文字で参照できます。制御文字の添字には指定した識別子もしくは番号を指定します。

\tx[aaa] // 識別子[aaa]で登録したテキストに置き換わります。
\js[bbb] // 識別子[bbb]で登録したテキストをその場でスクリプトとして評価した結果に置き換わります。

画像

 スクリプトを実行する場合、引数を渡すことができます。引数は自働で型変換され、配列「args」から参照できます。

\js[bbb,10,ccc] // 配列[10, 'ccc']が変数argsに格納されます。

 スクリプトを直接記述して埋め込むこともできます。

\js<xxx> // スクリプトxxxの実行結果に置き換わります。

 ただし、スクリプト中で記号「<」「>」を使う場合は以下の通りエスケープする必要があります。

> : &gt;
< : &lt;

MaterialBase.js

 主にプラグインで使用する画像、音声素材を登録、管理できるデータベースです。登録した素材は、自動的に未使用素材削除機能の対象外となります。以下の制御文字を使用すると登録した素材のファイル名に置き換わります。

\mi[aaa] // 識別子[aaa]で登録した画像素材のファイル名に置き換わります。
\ma[bbb] // 識別子[bbb]で登録した音声素材のファイル名に置き換わります。

画像

 登録した素材はプラグインコマンドにより別の素材に変更できます。設定した値はプラグインコマンドから「ピクチャ」や「BGM」として表示、再生できます。詳細はプラグインコマンドの説明を確認してください。

 また、別プラグイン「EventCommandByCode.js」を使えばより広い用途に使用できます。

UniqueDataLoader.js

 dataフォルダ配下に存在する任意のjsonファイルを読み込みます。jsonファイルはJSONとしてparse可能なテキストファイルとして作成してください。定義したファイルはゲーム起動時に読み込まれます。

 データは指定した名称のグローバル変数に格納されます。グローバル変数名に「window」を指定すると、各オブジェクトがそれぞれグローバル変数として定義されますが、名称の競合には注意してください。データベースコンバータMZで作成したデータや独自のプラグインで追加したデータの読み込みなどに使えます。読み込んだデータは、独自のプラグインやスクリプトで以下の通り参照できます。

  • グローバル変数を[$dataUniques]プロパティ名を[property]にした場合の参照例
    $dataUniques.property

 すべての固有データを正常に読み込むと以下のメソッドが呼ばれます。必要であれば再定義してください。

Scene_Boot.prototype.onUniqueDataLoad

EventCommandByCode.js

 コードとパラメータを直接指定してイベントコマンドを実行できます。各コマンドのパラメータに変数(制御文字)が使えたり、通常のイベントコマンドでは指定できない範囲外の値を無理やり指定できます。なお、想定外の値を設定してコマンドを呼んだ場合の動作は保証できません。 

画像

 なお、イベントエディタ上で複数行になるコマンドおよびネストが深くなるコマンドは指定できません。

 具体的なコードとパラメータの情報は、以下が参考になります。 https://docs.google.com/spreadsheets/d/1aqY-xzFqT0vnZE-OkfsMYsP9Ud91vWTrBLU-uDkJ-Ls/edit#gid=2095105278

また、コードを『365』、パラメータの一番目にコマンドを指定することで『MV版のプラグインコマンド』を呼び出せます。MZに正式対応していないプラグインを使用する際に役立ちます。
画像

OverpassTile.js

 マップ上で橋などの立体交差を表現できます。ツクールMV公式プラグイン「OverpassTile.js」のMZ向け機能強化版です。リージョンだけでなく地形タグも指定可能で、さらにイベントの起動や衝突判定に関する考慮がなされています。

通行可能判定に関する仕様

  • 橋の入り口にいる場合
    立体交差に対して必ず移動できます。

  • 立体交差にいる場合
    橋の上にいる場合、立体交差と橋の入り口に対して必ず移動できます。 橋の下にいる場合、橋の入り口に対して必ず移動できません。

  • 上記の条件で移動可否を判定しなかった場合
    マップの本来の通行設定に従います。

  • イベントの起動判定、衝突判定を考慮できます。
    高さが異なる(橋の上と下にいる)イベントは起動、衝突しません。

OverpassTileEventAttach.js

 公式プラグインではありませんが「OverpassTile.js」と組み合わせて使用する、立体交差イベントアタッチメントです。イベントのメモ欄に以下の通り指定すると対象イベントが立体交差として扱われます。

<Overpass>

ただし、グラフィックが指定されていないページもしくは有効なページがない場合は立体交差になりません。また、プライオリティは原則「通常キャラの上」を選択してください。

OverpassTileEventAttach.js

 同じく「OverpassTile.js」と組み合わせて使用する、乗り物考慮アタッチメントです。小型船、大型船は下層のみ、飛行船は上層のみに配置され高さが異なる状態からの乗船ができなくなります。

ExtraWindow.js

 任意のウィンドウを指定したシーンに追加表示できます。座標やフォントサイズ、開閉アニメの有無など基本的な情報を設定できます。ウィンドウの表示テキストには制御文字が使用でき、変数値が変更されると自動的に再描画されます。

画像

ExtraImage.js

 任意の画像を指定したシーンに追加表示できます。座標や拡大率、原点など基本的な情報を指定できます。各パラメータに制御文字を指定すると指定した変数から値を取得できます。

画像

RegionBase.js

 リージョンおよび地形タグのデータベースを提供します。仕様はおおよそRPGツクールMV Trinityに準じています。リージョンおよび地形タグをトリガーにして以下の機能を提供します。

  • イベント、プレイヤーに対する通行判定(4方向含む)
  • 梯子、茂み、カウンター、ダメージ床
  • コモンイベントの呼び出し(トリガー3種類)
  • 侵入している間だけONになるスイッチ
  • 侵入している間だけ有効になる特徴
  • メモ欄

 以下のスクリプトでデータベースをスクリプトや外部プラグインから参照できます。未設定もしくは添え字が0の場合の中身はundefinedとなるので注意してください。

$dataSystem.regions[ID];
$dataSystem.terrainTags[ID];

ライセンスについて

 私が個人的にGitHubで公開していたプラグインは全てMITライセンスでした。しかし、公式プラグインはMITラインセンスではありません。使用にあたっては提供元の利用規約を確認してください。

2020年3月21日土曜日

カスタムメニュー作成プラグイン

RPGツクールMVで使用可能な自作プラグイン「カスタムメニュー作成プラグイン」の紹介です。

プラグインの説明

 プラグインパラメータからウィンドウ情報を定義して独自のメニュー画面を作れます。初期状態で動作するサンプルや豊富なスクリプトのプリセットが用意されていてすぐに動作を確認できます。

 また、コモンイベントが使えるので細かい要件にも対応できます。

スクリーンショット

 以下のような独自のウィンドウ、独自のレイアウトのメニュー画面を手軽に作成できます。

 プラグインパラメータからウィンドウ情報を定義して使います。プリセットの設定をいくつか用意しているので参考にしてください。
スクリーンショット

チュートリアル

 カスタムメニュー画面の作り方を簡単に解説します。

シーンを作成する

 まずはカスタムメニュ用のシーンの識別子を決めます。識別子とはシーンを一意に区別するための文字列で、他のシーンと被らない文字列を設定してください。

 『ヘルプウィンドウ使用』を有効にすると、画面上部にヘルプウィンドウが表示されます。
ss01

ウィンドウを作成する

 次にウィンドウを作成します。シーンと同じく識別を設定して、座標や幅、高さなども設定します。追加でフォントサイズやウィンドウスキンの設定も可能です。

 相対座標ウィンドウを設定すると、座標がそのウィンドウからの相対位置になるので、別のウィンドウの右や下にくっつけて配置できます。
ss02

ウィンドウの中身を作成する

直接指定の場合

 ウィンドウの中身は、項目を直接入力する方法とデータベースやアクターデータ等から取得する方法とがあります。直接入力する場合は、コマンドリストにコマンド名を直接入力します。

 必要に応じて表示可否スイッチや選択可否スイッチも指定できます。
ss03

動的指定の場合(一覧取得)

 データベース等から動的に項目を取得する場合は、スクリプトを使ってウィンドウに表示する一覧データを取得します。
ss04

 スクリプトには豊富なプリセットが用意されていて、選択したプリセットを改変することもできるのでJavaScriptに慣れていなくても利用可能です。
ss05

動的指定の場合(項目の描画)

 一覧の各項目を描画する場合もスクリプトで指定します。こちらもプリセットが用意されています。また、記述を省略すると内容を自働で判断して描画してくれます。
ss06

 描画される座標をずらしたい場合は、以下のように指定値を加算、減算します。この場合、もとの座標より30pixel右に描画されます。
ss07

ウィンドウ同士の遷移関係を定義する

 ウィンドウで項目の決定やキャンセルが行われたとき、次にフォーカスするウィンドウを指定したり、スクリプトを実行したりできます。この機能によりウィンドウ同士の遷移関係を定義します。
ss08

コモンイベントを実行する

 スキルの習得や能力値の変化など、カスタムメニュー画面を使って実際にやりたいことは主にコモンイベントを使って実現します。

 コモンイベントはピクチャの表示などの演出にも使えます。ただし、画面の色調変更など一部のコマンドは機能しません。
ss09

カスタムメニュー画面の呼び出し

 作成したカスタムメニュー画面は、以下のスクリプトから呼び出せます。引数にはシーン識別子を指定します。メインメニューに項目を追加するプラグインと併用する場合もこのスクリプトを使ってください。

SceneManager.callCustomMenu('Scene_ActorList');

注意点

  • このプラグインはRPGツクールMV1.6.0以降でのみ動作します。バージョンが古い場合はバージョンアップをご検討ください。
  • このプラグインにはメインメニューに項目を追加する機能は実装していません。当該機能を持つ他プラグインと連携してご利用ください。

例:メニュー画面のサブコマンドプラグイン https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/MenuSubCommand.js

ダウンロード

以下のURLからダウンロードできます。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/SceneCustomMenu.js

ダウンロード方法(Windowsの場合)

  1. リンク先に飛ぶ
  2. 右クリック
  3. 名前を付けて保存
  4. ファイル名を変えずに、プロジェクトの「js/plugins」配下に配置

利用規約

当プラグインはMITライセンスのもとで公開されています。作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)についても制限はありません。このプラグインはもうあなたのものです。

2020年2月22日土曜日

RPGツクールMV本体が提供する暗号化機能の基本的な仕様と注意点について

 RPGツクールMVには、画像と音声素材の暗号化機能が付いています。本稿ではこの機能の特徴や使う際の注意点などを簡潔にまとめています。

デプロイメント画面

 なお、本稿ではあくまで本体が提供する暗号化機能の解説にとどめ、他の代替案などについては解説しません。

暗号化機能の仕様

対象ファイルはpng、ogg、m4aのみ

 暗号化されるファイルの書式は画像ファイルではpng、音声ファイルではogg、m4aのみです。bmpやgifなど、png以外の画像形式は暗号化の対象になりません。

 また、webmなどの動画形式のファイルやフォントファイル、jsonなどのデータファイルやjsファイルも対象外です。

 ただし、画像ファイルについては拡張子をpngに偽装することで暗号化の対象になります。

暗号化されるのはデプロイメントのタイミング

 暗号化が実行されるのはデプロイメント実行時です。つまり、テストプレーでは正常に復号できるか確認できません。詳細は後述しますが、特にプラグインを使っている場合、復号ができないケースがあります。

暗号化の実装をプラグイン等では改変できない

 暗号化機能はRPGツクールMV本体が実行しているので、プラグインで仕様を改変するのは不可能です。別途暗号化を実装するプラグインなら作れますが、それはまた別の話……

RPGアツマールには対応していない

 これはRPGアツマール側の仕様になりますが、暗号化されたファイル形式はRPGアツマール側で弾かれてしまいます。RPGツクールMV本体の「ゲームをシェア」機能でも暗号化のチェックボックスは非活性になっています。

ゲームをシェア

やろうと思えばゲームを介さずに復号可能

 詳細な方法は省略しますが、復号の際に必要になるキー情報は容易に入手できるのでその気になれば誰でも復号できます。

 ただし、プロジェクトを開かれたり、ファイルをエクスプローラやFinderで簡単に閲覧、再生されることを防ぐための機能と考えれば十分に有用です。

暗号化機能を利用する際の注意点と対策

暗号化機能が本当に制作するゲームにとって必要かどうか事前に考える

 前述のとおり、暗号化機能は対象ファイルや有用なケースが限定されています。上記仕様を理解したうえで本当に暗号化するかどうか検討することをオススメします。

使用するプラグインが暗号化機能に対応しているかどうか確認する

 プラグインのなかには、暗号化機能に対応していないものもあります。具体的には、コアスクリプトが提供する関数以外の方法でpngファイルやoggファイルを使用し、かつ暗号化を考慮していないプラグインです。

 そういったプラグインを使用した場合、テストプレーでは正常に動作しても、デプロイメント後だと正常に動作しません。暗号化機能には対象外ファイルを選択する機能はないので、デプロイメント後に当該プラグインが使っているファイルのみ非暗号化ファイルに手動で差し替える等の対策が必要です。

早い段階でデプロイメントして動作確認する

 とはいえ、実際使っているプラグインが暗号化機能に対応しているかどうかは分からないと思います。よって、早い段階でデプロイメントしてみて正常に動くかどうか試してみることが重要です。

 もし動かないプラグインがあった場合、作者に連絡しても対策してもらえる見込みはあまり大きくないと考えた方がいいと思います。なぜなら暗号化機能の対応はわりと改修規模が大きく、技術的にも複雑な場合が多いからです。

プラグイン作者視点での暗号化機能に対する向き合い方

暗号化機能の存在を忘れないようにする

 この機能は影が薄いのでついつい存在を忘れがちです。忘れないようにしましょう。

対応できない場合はヘルプに明記する

 自身のプラグインが暗号化機能に対応しているかどうか、作者ならすぐに分かると思います。暗号化機能を考慮するのがベストですが、難しい場合は制約事項としてヘルプに明記しておくのがいいと思います。

 対応する場合、rpg_core.jsのDecrypterというクラスに復号処理が記述されているのでこれをうまく活用します。

 余談ですが、以前にapngピクチャ再生プラグインを作ったときは独自に復号処理を呼び出すことでpngファイルのみなんとか対応しましたが、gifアニメはもともと暗号化の対象外なのでその旨をヘルプに記載して対応しました。

2019年2月24日日曜日

RPGツクールMVのバージョンを「1.6系」にあげるべきか

 RPGツクールMVの本体バージョン1.6系が公開されてからしばらく経ちますが、このメジャーバージョンは過去にいくつか問題を起こした経緯があり、今でも情報が錯綜していて『バージョンを上げるべきか』迷っている方も少なくないようです。

 そこで本稿では状況を改めて整理し現時点(2019/02/24)でバージョンアップすべきかどうか指針を示そうと思います。ちなみに「本体」のバージョンの話であり「コアスクリプト」のバージョンではありません。

画像

 なお、本稿は私の独自調査に基づくものであり、ツクール公式のお墨付きを得たものでないことを断っておきます。

バージョンの差し戻し(ダウングレード)方法

 まず前提として、バージョンアップ後でも元の1.5系へに差し戻しは可能です。Steam版とパッケージ版とでやり方が異なりますが、Steam版の方が少し楽です。

パッケージ版の場合

 公式フォーラムに以下の記事があり、ここから1.5.1の再ダウンロードができます。リンク先の手順に従ってください。
【お知らせ】RPGツクールMV バージョン1.5.1再公開

Steam版の場合

 ソフトウェア一覧の「RPG Maker MV」を右クリック→「プロパティ」→「ベータ」タブから選択できます。なお、ツクールMVを起動している間はドロップダウンを選択できませんのでその場合、一旦落としてください。

Steam版ダウングレード方法

1.6系の特徴

 ダウングレード方法について確認したところで、バージョン1.6系がそれ以前と何か違うのかを説明します。

NW.jsの公式差し替え

 「NW.js」と呼ばれるツクールMVの実行エンジンが(1.6系リリース時点での)最新版に差し替えられました。これが1.6系のほぼ唯一にして最大の特徴です。

 (一部ユーザにとってはもう聞き飽きたかもしれませんが)NW.jsは、Chromiumをもとに作られたマルチプラットフォームの実行環境で、今も改良が続けられています。

 1.5系はツクール発売当時(正確には開発当時)のNW.jsが使用されていましたが、1.6系で1.6.0リリース時点での最新版に差し替えられました。実はこのNW.jsは1.5系でもユーザの手作業で差し替えることが可能で、一部ユーザは自力で差し替えを行っていました。以下に当時の記事が残っているので参考にしてください。

 ただ、この手作業での差し替えは多少PCの扱いに慣れている必要があるというのと、広く知れ渡った方法ではなかったため、公式のバージョンアップに取り込まれたのが1.6というワケです。

NW.js差し替えによるメリット

 詳しいメリットについては上の記事に記載していますが、ひと言でいうとパフォーマンスが改善しています。ツクールMVユーザにとってパフォーマンスは大きな課題のひとつであり、特にピクチャを多用したり、プラグイン等を使って画像をたくさん表示していたプロジェクトにおいてその改善は体感で分かるほど明らかです。これは非常に大きな改善と言えます。

 多くのユーザがわざわざ手間を掛けて今までエンジンを手作業で最新化していたのはこのためです。

1.6系にアップグレードする場合のリスク

 前述の通り1.6系はエンジンの刷新が主な変更点です。エンジンを刷新するというのは実行環境が変わることを意味します。それはつまり今まで動いていたものが動かなくなる可能性があるというリスクを孕んでいます。

 ただし、この項目は一部こちらでの検証・確認が十分でないものも含まれていますのでご注意ください。

一部のプラグインが正常に動作しなくなる

 NW.jsの手動差し替えの頃から指摘されていましたが、ごくまれに正常に動作しなくなるプラグインがあります。ただ、1.6系がリリースされてしばらく経った今ではプラグイン作者側の対応も進んでいるため、動かないプラグインも減ってきています。(こちらでもいくつか対応しました)

 ただ、海外製の高機能なプラグインの中には、そもそも単純なコード修正では対応が難しいプラグインもあるようです。コミュニケーションの問題もあると思うので、海外製のプラグインが正常に動作しなくなった場合は、差し戻した方が賢明かもしれません。

一部のムービーが再生に失敗することがある

 一部のwebmファイルが正常に再生されず最初のコマで止まってしまうことがあります。ただ、すべてのwebmファイルで発生するわけではなく、またコーデックとも直接は関係なさそうで根本原因は不明です。ムービーを多用する場合、正常に再生できるか入念にチェックしたほうがいいと思います。

WebGLモードで動作するための要件が変わっている?

 正確な情報ではありませんが、WebGLモードで動作するための要件が内部で変わっている可能性があります。(本件は後述するデプロイ後にCanvasモードになってしまう問題とは別です)

 つまり今までWebGLモードで実行できていた環境なのにアップデート後はCanvasモードで実行されてしまう、というケースです。Canvasモードでの実行は多くの実行環境でパフォーマンスが低下するほか、一部プラグインやスクリプトの演出が動作しなくなります。

コアスクリプトのバージョンが古いままだとテストプレー特有の機能が使えない

 コアスクリプトのバージョンが1.6.0より前だとテストプレー特有の壁抜けなどの機能が使えなくなります。コアスクリプトも最新に差し替えれば問題は解決しますが、差し替えが難しい場合はこちらで対策プラグインを用意しています。

すでに解決した問題

 過去の1.6系で発生していた問題です。最新版では解決されていますが、情報が十分に周知されていない場合もあるので整理のためここに残しておきます。

エディタ上で特定の操作を実行するとアプリケーションが強制終了する

 この問題は、1.6.0公開当初にのみ発生していました。Qtというエディタで使っているライブラリのバージョンをあげたことにより発生したようです。1.6.1にてQtのバージョンを元に戻し本現象は解決しました。

コアスクリプトが古い状態でテストプレーを実行するとコアスクリプトが自動で差し替えられてしまう

 この問題も1.6.1により解決しました。コアスクリプトに直接変更を加えている場合やコアスクリプトのバージョンを上げたくない場合などでも強制的に差し替えられてしまいます。

デプロイしたゲームがWebGLで動作する環境でもCanvasモードになってしまう

 この問題は1.6.2により解決しました。Canvasモードの問題点は前述の通りでパフォーマンスに影響するので無視できない問題でしたが無事に解決しました。  

まとめ

 1.6系はいくつかの問題があり、解決されたものと未解決のものとがありますが、パフォーマンス上の重要な更新を含むので可能なら適用させたいところです。そのためには情報を整理し、リスクを改めて確認する必要があると思い記事にまとめました。参考にして頂ければ幸いです。

 ここまでお読みくださり、ありがとうございました。

2018年5月20日日曜日

データベース変換プラグイン

RPGツクールMVで使用可能な自作プラグイン「データベース変換プラグイン」の紹介です。

プラグインの説明

 ツクールMVのデータベースおよびイベント内容をExcelやCSVなどのシートデータ(以下シートファイル)に書き出し、読み込みします。以下のような目的に利用できます。本プラグインは上級者向けのプラグインです。注意してお使いください。

  • データベース全体を俯瞰したパラメータ調整
  • 計算式や書式、マクロを利用した効率的で自由度の高いデータベース、イベント編集
  • 他プロジェクトへのデータやイベント移植

スクリーンショット

 データベースの出力例です。グラフはExcelの機能で出力しています。 スクリーンショット

使い方

 イベントテスト(イベントエディタ上で右クリック→テスト)から所定のプラグインコマンド(後述)を実行すると書き出しおよび読み込みができます。

書き出し手順

  1. 本プラグインを管理画面からONにする。
  2. 「プロジェクトの保存」を実行する。(初回実行時のみ)
  3. イベントテストから所定のプラグインコマンドを実行する。
  4. 所定のフォルダにシートファイルが出力される。

読み込み手順

  1. 「プロジェクトの保存」を実行する。
  2. Dataフォルダをバックアップしておく。※重要
  3. イベントテストから所定のプラグインコマンドを実行する。
  4. 「プロジェクトを開く」を実行して、プロジェクトを開き直す。開き直すとき、プロジェクトの保存はしないでください。

※プラグインコマンドは1つずつ実行してください。一度に複数のコマンドを実行することはできません。

オリジナルデータベース作成手順(上級者向け)

  1. パラメータ「オリジナルデータ読み込み」をOFFにする。
  2. パラメータ「対象データベース」にオリジナルデータを追加
  3. データベースをエクスポート
  4. オリジナルデータのシートが追加されるので自由に編集
  5. データベースをインポート
  6. パラメータ「オリジナルデータ読み込み」をONにする。
  7. スクリプトからオリジナルデータの内容を参照できる。

出力対象データ

データベース

既存のデータベースを入出力します。ファイル名は「Database」です。出力フォーマットに合わせた拡張子が付与されます。(以降も同様) タイルセットおよびコモンイベントは対象外です。さらに独自に定義したデータ(スクリプトから参照)も入出力可能です。

コモンイベント

コモンイベントの実行内容を入出力します。ファイル名は「CommonEvents」です。パラメータの詳細は以下のスプレッドシートが参考になります。 https://docs.google.com/spreadsheets/d/1rOIzDuhLC6IqJPEFciYOmXWL_O7X9-hMValMs7DpWCk/edit#gid=1266374350

マップイベント

マップイベントの実行内容を入出力します。ファイル名は「MapXXX」です。シート名に「イベントID」および「イベントページ」が出力されます。

イベントテスト

イベントテストで選択した実行内容を出力します。ファイル名は「Test_Event」です。出力のみに対応しています。

出力対象フォーマット

Excelファイル以外にもCSVやOpenDocument Spreadsheetなど 以下のフォーマットに対応しています。プラグインパラメータから変更可能です。

  • xlsx Excel2007以降の一般的な形式です。
  • xlsm Excel2007以降のマクロ付き形式です。
  • xlsb Excel2007以降のバイナリ形式です。容量や速度面で優れています。
  • ods 特定のベンダに依存しないオープンなファイル形式です。
  • fods 特定のベンダに依存しないオープンなXMLテキストファイル形式です。
  • csv カンマ区切りのテキストファイル形式です。
  • txt タブ区切りのテキストファイル形式です。

出力ファイル詳細

  1. 出力時に同名のファイルが存在した場合は上書きされます。(※1)
  2. シート名にはデータ種別が出力されるので編集しないでください。
  3. 出力ファイルの1行目には入出力に必須な情報(プロパティ名)が出力されます。ここも編集しないでください。
  4. 2行目には項目の日本語名が出力されます。読み込み時は無視されます。
  5. 配列項目(特徴など)は一部除きjson文字列で出力されます。編集は非推奨です。
  6. 数値や文字列は編集できますが、整合性のない値の入力には注意してください。
  7. Excel計算式は計算結果がデータベースの値として読み込まれます。
  8. 書式設定や行列の設定、マクロの追加などは自由です。
  9. データベースは読み込み時にID列でソートされます。重複はエラーになります。

※1 同名ファイルを開いているとエラーになるのでファイルを閉じてください。

注意事項

バックアップについて

当プラグインの機能を使用する前にプロジェクト以下の「data」フォルダのバックアップを 「必ず」 取得してください。

「data」フォルダの内容を自動でバックアップするプラグインも配布しています。こちらのご利用もご検討ください。 https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/BackUpDatabase.js

いかなる場合も破損したプロジェクトの復元には応じられませんのでご注意ください。

Excelのエラーメッセージについて

エクスポートしたExcelファイルを開いたときに何らかのエラーメッセージが表示された場合は、そのまま編集およびインポートしないでください。

プラグインの有効範囲

本プラグインの機能は「イベントテスト」から実行した場合のみ有効です。通常のテストプレーおよび製品版には影響を与えません。 (独自データの読み込み機能は例外)

プラグインコマンド

イベントコマンド「プラグインコマンド」から実行。(パラメータの間は半角スペースで区切る)

EXPORT_DATABASE

データベースの内容を指定したフォーマットで出力します。

IMPORT_DATABASE

シートファイルを読み込んでデータベースファイルを書き換えます。 エディタに反映させるためには、プロジェクトを開き直す必要があります。

EXPORT_COMMON_EVENT 2

ID[2]のコモンイベントの実行内容を出力します。IDは複数指定可能です。 IDを指定しなかった場合は全てのコモンイベントを出力します。

IMPORT_COMMON_EVENT 3

シートファイルを読み込んでID[3]のコモンイベントを書き換えます。 IDを指定しなかった場合は全てのコモンイベントを書き換えます。

EXPORT_MAP_EVENT 6 20

ID[6]のマップにあるID[20]のイベントの実行内容を出力します。 イベントIDは複数指定可能で省略した場合、全イベントを出力します。 マップIDは省略できません。

IMPORT_MAP_EVENT 6 20

シートファイルを読み込んでID[6]のマップにあるID[20]のイベントの実行内容を書き換えます。 イベントIDは複数指定可能で省略した場合、全イベントを書き換えます。 マップIDは省略できません。

ダウンロード

以下のURLからダウンロードできます。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/DatabaseConverter.js

ダウンロード方法(Windowsの場合)

  1. リンク先に飛ぶ
  2. 右クリック
  3. 名前を付けて保存
  4. ファイル名を変えずに、プロジェクトの「js/plugins」配下に配置

使用ライブラリ

Excelデータの解析にはSheetJSのCommunity Editionを使用しています。 http://sheetjs.com/

Copyright (C) 2012-present SheetJS LLC
Licensed under the Apache License, Version 2.0

SheetJSはCDNを通じて提供されるため、プラグイン利用者は別途ライブラリを導入する必要はありませんが、オフラインで作業する場合やダウンロードできない場合は、以下の手順に従ってダウンロードしプラグインとして適用してください。

  1. 以下のサイトのdist/xlsx.full.min.jsをダウンロードする。 https://github.com/sheetjs/js-xlsx
  2. ファイル名を任意の英字に変更する。 (ファイル名に「.」が含まれているとプラグインとして取り込めないため)
  3. プラグイン管理画面から有効にする。

ExcelはMicrosoftの登録商標です。

利用規約

当プラグインはMITライセンスのもとで公開されています。作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)についても制限はありません。このプラグインはもうあなたのものです。

2018年4月21日土曜日

RPGツクールMVでプロジェクトが突然読み込めなくなったときの対処法

 RPGツクールMV(以下ツクールMV)でゲーム制作をしていると、突然以下のようなメッセージが表示されてプロジェクトが開けなくなる……という事案がツイッターや各種フォーラムなどでしばしば報告されています。

Error1

 本稿では、本現象について原因と対処法を紹介しています。

復旧できるのか

 一番先に結論から言うと『ファイルの一部が破損している場合があるが、部分的には復旧可能』です。主にデータベースの一部もしくは全部が破損している可能性があります。

 巻末でも改めて言及しますが、ツクールMVでゲーム制作するのなら(ツクールMVでなくても)日常的なバックアップは必須です。

 ゲーム制作は数ヶ月単位あるいは年単位の長丁場となることが多いです。膨大な作業が一瞬で水泡に帰すことのないよう、何らかの対策を必ずしましょう。それでは復旧手順について解説します。

原因

 ツクールMVは、プロジェクト保存時に編集した情報を、メモリ上から各種ファイルに書き込みます。その処理中に何らかの原因で異常終了(メモリが足りないことによるアプリやOSのクラッシュ等)すると稀に書き込んでる最中だったファイルが破損する場合があるようです。

 対象は以下のファイルです。

  • Actors.json
  • Animations.json
  • Armors.json
  • Classes.json
  • CommonEvents.json
  • Enemies.json
  • Items.json
  • MapInfos.json
  • Skills.json
  • States.json
  • System.json
  • Tilesets.json
  • Troops.json
  • Weapons.json
  • MapXXX.json
  • Game.rpgproject

 上記ファイルの全てが破損するわけではありません。保存の最中ではなかったファイルは破損しません。特に「MapXXX.json」(マップごとのデータファイル)については前回保存時から編集してなければ保存対象外なので大半は復旧可能です。

復旧手順

現在のプロジェクトのバックアップを取る

 一部ファイルの上書きや差し替えを行うので事前にバックアップを取っておきましょう。

新規プロジェクトを作る

 破損したファイルを正しいファイルに上書きするので、まず新規でプロジェクトを作成しましょう。

破損したプロジェクトの『Game.rpgproject』を新規プロジェクトの『Game.rpgproject』で上書きする

 冒頭のメッセージダイアログから当該ファイルが破損していることは確実です。とはいえこのファイル、テキストエディタで開いてみれば分かりますが、中身は単にツクールMVのバージョンが書いているだけの単純なファイルです。よって下記のテキストで上書きすることでも復旧可能です。

RPGMV 1.6.0

破損したプロジェクトを開いてみる

 正しく開ければ無傷で復旧できています。おめでとうございます!

 ですが多くの場合、代わりに以下のようなメッセージが表示されると思います。

Error2

 破損したプロジェクトのdata/Actors.json(メッセージで示されたファイル)を開いてみてください。

  1. 文字化けしている or 真っ白になっている。
  2. ファイル自体が存在しない
  3. dataフォルダ自体が存在しない

1.の場合はおそらく復旧できないので、新規プロジェクトを作ったときに作成されたdata/Actors.jsonで上書きしてください。2.の場合は復旧のしようがないので同様です。3.の場合は単にdataフォルダを名前を変えてしまったか、場所を変えてしまっただけの可能性があります。エクスプローラーの検索機能などを使って別の場所にないか探してみましょう。

Search

プロジェクトが開けるようになるまで指定されたファイルを上書きする

 多くの場合、複数のファイルが破損しているので上記の手順を繰り返す必要があります。ここで上書きしたファイルは当然、新規プロジェクト作成時のものに差し替えられるのでイチから作り直しとなります。

 とはいえ全滅するよりマシなので同じものを再度作り直すことで以前よりも質のいいものができると強く信じて頑張ってください。(わりと本当です)

予防策

 ここまで復旧方法について説明してきましたが、最善なのはプロジェクトのバックアップを日常的に取っておくことです。

DropBox等のオンラインストレージ

 もっとも手軽で効果の高い方法です。複数の端末で開発したいときにも有効です。復旧方法は各種サービスを確認してください。ただし復旧できるファイルに日数制限がある場合があるので注意してください。

 また本件とは無関係ですが、プロジェクトをオンラインストレージに置いているとセーブ時にごくごく稀にエラーが起こる場合があります。セーブ時に一瞬だけ作成・削除されるバックアップファイルをオンラインストレージの監視プロセスが掴んでしまい、削除エラーになることが原因です。テストプレー時以外は起こらないのであまり気にする必要はないですが一応。

ファイルのコピーやバックアップを行うソフトウェア(フリーソフト)

 オンラインストレージが出回る前はこれが主流でした。設定がやや煩雑なことが多いですがネットワークに繋がっていない環境下でもバックアップできます。

 ローカルに保存していた場合、PC自体が死亡するとバックアップも一緒に消えてしまうので、外付けハードディスクやNASを保存先にしましょう。

GitHub

 技術者向けのバージョン管理サービスです。使える人にとっては最良の選択肢ですが、ひとによってはハードルが高いです。

バックアッププラグインを使う

 適用するだけなんの設定もしなくてもdataフォルダおよびGame.rpgprojectのバックアップをしてくれるプラグインを作成しました。例によってMITライセンスでご自由にお使い頂けます。

  • 設定画面

Plugin

  • ダウンロード

https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/BackUpDatabase.js

まとめ

 ツクールMVで制作する以上、本現象は誰にでも起こりうる(私も一度ありました)ので必ず何らかの対策を行いましょう(大事なことなので二度言いました)。

 ここまでお読みくださり、ありがとうございました。

2018年1月1日月曜日

RPGツクールMVのエンジン最新化による具体的なメリット・デメリット

 RPGツクールMV(以下ツクールMV)のゲームはエンジンであるNW.jsを最新バージョンに差し替えることで様々な恩恵を受けることができます。(2018/01/01時点で非公式なので自己責任で行う必要があります) 本稿では、その具体的な恩恵とリスクを簡潔に纏めていこうと思います。

はじめに

最新化とは何か

 ツクールMVのエンジンは前述の通り、NW.jsです。NW.jsはChromiumというオープンソースのウェブブラウザのプロジェクトをもとに作られており、ウェブブラウザのChromeとほぼ同じ動作をします。しかしChromeは定期的に更新されており、パフォーマンス改善やバグ修正が日々、進んでいます。

 つまりNW.jsを最新化するということは、簡単に言うとツクールMV発売以後のChromeの様々な改善を取り込むことなのです。実際にバージョンを比較してみると、ここまで違っています。

  • ツクールMV本体のMW.js(だいたい2015年初頭のもの)
    Chrome/41.0.2272.76

  • 現時点(2018/01/01)での最新版
    Chrome/61.0.3163.100

 注目すべき数字は、メジャーバージョンの41と60という違いです。それが具体的にどのような変更をもたらすのか、見ていきましょう。

最新版への更新の仕方

 とはいえ、変更点を確認する前にNW.jsを最新にする方法について知る必要があります。すでに当ブログで何回か取り上げていますが、それについてはセアロソンク氏の以下のブログが参考になると思います。

最新化したら元に戻せないのか

 そんなことはありません。NW.jsを最新化してもプロジェクト自体には影響を与えないため、エディタ上からテストプレーすればいつでも最新化前の状態で起動できます。完成したゲームをChromeで動かすか、Firefoxで動かすか、従来のNW.jsで動かすか、という選択肢に新たに「最新のNW.jsで動かすか」が加わったようなイメージです。

最新のNW.jsでテストプレーをする方法

 最新のNW.jsでテストプレーをしたい場合、NW.jsを解凍したフォルダ直下にある「package.json」をテキストエディタで開いてmainと書いている行の「index.html」の後に「?test」を追加してください。この状態で「NW.exe」を起動すればテストプレーとして認識されます。(エディタからの起動ではテストプレーにならないのでご注意ください)

  • 変更前

    {
      "name": "",
      "main": "(プロジェクト名)/index.html",
      "js-flags": "--expose-gc",
      "window": {
          "title": "",
          "toolbar": false,
          "width": 816,
          "height": 624,
          "icon": "PluginDevelopment/icon/icon.png"
      }
    }
  • 変更後

    {
      "name": "",
      "main": "(プロジェクト名)/index.html?test",
      "js-flags": "--expose-gc",
      "window": {
          "title": "",
          "toolbar": false,
          "width": 816,
          "height": 624,
          "icon": "PluginDevelopment/icon/icon.png"
      }
    }

NW.jsを最新化すると得られる恩恵

動作が高速化する

 NW.jsを最新化することによる、もっとも分かりやすいメリットは動作の高速化です。

 具体的な計測をするために新旧のNW.jsでゲームを起動→ニューゲーム→メニューを開閉、という操作を繰り返し行い、各々の処理時間を比較してみました。結果を専用に作成した処理時間計測プラグインで時間を比較したのが下の図です。自前のプラグインなので結果の保証はできませんが、全体的に高速化しているのが分かるかと思います。

image1

 特筆すべきは初回のマップ表示です。(一番上の「シーン遷移 to Scene_Map」となっている箇所)タイトル画面からマップ表示する際のパフォーマンスは体感で十分感じるほどに高速化されています。その後の処理も若干の誤差はあるものの全体的にパフォーマンスが改善しているのが分かるかと思います。画像(ウィンドウなど動的に作成されるものも含む)を作成して画面上に表示する際の硬直時間が改善されたためと思われます。

ES2015以降のモダンな記述が使えるようになる(プラグイン開発者向け)

 主にスクリプトやプラグイン制作者向けに、従来ではコンパイルエラーとなっていたES2015の以下の機能が使えるようになっています。もちろん、ローカルで動作したからと言ってWeb版でも動作するとは限らないのでプラグインとして一般公開するのは難しいですが、自分用やローカル環境専用プラグインなど用途を限定すれば活用できます。

  • アロー関数
  • 分割代入
  • デフォルト引数

 例えばアロー関数は、以下のように関数を簡略して記述できる記法です。JavaやC#などのラムダ式に似た記法ですが、もともとJSでは特殊な記述なしでも関数を変数に格納できたので、あくまでも記述の簡略化となります。(あとthisの仕様が少し変わります)

var array = [1, 2, 3];
array.forEach(item => console.log(item));
var array = [1, 2, 3];
array.forEach(function(item) {
    console.log(item);
});

MP3が演奏できる

 ツクールMVにおけるMP3音源の使用については以前にこちらで記事にしています。エディタ上のいくつかの制約がありますが、ローカル実行、Web実行をひとつの音声ファイルで統一できるメリットは大きいと思います。

エラーメッセージが少し分かりやすくなる

 従来のツクールMVでスクリプト実行時などに表示されていたエラーメッセージは正直とても分かりにくいものでした。NW.jsの最新化によってエラーの表示内容が改善されます。具体例を見ていましょう。

従来のエラー発生時の表示内容

old_error

 上記は存在しない関数を呼び出したときのメッセージです。「値 is not a function」の形式で表示されますが、リリース後にプレイヤーからこのエラー報告を頂いても直接の原因がサッパリ分かりません。

最新のエラー表示内容

new_error

 NW.jsを最新化することでエラーメッセージは以下のように変化します。「変数名 is not a function」の形式になるのでどこに問題があるのかが、ある程度予測できるようになります。

 エラー内容によって具体的なメッセージは変化しますが、いずれもより分かりやすく改善されています。

NW.jsを最新化するリスク

 逆にNW.jsを最新化すると発生するリスクやデメリットもあります。最新化したことによって発生した問題は公式にサポートに頼ることはできないので、あらかじめ把握しておくことが望ましいです。

既存プラグインと競合する可能性がある

 この点が一番気になるところだと思います。では具体的にどのようなプラグインが競合するのか、見ていきたいと思います。

 結論から言うと、一部のデバッグ用プラグイン以外は(現在、調査できている時点では)ほぼ正常に動作します。というのも、NW.jsを最新化するとエンジンが現在のChromeに近くなります。よってNW.jsを最新化することは、むしろローカル実行とWeb(Chrome)実行の環境差異を小さくすることになるのです。なので、あまり心配しなくても大丈夫です。

 動かなくなるデバッグ用の関数詳細については以下の通りです。(難しいと感じる方は読み飛ばしてしまってOKです)

メソッド「require('nw.gui').Window.get().isDevToolsOpen();」が消えている

デベロッパツールが開いているかどうかを返す関数「isDevToolsOpen」がなくなっているので、当該関数を呼ぼうとするとエラーになります。リファレンスには確かに記述があるのですが、実際には定義されていないようです。
http://docs.nwjs.io/en/latest/References/Window/#winisdevtoolsopen

require('nw.gui').Window.get().showDevTools();がデベロッパツールオブジェクトを返却しなくなっている。

アップデート前は「showDevTools()」を呼ぶとデベロッパツールオブジェクトを返却していましたが、現在はundefinedが返却されます。NW.jsのリファレンスによると第二引数にコールバック関数を指定することでデベロッパツールオブジェクトが渡される、となっていますが関数は呼ばれるものの、デベロッパツールオブジェクトが引数として渡されません。
http://docs.nwjs.io/en/latest/References/Window/#winshowdevtoolsiframe-callback

フォントサイズが一定以下の場合に表示が崩れる

 プラグインや制御文字等でテキストのフォントサイズを20以下にした場合に表示が崩れる現象が報告されています。

 報告元ではChromeでとなっていますが、NW.jsを現時点(2018/01/01)で最新化した場合も同様の問題が発生しています。

NW.jsを最新化した場合の表示

image3

もともとのツクールMVの表示

image2

 フォントサイズを21以上にすれば解決しますが、ルビなど大きくしづらい場合もあるので厄介な問題です。

まとめ

 NW.js最新化の大きなメリットはローカル実行における描画周りのパフォーマンスが安定することの一点に集約されています。コンティニューからマップをロードするときや、メニュー画面を開くとき。その際のレスポンスが悪いなと思ったらぜひ最新化をお試しください。

 ここまでお読みくださり、ありがとうございました! 本来なら本記事はアドベントカレンダーのひとつとして公開するはずでしたが、年明けまでずれ込んでしましました。それはともかく、2018年も良いお年をお過ごしください。本年もよろしくお願いします。

2017年11月19日日曜日

ウィンドウ背景画像指定プラグイン

RPGツクールMVで使用可能な自作プラグイン「ウィンドウ背景画像指定プラグイン」の紹介です。

プラグインの説明

 ウィンドウの背景を任意の画像に置き換えます。元のウィンドウフレームは非表示になります。

スクリーンショット

詳しい使い方

 背景画像はウィンドウのサイズにかかわらず、中央を原点に表示されます。倍率と座標を補正することは可能ですが、サイズが可変、不定のウィンドウに対して背景画像を指定することは推奨しません。

 プラグインで追加されたウィンドウについても差し替え可能です。ただし、こちらで提供しているプラグイン以外はウィンドウのクラス名を把握しておく必要があります。また正常に動作するとは限りません。 スクリーンショット

選択可能ウィンドウ一覧

 プルダウンで選択可能なウィンドウの一覧です。これ以外のプラグインで追加されたウィンドウはクラス名を直接指定する必要があります。

Window_Help : [ゲーム全般]で使用されるヘルプを表示するウィンドウです。
Window_Gold : [ゲーム全般]で使用されるお金を表示するウィンドウです。
Window_MenuCommand : [メインメニュー]で使用されるメインコマンドを表示するウィンドウです。
Window_MenuActor : [メインメニュー]で使用されるアクターステータスを表示するウィンドウです。
Window_ItemCategory : [アイテム画面]で使用されるアイテムカテゴリを表示するウィンドウです。
Window_ItemList : [アイテム画面]で使用されるアイテムリストを表示するウィンドウです。
Window_SkillType : [スキル画面]で使用されるスキルタイプを表示するウィンドウです。
Window_SkillStatus : [スキル画面]で使用されるステータスを表示するウィンドウです。
Window_SkillList : [スキル画面]で使用されるスキルリストを表示するウィンドウです。
Window_EquipStatus : [装備画面]で使用されるステータスを表示するウィンドウです。
Window_EquipCommand : [装備画面]で使用される装備コマンドを表示するウィンドウです。
Window_EquipSlot : [装備画面]で使用される装備スロットを表示するウィンドウです。
Window_EquipItem : [装備画面]で使用される装備リストを表示するウィンドウです。
Window_Status : [ステータス画面]で使用されるステータスを表示するウィンドウです。
Window_Options : [オプション画面]で使用されるオプションを表示するウィンドウです。
Window_SavefileList : [セーブ、ロード画面]で使用されるファイルリストを表示するウィンドウです。
Window_ShopCommand : [ショップ画面]で使用されるショップコマンドを表示するウィンドウです。
Window_ShopBuy : [ショップ画面]で使用される購入アイテムを表示するウィンドウです。
Window_ShopSell : [ショップ画面]で使用される売却アイテムを表示するウィンドウです。
Window_ShopNumber : [ショップ画面]で使用される数値入力を表示するウィンドウです。
Window_ShopStatus : [ショップ画面]で使用されるステータスを表示するウィンドウです。
Window_NameEdit : [名前入力画面]で使用される名前を表示するウィンドウです。
Window_NameInput : [名前入力画面]で使用される名前入力を表示するウィンドウです。
Window_ChoiceList : [マップ画面]で使用される選択肢を表示するウィンドウです。
Window_NumberInput : [マップ画面]で使用される数値入力を表示するウィンドウです。
Window_EventItem : [マップ画面]で使用されるアイテム選択を表示するウィンドウです。
Window_Message : [マップ画面]で使用されるメッセージを表示するウィンドウです。
Window_ScrollText : [マップ画面]で使用されるスクロールメッセージを表示するウィンドウです。
Window_MapName : [マップ画面]で使用されるマップ名を表示するウィンドウです。
Window_BattleLog : [戦闘画面]で使用されるバトルログを表示するウィンドウです。
Window_PartyCommand : [戦闘画面]で使用されるパーティコマンドを表示するウィンドウです。
Window_ActorCommand : [戦闘画面]で使用されるアクターコマンドを表示するウィンドウです。
Window_BattleActor : [戦闘画面]で使用されるアクター一覧を表示するウィンドウです。
Window_BattleEnemy : [戦闘画面]で使用される敵キャラ一覧を表示するウィンドウです。
Window_BattleSkill : [戦闘画面]で使用されるスキル一覧を表示するウィンドウです。
Window_BattleItem : [戦闘画面]で使用されるアイテム一覧を表示するウィンドウです。
Window_TitleCommand : [タイトル画面]で使用されるタイトルを表示するウィンドウです。
Window_GameEnd : [ゲーム終了画面]で使用される終了確認を表示するウィンドウです。
Window_DebugRange : [デバッグ画面]で使用される変数選択を表示するウィンドウです。
Window_DebugEdit : [デバッグ画面]で使用される変数設定を表示するウィンドウです。
Window_Destination : [行動目標ウィンドウプラグイン]で使用される行動目標を表示するウィンドウです。
Window_Chronus : [ゲーム内時間の導入プラグイン]で使用される時間を表示するウィンドウです。
Window_Gacha : [公式ガチャプラグイン]で使用されるガチャ表示を表示するウィンドウです。
Window_GachaCommand : [公式ガチャプラグイン]で使用されるコマンドを表示するウィンドウです。
Window_GachaGetCommand : [公式ガチャプラグイン]で使用される入手確認を表示するウィンドウです。
Window_GachaGet : [公式ガチャプラグイン]で使用される入手情報を表示するウィンドウです。
Window_Cost : [公式ガチャプラグイン]で使用されるコストを表示するウィンドウです。
Window_NovelChoiceList : [ノベルゲーム総合プラグイン]で使用されるノベル選択肢を表示するウィンドウです。
Window_NovelMessage : [ノベルゲーム総合プラグイン]で使用されるノベルメッセージを表示するウィンドウです。
Window_NovelTitleCommand : [ノベルゲーム総合プラグイン]で使用されるノベルタイトルコマンドを表示するウィンドウです。
Window_NovelNumberInput : [ノベルゲーム総合プラグイン]で使用されるノベル数値入力を表示するウィンドウです。
Window_PauseMenu : [ノベルゲーム総合プラグイン]で使用されるポーズメニューを表示するウィンドウです。
Window_PasswordInput : [クロスセーブプラグイン]で使用されるパスワード入力を表示するウィンドウです。
Window_PasswordEdit : [クロスセーブプラグイン]で使用されるパスワードを表示するウィンドウです。
Window_GlossaryCategory : [用語辞典プラグイン]で使用される用語カテゴリを表示するウィンドウです。
Window_GlossaryList : [用語辞典プラグイン]で使用される用語リストを表示するウィンドウです。
Window_GlossaryConfirm : [用語辞典プラグイン]で使用される使用確認を表示するウィンドウです。
Window_GlossaryComplete : [用語辞典プラグイン]で使用される収集率を表示するウィンドウです。
Window_Glossary : [用語辞典プラグイン]で使用される用語を表示するウィンドウです。
Window_AudioCategory : [サウンドテストプラグイン]で使用されるオーディオカテゴリを表示するウィンドウです。
Window_AudioList : [サウンドテストプラグイン]で使用されるオーディオリストを表示するウィンドウです。
Window_AudioSetting : [サウンドテストプラグイン]で使用されるオーディオ設定を表示するウィンドウです。
Window_NumberInput : [数値入力画面プラグイン]で使用される数値入力を表示するウィンドウです。
Window_NumberEdit : [数値入力画面プラグイン]で使用される数値を表示するウィンドウです。

ダウンロード

以下のURLからダウンロードできます。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/WindowBackImage.js

ダウンロード方法(Windowsの場合)

  1. リンク先に飛ぶ
  2. 右クリック
  3. 名前を付けて保存
  4. ファイル名を変えずに、プロジェクトの「js/plugins」配下に配置

利用規約

当プラグインはMITライセンスのもとで公開されています。作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)についても制限はありません。このプラグインはもうあなたのものです。

2017年11月5日日曜日

メニュー内コモンイベントプラグイン

RPGツクールMVで使用可能な自作プラグイン「メニュー内コモンイベントプラグイン」の紹介です。

プラグインの説明

 メニュー画面やプラグインで追加した画面(※1)でコモンイベントを並列実行できます。メッセージやピクチャ、変数の操作などが各イベントコマンド(※2)が実行可能です。コモンイベントは各画面につきひとつ実行できます。

  1. メニュー系の画面であれば利用できます。サウンドテストプラグインや用語辞典プラグインとの連携は確認済みです。
  2. 移動ルートの設定などキャラクターを対象にする一部コマンドは動作しません。また、プラグインによって追加されたスクリプトやコマンドは正しく動作しない可能性があります。

スクリーンショット

  • イベントで指定したメッセージやピクチャが表示できます。 スクリーンショット

詳しい使い方

 通常のイベントコマンドはもちろん、スクリプトによってウィンドウオブジェクトを取得すれば、様々な高度な処理がイベントで実現できます。

プラグインコマンド

ウィンドウ操作禁止      # メニュー画面のウィンドウ操作を禁止します。
DISABLE_WINDOW_CONTROL  # 同上
ウィンドウ操作許可      # 禁止したメニュー画面のウィンドウ操作を許可します。
ENABLE_WINDOW_CONTROL   # 同上

スクリプト

// ウィンドウオブジェクトを取得
this.getSceneWindow(windowName);
指定した名前のウィンドウオブジェクトを返します。
プロパティの取得や設定が可能です。上級者向け機能です。
 
// ウィンドウアクティブ判定
this.isWindowActive(windowName);
指定した名前のウィンドウがアクティブなときにtrueを返します。
 
// ウィンドウインデックス取得
this.getSceneWindowIndex();
現在アクティブなウィンドウのインデックスを取得します。先頭は0です。
 
// 選択中のアクターオブジェクト取得
$gameParty.menuActor();
装備画面やステータス画面で選択中のアクターの情報を取得します。
上級者向けスクリプトです。(※1)
 
// 選択中のアクターID取得
$gameParty.menuActor().actorId();
装備画面やステータス画面で選択中のアクターIDを取得します。
 
※1 既存のコアスクリプトですが、有用に使えるため記載しています。
 
// 用語辞典の表示内容更新
this.refreshGlossary();
用語辞典プラグインにおいて用語の表示内容を最新にします。
同プラグインと連携した場合に使用します。

ウィンドウ名称一覧

・メインメニュー
commandWindow   コマンドウィンドウ
statusWindow    ステータスウィンドウ
goldWindow      お金ウィンドウ
 
・アイテム画面
categoryWindow  アイテムカテゴリウィンドウ
itemWindow      アイテムウィンドウ
actorWindow     アクター選択ウィンドウ
 
・スキル画面
skillTypeWindow スキルタイプウィンドウ
statusWindow    ステータスウィンドウ
itemWindow      スキルウィンドウ
actorWindow     アクター選択ウィンドウ
 
・装備画面
helpWindow      ヘルプウィンドウ
commandWindow   コマンドウィンドウ
slotWindow      スロットウィンドウ
statusWindow    ステータスウィンドウ
itemWindow      装備品ウィンドウ

他プラグインとの連携

  • ピクチャのボタン化プラグイン(PictureCallCommon.js)と併用する場合コマンドは「P_CALL_CE」ではなく「P_CALL_SWITCH」を使ってください。

ダウンロード

以下のURLからダウンロードできます。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/MenuCommonEvent.js

ダウンロード方法(Windowsの場合)

  1. リンク先に飛ぶ
  2. 右クリック
  3. 名前を付けて保存
  4. ファイル名を変えずに、プロジェクトの「js/plugins」配下に配置

利用規約

当プラグインはMITライセンスのもとで公開されています。作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)についても制限はありません。このプラグインはもうあなたのものです。