先日のNw.js更新によるWin版ツクールMV製ゲーム高速化なんですが、ENIGMA VIRTUAL BOXを使ったパッケージ化は重いとの報告が入ってきています。

これ、たぶんNw.jsのせいじゃなくて、そもそもENIGMA自体が重いんじゃないかって気はしているんですが、ファイル隠蔽だけならENIGMAを使わなくてもできるので、その方法も説明しておこうと思います。

この方法は、ものすごく簡単に言うと、ゲームデータの部分だけzipにアーカイブしてしまうというものなので、暗号化としてはほとんど強度は期待できません。どれぐらいの強度かと言うと、MV本体に実装された画像や音声の暗号化と同じ程度と思って下さい。理屈を知ってる人ならわけなくファイルを取り出せます(MV本体の暗号化もやり方知ってれば普通にMVに付属のスクリプトで復号化できる程度のヘボいものです)。

ただ、ENIGMAもすでに暗号は破られて復号化ツールが出回っていますし、技術や知識のない人が簡単にデータを見られない、あるいは能力があっても面倒になるという程度の隠蔽でよければ、こちらの方法が代替手段になりえます。

そして何よりNw.js標準の方法なので、動作速度が変わらないのがメリットです。ただ、起動に若干時間がかかるようになるので、その点だけはご注意下さい。

Nw.js標準のファイルパッケージ化

まず、Nw.js最新版のフォルダをコピーして、適当に名前を付けておきます。このフォルダが配布フォルダになるので、ゲームのタイトルなど最終的に配布されるときにつけるフォルダ名をつけておくといいでしょう。

次に、配布するゲームをデプロイし、出力したフォルダ内のpackage.json[www/]フォルダの2つを1つのzipファイルになるように圧縮します。

001

圧縮したzipファイルを配布フォルダにコピー(または移動)します。

002

ファイル名はおそらくpackage.zipかwww.zipになっていると思いますので、以下はとりあえずwww.zipという名前になっているものとして説明します。package.zipや他の名前になっている場合は、適宜読み替えて下さい。

余談ですが、この段階で上記のzipファイル(package.zipなりwww.zipなり)をpackage.nwにリネームすれば、nw.exeをダブルクリックすることでゲームが起動するようになります。後述のexeとの結合まで必要なければ、この段階で配布してしまっても構いません。

zipファイルとnw.exeを結合して新しいexeを作る

次に、配布フォルダのフォルダパスをクリップボードにコピーしておきます。配布フォルダのアドレスバーに表示されているパスを右クリックし、「アドレスをテキストとしてコピー」を選びます。

003

スタートメニューからコマンドプロンプトを起動します。起動の仕方はWindowsのバージョンによって違うので、おのおの調べて下さい。下の画像はWindows10の場合です。

004

コマンドプロンプトで「cd "」と打ちます。

005

その後、コマンドプロンプトのウィンドウを右クリックすると、先ほどコピーした配布フォルダのパスが入力されます。続けて「"」を打ち込んで、[リターン]キーで実行しましょう。すると、カレントディレクトリが配布フォルダのパスになるはずです。もし画面に表示されているパスが配布フォルダのパスと異なる場合は、おそらくドライブが違うので、正しいドライブに移動して下さい。

006

作業ディレクトリのパス(「>」の左側の文字列)が配布フォルダのパス(右クリックしたときに出てきた文字列)と同じになったら、以下のコマンドを打ち込みます。

copy /b nw.exe+www.zip Game.exe
007

www.zipの部分は、package.jsonと[www/]を圧縮したzipのファイル名にしてください。

コマンドを打ち込んで[リターン]を押すと、配布フォルダにGame.exeができます。これが最終的な配布するゲームの実行ファイルです。nw.exeとwww.zipは不要なので消して下さい。

008

以上で完了です。必要なファイルはすべて配布フォルダにまとまっていますので、このフォルダをアーカイブするなりなんなりして配布しましょう。