石橋を叩いて壊すページ

ゼロから始めるFactorioの回路構築(基本編)

だいぶ前に「Factorio」というゲームを買った。ロボットアームやベルトコンベアなどを駆使し、工場を作るゲームだ。
採掘機で掘り出した鉄鉱石などの資源を工場で加工してさらにベルトコンベアなどを作り、工場の規模を拡大させていく。
整然と流れる資源や淡々と動き続ける設備などを見ているとさらに改善・拡大欲求が高まり、まさに寝食を忘れるゲームと言える。


最近の我が拠点。多数の列車が目的別に仕分けされたプラットホームに出入りし、9600機の飛行ロボットが全自動で荷物を積み下ろしする。
ほぼ全電力を太陽光パネルと蓄電池で賄い環境にやさしい。
バイターとは無限研究で連射速度3倍・威力10倍化された3600台のレーザータレットと18台の連射速度8倍化長距離砲により話もついて、最近はめっきり顔も見せに来ない。

さて、このゲームには電子回路のような機構がある。
普段は延々と動き続けるだけのロボットアームやその他設備だが、回路につなげることで、条件を指定して動作させることが可能となる。
ただ、いささか取っ掛かりが難しかったため、自分でいろいろ調べたりした。
今回は調べたことをいくらか記事にまとめてみようと思う。

2021/8/27更新:
記事全体と画像をV1.1向けに更新しました。
(2016/7/24) 記事公開。V0.12対応。
(2020/5/24) 記事の内容をV0.12からV0.17対応に更新しました。
(2020/8/28) 記事の内容をV0.17からV1.0対応に更新しました。
(2021/2/7) 記事の内容をV1.0からV1.1対応に更新しました(画像を除く)。

基本編 > 入力・出力・混合編 > 定数・算術回路編 > 条件回路編 > 実践例編 > 累積回路編

回路を使うと何ができるのか?

上にも書いたが、普段は無条件に動き続ける設備を、条件をつけて動作させることができる。
例えば、以下のような使い方が考えられる。以下の例で太字になっている部分が「条件をつけた」部分である。

  • 鉄板から鋼材を作り続ける。
    →回路を使えば、鉄板が充分にあるときだけ、鋼材を作ることができる。
  • 軽油を石油ガスに分解し続ける。
    →回路を使えば、石油ガスが足りないときだけ、軽油を石油ガスに分解することができる。
  • ランプは夜に光る。
    →回路を使えば、チェストの中に燃料/材料が充分あれば消灯し、それらが減ってきたら点灯する、 燃料/材料切れ警告灯として使用できる。
  • 火力発電所は電気を作り続ける。
    →回路を使えば、太陽光発電だけで十分なときは火力発電を停止し、 電気が足りなくなってきたら発電することで、燃料の消費を節約し、汚染を減らすことができる。

特に自分が困るのが、上記例で書いた「軽油を石油ガスに分解」である。
石油ガスを急に大量に消費したとき、タンクの石油ガスが枯渇して、しかし軽油のタンクは満タンで、 「なぜ軽油を石油ガスに分解するプラントを動かさなかったのだろう」と後悔する。
しかし後日、軽油が急に大量に必要になったときには、今度は軽油を石油ガスに分解しすぎて軽油が枯渇しており、 「なぜ軽油を石油ガスに分解するプラントを止めなかったのだろう」と後悔するのである。
回路を上手に使えば、バランスよく軽油を石油ガスに分解することが可能となる。

ほかにも、タンクの液体残量に応じてランプを光らせるとか、材料が減ってきたら自動で列車を呼び寄せて材料を補充するなんてこともできる。
とにかく、「××のときだけ○○する」のように設備を「条件をつけて動作させる」のが回路の役割で、 「常に○○し続ける」でよいなら回路は要らないだろう。

ごく簡単な回路を作ってみよう

Factorioをプレイしている人なら、超巨大な回路を構成してみたいと夢を馳せている人も多いだろう。
しかし千里の道も一歩からと言うし、まずは基礎がしっかりできていなければ事は始まらない。
ここでは手始めに、チェストに鉄板が200枚以上入っていたら、ランプが光ってお知らせするという機能を作ってみよう。

準備するものは以下である。
なお、ランプを使うには「光学技術」、レッドケーブルを使うには「回路ネットワーク」が研究されている必要があるが、それらは全て済ませている前提とする。

チェスト(1個)
本記事では鋼鉄製チェストを使っているが、木製チェストでも貯蔵チェストでも、チェストと名の付くものなら何でも構わない。
レッドケーブル(1本)
回路を作る肝心要となるケーブル。ただの銅線では信号を伝えることはできない。
グリーンケーブルを使ってもよいが、ここでは説明のためレッドケーブルに統一する。
チェストや各種設備と異なり、レッドケーブルやグリーンケーブルは撤去すると消滅する「使い捨て」である。
レッドケーブルの材料は電子基板(緑基板)1枚と銅線1本だから泣くほど高価なわけではないが、使うときは慎重に。
ランプ(1個)
これは普通にただのランプである。
電柱(数本)
ランプを光らせるには電気が要る。
鉄板(200枚)
お題の実践のためにチェストに入れるもの。

材料を準備したら、まずはチェストとランプを地面に設置しよう。
ランプが光るには電気も必要なので、適宜電柱を置いて電気を供給して欲しい。


地面にチェストとランプを置いたところ。

次に、レッドケーブルでチェストとランプをつなぐ。


ホットバーや手荷物からレッドケーブルを取り出し、チェストとランプを順にクリックすれば、ケーブルが接続される。

これで回路がつながった。このとき、回路にはチェストに入っているアイテムの情報が信号として伝わる
例えばチェストに鉄板100枚と銅板50枚が入っていたら、回路には「鉄板が100、銅板が50」という情報が伝わる。

引き続き、ランプをクリックしよう。
回路につながれたランプは、クリックすると設定画面が開く。


回路につながったランプをクリックすると設定画面が開く。

設定画面ではランプが点灯する「作動条件」を設定することができ、作動条件がYESと判断された場合、ランプが点灯する
今回のお題は先に書いたとおり「チェストに鉄板が200枚以上入っていたらランプが光ってお知らせする」なので、ランプの作動条件(ランプが光る条件)には「鉄板が200以上」を設定したい。

実際にやってみよう。ランプの設定画面の作動条件の下の黒い枠をクリックすると、 アイテムの選択画面が表示されるので、ここで鉄板を選んで欲しい。


作動条件の下の黒い枠をクリックすると、このようなアイテム選択画面が表示されるので「鉄板」をクリック。

次に、ランプの設定画面の作動条件の真ん中の不等号をクリックして欲しい。クリックすると6種類の等号・不等号が表示されるはずだ。
これらの記号の意味するところは既にご存じだろうが、おさらいしておくと
> より多い、
< より少ない、
= 等しい、
≧ 以上、
≦ 以下、
≠ 等しくない
である。
今回は、「以上」である「≧」を設定して欲しい。


作動条件の中央部分をクリックすると、このような等号・不等号の選択肢が表示されるので「≧」をクリック。

最後に、不等号の右の黒い枠をクリックして欲しい。
再度アイテムの選択画面が表示されるが、画面下側に数値の入力欄があるので、ここを「200」に変更して「適用」ボタンを押すと設定が保存される。


不等号の右の黒い枠をクリックし、アイテム設定画面の下に数値入力欄があるのでここを「200」に変更して「適用」を押す。


設定が完了したランプの設定画面。作動条件が「鉄板≧200」になっていることに注目。

これで回路の設定は完了である。実際にチェストに鉄板を入れて、ランプが点灯・消灯することを確認しよう。


鉄板を199枚入れたところ。ランプは光らない。


鉄板を200枚入れたところ。ランプが光った。

最早自明であろうが、解説しておこう。
前述したとおり、回路にはチェストの内容物の情報が伝わる。この場合は「鉄板が200」という情報が伝わる。
ランプには作動条件として「鉄板≧200」が設定されているから、伝えられた情報から「鉄板の数」を取り出して「その値が200以上か」を判断した。
判断がYESであるならランプが点灯し、判断がNOであるならランプは消灯する。

その他の雑記

ざっと、覚えておくといいかもしれないもの。

  • 「より多い」と「より少ない」は、それ自体の値は含まない。
    たとえば「200より多い」は201以上、「200より少ない」は199以下のことである。どちらも200は含まない。
    「以上」と「以下」はそれ自体の値を含む。
  • チェストの中に入っていないアイテムの数量は「0」である。
    例えばチェストが空のとき、ランプの作動条件を「鉄板=0」にするとランプが光る。
  • 信号はすべて整数で、小数点以下は切り捨てされる。液体の量などゲーム画面上で小数点以下が表示される値を扱う場合に注意が必要。
  • 手に持っているアイテムを手放す(ホットバー/手荷物に戻す)にはQキーを押す。
  • チェストの中でアイテムが複数のスタックに分割されている場合、それらは合計された値が信号として出力される。
  • アイテムの数が1000個以上の場合は、アイテムの個数は「1.0K」のように表示されるが、この値はどうも四捨五入のようである。
    このためアイテム数が「2.5K」と表示されていると2500個と想像しがちだが、実際には2450など2500に達していない可能性がある。

記事が長くなったのでとりあえずこの辺で、次回も引き続き回路について書く。

基本編 > 入力・出力・混合編 > 定数・算術回路編 > 条件回路編 > 実践例編 > 累積回路編

この記事を評価

この記事にコメント

  1. ...

【この記事にコメント】
お名前:
コメント:

Menu