RPGツクールMV作品などの動作

Last modified: 2021-01-31

作品の公開形式と動作

  • RPGツクール(RPG Maker) MV/MZ作品はNW.jsアプリケーションとして書き出される
    • 作品の動作に必要なJavaScriptのスクリプトファイル群が作品の一部として含まれる
      • RPGツクールMV/MZ作品ではマルチバックエンド1な描画ライブラリ “Pixi.js” を用いてRPGツクールMV/MZ作品を動かす
      • ラノゲツクールMV(Visual Novel Maker)作品もNW.jsアプリケーションとして書き出され、作品の動作に必要なスクリプトファイルが同様に含まれるが、Pixi.jsは使われていない
        • 同ツールによる作品の動作については細かい部分でRPGツクールMV作品と異なる部分があるが、本記事ではRPGツクールMV作品を前提とする
  • 製作者は作品をダウンロードして実行用プログラム(WindowsならGame.exe)を動かす形とWebブラウザでゲームプレイ用のページにアクセスして遊ぶ形から公開形式を選べる
    • 前者はOS依存のプログラムが同梱される形だが、NW.jsのバイナリが提供されているOSからはネイティブのNW.jsを用いて遊べる
      • Windows用に公開されているRPGツクールMV作品では “Enigma Virtual Box” というソフトウェアでコンテンツが書庫にまとめられているケースがあり、ネイティブのNW.jsで直接実行はできないが、展開用ソフトウェアで中身を取り出して元のレイアウトにファイルを配置すればそのような作品も遊べる2
    • 前者のセーブデータは作品のディレクトリのwww/save/以下にファイルとして保存される
    • 後者はWebブラウザがあるOSであれば環境を意識せずに遊べるが、その都度ロード時間が発生して快適ではないという問題があるのに加え、セーブデータはブラウザのローカルストレージに保存されるため、個別にファイルとして管理できないという不便な点がある
    • NW.jsは内部でChromiumのコードを用いており、後者で使用するWebブラウザはChromium/Chrome系が速度面で好ましい

NW.jsをRPGツクールMV作品などのプレイに使用する場合、使用するのはSDK版よりもサイズの小さい通常版で問題ない。

Linux上のNW.jsでRPGツクールMV作品を動かす際のPCスペックについては、過去にAthlon II X3 445(K10世代CPU)とRadeon HD 4200(オンボードGPU)の環境では作品やシーンによっては少し止まるようなことがあって微妙だったが、G4400(Skylake世代2C2TCPU)とHD510(内蔵GPUの下位モデル)および220GE(ZEN1世代2C4TCPU)とVega3(内蔵GPUの下位モデル)では快適に動いている。

NW.jsでの実行

  • NW.jsの実行ファイルnwに、package.jsonを含んだ作品ディレクトリを指定して実行する
  • 実行時の作業ディレクトリは作品のディレクトリでなくてもよい
(通常の実行)
$ /path/to/nwjs/nw --ignore-gpu-blacklist /path/to/game_dir

(Waylandネイティブでの実行・バージョン0.50以上必須)
$ /path/to/nwjs/nw --ignore-gpu-blacklist --enable-features=UseOzonePlatform --ozone-platform=wayland /path/to/game_dir
  • 過去のRadeon HD 4200使用時、--ignore-gpu-blacklistオプションを付けないとWebGLやハードウェアアクセラレーション付きのCanvasが使えなかったことがある
    • --ignore-gpu-blacklistオプションは後に--ignore-gpu-blocklistという名前(aからoに変更)になって置き換えられているため、使用しているNW.jsのリリース時期が古くなければ--ignore-gpu-blocklistの指定が必要となる
  • NW.js 0.28からSpectre用の緩和策として--js-flags=--untrusted_code_mitigationsオプションが用意されたが、大幅な速度低下の原因となることや、ツクール作品が信頼できるコードと見なせると考えられることから、実際には必要ないと考えられる
  • NW.js 0.50からChromium部分(バージョン87)がWaylandに対応したため、--enable-features=UseOzonePlatform --ozone-platform=waylandオプションを付けるとWayland環境でネイティブに動作するが、0.50系時点では全画面でないときにも装飾が描画されない(全画面にすると気になりにくくなる)

全画面(フルスクリーン)表示

  • 起動後にF4を押すことで、動作中に全画面表示の切り替えができる
  • package.jsonwindowfullscreenを有効にする記述を追加すると起動時にフルスクリーンになる(NW.jsの仕様)
{
	// ...
    "window": {
	    // ...
        // Start in fullscreen mode
        "fullscreen": true,
        "icon": "www/icon/icon.png"
    }
}

起動時にフルスクリーンに切り替わるNW.jsアプリケーションではこれが記述されているため、ウィンドウモードで実行したい場合はこれをfalseに書き換えるなどする。

NW.js使用時に削除可能なファイル

以下のファイルはNW.jsで実行する場合には削除しても動作に影響はなく、使用ディスク領域を削減できる。

  • Game.exe (Windows用の場合のファイル名)
  • *.bin
  • *.dat
  • *.dll (Windows用の場合の拡張子)
  • *.pak

LinuxなどでNW.jsを用いて作品を動かす際に出くわす問題

ファイル名の大文字/小文字の区別による問題

  • Windows上で製作された作品をLinuxなどの大文字/小文字の区別のある環境でプレイすると、作品内の指定とローカルディスク上の素材ファイルなどのファイル名の大文字/小文字の違いが原因でファイルが見つからないエラーメッセージが表示されて動作が停止してしまう事例がたまにある
  • 存在が要求されるファイル名はJavaScriptコード内で動的に生成されていたりすることもあるので、イベントのデータなどのファイルを外部のプログラムで読み込んで要求されるファイル名の一覧を生成して実際に存在するファイルの一覧と照らし合わせるという形のチェックはできず、実際にプレイしてエラーが出るかどうかを調べるしかない
  • 要求されているファイルの名前をいじらずに問題を回避するにはciopfs3を使用してマウントポイント以下に作品を配置して動かすのが楽
    • 問題の発生した作品で実際に試して正常に動作することを確認済み
    • ごくわずかな処理コスト(追加のCPU資源の使用)が発生すると考えられるが、大量のファイルを頻繁に読み込むわけではないため、CPUスペックが極端に低い場合以外は気にする必要はなさそう

WineでWindows用のGame.exeを実行した場合、Wine上でのファイル名の大文字/小文字の区別がされないことによりこの問題は起こらない。

セーブデータや設定が保存できない

  • RPGツクールMV初期の発売後の初期(2015-2016頃)に書き出されたJavaScriptスクリプトを含む作品では、NW.jsで実行するとセーブデータや設定の書き込みに失敗することがある
  • www/js/rpg_managers.jsStorageManager.localFileDirectoryPath = function() {の後ろの関数部分を別の新しい作品の同ファイルのこの関数の中身で置き換えると正常に動作するようになる
    • 変更の際には元に戻せるように変更前のファイルをコピーしておく

メモリ使用量の問題

  • 2016年頃までの作品ではWebGL使用時にメモリが解放されずにメモリ使用量が増え続ける問題があり、WebGLを無効化することでCanvasが代わりに使用されてメモリ使用量が増えにくくなる
  • その後のアップデートが適用された作品では、WebGLのメモリ解放の問題が改善された一方、WebGL必須になってCanvasモードを選択できなくなってしまった

Windows版の実行ファイルをWineで実行

  • 画面が真っ黒になる場合は回避策が必要
    • --ignore-gpu-blacklist --use-gl=desktopオプションを指定して起動すると動作
      • 前述の通り、--ignore-gpu-blacklistは後に--ignore-gpu-blocklistに置き換わっているため、作品のリリース時期などによって使い分ける
    • winecfgなどでOSバージョンを “Windows XP” に設定して実行すると起動オプションなしで動くものもある
    • 作品によっては、WaylandセッションのXWaylandで動かすと非常に低速になる現象を手元の環境で確認しており、回避するにはX11セッション内で実行する必要がある
  • Enigma Virtual Box使用作品は6.0時点では中身を展開せずに起動可能
    • 過去にプログラム自体が落ちる問題があったが、これは改善された
  • Wine 6.0-rc4時点では特定の作品の特定の場面で時々動作が固まることを確認しているので、セーブはこまめに行う

  1. HTML CanvasまたはWebGLで、モードはSDKで “デベロッパー ツール” を使用すると確認可・Canvasモードでもハードウェアアクセラレーションが使用できれば動作速度は快適 ↩︎

  2. コンテンツの閲覧からの保護(難読化)目的で使う意味は実質的にはないと言える ↩︎

  3. FUSEに基づくユーザ空間のファイルシステムで、ファイルやディレクトリの作成時にファイルシステムの拡張属性に元の名前を格納しつつ、実体は小文字に変換されたものを扱っている ↩︎