RPGツクールMZにおいて、画像・音声・アニメーションを先読み(プリロード)し、表示・再生時のラグ(遅延)を軽減するプラグインを公開しました。
キャッシュの仕組みがMZとMVとで異なるため、本プラグインはRPGツクールMZ専用となります。
過去に「画像先読み改善プラグイン(PANDA_ImagePreLoad.js)」として似たようなプラグインを公開していますが、画像だけでなく音声(BGM/BGS/ME/SE)やアニメーションの先読みにも対応した、拡張版となります。
キャッシュと遅延
テストプレイ時やダウンロード版の場合はローカルから読み込むため、特にラグ(遅延)が気になるということはありません。
一方、PLiCyなどブラウザ版でプレイする場合は、画像や音声ファイルをサーバーからダウンロードしてくる必要があります。そのため、ファイルサイズが大きい場合やサーバーが混雑している場合は、表示・再生時のラグが顕著に発生します。
一度読み込んだファイルはブラウザの機能としてキャッシュされるため、次からは遅延なく表示・再生されますが、最初は一定のラグが生じます。特にサーバーが重い場合は、かなりの遅延になることもあります。
RPGツクールMZの先読みの仕組み
RPGツクールMZのコアスクリプトには、ラグを軽減するための仕組みが標準で備わっています。
過去の記事でも詳しく書いていますが、RPGツクールMZのデフォルトシステムでは、イベントの開始時にイベントコマンドの先頭から200行目までを走査して、その中に登場する「文章の表示」の顔グラフィック画像と「ピクチャの表示」のピクチャ画像を、先に読み込むようになっています。
事前にファイルを読み込んでキャッシュしておくことにより、実際に画像を表示する際に素早く表示できる仕組みになっています。
しかしながら、イベントコマンドが200行を超えるような場合、途中で200行目以降を追加で先読みするといったことはないため、長いイベントの場合は途中からラグが目立つようになってしまいます。
また先読みされるのは「文章の表示」の顔グラフィックと「ピクチャの表示」のピクチャ画像だけなので、それ以外の画像や音声、アニメーションなどは別の方法で事前に読み込むしかありません。
画像先読み改善プラグイン(PANDA_ImagePreLoad.js)の限界
過去に公開した「画像先読み改善プラグイン(PANDA_ImagePreLoad.js)」は、デフォルトの仕組みを改善し、任意の行数(イベントコマンド全行も可)を対象に先読みできるようになり、また先読み対象のイベントコマンドも「遠景の変更」と、「移動ルートの設定」の中の「画像の変更」に対応しました。
これはかなり画期的なプラグインでしたが、「アクター画像の変更」や「タイルセットの変更」など、全ての画像ファイルには対応していなかったのと、音声ファイルやアニメーションにも未対応だったため、これで万事解決というわけには行きませんでした。
リソース先読みプラグイン(PANDA_ResourcePreLoad.js)
そこで今回、画像ファイルのダウンロードを要するほぼ全てのイベントコマンドと、音声・アニメーションの先読みにも対応した拡張版を、作成・公開しました。
具体的には以下のイベントコマンドに対応しています。
頭に*が付いているのが今回新たに追加されたコマンドです。旧プラグインにあった機能は全て、今回の新プラグインにも含まれています。
- 「文章の表示」で使用される顔グラフィック
- *「メンバーの入れ替え」で加えられたアクターの各種画像ファイル
- 「移動ルートの設定」中の「画像の変更」で使用される画像ファイル
- *「移動ルートの設定」中の「SEの演奏」で使用される音声ファイル
- *「アニメーションの表示」で使用されるアニメーション
- 「ピクチャの表示」で使用される画像ファイル
- *「BGM/BGS/ME/SEの演奏」で使用される音声ファイル
- *「戦闘BGM/勝利ME/敗北ME/乗り物BGMの変更」で使用される音声ファイル
- *「アクターの画像変更」で使用される各種画像ファイル
- *「乗り物の画像変更」で使用される画像ファイル
- *「タイルセットの変更」で使用される画像ファイル
- *「戦闘背景の変更」で使用される画像ファイル
- 「遠景の変更」で使用される画像ファイル
- *「敵キャラの変身」で変身後の敵キャラの画像ファイル
- *「戦闘アニメーションの表示」で使用されるアニメーション
先日の記事「ブラウザプレイでBGMと演出のズレをなくす方法」の時はまだ本プラグインがなかったので、「タイルセットの変更」など一部機能は工夫して対処が必要でしたが、今回のこのプラグインで「タイルセットの変更」にも対応しました。遅延対策がより簡単にできるようになったので、ぜひご利用ください。
プラグインコマンド
また、イベント開始時の自動的な先読み以外にも、任意のタイミングで任意の画像・音声・アニメーションを個別に先読みできるよう、プラグインコマンドも各種用意しました。
イベント開始時の先読みだけでは対応できないケースなど、必要に応じてお使いください。
プラグインコマンドはそれぞれ以下のようになっています。
- 画像先読み
- /img/フォルダ以下の任意の画像ファイルを先読みします
- タイルセット先読み
- 指定したタイルセットの画像ファイルを先読みします
- 音声先読み
- /audio/フォルダ以下の任意の音声ファイルを先読みします
- アニメーション先読み
- 任意のアニメーションを先読みします
先読み行数指定の廃止
以前のプラグインは、先読み対象の行数をデフォルトの200行から、プラグインパラメータで指定した任意の行数に変更するという仕様で、行数を0と指定すると全ての行が対象になるというものでした。
あまりに長いイベントの場合は全行読み込みにすると、イベント開始時に先読みの時間がかかりすぎてしまうための仕様でしたが、実際にこの制約に引っかかることは稀で、ほとんどの場合が全行先読みにしていると考えられることから、行数の指定は廃止し、常にイベントコマンドの全行を開始時に走査する仕様に改めました。
これによってプラグインパラメータの指定が不要になり、単純に導入するだけで使えるようになりました。
ただし、本当に膨大なイベントであったり、大量のリソース先読みを必要とするイベントの場合には、事前読み込みの処理に時間がかかってしまう可能性もありますので、ご注意ください。
プラグイン更新の際の注意点
もともとは「PANDA_ImagePreLoad.js」というプラグイン名でしたが、画像だけでなく音声やアニメーションにも対応したことで「Image」では誤解を招くため、プラグイン名を「PANDA_ResourcePreLoad.js」に変更しました。
プラグイン名の変更により、「画像先読み」のプラグインコマンドを使用している場合は、プラグインコマンドの再設定が必要になります。
「画像先読み」のプラグインコマンドを使用していない場合は、そのまま今回の新プラグインに置き換えが可能です。
プラグインコマンドの使用が数カ所の場合も、今回の新プラグインの方が高機能なため、なるべく置き換えをお勧めします。その場合、お手数ですがプラグインコマンドは新しいプラグインのもので再設定をお願いします。
「画像先読み」のプラグインコマンドを大量に使用しており、全て修正するのが現実的でない場合は、旧プラグインと新プラグインの併用も可能です。併用による実害はないはずですが、イベントコマンドの走査や画像の読み込みを二度行うことになるため、多少重くなることがあり得ます。なお、併用する場合は必ず今回の新プラグインの方を後にしてください。
未対応事項とまとめ
前提としてそのイベント内のリソースを先読みするものであるため、戦闘で出現する敵キャラの画像や、戦闘行動で使用するスキルのアニメーションなどを先読みする機能はありません。
またキャッシュの仕様上、移動先のマップデータを先に読み込むとか、次に起動するイベントの内容を事前に読み込んだりといった機能もありません。
デフォルト機能以外の、立ち絵の自動表示やUI関連の表示なども特に対応していないので、プラグインコマンドによる先読みを適宜利用して工夫してください。
イベントコマンドの「ムービーの再生」も、動画ファイルはファイルサイズが大きく、先読みするとかえって重くなる可能性があるため、対応していません。
このように未対応の機能はいくつかありますが、現実的なラグ対策としては十分な機能を備えていると考えています。ぜひ導入していただき、快適なプレイ体験を提供してください。
質問やアドバイスなどはコメント欄まで、お気軽にお願いします。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。