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禁利用等)についても制限はありません。このプラグインはもうあなたのものです。

2017年9月20日水曜日

多層レイヤー一枚絵マッププラグイン

RPGツクールMVで使用可能な自作プラグイン「多層レイヤー一枚絵マッププラグイン」の紹介です。

プラグインの説明

 複数のレイヤーを使った多層一枚絵マップを作成可能にします。イベントでレイヤーを作成するので、レイヤー数は実質無制限です。マップサイズと同じサイズの一枚絵を用意してください。

 イベントを作成してメモ欄を以下の通り記述すると、指定した画像がマップに表示され、かつイベント位置とは無関係に画像の左上がマップの左上に合わせられます。

完成例

  • 通常のパララックスマッピングに対して光や影の表現を重ねることができます。 スクリーンショット

詳しい使い方

メモ欄の記述

<PLM:file>        # 「img/parallaxes/file」を一枚絵として表示します。
<PLM_Blend:1>     # 合成方法の初期値を「加算」にします。
<PLM合成:1>       # 同上
<PLM_Opacity:128> # 不透明度の初期値を「128」にします。
<PLM不透明度:128> # 同上

スクリプト

this.shiftPosition(10, 20); # 表示位置をX[10] Y[20]ずらします。

 イベント内の「画像」「オプション」項目は無視されますが、その他の項目は通常のイベントと同じように機能します。

キャラクターグラフィック表示拡張プラグインとの組み合わせ

 合成方法や不透明度などを後から変更したい場合は、自律移動で指定するか「キャラクターグラフィック表示拡張プラグイン」と併用してください。

制約事項

 当プラグインはマップのループには対応していません。

サンプル素材

 当プラグインで使用できるサンプルマップをどらぴか(@dorapikanisan)様よりご提供いただきました。この場を借りて御礼申し上げます。上の「完成例」のマップを作成することができます。

 専用のダウンロードページから「Download」ボタンでダウンロードできます。 クレジット表記なしでご自由にお使い頂けるご許可を頂いています。

サンプル素材の使い方

  • サンプル素材には通行可否設定を簡単に行える専用タイルも付属しています。
    使い方1

  • 専用タイルの使用例です。
    使い方2

ダウンロード

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

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

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

利用規約

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

2017年8月20日日曜日

MP3を使ったゲームをRPGアツマールに投稿してみました

数ヶ月前、以下のような記事が目に留まりました。

 mp3(MP3コーデック)の特許が切れたという話です。これによりアプリやゲーム開発者はライセンスの問題を気にすることなくmp3を使うことができるようになります。

 というわけで早速、検証も兼ねてmp3を音声素材として使ったゲームをひとつ作成してRPGアツマールに投稿してみることにしました! ちなみにmp3を再生すること自体が可能かどうかという点については、プラグインが必須ですが可能です。プラグインについてはブログの最後で説明します。

投稿した作品の紹介

 先日RPGアツマールに公開したツクールMV製の掌編アドベンチャー「その名は深く青ざめて」です。プレー時間2分ほどの気軽にプレーできるゲームとなります。

「その名は深く青ざめて」(音が出ます)

https://game.nicovideo.jp/atsumaru/games/gm4093

タイトル画面

スクリーンショット

ゲーム画面

スクリーンショット

 なお、本作はやれやれ氏主催の「2分ゲーコンテスト」に参加しています。

mp3を使用するメリット

ほぼ全ての環境で再生できる

 現在、ツクールMVでゲームを作ってWeb(RPGアツマール等)にアップロードする場合、ogg(主にVorbisコーデック)とm4a(AACコーデック)の二つを用意することになっています。PCブラウザやモバイルブラウザ等、様々な動作環境に対応するためですが、変換やループタグの設定、確認が面倒だったり、何より容量を圧迫するという問題があります。

 これをmp3に切り替えることで一本化できる可能性があります。

 mp3は普及率が高く、ゆえに様々な環境でも安定して再生可能です。下記に対応状況が記載されています。

 上の一覧表だと一部「?」がありますが、「その名は深く青ざめて」については、公開後に運営さまから頂いた動作確認結果でも問題はなく、プレイヤーからも今のところ「再生できない」という声は聞いていません。(もしうまく再生できなければご一報ください)

 mp3はoggやm4aと比べて圧縮効率が悪く、単体ではむしろ容量が大きくなってしまう傾向がありますが、それでも二つ用意するよりは(同一ビットレートであれば)マシだと思います。

デスクトップ実行(Game.exe)でどうするか

 ツクールのGame.exe(NW.js)では、ライセンスの問題がありもともとmp3は再生できませんでした。ですがNW.jsは2017/05/03のリリースでmp3のデコーダをffmpeg.dllに含めるようになりました。もちろん特許の問題が解決されたためですが、なかなか迅速な対応だと思います。当然ですがm4aは依然として再生できません。

 つまり、NW.jsを最新にすればデスクトップアプリとして実行したときもmp3を演奏させることができます。NW.jsを最新に差し替える方法についてはセアロソンク氏の以下のブログが参考になると思います。

 本件とは関係なく、NW.jsを最新にすることでパフォーマンスの大きな改善が見込めるので、ぜひ一度お試しください。もちろんデプロイ後だけでなく制作中のプロジェクトにも適用できます。

対応素材が多い

 mp3は普及率が高いだけあって、フリー素材も同形式で配布されているというケースが多いです。変換ツールを使えばもちろん変換できますが、ダウンロードした素材がそのまま使用できるのは嬉しいです。

mp3を使用するデメリット

音質が悪い

 古いフォーマットなので、oggなどの後発のそれと比べて音質が若干劣る(と言われています)。さすがにもともとogg等で配布されているものをmp3に変換するのは少し抵抗がありますね。

ツクールMVのエディタで選択できない

 これがかなり致命的でした。ツクールMVでBGMやBGSを選択するときは、oggファイルしか選択対象に表示されません。拡張子のみoggに変えると選択対象に表示されますが、今度はRPGアツマールにアップロードするときに不正なファイルとして弾かれてしまいます。

 よって現状ではファイルとして選択するときだけoggファイルを(中身はなんでもいいので)作成して、エディタ上で選択後、当該ファイルを削除するというなんともバカバカしい手順を踏む必要がありました。

結論

 ツクールMVの音声ファイルにmp3を使用することはわりと面倒ではありますが、特に容量的な意味で一定の効果が見込めました。そこで一部の素材(例えば素材サイトでmp3形式で配信されている素材)のみmp3を使用し、基本はogg/m4aを使うのがいいのかな、と考えプラグインを作成しました。よろしければお試しください。

 RPGツクールMVで使用可能な自作プラグイン「MP3オーディオ管理プラグイン」の紹介です。

プラグインの説明

 ツクールMVでmp3ファイルを使用可能にします。特定のファイル(末尾にmp3と付いたファイル)のみmp3で再生することも可能です。デスクトップ環境(Game.exe)でmp3ファイルを再生させるにはNW.jsを最新にする 必要があります。

 さらに、プラグイン側で独自にループタグを設定することが可能です。ループタグは曲ごとに設定できます。この設定はファイルにあらかじめ設定されていたループタグより優先されます。

スクリーンショット

ダウンロード

プラグインファイルはGithubで公開しています。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/Mp3AudioManager.js

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

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

利用規約

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

2017年8月6日日曜日

動画のピクチャ表示プラグイン

RPGツクールMVで使用可能な自作プラグイン「動画のピクチャ表示プラグイン」の紹介です。

プラグインの説明

 ピクチャの表示枠を使って動画を再生します。ピクチャの移動や回転による処理の対象になるほか、複数の動画の並行再生が 可能になります。また、動画がウィンドウの下に表示されるようになります。ただし「ピクチャの色調変更」には対応していません。

プラグインコマンド「MP_SET_MOVIE」で動画ファイルを準備してからイベントコマンド「ピクチャの表示」をファイル指定を空で実行してください。

スクリーンショット1

ピクチャを扱うのと同じ感覚で動画をゲーム中に表示できます。 スクリーンショット

スクリーンショット2

回転や合成方法の変更も可能です。また、動画がメッセージなどのウィンドウの下に表示されます。 スクリーンショット

プラグインコマンド

MP_SET_MOVIE file  # 動画ファイル[file]を準備します。
MP_動画設定 file   # 同上
MP_SET_LOOP 1 on   # ピクチャ番号[1]の動画がループ再生されます。
MP_ループ設定 1 on # 同上(offでループ再生を解除します)
MP_SET_PAUSE 1 on  # ピクチャ番号[1]の動画が一時停止します。
MP_ポーズ設定 1 on # 同上(offで再生を再開します)
MP_SET_WAIT 1      # ピクチャ番号[1]の動画が再生するまでイベントを待機します。
MP_ウェイト設定 1  # 同上
MP_SET_VOLUME 1 50 # ピクチャ番号[1]の動画の音量を50%に設定します。
MP_音量設定 1 50   # 同上

ダウンロード

プラグインファイルはGithubで公開しています。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/MoviePicture.js

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

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

利用規約

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

2017年5月21日日曜日

連携攻撃プラグイン

RPGツクールMVで使用可能な自作プラグイン「連携攻撃プラグイン」の紹介です。

プラグインの説明

 戦闘中、味方の攻撃が連続したときにダメージ倍率が上昇します。チェインの継続中に相手側のチェインがスタートしたら解除されます。さらにパラメータで以下の追加の解除条件を指定できます。

  1. 他のターゲットに攻撃
  2. 攻撃をミス
  3. 攻撃以外の行動(回復など)
  4. 相手側の何らかの行動

スクリーンショット

 戦闘中、現在の連携数が表示されます。表示位置や表示方法、サイズはカスタマイズ可能です。 スクリーンショット

スキルに指定可能なメモ欄

 スキルのメモ欄で以下の機能を追加できます。数値には制御文字\v[n]が使用できます。

<AC_倍率:200> # チェインダメージ倍率をさらに200%にします。
<AC_Rate:200> # 同上
<AC_終了>     # そのスキルで連携を強制終了します。
<AC_End>      # 同上
<AC_条件:5>   # 5連携に満たない状態で使用すると必ず失敗します。
<AC_Cond:5>   # 同上

実行可能なスクリプト

 イベントコマンド「スクリプト」から以下が実行可能です。

$gameParty.getChainCount();    # 現在のパーティ連携数取得
$gameParty.getMaxChainCount(); # パーティの最大連携数を取得

ダウンロード

プラグインファイルはGithubで公開しています。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/AttackChain.js

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

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

利用規約

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

2017年5月1日月曜日

サポート先移行のお知らせ

 平素よりプラグインのご利用ありがとうございます! この度、当ブログのコメント欄を閉鎖し、サポートをツクール公式フォーラムおよび、ユーザフォーラムのツクマテに移行することにしました。理由は以下の通りです。

  • コメント欄が小さい
  • メモ欄のタグを入力できない
  • 画像やキャプチャをアップロード出来ない
  • サポートの窓口が多すぎて混乱する
  • フォーラムの記事にした方が後々、資産として活用しやすい

 なお、今までに投稿して頂いたコメントに問題やトラブルがあったとか、そういうことは一切ありません。利用者様には十分に配慮していただき感謝しています。

 利用者様には上記いずれかのフォーラムにユーザ登録をお願いすることになりますが、よろしくお願いします。上記フォーラムは定期的に巡回しているので、プラグインのQ&A等のトピックにスレッドを立ててください。

2017年4月16日日曜日

自動翻訳プラグイン

RPGツクールMVで使用可能な自作プラグイン「自動翻訳プラグイン」の紹介です。

プラグインの説明

 ゲーム中のメッセージおよびデータを自働で翻訳します。機械翻訳のため精度には限界はありますが、手軽に多言語対応できます。以下が翻訳対象です。

  1. 「文章の表示」のメッセージ
  2. 「選択肢の表示」の選択肢
  3. 「マップ名」
  4. 各種データベースの値(用語も含む)

スクリーンショット1

 データベースの用語や、アクターの名前などを自働で翻訳してくれます。 スクリーンショット

スクリーンショット2

 メッセージや選択肢の内容なども自働で翻訳後のものに差し替えます。翻訳する言語も自由に設定できます。 スクリーンショット

翻訳API

 翻訳は「Microsoft Azure」の「Translator Text API」(Web API)を使用しています。
https://azure.microsoft.com/ja-jp/services/cognitive-services/

 言語コードを指定すれば、翻訳先の言語を自由に変更できます。言語コードについては、以下を参照してください。
https://msdn.microsoft.com/en-us/library/hh456380.aspx

誤訳の修正

 翻訳結果は「Translations_(翻訳先言語コード).json」というファイルに蓄積され同一の文章が要求された場合は、ファイルに保存されている内容を返します。JSONファイルは、翻訳前の文章をキー、翻訳後の文章を値とする簡単な構成のため以下のようなJSONエディタ等で簡単に編集できます。(編集は自己責任です)
http://jsoneditoronline.org/

その他の仕様

 翻訳データの作成はテストプレー中にのみ行われ、リリース後はJSONファイルのみを参照するので、オフラインゲームでも使用可能です。

 メッセージ翻訳は、表示するタイミングで行われるため、通信発生時(初回のみ)はウィンドウにメッセージ表示までに時間が掛かる場合があります。また、データベース翻訳はバックグラウンドで少しずつ実行されるため完了までには時間が掛かります。

 翻訳を適用するかどうかは任意のスイッチを指定して切り替えることができます。設定画面等で対象言語を切り替えたい場合に使用してください。

制約事項

  1. 「Translator Text API」の無料版は、1ヶ月に200万文字までしか翻訳できません。 これは当プラグインの使用者全員の合計になります。 (多分超えないと思うので)特に翻訳を萎縮して頂く必要はありませんが、 万一超過した場合は翻訳できなくなる点は予めご了承ください。

  2. 文章に制御文字を含む場合は、内容が失われるため翻訳をスキップします。

  3. 制度に関するご要望にはお応えできません。

  4. 「Translator Text API」がサービスを終了した場合、当然このプラグインは 使用できなくなります。(代替案は検討します)

ダウンロード

プラグインファイルはGithubで公開しています。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/AutoTranslation.js

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

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

利用規約

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

2017年4月9日日曜日

メニュー画面のサブコマンドプラグイン

RPGツクールMVで使用可能な自作プラグイン「メニュー画面のサブコマンドプラグイン」の紹介です。

プラグインの説明

 メインメニュー画面に任意の名前のコマンドおよびツリー表示されるサブコマンドを追加できます。サブコマンドを実行(決定)すると、任意のスクリプトが実行されるか、もしくは指定したマップに移動します。(両方も可能)

 指定したマップへの移動は主にイベントによる自作メニューを組み込むために使用します。通常メニューから専用マップに移動するとイベントやフォロワーの位置やマップ名表示、BGM再生やメインメニューコマンドの選択位置など考慮すべき点が多いのですが、当プラグインを使えば全てプラグイン側でカバーしてくれます。

 また、通常の縦レイアウトとメニュー画面はもちろん、プラグインによる横レイアウトのメニュー画面にも対応しています。

スクリーンショット1

縦画面(通常)用のレイアウトです。 スクリーンショット

スクリーンショット2

横画面(AltMenuScreen.js等)用のレイアウトです。 スクリーンショット

パラメータ指定方法

プラグインパラメータを以下の通りカンマ区切りで指定してください。

指定例

アイテム,親コマンド1,100,200,this.commandItem(),0,OFF

  1. 名称      :サブコマンドに表示される任意のコマンド名称
  2. 親名称     :メインコマンドに表示される親となる任意のコマンド名称
  3. 非表示スイッチID:ONのときコマンドが非表示になるスイッチID
  4. 禁止スイッチID :ONのときコマンドが使用禁止になるスイッチID
  5. 実行スクリプト :コマンドを決定したときに実行されるスクリプト
  6. 移動先マップID :コマンドを決定したときに移動するマップID
  7. メンバー選択有無:コマンド実行前に対象メンバーを選択します(ON/OFF)

ダウンロード

プラグインファイルはGithubで公開しています。
https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/MenuSubCommand.js

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

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

利用規約

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