具体的なJSとかChromeコンポーネントの話はセアロソングさん達の方が詳しいので割愛。
具体的な解決方法は多分セアロソングさん達がまとめてくれるので、ここでは概念的な話のみする。
■発端、問題
ツクールMVのゲームが重い!ナンデ?→EXEのChromiumのバージョンが3年前のものだった模様。
その後Chromiumの更新などでその問題が直っている。
★なんでこんなことに?
★どうにかできないか?
→できそう、というのが今日の話。
■結論、解決方法
MVのフレームワーク(ライブラリ)であるNW.jsを最新にすることで解決できそう。MV発表当時のNW.jsは0.12.3あたり。
現在NW.jsの最新版は0.19.x。
解決方法としては3種類ある。
セアロさんたちが手法をまとめてくれたのでそちらを確認。
【ツクールMVユーザーに朗報!】NW.jsの上書きバージョンアップによる #ツクールMV の軽量化はどうやら一定の効果がありそうなんで、一応ざっくりまとめたインストラクションをアップしておきます。— セアロソンク (@searothonc) 2016年12月27日
メモリ使用量や動作が改善されたとのこと。
とりあえずは上記方法でOK。
今後すべきことは…?
a.公式にNW.jsを最新にしてもらう。
b.最新のNW.jsを勝手に当てて良いことを公式から許可してもらう?
→ライセンスやEULA的に問題無いならOK。
c.Game.exeの代わりに、最新のNW.jsのnw.exeを使う(リネームして置き換える。上で示した手順)
上記cが早いが、MVのEULA(規約みたいなモノ)に違反しないかチェックは必要(bも)。
NW.js自体はMITライセンスなのでかなり自由だが、組み込むことはMVの領域となる(と思う)。
あくまで今回は「こうすれば解決するのでは?」を検証したという話。
上記a,bがベターだが、次の問題点もある。そもそも公式に聞く必要あるかも。
a→数年後NW.jsがまた古くなった場合に対応して貰えない。
b→ある程度使い方や構成を知っていないと難しい。
■MVの構成、仕組み
・Game.exeとはなんぞや
ツクールMVプロジェクトを動かす方法は3種に分けられる。1.パッケージングしたEXEで動かす
2.ブラウザでwww\index.htmlを読む
3.スマホなどで動かす
上記3は今回無関係なので除外。やってることは2と同じ。Crosswalk使うってところくらいか。
上記1でパッケージングといっているが、基本的にZIP圧縮したwwwフォルダをGame.exeの後ろにくっつけているだけだったりする。
上記2はEXEがやっているのをブラウザでやっているだけ。
実際Game.exeはブラウザみたいなものだったりする。
Game.exeの正体はNW.jsというライブラリそのものであり、nw.exeというファイルをリネームしたもの。
(厳密にはNW.jsは「HTML5アプリケーションフレームワーク」というものだが、分かりづらいのでライブラリとする)
("NW.js"というライブラリ名であり、Javascriptファイル名ではない)
nw.exeの実態はChromiumという「ブラウザエンジン」を動かすだけの「ブラウザのようなモノ」という認識で良い。指定したHTMLやJavascriptを実行するだけのEXE。
参考:
ブラウザエンジンとは、IE,FireFox,Chromeでブラウジングするためのライブラリのようなもの。
ブラウザエンジンがあれば別にブラウザじゃなくてもWebを閲覧出来る。
ちなみにエンジン名はそれぞれ:
・IE=IEコンポーネント
・FireFox=Gecko
・Chrome=Chromium
ブラウザエンジンはIE以外オープンソース。ChromiumもMITライセンスなので、Google社とツクールMVの間で契約などの関係は恐らく重要では無いと思われる。
nw.exe(つまりNW.js)を最新のものにすれば、nw.exeが持っているChromiumも当然最新のものとなる。
・Chromiumの現状
動作上3年前のChromiumには問題があったようで、最新のChromiumでは各種問題がFixされている。ChromiumはOSS(オープンソースソフトウェア)であり、MITライセンスなので自由度が高く、どの商用アプリでも組み込める。
現在も開発は続いている模様。
当初「Chrome」を入れてるかと思ったので、古いままなのは契約関係かと疑っていた。
が、Chromiumhはコンポーネントであり、かつ契約等不要。
それにChromiumはNW.jsが包括しているので、契約の話とはほぼ無関係と見て良い。
結局NW.jsを最新にすれば、「多くの問題」は解決されるということは検証済み(実際に軽くなり、メモリ使用量も200MBほど減った模様)
■関係する構成技術
★ここのコンポーネントのうち、関係するものは下記。・NW.js
下記は今回の話とは関係しない
・Pixi.js/node.js:ミドルウェア~アプリケーション層
・Qt:UI関連。プロジェクトでは特に重要ではない
・Crosswalk/ApacheCordva:スマホやサーバ関連
■補足
CrosswalkやENIGMAでWin版を作成しても最新のChromiumでパッケージング出来るらしいので、それでも良いみたい。■注意点
とりあえず解決したという感じなので、今後規約的、技術的に何か変わることがあるかも知れません。問題が出るかもしれないので、自己責任で。
問題や被害等についてえびは責任を負いません。
0 件のコメント:
コメントを投稿