討論室/0.15対応/0.15回路ネットワークの仕様

Last-modified: 2017-09-09 (土) 14:08:29

とりあえず下書き移行
以下、ページ改訂案

  • そこそこ長いのでページ分割する?
    • 回路仕様+コンビネータ+応用例 と 各回路接続機器解説 ぐらい
    • 応用例は充実してきたら個別ページ化
  • バージョン変更点は上層ページに移動
    • 0.13 → 0.14の変更点まとめいる?(あんまりなかったような記憶)
      • いちおうリリースノート見なおしたけど追加・変更はなかった(タンク数値の小数点以下の扱い変更ぐらいでもう意味がない)
  • 仕様詳細の解説図の修正
    • DeciderCombinatorの訳が「条件回路」から「条件回路」に変更
    • 内容的には問題ないので、とりあえず注釈追記としておく
  • プログラマブルスピーカーの音階再生の仕様(値とコードの対応)が不明。
    • プルダウンリストに表示される36コードと整数値1-36の対応(mod36)とかでいいのかしら?

ここでは回路ネットワークにおける信号とその計算・判定の仕様を中心に解説する。

バージョン変更点

  • ver0.15
    • 算術回路に、剰余、べき乗、ビットシフト、論理演算を追加
    • 条件回路(と各機器の条件設定)に、>=、<=、!=を追加
    • 回路ケーブルの長さを 7.5 から 9 に延長
    • プログラマブルスピーカーを新規追加:警告音声と回路信号に基づいた音の再生、音楽を作るのに使える
    • インサータ:スタックサイズを変更可能に
    • 駅:有効/無効の制御(列車がスキップ)。止まった列車と貨物の内容出力
    • 電動掘削機・油井:動作の制御。残り資源量・採掘レートの出力
    • 汲み上げポンプ:動作の制御
ver0.14

特になし

ver0.13

バージョン0.13アップデートが行われ、回路ネットワークが刷新され、これまで以上に、多くの設置物を回路ネットワークに接続し、信号を取り出して活用したり、信号の状態に応じて柔軟に動作を制御することが可能になった。
この項では、参考までに、FFF(Factorio Friday Facts)#138、および、バージョン0.13のリリースノートで紹介された情報を翻訳する。これらの各項目について、実際の動作仕様を、このページの下に記載している。
0.13で更新された回路ネットワークのアップデートについて

  • 「Power Switch」の追加。回路ネットワークの状況をもとに、自動的に電力をON/OFFする。
  • 小型ポンプ、汲み上げポンプ、インサーター、ベルト、ランプ、Power Switchについて、回路ネットワークを用いて直接ON/OFFできるように。
  • ランプに色を追加。回路ネットワークの信号をもとに色を変えられるように。
  • ロボットステーションを回路ネットワークに接続可能に。接続されたロボットステーションは物流ネットワークの内容を送信する。
  • 蓄電設備を回路ネットワークに接続可能に。接続された蓄電設備は充電のレベルを送信する。
  • 物流ベルトを回路ネットワークに接続可能に。信号で動作のON/OFFでき、回路ネットワークにベルトの内容を送信する。
  • 要求チェストの要求アイテムを回路ネットワークから自動的にセット可能に。
  • 各種インサーターが掴んでいるアイテムを回路ネットワークに送信可能に。回路ネットワークからスマートインサーターに、掴むアイテムを指定することができるように。
  • 回路ネットワークに接続された各種機器にカーソルをあてると、接続されたレッドケーブル/グリーンケーブルがハイライト表示されるように。
  • 代替モードに入る(altキーを押す等)と、各種回路機器の入力・出力の向きを示す矢印を含む情報を表示するように。
  • 回路ネットワーク専用の特殊信号(Virtual Signals)の種類の増加。
  • 定数回路にON/OFFスイッチを追加。
  • 各種回路機器のグラフィック刷新と、画像の改善。
  • 定数回路の向きを変えられるように。
  • 全ての種類のインサーターが回路ネットワークと物流ネットワークによって制御できるように。(関連する研究を行った後)
  • 全ての種類のチェストが回路ネットワークに接続できるように。スマートチェストはゲームから削除される。
  • 配置物をクリックして開くGUIの右上に追加されるアイコンより、全ての配置物の回路ネットワークと物流ネットワークの状態にアクセス、確認できるように。
  • 条件回路に”input count”オプションの追加。入力信号の中の特定の出力信号の数を得る。これまで手間がかかっていた、条件式によるカウントの代わりに使用できる。

基本概念

 回路ネットワークとは、「ケーブル」で接続された複数の「回路ネットワークに対応する設置物」からなるネットワークである。回路ネットワークに対応する設置物は図1のようにさまざまなものがある。
&ref(): File not found: "all.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図1

回路ネットワーク全体のイメージを図示すると、図2のようになる。
&ref(): File not found: "n1.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図2 (注:図中の「組み合わせ回路」は、「条件回路」のこと。以下同様)

「赤回路ネットワーク」「緑回路ネットワーク」と書かれたクラウド状のマークは、実際はそれぞれ「レッドケーブル」「グリーンケーブル」で設置物から接続された場合に生じる、仮想的なネットワークの概念を、図で示したものである。これらのクラウドでは、後述する様々な「信号」が、クラウドに接続された機器から送信される。また逆に、各機器がクラウドから信号を受信し、活用する。
 このクラウドは直接的にケーブルが接続された機器同士でのみ、同一の信号を送受信することができるため、ケーブルの配線により、お互いに独立した無数の回路ネットワークを構築することができる。
 これらのイメージを「回路」ネットワークと呼ぶ理由は、後述する「定数回路」「算術回路」「条件回路」という3種類の特別な設置物により、信号の値を、「数値計算」によって自由自在に変化させ、また複雑な「条件」によって新たな信号を作り出し、それらの信号を各設置物で活用することができるからである。

信号

回路ネットワークは、「信号(シグナル)」の送受信が基本となる。ケーブルで接続された機械同士で信号を送受信することで、様々な動作を実現できる。
 送受信する信号で最も基本となるのは、回路ネットワークにケーブルで接続された設置物のうち、各種チェストに保管されている「アイテムの数」である。Factorioは各種アイテムの自動生産が醍醐味であり、生産にはアイテムの数とそれによる生産の調整などが特に重要になるからである。
 しかしながらFactorioでは、単にチェスト内のアイテムの数を信号とするだけでなく、非常に多くの設置物の持つ、固有の情報を、信号として取り扱うことができる。更に、「ロボットステーション」により、「物流ネットワーク」に属するアイテム数の情報までもが、信号として取り扱うことができる。これらのさまざまな種類の信号をもとに、目的に応じた様々な動作を実現することが回路ネットワークを利用する趣旨となる。
 定数回路、算術回路、条件回路を利用することで、信号の値を数値計算によって自由自在に変化させ、また複雑な条件によって新たな信号を作り出し、それらの信号を各設置物で活用することができる。また、図3で示すように、アイテム以外の各種の仮想的な信号も取り扱うことができ、プログラミングでいう「変数」として利用できる。
&ref(): File not found: "signal.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図3

 ネットワークを流れる信号(シグナル)は、種類と値で構成される。

  • 種類は、Factorio内のアイテム(製作物、資源、流体等々)や、アルファベット、数、色などが指定できる。
  • 値は、符号付32ビット長の整数(-2147483648 ~ 2147483647)
    • 値が 0 の場合、信号は回路ネットワークに送信されない。同様に未入力の信号の値は 0 として扱われる。
  • 信号の値はゲーム内時間の1tickごとに再計算・更新される。

レッドケーブル、グリーンケーブル

 定数回路、算術回路、スマートチェスト、スマートインサータなどの機器の間でネットワークをつなぎ、信号を流すための導線。設置物間を接続することでネットワークを構築できる。ケーブルには赤色と緑色がある。赤色と緑色で機能に差はない。
 多くのアイテムや設置物とは異なり、ケーブルは消耗品である。つまり接続された機械や途中の電柱を取り除くと、ケーブルは消滅し、アイテムが手元のベルトやインベントリに戻ることはない。
 同一の色のケーブルは、同一の回路ネットワークとして機能し、別の色のケーブルによるネットワーク同士の信号が混ざることはない。ただし、後述する算術回路、条件回路には、レッドケーブル、グリーンケーブルを同時につなぐこともできる。この場合の仕様については条件回路の項で説明する。
 1本のケーブルの長さには制限があるが、電柱を経由することで遠くの機器につなぐことができる。ケーブルがつながっている限り、途中で信号の値が減衰することはない。放射状、リング状など、ケーブルの接続状態も関係ない。また「大型電柱」と「大型電柱」の間に限り、その間をつなぐケーブルも、通常より長い距離をつなぐことができる。
 信号の値は毎tickで数値計算が行われているため、例えば算術回路による計算結果の前後を入出力間で接続すると、クラッシュするといった事もあるので、接続には十分注意する必要がある。

定数回路、算術回路、条件回路

この項では「定数回路」「算術回路」「条件回路」の仕様について説明する。
これらの設置物は、図1に示すような外観であり、入力側と出力側の双方に、複数のケーブルを接続して利用する。
&ref(): File not found: "appearance.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図1

これらの各設置物をクリックすると、図2に示すような設定ウィンドウが開き、計算方法や条件を設定できる。
&ref(): File not found: "n3.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図2

定数回路

指定した出力信号を常に出力する機械。定数回路から赤色か緑色のケーブルで別の機械に接続して使用する。
 定数回路は、回路ネットワーク上の各機械で参照する定数値(プログラミングでいう「CONST」)として利用したり、簡単な動作テストに利用したりすることができる。
 例えば、鉄鉱石が10個チェストに入った時の動作をテストする際、わざわざ鉄鉱石10個入りのチェストを置かなくても、定数回路を置いて「鉄鉱石10個」の信号を出力すれば、動作テストを行う事が出来る。
 また、設定ウィンドウでは、初期値として「オン」にチェックが入っており、この状態では常に信号を出力するが、「オフ」に切り替えるだけで設定した出力信号を直ちに送信しなくすることができる。

出力信号

機械のメニューで出力したいアイテムとその値を指定する。各タブでアイテムがカテゴリごとに整理されており、「信号」のタブでは数字(0~9)やアルファベット(A~Z)、色などの特別な信号を指定できる。
 出力信号は、機械1台につき15種類まで指定でき、それぞれに別々の値を設定できる。また同一の機械の中で同一の出力信号を複数指定することもできる。
 定数回路は同一の回路ネットワークの中に複数設置できる。こうして回路ネットワークに非常に様々な種類の信号が流れる状態を作り出せる。このとき、もし複数の定数回路で同じアイテム・変数の値が設定されている場合、その値はその回路ネットワーク中で合算され、後述する算術回路や条件回路で、合算した値が計算に用いられる。たとえば定数回路Aで鉄鉱石20、定数回路Bで鉄鉱石10が設定されているとすると、両機械からケーブルで接続された条件回路Pでは鉄鉱石は30の入力を受け取る(図3)。
&ref(): File not found: "n6.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図3

算術回路

 入力側の信号の値を指定した演算子で計算し、その計算結果を指定した任意のアイテム、変数で出力する機械。機械には入力側と出力側があり、それぞれにケーブルを繋いで使用する。数値計算や計算結果は基本的には正の整数だが、負の数も取り扱える。
 定数回路同様、ネットワーク内に流れる信号のうち、値を計算したいアイテム・変数を入力信号として指定し、その計算結果を、あるアイテム・変数として出力する。

入力信号と計算

 機械の入力側に繋いだ回路ネットワークを流れる複数の信号の中から、任意の信号を指定して計算に使用することができる。指定した信号に対して、以下の演算が行える。1種類のアイテム・変数に対する整数値計算のほか、2種類のアイテム・変数の和などの計算も可能である。
 更に、「黄色の*のアイコン」を使うことで、入力された全ての信号に関する計算を行うことができる。(後述)

  • 指定した信号が入力されない場合、その信号の値は 0 として扱われ計算される。
  • 計算結果が 0 または計算できない(0除算等)場合は、信号は出力されない。
シンボル演算名演算例注記
加算1+2=3
減算3-2=1
乗算3*2=6
除算5/2=2商のみ出力
剰余5%2=1除算の余りのみ出力。正負は左項にのみ依存
べき乗2^3=8右項負数は動作しない
<<左シフト3<<2=12
(0011 → 1100)
算術シフト?右項はmod32
>>右シフト12>>3=1
(1100 → 0001)
AND論理積13 AND 7 = 5
(1101 → 0101)
OR論理和13 OR 7 = 15
(1101 → 1111)
XOR排他的論理和13 XOR 7 = 10
(1101 → 1010)

出力信号

計算結果の整数値を、機械から出力する信号として、1種類指定する。
出力信号は基本的には1種類だが、「*」アイコンを指定することで、複数の信号を出力することもできる。「*」には3種類の色があり、それぞれ仕様が異なっている(後述)が、算術回路では仕様上、黄色の*のみを使用することができる。

入力信号と出力信号の関係と例

通常の電気回路においては、計算の効果は電圧の増減等であるが、Factorioでは、柔軟な入出力が実現できる。
入力信号と出力信号は別々に指定できるので、入出力が関係ある形にも、関係のない形にも設定できる。
最も単純な例は(例1)のように入出力間で信号を同一とするものであるが、出力に、入力信号とは異なる信号も指定できる(例2)。
 更に、入力信号は1つにかぎらず幾つでも受け付けることができ、計算に使用できる。(例3)では、入力の計算に黄色の*アイコンを指定しており、この例の場合では3つの信号値の総和を材木の信号として出力している。(例4)では、入力の計算に加えて出力信号にも黄色の*アイコンを指定している。この場合、出力信号は、入力信号それぞれの値をそのまま2倍し、そのまま送信できる。黄*アイコンは例3と例4の2つの状況で意味合いが異なっている。この点は、条件回路で後述する、緑色の*、赤色の*アイコンの仕様も含めて理解することをお勧めする。

(例1)入力された鉄鉱石の数を2倍した計算結果を出力する

入力:鉄鉱石 x 2
出力:鉄鉱石

(例2)入力されたエイリアンアーティファクトの数を10倍し、サイエンスパック4の数として出力する

入力:エイリアンアーティファクト x 10
出力:サイエンスパック4

(例3)信号A,B,Cを受け取り、(A+B+C)の計算結果を材木の数として出力する

入力に接続されている信号:A,B,C
入力:黄*  x  1
出力:材木

(例4)受け取った信号A,B,Cの値を各々2倍して各々出力する

入力に接続されている信号:A,B,C
計算:黄*  x  2
出力:黄*

&ref(): File not found: "n7.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
※図内例4の出力アイコンに間違いがあります。誤「サイエンスパック」アイコン→正「黄*」アイコン

条件回路

算術回路が入力信号に応じた計算結果を指定した信号で「常に」出力するのに対して、条件回路は、入力信号が「指定された条件を満たす場合のみ」、指定した信号で値を出力する。

入力信号と条件式

算術回路同様、入力側に繋がれた回路ネットワークを流れる複数の信号中から任意の信号を条件に指定できる。指定した信号に対して、下表の条件式が適用できる。
条件式の設定は、1種類のアイテム・変数に対する整数値との大小に関する条件判定や、2種類のアイテム・変数の大小による判定が可能である。
指定した信号が入力されない場合、その信号の値は 0 として扱われる。

シンボル条件式注記
より大きい
より小さい
等しい
以上
以下
等しくない

出力信号

出力信号は、条件を満たした際に出力する信号とその値を指定する。
ある1種類のアイテムや変数、もしくは赤、緑、黄色の*アイコンを指定でき、出力値は、「1」か、「入力数(=入力信号の値をそのまま出力側に通過)」から選択できる形となっている。

条件回路における「*」の指定と効果

(1)条件式での指定
入力信号の条件式に、赤色、緑色、黄色の*アイコンを指定することができる。それぞれの意味は次の通り。

  • 赤*:「全て(for all,AND)」を意味する。全ての入力信号が条件式を満たす場合に、信号を出力する(例1)。
  • 緑*:「何でも(for any, OR)」を意味する。全ての入力信号の中で1つの信号でも条件式を満たす場合に、信号を出力する(例2)。
  • 黄*:「各(for each)」を意味する。入力されている各信号に対して、条件を判定する。(後述)

(2)出力信号での指定
出力信号として、赤色、黄色の*アイコンを指定することができる(※仕様上、緑*は出力に指定できない)。
入力側に複数の信号が入力されている事も有り得るので、ある1つの信号のみを条件にしている場合でも、その条件を満たせば入力されている全ての信号を出力する(例3)。
入力側の条件式で各色*を指定し、出力側でも各色*を指定した場合、条件判定と出力の仕様は次のようになっている。

  • 条件式で赤*もしくは緑*を指定し、出力側で赤*を指定した場合:条件を満たすなら、全ての入力信号を各々そのまま出力する(例4)。
  • 条件式で黄*を指定し、出力側で黄*を指定した場合:この場合のみ、特殊な取り扱いとなり、この仕様が黄色の*の意味「各(for each)」を代弁している。この場合は入力信号について個別に条件を判定し、条件を満たす入力信号についてのみ、そのまま出力する(例5)。

(例1)A,B,Cの値すべてが0を超える場合、材木=1を出力する

入力に接続されている信号:A,B,C
条件式:赤*  >  0
出力:材木、1

(例2)A,B,Cの値のうち、1つでも0を超える場合、Aの値をそのまま出力する

入力に接続されている信号:A,B,C
条件式:緑*  >  0
出力:A、入力数

(例3)Aの値が0を超える場合、A,B,Cの値をそのまま出力する

入力に接続されている信号:A,B,C
条件式:A  >  0
出力:赤*、入力数

(例4)A,B,Cの値すべてが0を超える場合、A,B,Cの値をそのまま出力する

入力に接続されている信号:A,B,C
条件式:赤*  >  0
出力:赤*、入力数

(例5)A,B,Cの値のうち、0を超える信号について、値をそのまま出力する

入力に接続されている信号:A,B,C
条件式:黄*  >  0
出力:黄*、入力数

&ref(): File not found: "n9.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";

算術回路・条件回路の入出力に2種類のケーブル両方を接続した場合の仕様

通常2色のケーブルは別々の回路ネットワークとして区別されるが、1つの算術回路・条件回路に同時に2色が入力された場合、両ケーブルに流れている信号を全て考慮して、計算や条件判定を行う。また出力側に2色のケーブルを接続した場合、両ネットワークに同じ信号を出力する(例1)。

(例1)条件回路の入力側に2種類のケーブルが接続されている場合

レッドケーブルから入力に接続されている信号:A=1
グリーンケーブルから入力に接続されている信号:A=1
条件式:A>1
出力:A、入力数
結果:A=2が出力される。

&ref(): File not found: "n10.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";

ランプ

電力消費により、夜時間になると自動的に点灯し、周囲を照明で照らすことができるようになる設置物。通常は、白色の照明が点灯する。
 ランプにケーブルを接続することで回路ネットワークに接続することができる。ランプが回路ネットワークに接続されると、ランプに「点灯の条件」が設定できるようになる(図1)。こうすることで、時間の流れに関係なく、ランプが回路ネットワークに流れる信号を監視し、ある特定の信号の条件を満たす場合のみ点灯するよう、動作させることができる。
 またランプは物流ネットワークに接続することもできる。この場合は物流ネットワークにあるアイテムの数を監視し、同様に、設定した条件を満たす場合のみ、点灯させることができる。
&ref(): File not found: "lamp01.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図1

ランプの点灯色の変更

 回路ネットワークに接続されたランプについてのみ、点灯する色が変更できる。白色以外に6種類用意されている(図2)。RGBの数値などで光量や配色を調整することはできない。また、白、グレー、黒の信号も用意されているが、図2で示すように、ランプの点灯色は色指定をしないときと同じ白色になる。
&ref(): File not found: "lamp02.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図2

 色をつけて点灯させたい場合、図1のランプのメニューの「色の使用」にチェックを入れる。ランプの色は、接続している回路ネットワークに流れる色信号で決まる。
 定数回路を接続し、「信号」タブ(図3)の一番下にある「色に関連する仮想の信号」、例えば「赤信号」を、回路ネットワーク上に出力する。次にランプ側で点灯の条件を設定する。この条件を満たすと、回路に流れる信号の色で、ランプが点灯する。
&ref(): File not found: "lamp03.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図3

もし、同一の回路ネットワークに「複数の」色信号が流れていると、信号タブの表示順(赤>緑>青>黄>ピンク>シアン)で優先して点灯する。
陥りやすい誤解の例を図4に挙げる。図の定数回路は赤信号=1、緑信号=1、青信号=1を出力している。またランプは上から順に赤信号>0、緑信号>0、青信号>0を条件と設定しているが、同一の回路ネットワーク上にあるため、全て優先順位の高い「赤色」に点灯している。
&ref(): File not found: "lamp04.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図4

搬送ベルト

 搬送ベルトはアイテムを運搬・移動する、Factorioの基本になる設置物である。搬送ベルトを回路ネットワーク、もしくは物流ネットワークに接続することにより、「信号の条件によるアイテム搬送停止・再開 」、「搬送中のアイテム情報の出力」が行える。

ネットワークへの接続方法

 搬送ベルトを回路・物流ネットワークに接続するには、1本のケーブルを別の設置物・電柱から搬送ベルトのマスにひく必要がある。図1で示すように、ケーブルを持ち、設置物や電柱から搬送ベルトの好きなマス目をクリックすると、回路ネットワークに接続できる。接続すると、四角の枠のような固有のグラフィックの設置物が表示される。
&ref(): File not found: "belt01.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図1

 もし、そのマス目がロボットステーションの物流ネットワークの範囲に入っているなら、同時に、物流ネットワークにも接続できる。(※物流ネットワークに接続するかどうかは、プレイヤーが選べる。)
 接続を解除するには、該当するマスを撤去するか、ケーブルを撤去する。なお、物流ネットワークの範囲に入っている場合、ケーブルを撤去すると、マスはそのまま残る。

信号の条件によるアイテム搬送停止・再開

条件によって、搬送ベルト上のアイテムの搬送を停止したり、搬送を再開したりすることができる。図2に示すように、「動作モード」の「有効/無効」の欄にチェックを入れると、ウィンドウ下部に「作動条件」の欄が追加され、条件による動作の変更を行える。
&ref(): File not found: "belt02.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図2

 動作モードを有効にすると、条件回路と同様に、ケーブルを通じて他の回路ネットワーク内の信号を入力として受け取り、条件に設定できる。 条件を満たさない場合、ベルト上のアイテムの流れをせき止める。条件を満たした場合のみ、通常通りアイテムを流す。
 なお、物流ネットワークに接続している場合も、同様に、物流ネットワーク内のアイテム状態を条件として、動作を変更することができる。図3で示すように、右上の「物流ネットワーク」のアイコンをクリックして表示される「物流網への接続」のウィンドウで、「接続」にチェックを入れると、物流ネットワークに接続する。チェックを外すと接続を切断する。
&ref(): File not found: "belt03.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図3

チェックを入れた時点で、動作モードは自動的に「有効」になり、直ちに、下部に表示された条件判定にしたがって動作を変更する。
 回路ネットワークと物流ネットワークに同時に接続することもできる。この場合、各ネットワークに設定された2つの条件を「両方満たす」場合のみ、アイテムを流す。

搬送中のアイテム情報の出力

 搬送ベルト上のアイテムを監視し、回路ネットワークに、現在の状態を信号として出力することもできる。図4に示すように、「動作モード」の「ベルト上のアイテムを取得する」にチェックを入れると、ウィンドウ下部に、「読み取りモード」の欄が追加される。
&ref(): File not found: "belt04.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図4

「読み取りモード」の欄では「パルス」「ホールド」の2種類から1種類が選択できる。

「パルス」モード

パルスモードは、アイテムが乗ったことを確認すると、1tickだけパルス信号を回路ネットワークに送信する。
パルスモードでは、1tickと非常に短時間しか出力が行われないため、例えば、「アイテムが流れていることをランプの点灯で確認したい」といった応用はできない。ただし、確実に1つのアイテムが流れたら1つのパルスが送信されるため、後述する使用例(1)のように応用すれば、ベルト上を流れるアイテムの数をカウントすることができるなど、様々な利用が可能となる。

「ホールド」モード

ホールドモードは、アイテムが乗っているあいだ、連続的に信号を送信する。信号の値は1以上、最大3~4の整数である。パルスモードと違い、ホールドモードでは、アイテムが流れている間、ずっと信号を出力しているため、前述の「アイテムが流れていることをランプの点灯で確認したい」とか、後述する使用例(2)のような応用に向いている。

応用例

仕様の理解のために、搬送ベルトの回路ネットワーク接続の応用例を挙げる。

ベルト上を流れるアイテムの数をカウントする

図5のように回路を組むと、ベルト上を流れるアイテムの数をカウントすることができる。

搬送ベルト:「ベルト上のアイテムを取得する」にチェック→「読み取りモード」=「パルス」
算術回路:算術回路の出力と入力をケーブルで接続する。
「入力」=「電子基板*1」、「出力」=「電子基板」
結果:アイテムが1つ通過するたびに、算術回路の出力側の電子基板の信号のカウントが1ずつ増える。

なお、数値をリセットする場合、算術回路の出力を一度右クリックで消去して再度設定する。
&ref(): File not found: "belt05.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図5

ベルトライン上のアイテムの状態に応じて、動作を変更する

図6のように、ベルトの2点間をケーブルで接続することで、別のベルトのラインにおけるアイテムの状態に応じて、アイテムを流すか流さないか、判断することができる。

左の搬送ベルト:「ベルト上のアイテムを取得する」にチェック→「読み取りモード」=「ホールド」
右の搬送ベルト:「動作モード」の「有効/無効」にチェック→「作動条件」=「電子基板>0」
結果:電子基板が左のラインを流れている時だけ、右のラインの発展基板が流れる。

&ref(): File not found: "belt06.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図6

ベルトを利用した擬似タイマー

図7のように、環状に配置したベルトとインサータをケーブルで接続することにより、任意の間隔でインサータを動かすといった擬似タイマーが可能になる。
図7の例では環状ベルト上のケーブル接続部をアイテム(エイリアンアーティファクト)が通過したときのみインサータが動く。
環状ベルトの長さや、流すアイテムの個数を変更することにより任意の間隔(3秒間に1回など)でインサータを動かすことができ
より細かな流入量調整が可能となる。

環状ベルト:「ベルト上のアイテムを取得する」にチェック→「読み取りモード」=「ホールド」
インサータ:「動作モード」の「有効/無効」にチェック→「作動条件」=「エイリアンアーティファクト=1」

&ref(): File not found: "belt07.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図7

インサータ

 全てのインサータが、回路ネットワーク、もしくは物流ネットワークに接続できる。(図1)
 インサータは共通して「信号の条件による掴み動作の停止・再開 」と「スタックサイズの設定」が可能であり、「掴んでいるアイテム情報の出力」が行える。
 更に、フィルターインサータ、スタックフィルターインサータについては、フィルターの設定が行える。
&ref(): File not found: "ins01.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図1

ネットワークへの接続方法

 回路・物流ネットワークへの接続は、他の設置物と同様、ケーブルを接続することで行える。また、物流ネットワークの範囲に入っている場合、ケーブルを接続しなくても、インサータをクリックして表示されるウィンドウ右上の「物流ネットワーク」アイコンをクリックすることで物流ネットワークに接続できる。(※物流ネットワークに接続するかどうかは、プレイヤーが選べる。)
 接続してインサータをクリックすると、図2のようなウィンドウが表示され、ケーブルを繋いでいれば「動作モード」の「有効/無効」にチェックが入り、「作動条件」の欄が表示されている。
 回路ネットワークとの接続を解除するには、インサータもしくはケーブルを撤去するか、「動作モード」で「無し」を選択する。
&ref(): File not found: "ins02.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図2

信号の条件による掴み動作の停止・再開

 動作モードを有効にすると、条件回路と同様に、ケーブルを通じて他の回路ネットワーク内の信号を入力として受け取り、そのインサータが掴み動作を行うかどうかの条件を設定できる。物流ネットワークに接続している場合も、同様に、物流ネットワーク内のアイテム状態を条件として、動作を変更することができる。回路ネットワークと物流ネットワークに同時に接続することもできる。この場合、各ネットワークに設定された2つの条件を「両方満たす」場合のみ、アイテムを掴む。

スタックサイズの設定

インサータは回路ネットワークの信号を基にして、スタックサイズを上書き設定できる。
「スタックサイズの設定」にチェックを入れ、制御シグナルを指定することで、そのシグナルの値がスタックサイズとして設定される。

  • シグナルの値が、現在のスタックサイズ最大値を超える場合、スタックサイズ最大値が設定される。
  • シグナルが未入力か値が負数の場合、スタックサイズは 1 となる。

掴んでいるアイテム情報の出力

 インサータが今現在掴んでいるアイテムの情報を信号として回路ネットワークに出力することもできる。図3に示すように、「動作モード」の「掴んでいるアイテムを取得する」にチェックを入れると、ウィンドウ下部に、「読み取りモード」の欄が追加される。
&ref(): File not found: "ins03.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図3

「読み取りモード」の欄では「パルス」「ホールド」の2種類から1種類が選択できる。パルスモード、ホールドモードは、「搬送ベルト」の項の説明と同様であり、応用例も同様に実現可能であるため、ここでは省略する。

回路ネットワークに存在する信号のアイテムを掴む

フィルターインサータ、スタックフィルターインサータを選択すると開くウィンドウでは、そのインサータが掴むアイテム=「フィルタ」を設定することができる。フィルタを設定することで、インサータはそのアイテムのみを掴む。
 更に、これらのインサータが接続されている回路ネットワークに「アイテムの信号」が存在した場合、そのインサータが、その信号のアイテムのみを選んで掴むように設定することができる。バージョン0.12以前は設置したインサータ個別にフィルタを設定する必要がある上、設定は手動で変更させる必要があったが、掴むアイテムを回路ネットワーク上の信号状態に応じて柔軟に変更することができる。
 図4に例を示す。
&ref(): File not found: "ins04.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図4

 画面下部にある定数回路で、銅板、鉄板、電子基板、発展基板がそれぞれ=1で出力されている。この定数回路に接続されたフィルターインサータのウィンドウで、「動作モード」で「フィルターを設定」にチェックを入れている。こうすることで、左側の「フィルター」の欄に、定数回路で設定したアイテムの信号がコピーされ、これらのアイテムのみを掴むように動作させられる。(反対に、このモードではフィルターをプレイヤーが手動で変更させることはできなくなる。)
 ちなみに、この定数回路の動作を「オフ」に変えることで、フィルターインサータの動作を停止できる。また、例のような定数回路の他にも、別の設置物から別のアイテムの信号状態が出力されることにより、このフィルターインサータの選ぶアイテムが柔軟に変化する。
 なお、1台の(スタック)フィルターインサータに設定できるフィルタの数は現在5種類までである。もし、回路ネットワーク上に6種類以上のアイテム信号が存在した場合、「インベントリのアイテム作成欄に表示されている順で、前にある方」から5種類が優先して設定される。

ロボットステーション

ロボットステーションは建設・物流ロボットの拠点であると同時に、物流ネットワークを構成するために必須の設置物である。ロボットステーション同士をオレンジの点線の範囲内に置くことで、更に広い物流ネットワークを構成することができる。
 ロボットステーションを回路ネットワークに接続することにより、「物流ネットワークの状態を回路ネットワークに送信する」ことが可能である。

ネットワークへの接続方法

ロボットステーションを回路ネットワークに接続するには、他の設置物と同様に、設置物とロボットステーションをケーブルで接続すればよい。接続すれば自動的に「動作モード」の「物流ネットワークの内容を取得」にチェックが入り、直ちに、物流ネットワーク内のアイテムの数量を、アイテム信号として回路ネットワークに送信開始する。送信したくない場合は、ケーブルを切るか、もしくは「動作モード」の「ロボットの統計を読み込む」にチェックを入れる。

&ref(): File not found: "robst01.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";

物流ネットワークの状態を回路ネットワークに送信する

アイテムの状態の送信

 ケーブルを接続し、「動作モード」の「物流ネットワークの内容を取得」にチェックを入れることで、アイテムの状態の送信が開始される。そのロボットステーションに接続されているロボットステーションが複数であった場合、範囲内のアイテム数を合計した数値が回路ネットワークに送信される。回路ネットワークでは、遠隔地間をケーブルでつなぐ際には手間がかかるが、これにより、物流ネットワークの広さを活かして信号を活用できる。

物流、建設ロボットの状態の送信

 物流ロボット、建設ロボットの待機状態などの情報を回路ネットワークに送信できる。「動作モード」で「ロボットの統計を読み込む」にチェックを入れると、「待機中物流ロボット数」を仮想信号「X」、「すべての物流ロボット数」を仮想信号「Y」、「利用可能建設ロボット数」を仮想信号「Z」、すべての建設ロボットを仮想信号「T」として送信する。なお、これらの仮想信号は初期値で、任意の信号に変えられる。これにより、ロボットの待機状態などに応じて、設置物の各種動作を制御することができる。
 なお、1つのロボットステーションから、「アイテムの状態」と、「物流、建設ロボットの状態」の両信号を同時に送信することはできない。必要な場合は別のロボットステーションで取得する必要がある。

駅/列車

列車ネットワークに回路ネットワークを接続することで、駅や列車の動作を回路信号に基づいて制御が可能となる。
また、停車中の列車の貨物情報等も、回路ネットワークに送信することができる。

ネットワークへの接続方法

列車ネットワークへ回路ネットワークの状態を送信するには、線路に設置した「駅」に回路ネットワークを接続し、信号を駅が受け取れる状態にする。
任意の回路ネットワーク関連の設置物からケーブルを駅につなぐと、直ちに回路ネットワークに接続される。駅をクリックすると開くウィンドウでは、図1で示すように回路ネットワーク用の設定ペが追加で表示される。
以下の動作モードが選択可能。

  • 駅の有効/無効
  • 列車に送る
  • 列車の内容を取得する
  • 停車中の列車を取得する
    &ref(): File not found: "train01_1.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
    図1

列車に駅をスキップさせる

「駅の有効/無効」にチェックを入れると、指定した作動条件が真となるときのみ駅が有効になる。

  • チェックを外す(デフォルト状態)と常に有効となる
  • 無効となっている駅には、列車が停車しなくなる

回路ネットワークの状態をもとに、列車の待機条件を設定する

「列車に送る」にチェックを入れると、その駅に停車中の列車に接続された回路ネットワークの回路信号が送信される。
回路ネットワークの状態が送信されるようにすると、「自動運行している各列車」の「発車条件」を、回路ネットワークの状態により変更することができるようになる。
 各列車のクリックや駅の運行表から各列車の情報ウィンドウが開けるが、図2で示すように、 「時刻表」タブの「発車条件」で、新たな条件が追加できる。「+」ボタンを押すと、これまでに選択できる条件の中に「回路による」という条件が新たに追加されている。これをクリックすると、発車条件が新規追加される。次に追加された条件をクリックで選ぶと、ウィンドウ最下部に、条件判定のインタフェースが表示され、図2で示すように、列車を発車させるための任意の条件を、回路ネットワークの信号で設定できる。
&ref(): File not found: "train02.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図2
 なお、これらの「回路による発車条件」は、この他の発車条件と同様に、 幾つでも設定でき、個々の発車条件と「かつ(and)」「または(or)」のいずれかの条件で実行するかを設定できる。(「かつ」/「または」は、各発車条件を選んで「and/or」ボタンをクリックすることで切り替え)

停車中の列車の内容を取得する

「列車の内容を取得する」にチェックを入れると、その駅に停車中の列車の貨物インベントリ・タンクの内容が、回路ネットワークに送信されるようになる。

  • 対象は、貨物車両・タンク貨車の内容のみ。機関車の燃料インベントリ情報は送信されない。
  • 複数の貨車が接続されていても、すべて合算された値が回路信号として送信される。
  • 停車中のみ送信されることに注意。

列車の停車有無、停車中の列車を識別する

「停車中の列車を取得する」にチェックを入れ、出力信号を設定すると、その駅に列車が停車している間、回路に信号が送信される。

  • ひとつの駅で指定できる回路信号は1種類のみ
  • 回路信号の値は、停車中の列車ごとの固有の値となる
    • ただし、機関車を再配置したり、貨車を連結/解除すると値が変わる

蓄電設備(蓄電池)

蓄電設備(蓄電池)は、余った電力をあらかじめ蓄えておき、電力を消費する際に、他のリソースが無くなった場合に放電する、いわば補助電力の供給装置である。これまでも回路ネットワークの活用による応用例はあったが(回路ネットワークの項参照)、 基本的には、最終手段的な電力の二重化/バックアップ用途に利用するのみであった。
 バージョン0.13より、直接、回路ネットワークに信号を送信し、活用することができるようになった。これにより、後述する「電源スイッチによる電力使用優先度の変更 」の応用例などに活用できる。

ネットワークへの接続方法

蓄電設備を設置し、ケーブルをつなぐと、直ちに回路ネットワークへ信号の送信を開始する。蓄電設備をクリックすると開くウィンドウでは、図1で示すように「動作モード」の「充電量を取得する」にチェックが入っている。「出力信号」の欄には初期値で「A」が入っており(プレイヤーが変更可能)、この信号により、蓄電設備が現在蓄えている電力量を、0~100(%)で回路ネットワークに送信する。
&ref(): File not found: "batt01.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図1

電源スイッチ

Factorioにおける電源スイッチは、2点間の電力ネットワークを「接続する」か、「切断する」かをプレイヤーが選択することができる設置物である。手動での接続/切断のほか、回路ネットワークの状態による接続/切断が可能である。

設置方法とネットワークへの接続方法

電源スイッチは、やや設置の仕方が特殊なので注意が必要である。通常、電柱の範囲に入った設置物は電力ネットワークに入るが、電源スイッチは、中間生産物の「銅線」を、左右に分かれているユニットそれぞれにプレイヤー自身でつなぐ必要がある。つなぎ方は回路ネットワークによるレッド・グリーンケーブルと同様である。
その後、回路ネットワークに接続するには、信号を送受信したい他の設置物とケーブルでつなげばよい。ケーブルをつなぐと、直ちに回路ネットワークに接続され、クリックすると図1のようなウィンドウが開く。通常は電源スイッチの状態はプレイヤーが自分でオフ/オンを選択できるが、回路ネットワークに接続すると、プレイヤーは選択できなくなり、信号の条件を満たす場合のみ、オンを選択するようになる。
&ref(): File not found: "ps01.png" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図1

応用例:電源スイッチによる電力使用優先度の変更

回路ネットワークに接続した電源スイッチの応用例を図2に示す。これにより、「回路ネットワーク」に示されている応用例を、非常に簡単な手順で置き換えることができる。
ソーラー発電と蒸気機関発電と蓄電池がある場合、夜にソーラーが切れると電力が蓄えられていても蒸気機関が優先して動いてしまうが、回路ネットワークに接続した蓄電設備と電源スイッチを使って、「充電が無くなったら蒸気機関を動かす」ことができる。
&ref(): File not found: "ps02.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図2
 まず、電源スイッチを、電力ネットワークの間に設置する。図2のように、 [メイン電力側(ソーラーパネル+蓄電設備)- 電柱-電源スイッチ-電柱- 補助電力側(蒸気機関) ]という形で銅線で繋ぐ。
 次に、メイン電力側の蓄電設備と電源スイッチを、赤か緑のケーブルで繋ぐ。
 最後に、電源スイッチ側で、作動条件を「蓄電設備から発信される信号が来ない場合のみ」とする。つまり、例えば図2で示すように「A=0」とする。
 もし、メイン電力側の蓄電設備の蓄電量が0%になると、条件が満たされ、電源スイッチがONになる。つまり非常事態のみ、補助電力側である蒸気機関の電力ネットワークと接続され、蒸気機関が作動し、電力がメイン電力側に供給される。

ゲート、列車用信号

ゲート

 石の防壁に設置する「ゲート」は、通常、普段は閉じて(上がって)おり、プレイヤーが近づいた時のみ開く(下がる)よう動作している。このゲートを回路ネットワークに接続することで、「信号の条件を満たす際にゲートを開く」、「ゲートの開状態時に信号を送信する」ことが可能になる。

ネットワークへの接続方法

 ゲートは石の防壁の間の2点間をゲートで繋げば設置できるが、ゲートの左右端にあたる石の防壁には、赤色(閉状態)、緑色(開状態)のランプが点灯している。この防壁をクリックすると「ゲート コントローラ付きの壁」という特別な名称が付いている。ゲートを回路ネットワークに接続するには、この壁と、任意の設置物とをケーブルでつなげばよい。
 「ゲート コントローラ付きの壁」をクリックすると表示されるウィンドウには、回路ネットワークに関連する専用部分が追加して表示される。以下に示す2つの動作モードが選択でき、両モードを同時に使用することもできる。

信号の条件を満たす際にゲートを開く

 通常、ゲートはプレイヤーが近づいた事を察知して自動で開くが、図1で示すように、「動作モード」の「ゲートを開く」にチェックを入れると、「通行条件」の欄が追加表示される。このモードをONにすると、通行条件で設定された信号の条件を満たす場合のみ、ゲートが開くようになる。
&ref(): File not found: "gate01.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図1

ゲートの開状態時に信号を送信する

 図2で示すように、「動作モード」の「センサー読み取り」にチェックを入れると、「出力信号」の欄が追加表示される。このモードでは、上記とは逆に、ゲートが開状態になった際に、信号「G=1」を常に回路ネットワークに送信する(Gは初期値。変更可能)。ゲートが閉じたら、信号の送信は終了する。
&ref(): File not found: "gate02.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図2
 

列車用信号

 鉄道に併設し、列車の往来を信号で管理する「列車用信号」も、回路ネットワークに接続できる。つまり、信号の状態に応じて列車の運行を制御することができるようになる。またその反対に、列車用信号の状態を回路ネットワークに信号として送信できるようになる。

ネットワークへの接続方法

 列車用信号と任意の設置物とをケーブルでつなぐことで回路ネットワークに接続される。回路ネットワークに接続した列車用信号には、関連する専用部分が追加して表示され、以下に示す2つの動作モードが選択できる。両モードを同時に使用することもできる。
 

信号の条件を満たす際に列車用信号を赤にする

 通常、列車用信号は、前方の閉塞区間の列車の有無のみを監視し、赤信号・青信号を切り替えて、列車の往来を制御するが、回路ネットワークに接続すると、ネットワーク内の信号の条件を満たす場合には強制的に赤信号に変えることができる。
 図3に示すように、「動作モード」の「信号を閉じる」にチェックを入れると、「停止条件」の欄が表示され、ここで設定された信号の条件を満たす際に、列車用信号を「赤」に切り替える。
&ref(): File not found: "sig01.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図3

列車用信号の状態を信号として送信する

 図4に示すように、「動作モード」の「信号を取得する」にチェックを入れると、「出力信号」の欄が表示され、現在の列車用信号の状態が回路ネットワークに送信される。つまり「赤信号=赤」「黄色信号=オレンジ」「青信号=緑」の信号が、その信号であった場合に、それぞれ=1の値で送信される。(赤、オレンジ、緑は初期値。変更可能)
&ref(): File not found: "sig02.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図4

応用例:踏切

参考として、踏切の応用例について説明する。例はFFF#140の例を参考に簡易版を構成した。FFF#140における挙動や回路設定とは異なる。
&ref(): File not found: "cross.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
図5
ゲートを利用した線路の踏切である。列車は左から右へ通り抜けることのみを想定する。以下で、設置物と回路ネットワークにおける設定値、踏切の挙動に関する条件と動作を説明する。

設置物と設定値

使用する設置物と設定値は次の通り。以下の全ての設置物をケーブルで接続する。条件回路も入力側、出力側の両側とも接続する。
線路側のゲート(×2組)

  • 動作モード:「ゲートを開く」にチェック。通行条件:G < 1

プレイヤー側のゲート(× 2組)

  • 動作モード:「ゲートを開く」にチェック。通行条件:G > 0
  • 動作モード:「センサー読み取り」にチェック。出力信号:A

条件回路A(図右上の2つのうち、左側)

  • パラメーター:赤信号 < 1
  • 出力:A=1

条件回路B(図右上の2つのうち、右側)

  • パラメーター:A > 1
  • 出力:G=1

列車用信号A(踏切付近、図の左下)

  • 動作モード:「信号を閉じる」にチェック。停止条件:G > 0
  • 動作モード:「センサー読み取り」にチェック。出力信号:初期設定

列車用信号B(踏切の十分手前)
 列車用信号Aと同じ設定値

備考

  • 列車用信号Bは、図では見えていないが、列車が停止するのに必要な制動距離を踏まえ、 踏切の十分手前の適切な位置に設置している。
  • 列車が通過したらすぐゲートが開くようにするために、図に示すように、踏切のすぐ後にも1つ列車用信号を設置している。この列車用信号は回路ネットワークに接続しなくてよい。

条件と動作

条件A:列車が居ない=列車用信号A、Bが共に青、かつ、プレイヤーが踏切を渡ろうと近づいているとき。

  • プレイヤー側のゲートが開き、線路側のゲートが閉まる。
  • 列車用信号A,Bを赤信号にして、列車の進入を止める。
  • プレイヤーが踏切の中に居るあいだ、列車用信号A,Bは赤信号のまま。
  • プレイヤーが踏切から遠ざかると、ゲートは戻り、列車用信号A,Bは青信号になる。

条件B:列車が通過中=列車用信号A、Bのいずれかが赤のとき。

  • プレイヤーが踏切に近づいても、プレイヤー側のゲートは開かない。

解説

条件Aで示す通り、プレイヤーが安全に踏切を渡れるときのみ、信号「G=1」を送信することとする。そして、G=1の時のみ、各ゲートと列車用信号を「踏切を渡れるように」操作する。
 まず、列車用信号A,Bの両方が青信号の場合、列車は近くに居ない。このとき回路ネットワーク内の「赤信号」の信号の値が=0になる。これを条件回路Aで判定する。条件を満たせば、「A=1」が送信される。このとき、プレイヤーがゲートに近づくと、更にゲートから「A=1」がネットワークに送信される。そしてネットワーク内の合計で「A=2」以上になった場合、ゲートを開けて良いことになる。これを条件回路Bで判定する。条件を満たせば、ゲートを開け、列車用信号を赤にするための信号「G=1」を送信する。
 次に、条件Bの列車が通過中のとき、列車用信号AかBが「赤信号=1」を送信する。このときは条件回路AからA=1が送信されない。つまりプレイヤー側のゲートは開かない。
 列車用信号A,BはG>0で赤信号になる設定である。 つまり、プレイヤーが踏切を渡っている時は強制的に赤信号に変えて、列車の進入を阻止する。
 ただし、今回の例では、プレイヤーが渡っている際に、列車の入ってくるタイミングによっては、プレイヤーが踏切の間に挟まってしまう場合がある。細かな調整は利用者にてお願いしたい。

より簡易的な踏み切り構成

上記方式を条件回路を使わずに単純化したもの

&ref(): File not found: "railroad_crossing.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";
回路説明

  • 人用ゲートとゲート部分の手前側の列車用信号をケーブルで繋げる
    ゲート列車用信号
    出力信号
    【G】
    停止条件
    【G】>0
    通行条件
    【赤】=0
    出力信号
    赤:【赤】
    オレンジ:【赤】
    緑:【緑】
    と設定する
    • ※列車用信号の出力を「オレンジ:【黄】」から「オレンジ:【赤】」に変更することで通過予定の時点で人用ゲートを閉鎖するようになる
      (筆者が使っている限りではこの設定で事故も不便もない)
  • 必須ではないがもし線路用のゲートも作りたい場合は信号同士の間に別コントローラの線路用ゲートを作り
    人用と同じく手前側の列車用信号へ繋げて「ゲート通行条件【赤】>0」と設定すればいい
    それで列車通過時にだけゲートが開くようになる

各種チェスト

 各種チェストは、ケーブルをつないだ時点で、チェストの中身のアイテムをすべて、回路ネットワークに信号として送信する。
 要求チェストは、回路信号で物流要求が設定可能。(リクエストモードではチェスト内容は送信しない)

  • 物流要求の設定枠(12アイテム)を超える数の信号が入力される場合、回路信号設定ウィンドウの表示順に優先されて設定される
  • チェストに格納できないアイテム(流体)や、仮想信号(アルファベット、数、色)は無視される。

汲み上げポンプ、ポンプ

 汲み上げポンプは海岸に設置して水を汲み上げる施設であり、ポンプはパイプライン内に設置し、流体を送る設置物である。この両者はケーブルをつなぐことで、設定ウィンドウの「動作モード:有効/無効」にチェックが入り、直ちに回路ネットワークに接続される。「作動条件」の欄に設定された信号の条件に応じて、条件を満たせば動作する(水を汲み上げる・流体を送る)よう制御できる。
 なお、これとは逆に汲み上げている・流体を送っているという作動状態を、信号として回路ネットワークに送信する事はできない。

  • ポンプは動作無効となる場合、流体を通さなくなる(弁となる)

燃料式掘削機、電動掘削機、油井

これらの採掘施設は作動条件の指定による動作の停止・開始制御とともに、資源の埋蔵量を出力することができる。
&ref(): File not found: "drill01.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";

  • 回路信号の種類は、採掘している資源の種類となる
  • 資源が無尽蔵の場合は(油井がこれにあたる)、採掘レート(小数点以下切り捨ての整数値)が出力される
  • 燃料式/電動掘削機は、埋蔵量の範囲をその掘削機のエリアと鉱床区画全体を選択できる
    • 掘削機のエリアの埋蔵量は、掘削機のツールチップで確認できる量
    • 区画全体の埋蔵量は、マップ画面で鉱床をポイントすることで確認できる
  • 埋蔵量は5秒ごとに更新される

プログラマブルスピーカー

回路ネットワークの信号に基づき、アラート音や音階をサウンドとして出力できる。
他の施設と異なり、動作には回路ネットワークへの接続が必須となる。
回路信号で音階を入力しメロディを奏でるのは手間がかかるが、アラートの出力は簡単な設定でありながら非常に便利なので回路初心者にもおすすめ。
&ref(): File not found: "ProgSpeaker01.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";

  • 全体再生:プレイヤーとスピーカーの距離に関係なくサウンドが聞こえるようになる
  • アラートの表示:サウンド再生時にアラート(バイター襲撃時の!マークと同様のもの)が画面下に表示され、クリックすることでマップ確認が可能となる
  • 複数音再生可能:同時発音数を単音から10音まで再生可能にする

資源が枯渇する前にアラートで報せる

掘削機とスピーカーを接続して、以下の設定を行うことで、プレイヤーに残り資源が少ないことをアラートで報せることができる。

  1. 電動掘削機の近くにプログラマブルスピーカーを設置し、レッドかグリーンケーブルで接続する
  2. 電動掘削機をクリックし、回路設定ウィンドウで動作モードの「資源を取得」にチェックし、読み取りモードを「鉱石区画全体」にする。
  3. プログラマブルスピーカーをクリックし、「全体再生」にチェック、「アラートの表示」にチェック、「信号による音階」にチェックは入れないまま。
  4. 動作条件の信号に資源の種類(鉄、銅等)を、条件式を「<」、右側に一定値でたとえば「5000」とする。例:銅<5000
    1. 動作条件が真となる間、音が繰り返し再生される
  5. 再生する音色を選択する
  6. アラート表示用のアイコンを選択し、「マップにアイコンを表示」にチェックを入れる。アラート文は空欄のままでも「資源枯渇寸前!」等お好きに。
    1. アラート表示を試してみたければ、条件式を「>」にする

信号による音階再生

回路信号の値で、指定した音色の音階を奏でる。

  • 信号値はその音色の設定可能な音階(ドロップダウンリストの表示順)に対応する。
    • ピアノであれば 1~48 が F3~E7

回路ネットワークの応用例

ラッチ回路

参考サイト

以下の様な動作を実現させたい。

  1. SET:ある条件1(一般にトリガーという)を満たすと、「ON状態」にする。
  2. STAY:SETされると、条件1を満たす・満たさないに関わらず、「ON状態」を保持する。
  3. RESET:STAYのとき、条件2(一般にリセット値という)を満たすと、「OFF状態」にする。

これは広義には「ラッチ回路」として知られる動作である。 この動作を実現するということは、回路が現在「ON状態かOFF状態か」という1bitの情報を保持しているとみなせるためである。

タンクの水を600~1000の間になるよう制御する

画像左の汲み上げポンプから画像中央のタンクA、タンクAから画像右のタンクBにパイプがつながっている。タンクAの水が1000を超えた際のみ、水をAからBに400だけ送信する。(※ただし逆流を防ぐため、タンクAとBの間にポンプを設置している)
トリガーとリセット値を、条件回路と算術回路で構成する。

[汲上げポンプから繋がったタンク]---赤---→ [条件回路]→---赤---→[汲上げポンプ:a=0で作動]
                                            b→ [水>999, a=1 ]→a
a→---緑---→[算術回路:a*400,水]→---緑---→b

&ref(): File not found: "kai01.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";

動作の解説

  1. 汲み上げポンプにより水が汲み上げられ、タンクAの水量が1000を超えると、条件回路で、入力条件「水>999」を満たすため、a=1を算術回路に出力する。
  2. 同時に、ON状態を汲上げポンプに出力し、汲み上げポンプはa=0を満たさなくなるので汲上げを停止する。
  3. 算術回路では、a=1を受け取っている限り、水=400を条件回路の入力に対して常に出力する。
  4. 条件回路にはタンクの水量+400が入力されることになる。結果、タンクの水量が599を下回るまで条件を満たし続ける。
  5. タンクの水量が599を下回ると、a=1が出力されなくなる。結果、汲み上げポンプが再起動し、水を汲み上げ始める。

蓄電池の残量が50%を切ったら蒸気機関を稼働、その後90%に回復するまで動かし続ける

応用例:電源スイッチによる電力使用優先度の変更 の応用。
①--③--⑤ と ②--④ を繋ぎ、③と④を無限ループになるように繋ぐ。
このとき無限ループになるケーブルと ①--③ / ②--④ を繋ぐケーブルは別々の色のケーブルを使用して混ざらないようにする。
後は以下のように回路の条件を設定する。
①: A > 90 のとき B=1 を出力
②: A < 50 のとき B=1 を出力
③: B = 0 のとき B=1 を出力
④: B = 0 のとき B=1 を出力
⑤: 作動条件 B > 0

&ref(): File not found: "rs-latch.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";

この回路は信号の状態を③と④の無限ループで保持している。

  • ①がB=1を出力する(=残量が90%以上)と信号の状態がRESETされ、③が信号を出力しなくなる。
  • ②がB=1を出力する(=残量が50%以下)と信号の状態がSETされ、③がB=1の信号を出力する。
  • ①と②が両方出力しない(=残量が50%以上90%以下)と信号の状態がSTAYされ、前回と同じ信号を出力する(しない)。
  • ③が信号を出力している間は電源スイッチがONになり蒸気機関が稼働する。
※上記システムのラッチ回路を組まない方式例

上記システムを条件回路を使わずにわかりやすくしたもの
&ref(): File not found: "storage_rate_switch.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";

  • 構成施設
    • 電源スイッチ1基+チェスト1個
    • 搬送ベルト3枚
    • インサータ2本+蓄電池1基
  • 構造説明
    1. 「電源スイッチとチェスト」をケーブルで繋げる
      電源スイッチは条件を「 【チェストに入れるアイテム】>0 」に設定する
    2. チェストに電源スイッチで条件付けしたアイテムを1個入れる
    3. インサータを2本「 チェストから取り出す→搬送ベルトで流す→チェストへ入れる 」ように配置
      インサータがアイテムをチェストから出せばOFF
      インサータがアイテムをチェストへ入れればONという構成ができる
    4. そして「2本のインサータと蓄電池」をケーブル繋げて条件設定する
      1. 例として
        入れるインサータを「 【A】 < 10 」
        取り出すインサータを「 【A】 > 60 」
        と設定すれば「蓄電率10%未満で起動・61%以上で停止」という非常電源用のシステムになる
      2. 一応<>記号を反対に
        入れるインサータを「 【A】 > 50 」
        取り出すインサータを「 【A】 < 20 」
        と設定すれば「蓄電率51%以上で起動・20%未満で停止」となり工場の一時停止システムにできる
    • ※搬送ベルトに落ちているアイテムをうっかり拾ってしまうとスイッチが起動しなくなる
      それが嫌な場合は搬送ベルト部分をチェストでリレーさせる形にすると良い

*(旧情報)火力発電系を休ませる

旧a12における火力発電のON/OFF応用法

※a13アップデートにより、「スイッチ」を利用することで下記の用法は不要となりました。
目的:火力発電系を休ませよう!
factorioの発電系はソーラー>火力発電>蓄電設備の順に働こうとする。つまり、火力発電で足りる場合には蓄電設備が放電することはない。
しかし、この順序は(特に十分なソーラーパネルと蓄電設備が揃っているときには)都合が悪いときもある。
回路を用いれば、昼にソーラーパネルが蓄電する→夜に蓄電設備が吐き出す→足りなくなると火力発電が働く……という流れを作ることが出来る。

T&T_electric_network1.jpg

画像の解説:

  • この画像には2つの電気ネットワークがある。左側の蓄電施設と中央の高速インサータを繋いだものと、それ以外だ
    • ただし蓄電施設は、高速インサータのネットワークとメインのネットワークの両方に属している
  • この画像の回路ネットワークは、中央のスマートチェストと右側のボイラーに接したスマートインサータを繋いだものだ
    • スマートチェストには原木が10個ほど入っている
    • インサータ(黄色)がスマートチェストから原木を取り出し続け、高速インサータが戻し続けるだけの単純作業
    • ボイラーのスマートインサータはボイラーに石炭を入れ続けるが、「回路内に原木が1個未満(原木 < 1)」を動作条件としている
  • 画像にはないが、メインの電気ネットワーク内には大量のソーラーパネルがあって日中の電力を賄っているものとする

挙動の解説:

  1. 夜になり、ソーラーパネルの発電量が減少して0になる
  2. 左側の蓄電施設が放電を始め、やがて蓄電量が0になる
  3. 蓄電施設のみと接続している高速インサータが停止し、スマートチェストに原木が補充されなくなる
  4. ボイラー隣のスマートインサータの「原木 < 1」の条件が満たされ、ボイラーに燃料が補給され、火力発電が再開される
  5. 蓄電施設に電力が充電され、高速インサータが稼働再開、スマートチェストに原木が補充される
  6. ボイラー隣のスマートインサータの「原木 < 1」条件が満たされなくなり、ボイラーへの燃料供給が停まる
  7. (朝になるまで、2.へ戻ってループ)
  8. 朝になるとソーラーパネルの発電量が元に戻り、蓄電施設は充電されつづける
  9. 高速インサータも稼働を続けるので原木は補充され続け、火力発電は停まる

クロック回路

クロック回路は、時計の秒針が規則正しく時を刻むように、ある特定の時間周期ごとに規則的に値を上昇させることによって、複数の回路のタイミングをとることを目的とした回路である。
回路ネットワークの計算の処理単位である1tickは現実の1/60秒と設定されているため、これと計算処理を用いることで簡単に実装することができる。これらの計算回路設備以外でも、ベルトコンベアとアイテムなどの様々な物理的な設備による実装も可能である。
クロック回路は極めて汎用性が高い。例えば時刻を測ったり、動作のタイミングを合わせたり、信号の遅延処理を行ったりすることにより、単なる生産管理にとどまらない様々な応用ができる。

定数/組み合わせ/算術回路による汎用カウントアップ回路

この画像は定数回路、条件回路、算術回路を用いて、任意の時間間隔ごとに「A」の値を1ずつ増やす出力を(右に置かれた算術回路の出力側で)行う回路である。
&ref(): File not found: "clk01.jpg" at page "討論室/0.15対応/0.15回路ネットワークの仕様";

  • 左(定数回路):定数値を作成し常に出力する。
    出力にA、値1を設定する。
  • 中央(条件回路):出力側と入力側をケーブルでつないでいる。これにより、動作条件に当てはまる限り、1tickごとにAの値が1ずつ増え続ける。そしてこの条件から外れるとA=0になり、再び増え続ける。
    つまりこの条件は、一定の時間が経過した際にtickのカウントアップをリセットする役割を持っている。
    通常は右辺に十分に大きな値を設定すればよい。例えば24時間(=tick換算で5184000)経過後にリセットしたい場合、次のように設定する。
    入力:A < 5184000
    出力:A、値に入力数
  • 右(算術回路):カウントアップするための回路。
    tickの値を定数値で割ることによって、出力する時間間隔を調整する。小さい数で割れば速くカウントアップし、大きい数で割れば遅くカウントアップする。各自で調整できる。
    例えば1秒(=60tick)ごとにAの値を1ずつ増やしたい場合、次のように入力値を60で割ればよい。
    入力:A / 60
    出力:A