ゼロから始めるFactorioの回路構築(定数回路・算術回路編)
[Factorio] [2021/08/27 14:00]
前回に引き続きFactorioの回路の話。
Factorioで「回路ネットワーク」の研究を完了させると、ケーブルやチェストのほかに「定数回路」「算術回路」「条件回路」が使用可能になる。
このうち「定数回路」「算術回路」の使い方について書く。記事が長いので「条件回路」については次回に回す。
基本編 > 入力・出力・混合編 > 定数・算術回路編 > 条件回路編 > 実践例編 > 累積回路編
定数回路
定数回路は設定した信号をずっと出力し続ける。例えば「鉄板が200」などである。
チェストから「鉄板が200」の信号を出力するにはチェストに鉄板を200枚入れる必要があったが、
定数回路はアイテム一覧から「鉄板」を選んでキーボードから「200」を入力するだけで信号を出力できるので、
実物のアイテムを用意しなくてよいのがメリットである。
そのため「鉄板が2億」や「鉄板がマイナス200」のような実物では表現し難い信号も難なく出力できる。
出力できる信号は各種アイテムはもちろん、 Aや1といった英数字、 赤や緑といった色信号など特殊なアイテムも用意されている。
使い道としては、例えばランプを着色発光させるのに使う。
ランプの回路の作動条件がYESと判断されたとき、ランプの回路設定が「✅色の使用」になっていて、
かつ回路に赤などの色信号が含まれているとランプの光を着色することができるので、
その色信号を回路に載せるのに使える。
また、簡単な足し算をしたい場合にも便利である。 前回書いたとおり、ひとつの回路に複数の出力があると信号は足し算されるので、 足したい信号を定数回路から出力させてケーブルを繋ぐだけで足し算になる。 マイナスの足し算をすれば引き算にもなる。
定数回路には他にも以下のような特徴がある。
- 電子基板(緑基板)と銅線ですぐに作れて安上がり。
- 電源不要。(算術回路・条件回路は電源が必要。)
- 最大20種類の信号を出力できる。
- 一括オン/オフスイッチがある。
算術回路
算術回路は入力された信号をもとに計算を行い、その結果を出力する。
例えば「鉄板×2」という計算式を設定した算術回路に「鉄板が100」という信号を入力すると
「鉄板が200」という計算結果が信号として出力される。
算術回路には向きがあり、「入力側」と「出力側」のピンが分かれている。
キーボードのALTを押すか算術回路にマウスを合わせると黄色い三角形が表示されるので、その三角の頂点側が出力である。
逆につなぐと正しく動作しないので注意しよう。
算術回路をクリックすると設定画面が表示され、計算式を設定できる。
1枚目の画像では、算術回路に「鉄板の枚数」を2倍して「鉄板の枚数」として出力するよう設定している。
算術回路にマウスを合わせると、2枚目の画像のように算術回路に「鉄板が100」が入力され「鉄板が200」を出力していることや、
算術回路の入力と出力の向きなどを表示することができる。
異なる2つの入力を演算することもできる。例えば「鉄板の枚数から銅板の枚数を引いた値」という値を得ることができる。
その場合は、演算子の左に鉄板を、演算子にマイナスを、演算子の右に銅板を設定すればいい。
算術回路で使える演算子は結構多く、四則演算のほかにプログラマならおなじみのビット演算もできる。
一応書いておくが、このページを読んでいるような回路構築入門の方々は、ビット演算は知らなくても何とかなるので今は覚えなくていい。
かくいう自分もビット演算はわかるが使ったことは一度もない。よっぽど大規模な回路を書くときには重宝するだろう。多分。
演算子 | 意味 | 計算結果例 | 備考 |
---|---|---|---|
* | 掛け算 | 7*3=21 | |
/ | 割り算 | 7/3=2 | 小数点以下は切り捨て |
+ | 足し算 | 7+3=10 | |
- | 引き算 | 7-3=4 | |
% | 割り算の余り | 7%3=1 | 7÷3は2余り1なので、この1が得られる |
^ | べき乗 | 7^3=343 | 7の3乗 |
<< | 左ビットシフト | 7<<3=56 | 32ビット算術シフト。32以上シフトしようとすると実際には32で割った余りだけシフトされる |
>> | 右ビットシフト | 7>>3=0 | 同上 |
AND | ビットAND | 7AND3=3 | 32ビット符号あり整数 |
OR | ビットOR | 7OR3=7 | 同上 |
XOR | ビットXOR | 7XOR3=4 | 同上 |
%(割り算の余り)は使いどころが難しいと思うが、数字の特定の位を取り出すのに使える。
例えば「123」という数字の一の位は「3」だが、これは123を10で割れば「余り3」として算出できるから、
算術回路に「鉄板%10」などとすれば鉄板の枚数の一の位が得られる。
十の位「2」を得たい時は、123を一度10で割り、その答えを10で割った余りとして得られる。
出力は入力と異なるアイテムを設定できる。鉄板の数を2倍して、それを銅板の数として出力することができる。
もちろん鉄板の枚数を2倍して鉄板の枚数として出力してもかまわない。
出力側で論じている鉄板や銅板といったアイテムは、あくまで信号を伝えるための代数(数値の入れ物)として使われているに過ぎず、
実際が銅(どう)であるかは問題ではない。
特殊なアイテム「それぞれ」
算術回路の条件には、特殊なアイテムとして黄色いアスタリスクマークで表される「*それぞれ」を設定できる。
これは算術回路に入力された値を「それぞれ」計算するという意味である。
例えば算術回路に「*それぞれ*2を*それぞれ出力」という設定をし、
「鉄板が100、銅板が50」という信号を入力した場合、値をそれぞれ2倍した「鉄板が200、銅板が100」という信号が出力される。
算術回路に「*それぞれ*2を*それぞれ出力」を設定した例。
情報ウィンドウを見ると、入力された鉄板と銅板の値が「それぞれ」2倍にされて「それぞれ」出力されているのがわかる。
ひとつ注意が必要なのが、ゼロの存在。
例えば「鉄板が0、銅板が1」の信号を「*それぞれ+2を*それぞれ出力」
の算術回路に入力した場合、出力は「鉄板が2、銅板が3」ではなく、「銅板が3」だけとなる。
「鉄板が0」というのは鉄板の信号が存在しないものと見做されてしまい、
存在しない信号は「*それぞれ」の計算の対象とならないので計算自体が行われない。
「*それぞれ」を使わず具体的なアイテムを指定、例えば「鉄板+2を鉄板として出力」
した場合は入力がゼロでも無視されず0+2を計算して「鉄板が2」の信号が出力されるので、
「それぞれ」を使う際はこの違いを踏まえて回路を構築する必要がある。
2021/1/27追記:
V1.1対応にて、従来は算術回路の演算子の左側にしか置けなかった「それぞれ」が、演算子の右側にも置けるようになった。
(演算子の左右を両方「それぞれ」にはできない。)
向きの変更とコピペ上書き(2023/12/4追記)
定数回路には向きがあり、設置時または設置後にマウスを合わせてRキーを押すことで90度ずつ回転させることが出来る。
算術回路も同じように向きがあり、設置時は90度、設置後は180度ずつ回転させることができる。
ワイヤーを繋いだ後に回転させてもワイヤーが切れてしまう心配はない。
回転させても入力が出力に、出力が入力に反転するというわけではなく、入力に繋いだワイヤーは回転させても入力のまま、出力も出力のままである。
回路の設置方向は信号の内容には何の影響もないが、グラフィック上のワイヤーの結線位置が変わるので、 とくにワイヤーが混んでいる個所では回転させることで回路同士のつながり方が見やすくなる恩恵があるかもしれない。
手が届かないほど遠くにある回路はクリックしても設定を変更することはできないが、
建設計画または範囲選択コピーしたものを遠隔地の回路に重ねるように上書き貼り付けすることで、
遠隔地から設定を変更するちょっとズルいテクニックが使える。
ただし回路の向きが合っていないと上書き貼り付けがエラーになるので注意しよう。
あまり直観的でない使い方(2022/12/2追記)
算術回路のあまり直観的でない使い方として、信号の変換が挙げられる。
これは、ある信号を別の信号に置き換える操作である。
たとえば、工場Aに鉄板の在庫が1000枚あり、そのことをどこか別の工場に知らせたいとする。
また工場Bにも鉄板の在庫が2000枚あり、そのことも知らせたい。
先の記事で触れたとおり、ひとつの回路に複数の出力があるとそれらは足し算されてしまうため、
上記の在庫数をひとつの回路につなぐと足し算されて「鉄板が3000」という信号になってしまう。
そんなときは変換の出番である。
工場Aに算術回路を置き、「鉄板+0をAとして出力」と設定する。
そこに鉄板の枚数を入力すれば、工場Aの鉄板在庫数をAという信号に変換して送ることが出来る。
同じように工場Bの鉄板の在庫数もBに変換しておけば、
それらをひとつの回路に混ぜても「Aが1000、Bが2000」
という信号になり、足し算される心配なくケーブル1本で2つの情報を送信可能になる。
回路の話から脱線するが、定数回路にもあまり直観的でない使い道がある。
建設計画を作る際、「このベルトは鉄板を流すところ」や
「このチェストは電子基板を入れておくところ」といったメモを残したいことがあるだろう。
しかしFactorioにそういったメモ機能は存在しない。
そんな時に定数回路が役に立つ。
ベルトやチェストの近くに定数回路を置き、鉄板や電子基板の信号を設定し、その定数回路ごと建設計画にしてしまうのである。
あとからそれをみれば、このベルトは鉄板を流すところだと思い出すことが出来る。
次回はもうひとつの回路アイテム、条件回路について書く。
基本編 > 入力・出力・混合編 > 定数・算術回路編 > 条件回路編 > 実践例編 > 累積回路編
この記事を評価
この記事にコメント
- ...