プリロードの範囲やタイミングについて/ティラノビルダー備忘録
※自分用の備忘録のため内容が初歩的な場合があります※
プリロードのお漏らし発見
前回こちらの記事でティラノビルダーから一歩踏み出して「事前プリロード」と「iscriptに配列を渡してプリロードする方法」に初チャレンジしてみたわけなのですが↓
その中で「基本はティラノビルダーの標準機能である自動プリロード生成を使って、そこから漏れる分だけ事前にプリロードします!」という結論を出しておりましたのですが、
記事を読んでくださったフォロワー様からこのようなご指摘が……!!
『セーブデータをロードして途中から始めたら、ksの頭でプリロードしたものも漏れ…ませんか…?』
( Д ) ⊙ ⊙
た、、、たしかに!!!!!
それでちょっと確認してみました。
これはスマホのブラウザ版で確認した動画となっておりますが、後ほどパソコンでも確認したところ(ほんの僅かながらではありましたが)ロード時に背景画像の表示が遅れていました。
また「ゲームを閉じたら」だと思っていたのですが、「ブラウザページのリロード」でもプリロードがなかったことになるっぽい?
つまりティラノビルダーで何もしないとプリロードはこんな感じで紫の字のところが漏れる↓
私の場合は家のネット回線がまあまあ良い子なのでパソコンでブラウザプレイする限りは特に遅延を感じなかったのですが、プリロードがされていないのは事実ですしプレイヤーのネット環境たるや様々なわけで……
しかし全てをプリロードするには作品の長さやデータの量でも様々なわけで……
ここまで考えて頭がパンクしかけるただのティラノビルダー使い。
状況を整理すべく表を作ってみました。
作品形態によるプリロードとプレイ環境
※個人的に見聞きした情報をざっくり表にしただけなので参考程度でお願いします
短編と長編、ブラウザとダウンロード。
今まではネット回線の速さのことだけ考えていたのですが、パソコンのスペックのことを考えると意外に短編長編で同じような悩みを抱えていることが分かりました。
ネット回線が早くてもパソコンのスペックがめっちゃ低かったら大量のプリロードは毒。プリロード自体が処理能力を超えて上手くいかないとか、プリロードで終盤の素材を含めた全素材をぶち込んだせいで序盤からパソコンの動作が不安定になるそうです。
しかし一見関係なさそうなダウンロード版はというと、プリロードしておけば低スペックパソコンでも画像の表示がスムーズになるのだとか!
つまり大量のプリロードは避け、しかしスムーズな処理のために漏れを気にかけながらプリロードの両方が求められる??
ちょいと胃が痛くなってきましたが挫けないぞ……
プリロードのタイミング
ここで一旦、“ゲーム開始時”にプリロードする際のタイミングについて、昨今の事情とともに変わってきた部分があると思うのでまとめてみます。
最近スマホブラウザ対応を強化するノベコレ様。
それもそのはず、大抵のことがスマホで済む時代、パソコンを所持しているゲームプレイヤーが減っています。ソシャゲかSwitchやPS4で遊んでいれば良く、尖ったフリゲはゲーム実況者が動画にしてくれる。(あ、私はソシャゲはたまにやるだけだけどSwitchもPS4もフリゲも実況も好き)
もちろんフリーゲームはインディーゲームともまた異なり、人によっては大衆向けに作っていないしニッチ層やパソコンを持っている“分かる”人にだけにプレイしてもらえればいい面もあります。
しかしそんな層の方々でも便利だったらもちろん嬉しいはずだし、多くの方にプレイされたい場合はスマホユーザー対応待ったなしの状況にあるような気がします。
もちろんティラノビルダーを使っているゲーム制作素人の我らがそこまでの領域に行くのは色々と難しいのですが……せめてフリゲに慣れていないプレイヤーがプリロード中に飽きて閉じちゃうことだけは減らしたい!
そこで最近のソシャゲスタイルをプリロードに取り入れたらどうか?というのは前回の記事でも少しお話したのですが、今回は詳しく図にしてみました。
昔はのう…ダブルクリックして反応がなくても追いクリックをしないで静かに待っとるとゲームが起動したもんなんじゃ……(byインターネット老人会
しかしそれスマホで起きたら不具合だと思わねえか爺さん。
現代のスマホ性能から「即レスポンス」という感覚は結構身体に染み付いてしまっていて、「むかしながらのスタイル」に元からあった「起動しないから別のゲームやろ」という現象の追い風になっていると思います。
その他の問題点は図に記したとおり。
そこから最近のスタイルにするとどうでしょう……?
私は「大きめのデータをダウンロードする時には確認ダイアログが出る」という理由で「ソシャゲのメンテ明け型」なんて呼んでしまうのですが、まとまったプリロードをするなら予告を入れた方が待ってもらえるし、プレイ環境とプリロードがぶつかって停止する問題もスキップで取り急ぎ回避できると思うのですよね……!
ティラノビルダー的にはfirst.ksで読み込まれるtyrano.ks等をATOMとかで開いて直接プリロードを書き込む……といった作業がなくなるのでそこも嬉しかったり。
またデフォルト機能のメニューからタイトル画面に戻る際、first.ksを通ってもプリロード再び!にならないのでエコな気がするような。
ティラノスクリプトの起動時とメニューからのタイトルに戻るは、必ずfirst.ksから始まります。
引用元↓
一応この「さいきんのスタイル」に似たものを当方の最新作品でもやってみたのですが、それよりも超完璧にご実装なさっている作品、そしてこの図を作るにあたって参考にさせて頂いた作品がこちらです!!
しかもプレイ中2回目は表示させないという、さらに上を行っておられました……!!
なにもかも尊敬すぎる。ありがとうございました!!
プリロードの量が多い場合を考えた
さて先ほどゲーム開始時のプリロードについて考えたので、短編作品は開始時に予告を挟んでからまとめてプリロードすればプリロード漏れについてはなんとかなりそうな気がします。
※そもそも短編なら大体その場でクリアされ、ロードによるプリロード漏れが少ないのでティラノビルダーの自動プリロードだけでも大丈夫な気がします。ただ、お気に入りのシーンや分岐シーンは後日ロードすると間違いなく自動プリロードがすっ飛ばされて漏れてしまいますのでその辺りは人それぞれかも※
というわけで最後に先ほど保留にしていた話↓に戻ります…!
つまり大量のプリロードは避け、しかしスムーズな処理のために漏れを気にかけながらプリロードの両方が求められる??
そう、主に自然とデータ量が増える中〜長編作品の場合。
いずれにしてもティラノビルダーの自動プリロードの仕組みは同じです(さっきと同じ画像)
しかし短編より時間や日を跨いだプレイの可能性が上がるので、再起動後または後日のロードによるプリロード漏れの可能性も上がるわけでありまして……
かといって全てをまとめてプリロードしたらデータ量が大きいのでアカーン!なのは前半に述べた通り(具体的にどこからがデータ量が大きいと言えるのかはネット回線速度やパソコンのスペックによって変わると思うので断言はできないのですが……)
なので悩んだり教えて頂いたりした結果、こんな感じになりました。
↓
文字が細かくて申し訳ない!
「ピンポイント型」はティラノビルダー使用を前提とした半プリロード漏れ対策になります。
大事な素材だけ事前にプリロードするので漏れが完全にカバーできるわけではありませんが、全体的にはティラノビルダーが自動生成したプリロードで意識せずとも小分けにプリロードができるので楽です。また小分けなので短編から長編まで対応できそうです。
ただしプリロードタグの記述が嵩むとよろしくないため、1つのシナリオ内で使用する画像が多いなと思ったら適度に区切ると良いかもです。
この演出だけは音と画像がずれて欲しくないとか、ここは画像の読み込みでゲームが固まって欲しくないとか、サブルーチンに使う画像も同様の場合は事前プリロードに組み込みましょお……!その際はプリロードタグが嵩まないようiscriptに配列を渡してあげましょお……!少しだけエディタソフトが必要です!
やり方は前回の記事にて(再掲)
「章分けロード型」はフォロワー様から教わったやり方になります!
ロード時に必ず通るmake.ksへスクリプトを直接書き込むためエディタソフト必須です。変数を使って今いる章を特定し、章で使う素材をプリロードし直すというものです。分割&ロードによるプリロード漏れ特効……!ただしプレイ環境とプリロードの量によってはロード時に毎度時間がかかるかもしれません。
ティラノビルダーだと章の頭でプリロードとシナリオ頭でプリロード、と同じ素材を2回プリロードすることになってしまいますが、音楽ファイルと異なり画像だけならゲームが固まることはない気がします。でもどちらかと言うとティラノスクリプト向けな気がします。
※音楽ファイルの二重プリロードによるゲームのフリーズはおそらく最新版では修正されているのですが、なんか心配になってしまう病
当方はまだやったことがないため詳しく解説できないので(すみません)、教わったツイートの方を参考に貼らせていただきます!
さらにこの方法を教えてくださった作者様の、実際にこの方法でプリロードを行なっている作品がこちらです!!ぜひに!!!!ありがとうございました!!
「完全同時並行型」はこちらのティラノスクリプトについての記事を読み参考にさせていただきました!!
プリロードについてもお話されておりますので是非ご一読あれ〜
つまり[preload]のwaitというパラメータを“false”にすると、ゲームと同時並行でプリロードが進むというものです。ティラノビルダーの自動プリロードも同じ仕組みですが、ゲーム起動時(first.ks)のプリロードもこれにすることでプレイヤーにプリロードしますか?と聞いたりプリロードで待たせたりせずにゲームが開始できます。ロードして再開する時も裏でプリロードが走るので、間に合うかは不明ですが大事なシーンのプリロード漏れは防げそう!
なあんだ、バックグラウンドでプリロードしてくれるんだったら事前告知や小分けや分割をしなくてもここに全素材をつっこめば良いんじゃないか?と思うかもしれませんが、それはマズイと思います。
低スペックパソコンで大量のプリロードとゲーム進行を同時にやったら……どうなると思う……?
いや検証したことがないので分からないのですが、参考にさせて頂いた先ほどの記事を読めばなんとなくお察し頂けるのではないでしょうか。プレイヤーを待たせないとはいえ、パソコンの処理を思うとプリロードする素材は選ばなくてはいけないという感じです。
私はティラノビルダー使いのため、ティラノスクリプト使いの方が最初のプリロード以外にどこでプリロードを挟んでいるかちょっと気になりました。プリロードのコードを一括取得する記事も読んだことがあるのですが、スクリプト使いは大変だなあ……!と思うなど……!
ティラノビルダーは素材の場所をパス指定したコードも自動的に作ってくれるし、いつまでもビルダーを卒業できる気がしない当方でした。
色々と考えてみて
ティラノビルダー使いの私の目線から勝手に色々と挙げて解説もどきをお送りしてしまいました。
様々なパターンが多く、作品が短くても使用するデータ量がどでかくて配慮しなきゃいけない場合もあるし、低スペックパソコンにそこまで付き合っていられねえ……というのもめっちゃ分かるなあと思いました。
しかしクレジット等に「本ソフトによって発生したいかなる問題につきましては一切の責任を負いかねます」と記載するとはいえ、プリロードが原因でパソコンへ大きな負荷をかけるのはやめたいなと思います。
そして絶対に全ての画像を事前にプリロードしなきゃいけない!!ということはないので、初心者は今まで通りティラノビルダーを使えばいいと思うし、作品をリリースしてブラウザ版での挙動を実際に手に取り、改善したくなったら手を出せばこのような正解のない世界がございますよという話になりそうです。
とりあえず
本日の学びはこれ
長々とありがとうございました!