2016年4月24日日曜日

並列プリロードプラグイン

 RPGツクールMVで使用可能な自作プラグイン「並列プリロードプラグイン」の紹介です。


プラグインの説明

 ゲーム開始時に画像素材をバックグラウンドでロードします。可能な限り負荷を分散、軽減するように設計されています。以下のようなケースで使用します。

  • 大量のピクチャを使っていて、画像の読み込み時に著しい硬直が発生している。
  • ピクチャやキャラクターを表示しようとした際に、ほんの一瞬だけ画像が消える。
  • 既存のプリロードプラグインを使っていると起動が著しく遅い、またはクラッシュする。
  • ブラウザ版で公開していて、初回起動時のNow Loadingをできるだけ減らしたい。

仕組みの話

 画像を読み込む際、ファイルのロードとビットマップの描画との二つのプロセスを踏む必要があります。本プラグインではこのうち、ファイルのロードのみを先行して実行します。こうすることで起動時に負荷を最小限に抑えつつ、非同期ロードによって発生する諸々の問題を回避できます。

スクリーンショット

 ロードする素材の一覧はfftfantt氏制作の「素材一覧用JSON作成プログラム」(2016/04/28時点でMITライセンス)で作成してください。同プログラムから必要な素材の一覧が作成されたJSONファイル「MV_Project.json」を作成して「/data」以下に配置します。作成する際は、「拡張子をつける」およびオーディオ関連のチェックボックスを外してください。

素材一覧用JSON作成プログラム

・使い方:https://github.com/fftfantt/RPGMakerMV/wiki/JSON_Maker_for_MV

・本体:https://raw.githubusercontent.com/fftfantt/RPGMakerMV/master/JSON_Maker_for_MV.zip

 ブラウザから実行する場合、画像のロードが完了してから次のロードを開始します。そのため、大量の画像を指定するとロード完了までに時間が掛かり効果が薄くなります。また、スマートフォン等メモリに限りがあるデバイスで実行する場合、大量の画像のプリロードは動作不良の原因となります。

ダウンロード

プラグインファイルはGithubで公開しています。

ダウンロード(Download)

利用規約

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

http://opensource.org/licenses/mit-license.php

更新履歴

  • 2016/04/28 音声素材の並列プリロードに対応。他のプラグインの影響等で、特定のシーンでプリロードが止まってしまう問題を修正。
  • 2016/04/25 色相が0以外の画像がすべて0で表示されてしまう問題等、いくつかのバグを修正
  • 2016/04/24 初版

3 件のコメント:

  1. 初めまして。
    この並列プリロードのプラグインを使わせていただこうと思い、記事の通りにJSONファイルを作成し、いざテストプレイを始めてみますと、
    起動時に「Cannot read property'_inner'of undefined」とエラーが表示され、ゲームが始められませんでした。

    手順を確認したいのですが、作成したJSONファイルはゲームフォルダの「Data」のフォルダに入れるのが正しいのでしょうか?
    「/Data以下に配置」という説明が初心者ながらよくわからず、上記のフォルダにJSONファイルを入れて起動したのですが、
    それが起因しているのか(よく分かりませんが)エラーが出てしまいます。。。

    もしよろしければ解決方法をお教えいただきたいですm(__)m

    返信削除
    返信
    1. はじめまして。
      上記エラーはプロジェクトのコアスクリプトのバージョンが1.2.0以下の場合に発生します。
      本体バージョンを1.3.0にアップデートしていても、制作中のプロジェクトのコアスクリプトバージョンはそのままなので
      ツクールWebで公開している手順に従ってアップデートをお願いします。

      削除
    2. お返事ありがとうございますorz
      トリアコンタン様のおっしゃる通り、単にアップデートの方法を間違っていたようでした^^;
      おかげさまで解決しました! 助かりましたm(__)m

      削除

注: コメントを投稿できるのは、このブログのメンバーだけです。