初めに
こんにちは。ケミカルです。
突然ですが、あなたがCities: Skylinesのセーブデータを読み込んでプレイ画面に到達するまで、時間はどれぐらい掛かりますか?
私はPS4,Switchなど、家庭用ゲーム機版のCities: Skylinesを実際にプレイしたわけではありませんが、私が所属するコミュニティのコンソール版プレイヤーからは「人口10万人都市でも1分で起動する」「ロードは2~30秒ぐらいかな」などと話を聞きます。
通常のゲームプレイでは、ロード時間は1分以内だとすると、何ら苦もなくロードを待つことができるでしょう。しかし、PC版ではMODやアセットがあります。MODやアセットを導入するたびにロード時間は長くなり、Tipsの上で旋回するChirper君をただひたすら眺める時間も増えます。
これが5分ならまだしも、10分,20分,30分と待たされると、Cities: Skylinesのプレイ時間が短くなってしまいます。
さらにMODやアセットを多く導入すると、様々な理由でエラーが発生し、正常にアセットやMODを使えなかったり、ゲーム開始時やプレイ中にエラーが発生したり、Cities: Skylinesのフリーズ、最悪の場合クラッシュなど、様々な問題が発生する可能性があります。
こうなっては、Cities: Skylinesを起動すること自体が億劫になってしまいかねません。ストレス発散のためにゲームを始めたのに、ゲームをする前からストレスが溜まってしまっては本末転倒でしょう。
そこでオススメしたいのが、タイトルにあるMOD「Loading Screen Mod」です。
Cities: Skylinesの読み込みに特化したMODで、MOD・アセットの導入状況で程度は大きく異なりますが、ロード時間を早くしたり、何故Cities: Skylinesが起動できないのか原因究明をしたり、ロードに関する様々なサポートをしてくれる、いわば縁の下の力持ちのようなMODです。また、既にMODを導入しているユーザーの中にも、Loading Screen Modの機能を把握できていないであろう方を多く見かけますから、この機会に是非ご活用頂ければと思います。
なお、例によって導入は自己責任ということでお願いいたします。
Loading Screen Modを導入する
MOD全てに共通することですが、コンテンツマネージャー→MODから、Loading Screen Modを有効にすることを忘れないでください。
Loading Screen Modを有効にした状態でセーブデータをロードすると、MOD専用のロード画面に切り替わります。
Loading Screen Modの使い方(初級編)
大きく4つのウインドウが追加され、現在のセーブデータの読み込み状況を細かく閲覧できます。
一番大きな左側のウインドウ①:「大まかに今何の処理をしているのか」と「今何のアセットをロードしているのか」の履歴を残すウインドウ
中央一番上のウインドウ②:「アセット総数」と「アセットの読み込み速度」に関するウインドウ
中央上から2番目のウインドウ③:「ソフト上のロード時間」と「メモリ」に関するウインドウ
中央一番下のウインドウ④:「①より詳細な現在実行中の処理」に関するウインドウ
先ず始めに、このロード画面では白色・黄色・灰色の3色の文字でログが構成されています。
これはあなたがCities: Skylinesに何のMOD・アセットを導入しているか、MOD・アセットの導入状況に大きく依存しますが、先ほどの3色以外の色、特に赤色の文字でログが出た場合には、ゲームプレイに大きな影響を及ぼす何かしらの問題が起きていると判断すべきです。ざっくりどのような問題が起きているかは、どのウインドウで赤文字が出ているかで判断できます。
①のウインドウで出る赤文字は、赤色の文字で書かれているアセットに重大な問題があることを示しています。あなたがサブスクライブしたアセットから問題が生じているので、アセットをマップ上に配置するときや、アセットがマップ上にある状態でゲーム内時間を開始した時に問題が起こる可能性が示唆されています。既にアセットがマップ上に配置されているセーブデータの場合には、セーブデータの読み込み不全が起こる可能性もあります。
③のウインドウで出る赤文字は、Cities: Skylinesを起動するパソコンのメモリに問題があることを示しています。導入したアセットの読み込み処理によって物理メモリ・仮想メモリが共に圧迫され、Windowsシステムや他の処理に使われるメモリ分も合わせて、メモリが非常に逼迫している状態です。メモリが足りないので、導入しているアセットを減らすか、メモリを増設するか検討すべきでしょう。(Loading Screen Modのプログラムの仕様上、Windows OSのみに表示されます。)
④のウインドウで出る赤文字は、プログラムの起動処理や読み込み処理そのものに問題があることを示しています。Cities: Skylinesの起動そのものに問題があるため、④のウインドウに赤文字が表示されるのは赤文字の中でも最も深刻な状態で、この場合、ほぼ確実にこのセーブデータを正常に起動できない状態にあります。問題の発生原因は様々なため断言はできないものの、まずはMOD同士の干渉問題を疑ってみるとよいでしょう。
ともかく、読み込み中に赤文字が出た場合は、MOD・アセットの導入環境を見直す必要があると考えるべきです。
読み込みの処理を軽減しよう(初級編)
先ず、Loading Screen Modによってロードが軽減されるのは、バニラのものではないアセット(カスタムアセット)に限定されることを覚えておいてください。
読み込み処理を軽減できる項目は6つあります。
「Load enabled assets」は、コンテンツマネージャーで有効にしたアセットをロードする機能です。逆にこれをオフにすることで、有効なアセットをロードしないことができます。
「Load used assets」は、読み込むセーブデータのマップにあるアセットをロードする機能です。コンテンツマネージャーでオフ状態のアセットでも、マップで使用されていれば読み込む旨のオプションです。
「Share textures」「Share materials」「Share meshes」は、アセット制作者さんがテクスチャやメッシュを他のアセットに共有する設定を仕込んでいる場合、この読み込みが軽減できます。
例えば複数のアセットが格納されているアイテムで、様々な3Dモデルがあるものの、テクスチャが内在する複数のアセットで共有されている場合は「Share textures」が機能します。
「Optimize thumbnails」は、ツールバーで表示されるアセットのアイコンやアセットに関する説明文の読み込みの最適化を行う機能です。
筆者はこのオプション機能全機能オンにしていますが、私のプレイ環境では特段目立った問題はありませんでした。
レポートを書いてみよう(中級編)
Loading Screen Modの真骨頂は、オプションで追加できるReport機能でしょう。
Reportは2種類あり、どちらもHTMLファイルを生成します。
オプション[Reporting]の上2つをオンにしてください。
HTMLですからWebブラウザ等を使い閲覧してください。Cities: Skylinesでは閲覧できません。
読み込みに問題が生じた時に備えて、HTMLファイルの生成先のディレクトリは、閲覧しやすいアドレスにしておくとよいでしょう(ショートカットも良きでしょう)。
ReportのHTMLファイルの大きさはロードするアセットの数に比例して大きくなります。参考までに、筆者の執筆時点でのプレイ環境ではアセットを1万個程読み込みしていますが、一度のロードで生成される2つのReportは、合わせて1.5MBほどです。Reportを生成しておいて損はないでしょう。
ちなみに、Reportが生成されるのは、全てのアセットの読み込みが終了した時です。
ロード画面④のウインドウに赤文字が出ると、アセットの読み込みが未完のままフリーズ・クラッシュしてしまい、Reportが生成されない可能性があります。ゲームが非常に深刻な状態になっていますから、留意願います。
2つのReportを読んでみよう(中級編)
生成される2つのReportは「Assets Report」「Assets Browser」と呼ばれます。
「Assets Report」では、報告書の形式でシティーズの読み込みの状態を確認することができます。
筆者はこちらが特に重要だと判断していますので、こちらを重点的に紹介させていただきます。
例えば④のウインドウに表示されたアセットやロード速度など、MOD専用のロード画面で表示される内容はもちろん、総ロード時間やカスタムアセットの平均読み込み速度など、ロード画面では確認できない詳細なデータも閲覧できます。
最上段の”Assets that failed to load”は、MOD専用のロード画面でいう④のFailedに当たります。アセットが明記されている場合は、基本的にそのアセットが原因で読み込みが失敗しています。先述の通り、MODの干渉問題の可能性もありますが、もちろんこれに限った問題とも限りません。エラー・アセットの概要欄・前提MOD・前提アセットなど、要項をしっかり読み直して、深刻な問題の原因を究明してみてください。
2段目の”Asset Errors”は、アセットに関する様々なエラーが表示されます。”Invalid LOD texture size”, “Asset naming conflict”など、原因はさまざまですが、アセット名称に添えて検知されたエラーの詳細を確認できます。エラーの分類にはハイパーリンクが貼られており、Loading Screen Modの作者が制作した、そのエラーが見られる原因を推定するスレッドをみることができます。
3段目の”Asset warnings”では、アセットに関する様々な警告メッセージが確認できます。”Very large LOD mesh”, “Very large LOD texture”などがあり、Asset Errorsと同様に、エラーの詳細と、原因を推定するスレッドへのハイパーリンクを使えます。
4段目の”Assets that are missing”は、あなたが持っているカスタムアセットに問題があるときのみ表示されます。これについては8種類に細かく分類されています。
“Building and parks”, “Props”, “Trees”, “Vehicles”, “Nets”, “Nets in building and parks”, “Props in buildings, parks and nets”, “Trees in building, parks and nets”の8種類について、筆者の環境で確認しています。(恐らくCitizensの項目もあるので全部で9種類と推定される)
5段目の”Duplicate asset names”と似ているので一度に説明しますが、”Missing”, “Duplicated”に該当するアセット名がSteam上各配布ページとのハイパーリンク付きで列挙されます。”Missing”の場合は主に3パターンのMissingの事由が考えられます。
- 読み込みしたマップ上にAというアセットがあり、Aがカスタムアセットにない。
- 読み込みしたカスタムアセットAがあり、Aに紐づいたカスタムアセットBがない。
- 上記1,2.以外の様々な、あるいは不明な事由により、カスタムアセットCがない場合。
3パターンとも具体例を画像で提示しますので、参考にしていただければ幸いです。
1.のパターンは、”Building and parks”, “Props”, “Trees”, “Vehicles”, “Nets”,(“Citizens”)の場合に発生します。マップに必要なアセットがサブスクライブされていないことが原因であることがほとんどですから、このパターンの問題は簡単に解消できることでしょう。
2.のパターンは、”Nets in building and parks”, “Props in buildings, parks and nets”, “Trees in building, parks and nets”の場合に発生します。サブスクライブしたアセットの前提MODや前提アセットの見落としが原因であることがほとんどですから、このパターンの問題は簡単に解消できることでしょう。
3.のパターンは、どのカスタムアセットの場合にも発生する問題ですが、ハイパーリンクが設けられていなかったり、アセット名の後に長文が添えられているのが特徴です。下の画像で示した具体例の場合、名前の消されたアセットをCとして意訳すると「『C』がある(はずの)ワークショップ上のアイテムは確かにサブスクライブされているんだけど、『C』はこれに含まれていないよ!」「アセットの作者によって『C』の名前が書き換えられている可能性があるよ!」となります。
文章の内容にもよりますが、自分では解決できない問題である場合もあります。いずれにせよ、特に3.のパターンの問題は簡単には解消できない可能性が高いです。
ちなみに”Duplicated”は名前が重複したアセットがあることを示しています。アンサブスクライブやアセットの無効化が提案されています。
6段目の”The following custom assets are used in this city”は、ズバリこの街で使われているフォロー中のカスタムアセットの一覧です。7段目の”The following enabled assets are currently unnecessary (not used in this city)”=まだ使われていないアセット一覧と組み合わせて活用しましょう。
最後8段目の項は”Loading stats”です。
読み込みをしたメモリの使用状況や読み込み速度など、読み込みに関するパフォーマンスが確認できる項目です。読み込み中には確認できない内容が多く表示されているので、読み込みの良し悪しを評価することもできるでしょう。
「Assets Browser」は今保有しているカスタムアセット全てを閲覧できるブラウザです。
そのアセットが何の種類にあたるのか、そのアセットが使えるのか、そのアセットがロードしたマップ上にあるのか、そのアセットが何のアセットから前提アセットとして要求されているのか、そのアセットが何のアセットを要求しているのか。
ブラウザを使いこなすには「そのアセットの名前」が分かっていることが最も重要です。
ブラウザの優秀な点は
- アセット一つ一つを条件を付けてソートできる
- 名称が分かる特定の1つのアセットについて調べられる
- Hideオプション(詳細は後述)に関係なくステータスを確認できる
- 特定の一つのアセットが要求する前提アセット/前提となるアセットを閲覧できる
ですので、4点はBrowserで確認、それ以外はReportで確認、というのが筆者のオススメです。
問題ある報告か、そうではないのか。(上級編)
Loading Screen Modには「ロード中にグリッチが起きればまもなくロードが完了する」という俗説がありますが、私の知見としては、LSM①のウインドウが激しくスクロールするとき、激しくログの文字が乱れるなどのグリッチが、ロード完了の直前に確認・再現できています。
つまりFailed,Missing,Duplicatedの報告の出過ぎによる問題であり、ある意味このグリッチはLoading Screen Modの悲鳴と言えます。
しかしこの報告の中には、問題は既知のものでありながらも、MOD/アセット作者による問題であるとか、入れずとも問題のないアセットであるとか。問題の原因を100%掌握した状態の、意味のない警告のログがありませんか?(意味のない警告の一例も後述します)
意味のない警告によって、本当に必要な警告がスクロールして流れてしまう。
これでは警告も本末転倒に思います。
そこで、”あるオプション”をオススメさせてください。
“Do not report these custom assets as missing or duplicated:”
このオプションをオンにすると、MODは専用のテキストファイル「Hide.txt」を生成します。
テキストファイルは、ロードが完了するたびに毎度更新され、Missing/Duplicated報告をしたアセットを、アセット名の前に「#」が付いた状態で羅列します。
この「#」を外してテキストファイルを上書き保存することで、アセットに関するMissing/Duplicatedの報告を非可視化できます。
Missing/Duplicatedを意図的に減らすことは、グリッチへの対策にも有効ですから、是非活用したいものです。
(基本的に)問題のない/問題の解決のしようのない警告の一例
- MOD「Tree and Vehicle Props」「Non-Terrain Conforming Props」などから生成されるアセット
(読み込んだカスタムアセットになく、マップ上に存在するため) - 必要のない、Buildings/Parks/Netsが前提アセットとして要求するProps/Trees
- 我々ではなくMOD/アセットの作者さん側に問題のあるアセット
もちろん「#」を削除した場合はそのアセットが報告されない訳ですから、全く別のカスタムアセットをサブスクライブして使うマップデータを読み込む時は、そのたびに一度#をすべてに付与する→読み込む→#を外す→読み込むの処理が必要になる(Missing/Duplicatedしているアセットが把握できなくなる)ため、この手法は一長一短でありますから、シティーズを頻繁に起動してよくReportファイルにアクセスできる方には、是非オススメしたいオプションです。
ちなみに筆者のロード画面は、大分スッキリしております。
Prefab skippingについて(追加更新)
記事の執筆後、後書きとして「※Skipping Prefabオプションに関するアナウンスはしませんでしたが、私の知見が薄いので今回は割愛します。ごめんなさい。Skipping Prefabを使ったことがある、使い方が分かる有識者の方は私、Chemicalまでご一報ください。お待ちしております」と書き込みました。※正しくはPrefab skippingです。
すると、記事配信から数時間後には有識者からご一報があり、Prefab Skippingに関する知見を得ることができました。
Prefab skippingは、バニラアセットを読み込まない機能です。
バニラアセットというのは、通常のゲームプレイであるアセットです。
Prefab skipping機能は、”Do not report these custom assets as missing or duplicated:”機能のHide.txtと同様に、Prefab skipping機能をオンにすると、MOD専用の.txtファイルを生成します。
テキストファイルにバニラアセットの名前を書き込むと、それを読み込まなくなります。
デスノートみたいな感じです。
Prefab skippingを機能させるには、バニラアセットの正式名称を知る必要があります。
「Find It」等のMODを利用して、読み込みたくないバニラアセットの名前を控えておいてください。
オマケ1:軽微に見えて実は重大インシデント!?な報告について
問題が目に見えて発生する警告
- 必要のない、Buildings/Parksが前提アセットとして要求するNets
- マップ上にあるNets
Nets系のアセットは一つ欠けるだけで、マップの読み込みに深刻なダメージを与えかねない存在です。是非とも注意しましょう。
もし現存しないNetsがセーブデータで使われている場合は、「Net Missing Recoverer」などを活用し、Netsの問題を極力排除することをオススメします。
オマケ2:筆者の読み込み環境について
PCスペック:
OS: Windows10 Home
CPU: Intel Core i7-8700 @3.20GHz
ROM C: HDD 1TB + Intel Optane 16GB
RAM: 48GB DDR4 2666MHz
読み込みのパフォーマンス:
MODs: about 100
Assets: 10000over
Loading Speed: 53.7 (Assets/seconds)
Total loading time: 15:23 (minutes:seconds)
※測定は2021年4月8日のものです。総読み込み時間には、動作環境に応じて2分前後のバラつきがあります。
最後に
いかがだったでしょうか。
このコラムが、ロード時間を削減し、サブスクライブしたアセットや読み込むセーブデータの問題を早期に発見し、ストレスの少ないMODシティーズライフの手助けになれば幸いです。読破していただきありがとうございました。
後書きとして、Prefab skipping機能に関する情報を提供してくださったJaijaiさんには深く感謝申し上げます。ありがとうございました。
Chemical