Factorioで巨大な工場を建設し、自動化を極める過程で、多くのプレイヤーが直面するのがゲームのパフォーマンス低下です。特に大規模な工場では、ゲームの速度を示すUPS(Updates Per Second)が低下し、ゲームプレイに支障をきたすことがあります。このUPS低下の主な原因は、ゲームが1フレームあたりに処理しなければならない計算量が増加することにあります。Factorioでは、この「時間のかかる処理」を診断するための強力なツールが用意されています。
Factorioのパフォーマンス指標:FPSとUPS
ゲームのパフォーマンスを語る上で重要なのがFPS(Frames Per Second)とUPS(Updates Per Second)です。
- FPS:画面が1秒間に何回更新されるかを示します。グラフィック性能に依存します。
- UPS:ゲーム内のシミュレーションが1秒間に何回更新されるかを示します。工場の規模や複雑さ、エンティティの数など、ゲームロジックの処理量に依存します。
Factorioでは、通常FPSとUPSは同期していますが、UPSが低下するとFPSもUPSに合わせて低下します。つまり、ゲームがカクカクしたり遅くなったりするのは、多くの場合UPSの低下が原因です。このUPS低下を改善するためには、「時間のかかる処理」を特定する必要があります。
「時間のかかる処理」画面へのアクセス
ゲーム内のデバッグ設定を利用することで、ゲームの各要素がどれだけ処理時間を消費しているかを確認できます。
- ゲーム中に
F4
キーを押して「Debug settings」メニューを開きます。 - 表示されるオプションの中から、以下の3つを有効にします。
show-fps
: 画面右上にFPSとUPSカウンターを表示します。show-time-usage
: ゲームの主要なシステム(エンティティ、回路、輸送ベルトなど)が消費する処理時間を詳細に表示します。show-entity-time-usage
: 個別のエンティティタイプ(インサーター、組立機など)が消費する処理時間を表示します。
これらの設定を有効にすると、画面の右側などに詳細なパフォーマンス情報が表示されます。
「時間のかかる処理」画面の読み解き方
show-time-usage
で表示される画面は、ゲームの各システムが1フレーム(または1チック)あたりに消費する処理時間(ミリ秒)を示しています。
表示される項目は多岐にわたりますが、特にUPS低下の原因として注目すべきは以下の項目です。
entity_update
: エンティティ(組立機、採掘機、炉、インサーターなど)の更新処理。transport_lines
: 輸送ベルト上のアイテムの流れやスプリッターの処理。circuit_network
: 回路ネットワークの処理。特に大規模・複雑な回路は負荷が高くなりがちです。fluids
: 液体(水、石油、溶岩など)の流体システムの処理。パイプネットワークが大きいと負荷が増加します。electric_network
: 電力ネットワークの処理。特に蓄電池やソーラーパネルが多いと影響が出ることがあります。
画面の列には、平均時間や最大時間などが表示されます。持続的なUPS低下の場合は平均時間(最初の列)、瞬間的なカクつきやフリーズの場合は最大時間(3番目の列)に注目し、数値が大きい項目がボトルネックとなっている可能性が高いです。
さらに詳細を知りたい場合は、show-entity-time-usage
を有効にすることで、どの種類のエンティティ(例:特定の種類のインサーター、特定の組立機)が最も時間を消費しているかを確認できます。これにより、ピンポイントで改善対象を絞り込むことが可能になります。
診断結果に基づく改善策
「時間のかかる処理」を特定したら、それに応じて対策を講じます。Factorio automationにおけるEfficiencyの追求は、パフォーマンス改善に不可欠です。
- **Entity Updateが重い場合**:
- インサーターや組立機、採掘機などが原因であれば、それらの数を減らす、より効率の良いモジュール(スピードモジュール、効率モジュール)を使用する、または処理能力の高い上位設備に置き換えることを検討します。
- 特にインサーターは数が多いと負荷になりやすいため、スタックインサーターの活用や、ベルトではなく列車やロボットによる輸送に切り替えることも有効です。
- **Transport Linesが重い場合**:
- ベルト上のアイテム量が多すぎる、ベルトが長すぎる、スプリッターが複雑すぎるなどが原因と考えられます。
- ベルトの代わりに列車やロボットによる長距離輸送を導入する、ベルトの密度を最適化する、必要のないアイテムがベルトに乗らないように工夫するなどの対策があります。Factorio blueprintを活用し、最適化されたベルトラインの設計を導入するのも良い方法です。
- **Circuit Networkが重い場合**:
- 複雑すぎるロジック、大量の信号処理、多くのコンビネーターや電柱が原因となります。
- 回路を単純化する、不要な回路を撤去する、処理をまとめて負荷を分散するなどの見直しが必要です。
- **Fluidsが重い場合**:
- 巨大なパイプネットワーク、多くのポンプやタンクが原因となります。
- パイプの長さを短くする、ポンプを適切に配置する、流体輸送に列車タンクを活用するなどの対策が考えられます。
Factorio Beginnerの段階ではあまり気にすることではないかもしれませんが、工場が大規模になるにつれてパフォーマンス診断と最適化は重要なスキルとなります。コミュニティが共有するFriday FactsやFactorio Youtubeチャンネルなどでも、パフォーマンスに関する情報や最適化テクニックが共有されていることがあります。
まとめ
Factorioにおけるパフォーマンス診断は、F4
キーからアクセスできる「時間のかかる処理」画面を読み解くことから始まります。FPSとUPSの違いを理解し、どのシステムやエンティティがゲームに負荷をかけているかを特定することで、効果的な改善策を講じることが可能になります。工場を効率化し、Factoryをさらに巨大化させるためには、この診断と最適化のプロセスが不可欠です。継続的にパフォーマンスを監視し、ボトルネックを解消していくことで、快適なFactorioライフを長く楽しむことができるでしょう。