ゼロから始めるFactorioの鉄道構築(駅と発車条件編)
[Factorio] [2025/02/05 23:00]
前回の記事までで、線路を引き信号を置いて列車をスムーズに走らせる方法を紹介した。
ここでは線路に駅を置き、列車の時刻表を設定する点について様々な要素を紹介したい。
2025/2/5更新:
記事をV2.0向けに更新しました。V1.1とV2.0の差分はこちらの記事にまとめました。
基本編 > 信号編 > 連動信号編 > 駅と発車条件編 > 便利な機能編
同じ名前の駅を複数配置し、列車に選ばせる
Factorioの鉄道では、複数の駅を同じ名前にすることができる。
列車はその駅に向かう場合、同じ名前の複数の駅のうち1つを自動で選び、そこへ向かって走ってくれる。
例えば、マップのあちこちに油田が散らばっているとしよう。
そのすべてに駅を置き、「油田駅」という同じ駅名を設定する。
列車には、「製油所」と「油田駅」の2つの駅をピストン運転する時刻表を設定しておく。
3か所の駅に同じ「油田駅」という名前を割り当てた例。
左の「油田駅」だけ赤い文字なのは、
その駅が回路の作動条件によって無効化されているという表示。
右は時刻表の設定例。同じ名前の駅が複数あっても、時刻表的には製油所と油田駅をピストン運転するだけの単純な内容でいい。
この場合、列車は製油所を出発すると複数ある「油田駅」のうち手近な1つを自動で選び、そこへ向かってくれる。
基本的には最寄りの油田駅へ行くが、そこまでの経路に列車の渋滞が起きていたりすると、渋滞のないほうの油田駅へ向かってくれる。
列車が多ければ行き先も分散し、こんな簡単な仕組みだけで複数の油田から1か所の製油所へ原油をかき集める列車軍団を構築できる。
また、駅には列車数上限を設定することができる。
これは駅が受け入れ可能な列車の数を制限する機能で、例えば上限を2に設定しておけば、
列車は一度に2本までならその駅に向かうことができるが、3本目の列車は上限を超えるのでその駅を候補から外し、
駅名が同じでまだ列車数上限に達していない駅を探すようになる。
これを使うことで上記した列車軍団を積極的に複数の駅へ分散させることが出来る。
本記事シリーズの冒頭で貼った画像がまさにこれで、6か所の採掘場から銅鉱石をかき集め、
銅板工場へ送り込む44本の列車軍団である。
もう少し詳しく紹介すると、この軍団は「ゴミ取り駅」→「貨物を降ろす駅」→「採掘場」という3駅が時刻表に設定されている。
「ゴミ取り駅」というのは、銅鉱石を掘る際に一緒に石や石炭などが掘りあがって貨車に紛れ込むことがあるので、これらを取り出す駅である。
(バルクインサータにブラックリストで銅鉱石を設定してあるので、貨車に銅鉱石以外が載っているとそれを全部取り出してくれる。)
ゴミ取りついでに機関車への燃料補給も行う。
「ゴミ取り駅」は同じ名前の駅が4つあるので、列車は4本の線路に分散して並んでくれる。
「貨物を降ろす駅」は同じ名前の駅が6つあり、それぞれ列車数上限を1~2本に設定してあるので、
ゴミ取りの済んだ列車は上限に空きのある荷下ろし駅へ自動的に収まって銅鉱石を降ろす。
「採掘場」では各鉱床ごとに駅があり、回路を使って列車数上限を設定している。
1つの駅に最低1本、銅鉱石がたくさん貯まると+1本の列車が向かうことで、
列車軍団の各駅への分散と間断ない運び出し、待機用線路長の短縮を図っている。
列車の発車条件は、ゴミ取り駅が「5秒間非アクティブ(=ゴミを取り終わったら発車)」、
貨物を降ろす駅は「貨車が空」、採掘場は「貨車が満杯または5秒間非アクティブ」になっている。
列車数上限は駅の設定画面で設定できる。
同じ名前の駅が複数あっても、駅の列車数上限は駅ごとに個別に設定できる。
このため大規模な採掘場の駅は上限を多くして列車を呼び集め、
小規模な採掘場の駅は上限を少なくして列車があまり来ないようにするといった調整も可能である。
列車は出発地から近い駅を優先的に選ぶので、近い駅ほど上限を抑え気味にしておくと列車が遠くまでよく分散するだろう。
ちなみにマップ上では、駅名は通常は白で表示されるが、列車数上限に達している駅名は水色で、 回路で無効化されている駅名は赤で表示されるので、色で各駅の状態を確認することができる。
列車数上限の設定には注意点がある。
設定された列車数上限を超える列車がその駅に向かおうとすると、列車は上限に空きができるまでひとつ前の駅で立ち往生してしまう。
同じ名前の駅が複数あり、それぞれ列車数上限が設定されている場合は、すべての駅が上限に達すると同様になる。
回避方法としては、同じ名前の駅が複数ある場合は、
それらのうち最も出発地点から遠い駅について、列車数上限を解除(無制限受け入れに)しておこう。
すると、列車はとりあえずその駅に向かって発車する。
発車後、もっと近い駅に空きができると列車はそちらに行き先変更してくれるので、各列車がスムーズに走行できる。
ただしこの方法でも、極端に大量な列車が押し寄せると行き先変更できなかった列車たちが最も遠い駅まで大行列を起こすので、無理は禁物である。
また、同じ名前の駅が複数あり、そのうち1つ以上がたどり着けない(線路の繋がっていない)場所にあり、
到達可能なすべての駅が無効または列車数上限に達している場合、新たにその駅に向かう列車はたどり着けない駅へのルートを計算して
「到達経路が見つかりません」のエラーになる。
とくに走行中の列車が回路で駅を無効化されて行き先変更でこの状況に陥ると、
主要幹線や交差点上で列車が緊急停止する場合もあるので注意しよう。
エラーが起きた場合は、下で紹介する臨時駅を設置するの方法で問題個所を洗い出そう。
エラーが出ている機関車をクリックして、そこから目的地に向かっていくつか臨時駅を設置してみよう。
途中で経路計算がおかしくなった場合は、その直前の臨時駅と問題の起きた臨時駅の間に原因がある。
地図をズームしてもっと細かく臨時駅を置き、原因の正確な場所を突き止めよう。
機関車の発車条件について
機関車には駅を発車する条件を設定できる。発車条件には以下のパターンがある。
名前 | 意味 | ポイント |
---|---|---|
乗客あり | 列車に工場長が乗っていれば発車する | |
乗客なし | 列車に工場長が乗っていなければ発車する | |
回路による | 回路信号が条件を満たしたら発車する |
駅に回路が繋がっていて駅の回路設定が「✅列車に送る」の場合、
駅に入力された回路信号が列車にも届く。 信号が設定した条件を満たすと列車は発車する。 |
流体数 | 列車に積まれた流体が指定された量になったら発車する | タンク貨車は1両満タンで50,000入る。 |
燃料(~の機関車) | 機関車の燃料が指定した数になったら発車する | |
燃料が満タン | 機関車に燃料が満載されていたら発車する | |
経過した時間 | 駅に到着後、設定した時間停車後に発車する | |
貨物あり | 貨物が積まれていたら発車する | 積み荷は何でも、流体でも、1個でもあれば貨物あり扱い。 |
貨物アイテム数 | 列車に積まれたアイテムが指定された個数になったら発車する |
例えば「鉄鉱石を1000個以上積んだら発車」のような条件を設定できる。列車に貨車が複数ある場合は列車全体の合計で考える。 タンク貨車の貨物は「流体数」、それ以外は「貨物アイテム数」条件で判定する。 イコールによる判定は状況次第で飛び越しが起きるので、なるべく以上・以下で判定したほうが安全。 (例えば発車条件が「鉄鉱石=1000」の場合、 鉄鉱石を998個積んだ状態からインサータで3個積むと1001個に数値が飛び越してしまうため列車は発車できない。 「鉄鉱石≧1000」なら発車できる。) |
貨物車両が満杯 | 貨物車両が全車満杯になったら発車する |
例えば鉄鉱石は1スロットに最大100個入るので、99個しか入っていないスロットが1か所でもあると「満杯」ではないと判定される。 列車が発車するには列車に連結されたすべての貨車のすべてのスロットが満杯になる必要がある。タンク貨車も含む。 |
貨物車両が空 | 貨物車両が全車空荷になったら発車する | 機関車の燃料スロットは貨物とは数えない。 |
非アクティブ | 荷物の積み降ろし終了後に発車する | 貨車のアイテムが増減しない状態が設定した時間続くと積み下ろし完了と判断される。 |
駅が満杯 | 指定した駅が列車数上限に達していたら発車 |
どの駅の列車数上限を条件とするかを選べる(選び忘れに注意)。 同じ名前の駅が複数ある場合はその全てが上限に達していれば満杯扱いになる。 |
駅が満杯でない | 指定した駅が列車数上限に達していなければ発車 |
発車条件は駅ごとに複数設定でき、ANDとORで条件を組み合わせることができる。
例えば「貨物車両が満杯」AND「乗客あり」であれば、貨物車両が満杯で、かつ、工場長が乗っている時だけ列車は発車する。
「貨物車両が満杯」OR「乗客あり」であれば、貨物車両が満杯か、または、工場長が乗っている時だけ列車は発車する。
複雑な条件が設定された機関車の時刻表。
ここでは採掘場駅の発車条件に「貨車が満杯」OR「5秒間の非アクティブ」を発車条件に指定している。
これは、例えば採掘場で鉄鉱石と石炭が両方掘れてしまうときに便利。
もし貨車が鉄鉱石で満杯になれば、「貨車が満杯」の条件によって列車は即座に発車する。
もし貨車に石炭が端数だけ紛れ込んで貨車が満杯にならなかったとしても、
積み込みが5秒間止まると「5秒間の非アクティブ」の条件によって列車は発車する。
これにより、アイテムの混入で列車の運行がストップしてしまう事態を防ぐことが出来る。
ちなみに、時刻表を設定した機関車をShift+右クリックすると、その機関車の設定をコピーできる。
コピー後に他の機関車をShift+左クリックすると設定を貼り付けられるので、同じ時刻表の列車を複数走らせたいときに便利。
また、時刻表画面の駅名と×ボタンの間に表示されている蛇腹部分をマウスで掴むことで駅をドラッグ&ドロップでき、
駅の停車順を入れ替えることが出来る。
1つの駅に発車条件が2つ以上登録されている場合に限り、発車条件も同じようにドラッグして入れ替えることができる。
発車条件を設定しない
上記で駅の発車条件を紹介したが、もうひとつ、発車条件をあえて設定しないという選択肢もある。
発車条件が設定されていない駅は通過駅となり、状況が許せば列車はノンストップで通過する。
工場と採掘場の間に通過駅(「通過地点」駅)を入れてみた例。
発車条件の右側には発車条件を削除するための「×」ボタンがついているので、すべての発車条件を削除すればその駅を通過駅にできる。
通過駅は以下のような用途に使える。
- 混雑する駅がある場合、本線とは別に線路を引いて“駐車場”を作り、駐車場の中か出口に通過駅を設置しておくと、 列車は駐車場の中で待機するので、本線が塞がれるのを防げる。(以下図参照。)
- 列車数上限を設定した駅がある場合、その駅に上限を超える列車が向かおうとすると、列車は目的駅が空くまで出発駅で発車待ちしてしまう。
その場合も同様に駐車場と通過駅を設置しておくと、目的地がいっぱいでもとりあえず駐車場までは走行してくれるので、出発駅が埋まりっぱなしになるのを防げる。 - 混雑する線路がある場合、別の線路に駅を置いて通過駅に設定し、重要ではない列車を遠回りさせることで線路の混雑を緩和できる。
- スイッチバック駅を通過駅にすると、列車は一旦停車後即座にバックを開始する。
例えば軽量化素材の生産には銅板・鋼鉄・プラスチックが必要だが、
1枚目の画像では工場に素材の搬入列車が押し寄せて本線を塞いでしまっている。
この場合、2枚目の画像のように線路を並べて駐車場とし、そこに通過駅を並べておく。
すると列車は駐車場内に溜まっていき、本線を空けることが出来る。
(状況にもよるが、この図の場合は目的地の駅には列車数上限=1の設定をしておく。
すると駐車場に並んだ列車たちは、その1枠を獲得した者から順次再発車する。
駐車場駅には列車数上限をつけない。つけると、駐車枠が埋まると列車が出発駅で止まってしまう。)
ちなみにこの図は駐車場を並列な線路としたが、同じ名前の駅が2つ以上ある場合の駐車場ならいわゆるフォーク並び型にしてもいい。
その場合はフォークの分岐の手前に1つだけ通過駅を置くと、列車はそこで一旦停止し空いた目的駅に向かって分岐していく。
駐車場を並列な線路にする場合、入口手前には必ず連動式列車用信号を置こう。そうすれば列車は空いている駐車枠に入る。
通常の列車用信号を使うと既に列車がいる駐車枠に追加で入ろうとしてつっかえ、事態を余計に悪くする可能性がある。
ちなみに通過駅を使わず、列車用信号や連動式列車用信号を駆使することで駐車場を作る方法もある。
1つの課題に複数の解法があるのがFactorioのいいところなので、その場に合わせたやり方をいろいろ模索して楽しもう。
臨時駅を設置する
ここまで説明した通り、列車は駅に向かって自動で走行するが、
たまには新工場の建設などの用事で駅のない場所に列車を止めたいことがあるかもしれない。
そんな時は臨時駅を使うと、駅のない場所へ列車を自動停車させることが出来る。
臨時駅を置くには、まず機関車をクリックして時刻表画面を出す。
時刻表右側の地図上の線路にマウスカーソルを合わせCtrl+クリックすると、その場所に臨時駅が設定される。
あとは列車を自動モードにすれば、列車は自動的にそこへ向かう。
注意:地図はズームアウト状態だと上の画像のようなシンプル表示、
ズームインすると実際の現地の映像に切り替わるが、臨時駅の設定はズームアウト状態のときのみ可能。
臨時駅はあくまで臨時なので、現地に到着して発車条件を満たすと時刻表から削除される。
発車条件を満たす前に任意で別の場所へ発車させると、臨時駅は残る。
なお通常の駅と同様に、臨時駅も発車条件を変更できる。
たとえば「予定外の工場に立ち寄って、荷物を積んで戻ってきてほしい」と思う場合は、臨時駅の発車条件を「貨車が満杯」にしておくと
あとは放っておくだけで荷物を満載して帰ってきてくれるはずである。
割り込みを使う
時刻表の割り込み機能を使うと、特定の条件を満たした場合に自動で臨時駅を挿入できる。
例えば「燃料が少ないとき」に「補給駅に臨時停車する」を設定すれば、
燃料切れを起こしそうになると自己判断で燃料補給に向かってくれる能動的な列車を作れる。
機関車をクリックして時刻表画面を表示すると、左下に「割り込みを追加」ボタンがある。
ボタンをクリックして割り込みルール名を入力すると「割り込みを変更」ダイアログが表示され、割り込みの条件と臨時停車させたい駅を設定できる。
画像の場合は燃料が「固形燃料<10」のとき「補給駅に30秒停車」と設定されているので、
燃料が減ったときだけ臨時で補給駅に行き、燃料補給をすると臨時駅が消えるので自動で元の運転パターンに復帰してくれる。
割り込みを設定すると、列車が駅を発車する際か列車を自動モードに切り替える際に判定が行われ、 設定した条件がYESと判断されると次の駅が臨時駅になるよう割り込みが発生する。
なお割り込みは、次駅が臨時駅(割り込みで挿入された臨時駅も含む)の場合は挿入されない。
ただし割り込み設定画面で「✅他の割り込みに対して割り込み可能」が設定されている場合は臨時駅の前にさらに割り込みをかけることができる。
割り込み機能を大規模に使うと、例えば鉄鉱石も銅鉱石もウランの採掘場の駅もすべて「採掘場駅」の同駅名にし、 あとは駅を発車する際に割り込みで 「燃料が少なければ補給駅へ」 「貨車に銅鉱石があれば銅板工場へ」「鉄鉱石があれば鉄板工場へ」 「ウラン鉱石があればウラン濃縮工場へ」 「貨車が空なら採掘場駅へ」 のように、固定の停車駅を一切持たず状況に応じて割り込みだけで臨機応変に走るAI列車も作ることができる。
ワイルドカードを使う
上記した割り込み機能はかなり自由度が高い機能なのだが、
割り込みを複数用意しようとすると設定操作がやや面倒だ。
そんなときはワイルドカードを使うと、複数の割り込みを一括で設定できる。
ワイルドカードを割り込み条件や臨時停車駅の駅名に含ませた場合、
ワイルドカードの部分が列車に載っているアイテムや信号に順番に置き換えられて割り込みの判定が行われる。
例えば列車に鉄鉱石・銅鉱石・ウラン鉱石が積まれていて、割り込み条件に
「ワイルドカードが200以上のときワイルドカードを降ろす駅に臨時停車」
が設定されていた場合、駅発車時にワイルドカードがアイテムに置き換えられて
「鉄鉱石が200以上のとき鉄鉱石を降ろす駅に臨時停車」
「銅鉱石が200以上のとき銅鉱石を降ろす駅に臨時停車」
「ウラン鉱石が200以上のときウラン鉱石を降ろす駅に臨時停車」
という割り込み判定が順番に行われる。
1枚目の図では割り込み条件に「貨物アイテム数」を選び、
「アイテムパラメーターが200以上のときアイテムパラメーターを降ろす駅に臨時停車」を設定した。
アイテムパラメーターはワイルドカードの1つで、割り込み判定の際に貨車に積まれているアイテムに置換される。
2枚目の画像では駅発車時に貨車に鉄鉱石が250個積まれていたので、アイテムパラメーターが鉄鉱石に置換され、
「鉄鉱石が200以上のとき鉄鉱石を降ろす駅に臨時停車」の判定が行われた結果、臨時駅「鉄鉱石を降ろす」が自動挿入されている。
あとは、「鉄鉱石を降ろす」という名前の駅がどこかに設置されていれば、列車はそこへ向かってくれる。
ちなみに駅名にアイテムパラメーターや鉄鉱石アイコンを入れるには、
駅名記入欄の右にあるピクチャアイコンをクリックしよう。
アイテムパラメーターを使うことで、貨車に載っているアイテムを条件にした割り込みを集約でき、割り込み条件を複数設定する手間を省くことができる。
また列車に積まれた燃料に置換される燃料パラメーター、流体に置換される流体パラメーター、
回路信号に置換されるシグナルパラメーターというワイルドカードも用意されており、同様に割り込みルールを集約できる。
例えば「燃料パラメーター<20のとき燃料パラメーターの補給駅に臨時停車」と設定しておけば、
機関車の燃料が固形燃料なら固形燃料の補給駅に、石炭なら石炭の補給駅に臨時停車してくれる。
注意点として、これらのワイルドカードは列車に積まれているアイテムや列車に入力されている回路信号を
(量が多い順とか、貨車内の並び順とかではなく)アイテム一覧画面のアイテム順に調べる形で判定するため、判定の順番が重要になる。
例えば銅鉱石と鉄鉱石とウラン鉱石が積まれていた場合、鉄鉱石→銅鉱石→ウラン鉱石の順に判定が行われる。
そしてそもそも列車に載っていないアイテムや入力されていない信号に至っては順番が来ないので判定そのものが行われない。
例えば「燃料パラメーター=0」のとき「補給駅に臨時停車する」のような割り込みを設定しても、
燃料が既に無いなら燃料パラメーターは何も調べないのだから割り込みは発生しない。
この場合は「燃料パラメーター<20」のような条件を設定し、燃料がまだ残っているうちに判定がYESになるよう考慮する必要がある。
判定のタイミングは列車を自動モードに切り替えた際かまたは駅発車時のみなので、
駅間走行中に「燃料が減って来たから行き先変更しよう」とはならない点も注意が必要である。
ワイルドカードは正しく使えば割り込み設定を簡単にできるが、難易度がいささか高いと個人的に思う。
また、アイテムパラメーターは貨車に乗っているアイテムすべてに自動で置換されるため、
貨車に採掘機などをうっかり載せてしまうと採掘機を降ろす駅を見つけられずに緊急停車に至ったりと、想定外の事態に弱い部分もある。
(まさにそんなときのために「到達経路なしの場合」という割り込み条件まで用意されているのがまたニクいのだが…。)
3個や5個程度の割り込みなら無理にワイルドカードを使わず、地道に1つずつ割り込みを設定するほうがよほどわかりやすいのではないだろうか。
割り込みが20や50に増えて設定が面倒になってきた際には、ワイルドカードのことを思い出したらきっと幸せになれるだろう。
なお燃料パラメーターに関しては、全列車の燃料を統一してワイルドカード自体を不要にしてしまうというアプローチもある。
というか、燃料が違う列車が混在すると速い列車が遅い列車を“煽り運転”
して加速とブレーキを繰り返し燃費が悪化するうえ速度も頭打ちになってしまう。
これで、ひととおり列車と信号に関する基本的なことは紹介できた。
しかし、Factorioの列車や駅や信号には他にも鉄道運行を便利にする様々な機能が用意されている。
次回の記事では、そのあたりを紹介したい。
基本編 > 信号編 > 連動信号編 > 駅と発車条件編 > 便利な機能編
この記事を評価
この記事にコメント
- ...