ティラノ製デスクトップアプリケーションの起動がクソ遅い件について
先日この話題がツイッターで上がっていたので便乗記事
ティラノスクリプトおよびティラノビルダー製のゲームは、Win/Macアプリ化する際にnw.jsというフレームワークを使用しています。 nw.jsは、javascriptをはじめとするwebの技術でデスクトップアプリを作れるものです。まじで秒でデスクトップアプリができる
が、デメリットとして、アプリケーションそのもののサイズが肥大しがち&起動に時間がかかるという点があります。
アプリケーションのサイズがでかくなる問題については、これはnw.js製アプリはアプリ内にchromiumブラウザを含んでいるからです。実質Google Chromeが入っているようなものなので、そりゃサイズもでかくなるよと。
起動に時間がかかる問題についてですが、nw.jsは起動時にアプリケーションファイルを一時フォルダ内にZIP展開しています。アプリケーションサイズが大きいと展開に時間がかかるため、その分起動が遅くなります。
という情報を踏まえて、対策としてはこんなのがあるよ
パッケージングしない
ティラノスクリプト公式推奨の方法。dataフォルダとかをそのままにするやつ。
デメリットとしては、ゲームの中身がプレイヤーにバレバーレになってしまうこと
パッチ機能を使ってゲームのメイン部分をパッチ化
デメリットは、ノベコレに公開するゲームではこの手は使えないことです。くわしくは後述
あとこれ知らない方結構いそうなんですけど、ティラノはパッチ複数読み込めます。config.tjsでパッチを手動ロードにして、スクリプトファイル内に各パッチを読み込むポイントをあらかじめ用意してやれば、そのパッチが存在する場合のみパッチをロードします。パッチファイルがなくてもエラーにはならない。これ豆な
手動ロードにする利点はもうひとつあって、パッチファイルの名前を任意のものにできるという点です。拡張子も変えられる。これ地味に便利だよ
Enigma Virtual Boxを使う
現実的な方法その2 いろんなファイルをひとつの.exeにまとめてくれるツールを使おうの巻
パッケージング前のファイルをこいつでひとつにまとめてやろうという算段です。まとめるのが目的なので、こいつを使ったからと言って起動が早くなるわけではないので悪しからず
実際に試してみたところ、手動パッケージング(notパッチ化)よりは早いが正直誤差、くらいの感じでした
パッケージングで頭使いたくない人にはおすすめかもしれない
nw.jsを使わない
いわゆるガワアプリを作れるフレームワークならほぼそのままティラノ製アプリを移植できます。
デメリットは、現状javascriptで動くフレームワークはnw.jsかElectronのどっちかしかないこと いや他の選択肢もなくはないんだけどね…メンテがね…
というかこの方法をやろうと思える人ならパッチ機能を使うやり方も楽々実装できると思うぞ
パッチ機能はノベコレでは使えない!(当然Enigmaも)
正確には使えはします。が、パッチ機能はブラウザ非対応なので、ノベコレで公開する際はブラウザ対応を諦めることになります。
ノベコレがブラウザ版とパッケージ版で別のファイルを投稿できるようになれば解決するかもですが、単純に考えて運営サイドでのチェックに倍時間がかかることになるので現実的ではないですね。
いまのところ、ノベコレにおいてはブラウザ対応を取るか、起動速度を取るかのどちらかです。
個人的にはフリーゲームなんだから多少起動が遅くてもええやろと思わなくもない 文句があるならヴェルサイユにいらっしゃい
有償ゲームの起動がクソ遅いのは…まあ…そうねえ…
結局、ティラノ製ゲームが重い、遅いと言われるのはアプリケーションファイルを実行してからゲーム画面が表示されるまでに時間がかかるからなので、ローディング画面でもなんでもいいからさっさと表示してやればプレイヤーはそんなにストレスを感じなくなります。
なのでスプラッシュスクリーンの表示も有効だと思いますが、nw.jsにしろElectronにしろファイルの展開が終わらないとアプリケーションが実行されない=スプラッシュスクリーンも表示されないので、exe実行→即ウィンドウ開くというのはなかなか難しいものがあるんですよねぇ
あと、起動速度はもちろんのこと、アプリケーションの動作全てにおいてPCのスペックが占める比率はかなり大きいです。
ゲーム制作者のPCは比較的高スペックなことが多いと思いますが、プレイヤーはそうではありません。高スペックPCではサクサク動くゲームでも、低スペックPCでは信じられないほど遅い可能性もあるわけです。
なので、ゲーム制作する側もたまには低スペック環境でのテストもしてみようね…物理端末用意しなくてもやり方はいっぱいwebに転がっているからね…(自分に言い聞かせる)