Factorio SpaceAgeは無限の遊び方が出来ます。

ですがFactrioは難しい部類のゲームです。僕も最初はなんだこれ?っと思うことが多々あります。今でもとにかく知らなければ非常に無駄が多い、積んでしまうゲームプレイとなりますのでよく調べる、またはゲーム内のチュートリアルを読むことです。ただし問題なのは普通にチュートリアルだけではコンビネーターの解説は短く、呪われた方はもう何を言っているのかわからないレベルになり、動画投稿サイトなどで調べるとネタバレ(ゲーマーにとっての生命)が出ます。それでもです!これといって確実な攻略方法も手段も多岐多様、その多様性こそがSpace Age(以下SA)であり、有限を無限に変えるのがSAの楽しいところです。僕はもう他のゲームがプレイできなくなるほど⋯。ただし回路(以下コンビネーター)の仕組みを理解することが最も重要になるのがSAです。覚えると遊び方が180度変わると思います。

 

コンビネータ(XX回路)を導入すると楽

最初はその程度の認識で大丈夫です。逆に回路というと何だか混同しそうな名前ですので回路機器をコンビネータと書きます。直訳すれば回路はCircuit、コンビネーターはCombinators、なんだか日本語では分からない裁定機器というのが正しいと思うので以後回路機器をコンビネータと記載します。回路ネットワークを組むためにコンビネータを利用するところから入ります。

恐らく現時点(2.0)の状態の詳しい解説を行っている発信者はほとんど居ませんのでFactorioを始めたばかりの方、初心者でも分かりやすく、丁寧な説明を書きたいと思います。現在の2.0(バニラでも)はこのコンビネーターのGUIが非常に分かりやすく、以前よりも導入が簡単になったと思います。プログラミングチック(造語)ではなく、ゲームとして楽しい、かつ実践的な回路設計をご紹介し、以後もバニラやSEをクリアする為に便利な提案をしていきます。

説明用に用意したレイアウトがこちら

原油処理

ここからが回路ネットワークが必要になってくる、かつ今から回路に挑戦してみよう!と思う方は流体の管理から入るのが一番だと思います。必要な流体を必要なだけ使う為です。

赤ケーブルか緑ケーブルで機器同士を接続する

試しにチェストとロングアームインサータをグリーンケーブルで接続します。⋯多分ですが「何だこれ?なにも起こらないじゃない⋯」そして匙を投げてしまったのがかつての僕です。

そうです、そのままでは何も起こりません。しかも直結の回路ネットワークでは変数の流れが見えないので分かりにくいです。そしてケーブルで接続するもの同士でも意味合いが変わってきます。ややこしいですよね、どんどんややこしくなります。ですが多くの設置物は大別して3種類しかありません。

アイテムを貯めるもの、処理をするもの、コンベアベルト

インサーターや組立機、化学プラントなどは処理をするものです。チェスト、タンクはアイテムを貯めるものです。チェスト同士、タンク同士などをケーブルで接続するとそれぞれの中身と数を変数として送ります。気をつけることは貯めるものは同一のアイテムを総和、回路ネットワーク(ケーブルで接続された機器)の同一変数を全て足した値がケーブルに変数として乗ってしまうことです。総和を利用する際には意図的に行うのが良いです。コンベアはなんで別?コンベアは非常に多くの処理が可能です。SAで最も多様する最高のケーブルの接続先ですのでこれだけは以後説明します。

上の画像の説明をザックリ行います。右側にチェックボックスがあり、どのような信号を送るかを決めます。主に使うのは有効/無効とフィルターを設定です。他は無視してください。上級者が使うものだからです。

もし◯が△より□なら 有効/無効

要するに動作条件をこのインサーターだけで行う際に使うものです。当然、適切な指定を行えば動作します。利点はコンビネーターが必要ないこと。これだけで済むなら簡単です。でもどうやって⋯?ここからが本題となります。

これでオッケーです。「なんで?レ点って何よ?」フラグを立てました。要するにレ点というフラグが立っている(レ点=1)の時にこのインサーターは動くのです。

この画像の有効/無効の状態を説明します。レ点◯ イコール□ 1△ の時に動作する。それだけです。レ点はいわばXやYのような変数でコンビネーターで制御される変数です。すなわち、これを見ると間違いなく回路がケーブルの間に挟まっているということになります。これ単体で動かすことが出来ますが、解説をするにあたり、これだけで動作するから使いやすいよ!というのは愚かな説明です。それで覚えないでください。足し算を覚える前に九九を覚えるようなものです。

コンビネータ(XX回路)を使おう

ハードルを上げるつもりはないですが、これ、ゲームなので簡単です。チェスト+定数回路>算術回路>条件回路>インサーターの順に接続します。レイアウトの画像を御覧ください。基本的にケーブルの色は赤でも緑でも構いません。動作は同じです。間違っても銅ケーブルでは接続できないので間違えませんが緑と赤のケーブルは延長させるために電柱に接続することが出来るからです。

コンビネータには入力と出力があります。が

定数回路には変数を定義し、出力出来るだけで特になにもしません。定数、一種のパラメータ的な数値を入力したり、ブループリントではアイテムの入力位置などを示す場合に使われたりします。

算術回路になります。「はい???分かりませんが?」⋯昔はもっと分からなかったのです…。コンビネーターは入力された値を処理し、出力します。ケーブルも同様に入力>>出力と接続します。変数の値がコンビネーターで処理された後、出力側からケーブルへ接続された機器へ出力されます。と⋯この例だと定数回路の信号、ゴースト=23kがレッドケーブルから入力されている、で…グリーンケーブルからの信号はチェストの中身1.9kの固形燃料と⋯ドクロ、出力信号が入力信号にまた入っている?…となります。

入力信号を見てください。背景の色が赤い場合レッドケーブル、緑色の場合グリーンケーブルからの入力変数と、とてもわかり安くなっています。ただこの算術回路から出力された変数が戻って来ています。出力側からグリーンケーブルで接続された値が入力側に接続されている、ということになります。ただしこの算術回路ではゴーストの値を出力しているだけで何も処理を行っていないということです。問題はありませんが接続手段を一考すべきです。出力側と入力側がグリーンケーブルで接続されているのでケーブルの色を変えたりと誤動作を防ぐ為に接続を見直す必要があります。ケーブルの消去方法は接続方法と同じです。またケーブルの色を全部同じにするリスクは変数の混同、余計な加算等が行われる可能性を生みます。まずは混線を避けるために出力ケーブルを赤、入力ケーブルを緑、など自分が理解できる配線を心がけるようにしてください。ケーブルパスタになります。パスタはコンベアだけで十二分です!

さて、脱線を含めた説明ですがこのドクロの変数、-374が何を意味するのか?ですが結論から言うと固形燃料が374個入ると溢れるよ!ということです。固形燃料は1スタック50、鋼鉄のチェストにはゴーストの値=2300個入れたい。そんな理由で定数回路からゴーストに変数を入れました。ざっくばらんに言うと、現状在庫マイナス設定最大在庫という算術演算を行い、出力するという算術回路の出来上がりです。…意味があるのか?…このレイアウトでは無意味です。後はエロい人に聞いて下さい(笑)算術回路の頻度は少ないですが使う機会が訪れるかもしれません。+-/%そして呪われたビット演算と⋯様々な算術演算が出来ます。算術回路応用は説明するかは分かりませんが僕はオーグメンター、宇宙プラットフォームのエンジン出力制御で使いました。

そして機器に出力させる際、ほぼ最後に来るのが条件回路です。ようやくフラグ、インサーターを動作させる条件を決めるときです。算術回路で処理されたドクロマーク、この状態では-1.2k、演算子は>と= つまり変数ドクロが0以上になった時に動作条件であるレ点=1を出力します。現状は緑ケーブルから入力された値、チェスト内の固形燃料在庫数と設定最大在庫数から算術演算された値両方が緑ケーブルから入力されています。そして赤ケーブルでインサーターへと出力されています。コンビネーターで最も使用頻度が高いのがこの条件回路です。<>=等の比較演算を行い、成立した際、設定した値を出力できます。この条件回路は非常に多くの事が出来、故に複雑で多くの条件も設定可能です。慣れないうちは一つの条件につき一台の条件回路コンビネーターを使うと良いです。そして条件回路を減らしていくのが楽しみと言えます。条件回路マスター=Factorioマスターとも言えます。僕はまだまだです。

続いて石油ガス、軽油、重油の在庫管理を行います。

レシピを見ると分かるのですが石油ガスが最も多く55、軽油が45、重油が25と偏った出力をされるのが発展的な石油処理です。一番多く使う石油ガスの生産を維持するために回路を用いるのが最適です。そして重油>軽油>石油ガスと加工できるのですが、石油ガスから軽油を作ることが出来ず、このレシピは不可逆のもので、なにもしなければ生産が止まり、三種いずれかの物資が枯渇します。常にいずれかの流体を消費し続ける必要があります。

タンク3つ、そしてもう一つの定数回路から♡24kをレッドケーブルで条件回路に繋いでいます。この定数はタンクの容量25kからバッファに1k分を引いた値です。このバッファを確保するために回路を用います。ここでは出力された動作フラグをポンプへ繋いでいます。フラグの為に「1」という変数を用意し「1」に1の値を加えフラグとしています。これをレッドケーブルで化学プラント(重油を軽油に)の手前のポンプの作動条件として使っています。このコンビネーターは前述したものと同じ構造にしたものです。

同じく軽油を石油ガスに変えるプラントのポンプ動作条件フラグ。「2」の変数に1を入れ出力します。ごらんの通り条件回路が成立している場合、背景が緑色に変わります。予備知識として緑アスタリスクの出力信号を見てください。これはanythingという仮想シグナルで入力された変数の値が条件成立した場合、その値を出力、1としても出力できます。この条件のAnyの場合このような動きをする、とだけ覚えてください。条件を満たしてない変数は出力されないという状態です。そしてその条件が成立した変数を1にするか入力信号の数値そのままで出力するかを決めます。ややこしいシグナルで実際に試してゆっくり覚えていってください。

これも同様に石油ガスを固形燃料に変えるプラントへのポンプの動作条件回路になります。赤いアスタリスクはこの条件だけではザルです(笑)Everythingという仮想シグナルでこれも条件が足りずまともに動かないです。any everyともにOR AND EOR の条件を使う際に効果を発揮できるものでこれも流しておいてください。

これで3つのコンビネータで3つのポンプをそれぞれ制御する回路が出来ました。⋯どうでしょう、仮想シグナルは経験にも理解度が左右されそうな気がします。使わなくても多少コンビネータが増える程度で回路の入門としては難解だと思います。ただ回路は簡単!と思って頂けると僕は嬉しいです。要するにファンタジーRPGでいう魔法を使わないでクリアする、という状態では無くなったはずです。

では最後にこれを一つのコンビネータで実現しようと試みます。

黄色のアスタリスク、仮想シグナルEachです。非常に高性能な演算子なので様々な事ができます。ポンプの動作フラグをそれぞれのアイテムに変更すれば1つのコンビネーターでこれぐらいならできます。イーチの理論はもう前述した魔法というレベルで是非、実践で多用して出力信号を確認してください。使えます。イーチはまとめて、いうなれば大雑把な処理をこなせる分、細やかな変数割当が出来ません。

コンビネーターを使うことで回路ネットワークの変数を見ることが出来ます。それぞれの機器がどういった変数を出力するのか、そういった意味で最初は何でもかんでもケーブルと条件回路を繋いでみてください。

流れる変数が視覚化出来ることは以後その変数を変化させたい場合とてもゲームとしての魅力が出てきます。

ではでは、サササッと入門編のご紹介でした。今回はこれにて。皆さんも呪われたコンビネーターになってください!