ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

Factorio スペース・エクスプローラー日記 116 宇宙用ソーラーパネルの準備

f:id:donadonasan:20210116215342p:plain

 研究予約

 エネルギーサイエンスパック1の生産が始まったので、さっそく研究予約する。一番最初に予約するのは、当然銀河鉄道!今後の宇宙での生産は鉄道ネットワークにより生産区画を結合する構成とする予定。そのためには、銀河鉄道は必須技術なのだ。とくに、あの「重要なデータ」とかいう、4種類すべてのサイエンスパックに必要な材料。あれの生産と分配、そして大量の素材の配分にはLTNを用いた銀河鉄道ネットワークが活躍すると思う。

f:id:donadonasan:20210506151025p:plain

研究予約

また、大型電柱よりも送電距離が長く宇宙空間にプラットフォーム無しで設置可能なポール類も必須技術だろう。線路沿いの配電網としても、プラットフォームなしで置けるという特性は重要だ。(ちなみに空間軌道もプラットフォームがない場所に置ける)

あとはエネルギーカタログと、エネルギーサイエンスパック2かな。お、ついに宇宙船が見えてきた。

f:id:donadonasan:20210506151430p:plain

技術開発ロードマップ

ソーラーパネルの増設

そういえば、ここ最近ソーラーパネルを全く増設していないんだった。増設しよう。

f:id:donadonasan:20210506152155p:plain

ミニマップより。ソーラーパネルがこれしかない

f:id:donadonasan:20210506152244p:plain

実際に電力の需給がやばめ

f:id:donadonasan:20210506154023p:plain

ちょっと増設したらなんとかなった

f:id:donadonasan:20210506154215p:plain

更に増設

あと、高効率なソーラーパネルなども研究予約した。

f:id:donadonasan:20210506154411p:plain

研究予約の追加

そして、下準備として宇宙用ソーラーパネルへの転換も開始。

f:id:donadonasan:20210506154557p:plain

宇宙用ソーラーパネルを量産中

でも宇宙用ソーラーパネルの材料であるマルチスペクトルミラーの確保がボトルネックになってるなあ。なんとかしないと。

f:id:donadonasan:20210506154658p:plain

マルチスペクトルミラーを確保中

今日はここまで。

Factorio スペース・エクスプローラー日記 115 Energy Science Pack 1の生産

f:id:donadonasan:20210116215342p:plain

 Energy Science Pack 1の生産準備

宇宙についたので、早速必要な設備を生産した。

f:id:donadonasan:20210502233358p:plain

必要な設備の生産

その間に工場の状態を見ていたら、バイオ廃液が溢れてた。

f:id:donadonasan:20210502233657p:plain

バイオ廃液貯蔵タンクが満杯

バイオ廃液は捨てるのがマジもったいないので、タンクを増設することにした。これで当分は大丈夫だろう。

f:id:donadonasan:20210502233751p:plain

巨大な貯蔵タンクを設置

レーザータレットの生産

そういえば、粒子加速器の生産にはレーザータレットが必要だということを忘れてた。レーザータレットは生産ラインすら存在しなかったので、急遽設置してきた。準備不足だなあ。

f:id:donadonasan:20210502234138p:plain

レーザータレットの生産ライン

再び宇宙へ。無事粒子加速器を作れるようになった。

f:id:donadonasan:20210502234533p:plain

粒子加速器のレシピ

材料試験パックの準備

さらに次のScience Packに備え、材料試験パックの高速生産を開始した。地上で作ることも考えたけど、原料を宇宙に持ってきたほうが材料効率がよさそう。

f:id:donadonasan:20210502234755p:plain

材料試験パックの高速生産

Energy Science Pack 1の生産ラインの検討

Energy Science Pack 1を毎秒0.2個生産するラインの構成はこんな感じかなあ。

f:id:donadonasan:20210502235119p:plain

Energy Science Pack 1を毎秒0.2個生産するラインのレシピ

難易度は全体的に低いけど、ウランのところだけちょっと面倒かな。

f:id:donadonasan:20210502235338p:plain

ウランがめんどくさそう

・・・と思ったけど、こうすれば簡単か。

f:id:donadonasan:20210502235926p:plain

ウランのところの生産ライン

マルチスペクトルミラーが関わる部分はこんな感じだろうか。材料の種類は多いけど構成は単純。

f:id:donadonasan:20210502235834p:plain

マルチスペクトルミラーを使うライン

粒子加速器とかを使うラインはちょっと長いけど、まあシンプルだ。

f:id:donadonasan:20210503000317p:plain

粒子加速器とかを使うライン

ラスト一種のラインを作って

f:id:donadonasan:20210503000433p:plain

ラスト1種のライン

電線を配線し

f:id:donadonasan:20210503000505p:plain

電線の配線

材料を供給して

f:id:donadonasan:20210503000619p:plain

Holnium板の生産開始

f:id:donadonasan:20210503000656p:plain

粒子加速器なども稼働開始

細かなミスを直して

f:id:donadonasan:20210503000901p:plain

あっ スクラップのベルトがどこにもつながってない

f:id:donadonasan:20210503000954p:plain

あっ 製品のフィルタがコピペ元のままだ

f:id:donadonasan:20210503001045p:plain

あっ データカードのベルトを止めたままだった

f:id:donadonasan:20210503001253p:plain

あっ 冷媒のパイプがどこにもつながってないぞ(入力、出力ともに)

f:id:donadonasan:20210503001452p:plain

これはひどい データカードを取り込むインサータを置き忘れている

f:id:donadonasan:20210503001618p:plain

ここも出力部のフィルターがコピペ元のままだ

よしよし、今度こそ生産できそうだな。

f:id:donadonasan:20210503001841p:plain

なんか生産できそうな雰囲気

今日はここまで。

Factorio スペース・エクスプローラー日記 114 Energy Science Pack 1の生産準備

f:id:donadonasan:20210116215342p:plain

 Holminite採掘施設の設置

Holmiumの生産ラインが無事稼働したので、そこに鉱石を供給するHolminite採掘施設をどんどん設置することにする。まずは手始めにここから。海沿いで嫌な地形なので、埋め立てた上で掘削機を設置。

f:id:donadonasan:20210502224145p:plain

いやらしいHolminite鉱床

f:id:donadonasan:20210502224757p:plain

埋め立てていやらしさを軽減

そして、その間に出来上がったHolmiumインゴット数千個を持って一旦地上へ。

Energy Science Pack 1の生産準備

Holmiumの主な用途はEnergy Science Pack 1の生産。これに必要な材料を地上で整え、再び宇宙へ。

・・・あれ。もしかしてデータカードの再フォーマットレシピ、変わったのかな。-100℃のパイプが繋がってるけど、-10℃を要求しているように見える。

f:id:donadonasan:20210502225822p:plain

データカードの再フォーマット、冷却材の温度が-100℃から-10℃に変わった?

つけ直して・・これでよし、と。

f:id:donadonasan:20210502225928p:plain

再フォーマット施設が無事稼働開始

Energy Science Pack 1の最終工程は、Astronomic Science Pack 1の最終工程のコピペにした。

f:id:donadonasan:20210502230309p:plain

Astronomic Science Pack1の最終工程をコピー

f:id:donadonasan:20210502230424p:plain

Energy Science Pack1用にレシピを変更

施設の材料が足りなかったため、一旦地上に戻る。

なんか重油が足りない

地上でついでに液体も補充しようと思ったら、なんか重油をドラム缶に詰める設備が稼働していなかった。重油が足りていないのか?

f:id:donadonasan:20210502232040p:plain

重油に赤ランプ

なるほど、足りてないな。

f:id:donadonasan:20210502232133p:plain

重油が足りていない

石油化学コンビナートの様子を見てみる。原油の処理施設が稼働していないな?ランプがついていないということは、製品が溢れてるのか。

f:id:donadonasan:20210502232339p:plain

石油化学コンビナートの様子

・・・なるほど。軽油が溢れてるのか。

f:id:donadonasan:20210502232411p:plain

軽油が溢れてる

軽油は在庫過剰にならないように適宜石油ガスに変えていたはずだけど・・・あ、石油ガスが溢れているのか。

f:id:donadonasan:20210502232549p:plain

石油ガスも溢れてた

とりあえず石油ガスのタンクと軽油のタンクを空っぽにした。その結果、無事に原油処理施設が稼働開始。とりあえずはヨシ。

f:id:donadonasan:20210502232746p:plain

原油処理施設が稼働開始

なんか想定外のトラブルがあって時間を食ってしまったけど。必要な物資を持って、再び宇宙へ。

f:id:donadonasan:20210502232932p:plain

再び宇宙へ

今日はここまで。

Factorio スペース・エクスプローラー日記 113 LTNの導入

f:id:donadonasan:20210116215342p:plain

 LTNの導入

qeloさんのLTN説明動画を参考に、LTNを導入してみる。

LTN説明動画:

www.youtube.com

LTN説明補足:

www.youtube.com

LTNは本体+ヘルパーmodを入れる。

本体:LTN - Logistic Train Network 1.16.0

LTNネットワーク内シグナルの読み取り:LTN Content Reader 0.3.8

LTN設定GUI : LTN Combinator for 0.18, 1.0 & 1.1 (作者:ProfessorHicman)

Logistic Train Stop Output: 積み込み後または積み下ろし後の予定数量、列車位置情報、列車ネットワーク情報

Logistic Train Stop Input: 様々な設定。LTN Combinatorによりまとめて設定可能だが、手動でもOK

以下のような線路を試しに作って味見してみた。

f:id:donadonasan:20210411124513p:plain

LTN味見線路

また、すべてのLTN駅には駅と隣合わせにLTN Combinatorを設置した。以下、LTN Combinatorがあることを前提に説明する。

積み込み駅の基本設定

貨物を積み込む駅のことを、以下積み込み駅と呼ぶ。LTNの駅を積み込み駅とするには、LTN Combinatorの設定画面にてProviderを選択する。

積み込み駅では、以下が必須である。

  • LTN Combinatorからの出力をLTN Inputに入力する
  • LTNに在庫がいくつあるか知らせる
  • 所定数量以上積み込まないためのインサータ制御

LTN Combinatorからは駅に関する設定値が出力されているので、これをそのままLTN Inputに入れればよい。

LTNに在庫がいくつあるか知らせるには、チェストなどの出力をLTN Inputへつなげればよい。LTNは、LTN Inputに入力された信号をもとに積み出す列車を手配する。

次にインサータであるが、LTNは貨車内の貨物数量が変化している間は列車を発車させないようだ。そのため、インサータが稼働している限りは貨車が満杯になるまで列車が発車しない。そのような運用でも構わないことが多いが、ちゃんと制御したい場合は要求された数量だけ貨車に積み込み終わったらインサータを停止させる必要がある。これを実現するためにLTNはLTN Outputから要求された数量(正確には、積み込み完了時の予定積載数量)を出力してくれており、搬出先ごとに数量が異なる場合でもこれを使うことで対応可能だ。すなわち、駅から出力した貨車内の貨物数量に-1をかけて、これにLTN Outputより出力される要求された数量を足す。インサータにはこの足し合わせた値を入力し、これが0より大ならインサータが動作するようにすれば要求された数量だけ積み込む施設の出来上がりである。

なお、動作の原理上スタックインサータ等の複数個同時に掴むインサータを使うと、要求された数量よりわずかに多く積み込むことがある。これを避けるには、スタック数を1に設定したインサータを使えばよい。

更に、フィルタインサータを使うことで複数種類の貨物を単一の駅から積み出すことも可能だ。LTN Outputからの出力信号は積み出す貨物の信号となっているので、前述の構成でのインサータをフィルタインサータとするだけで、要求された貨物を要求された数量だけ積み積み込む施設となる。

f:id:donadonasan:20210505200937p:plain

LTN積み込み駅設定

積み込み駅の設定には、他にも以下の信号がある。

  • Network ID:駅が所属する列車ネットワークのID。複数のネットワークに所属可能とするため、ネットワーク1: 1, 同2: 2, 同3: 4, 同4: 8・・・同32: 2,147,483,648となっている。ネットワーク1と3に同時に所属するには、1+4=5とする。Encoded Network IDの左にあるボタンをクリックすれば、GUIで設定できるので前記面倒な計算は不要。

    f:id:donadonasan:20210505214234p:plain

    Network IDはGUIで設定可能
  • Threshold:貨物を積み出すために最低限溜まってなければならない数量(しきい値
  • Priority:優先度
  • Minimum Train Length:この駅に呼び寄せる列車の最小編成数(機関車+貨車)
  • Maximum Train Length:この駅に呼び寄せる列車の最大編成数(機関車+貨車)
  • 駅出力:別項目にて説明する。

積み下ろし駅の基本設定

貨物を列車から積み下ろす駅のことを、以下では積み下ろし駅と呼ぶ。LTNの駅を積み下ろし駅とするには、LTN Combinatorの設定画面にてRequestorを選択する。

積み下ろし駅には以下が必須である。

  • LTN Combinatorからの出力をLTN Inputに入力する
  • 要求する貨物の種類及び数量の設定

LTN Combinatorからは駅に関する設定値が出力されているので、これをそのままLTN Inputに入れればよい。

要求する貨物の種類及び数量を設定するには、貨物の種類の信号(鉄鉱石など)に対し必要な数量に-1をかけたものをLTN Inputに入力すればよい。例えば、鉄鉱石が3000必要ならば-3000をLTN Inputに入力する。入力した数値は、LTNにより列車が手配された瞬間から積み下ろし完了まで無視されるようで、気にせずLTN Inputへ入力しっぱなしとしてよい。

要求する貨物の種類及び数量を設定する典型的な構成は、定数回路・比較回路・算術回路によるものである。定数回路には列車を手配するしきい値を設定する。埋立地が100未満のときに列車を手配するなら、定数回路に埋立地-100を設定する。

そして定数回路とチェストの出力を比較回路の入力に接続することで信号を足し合わせ、それぞれ0より小さいかを比較する。0より小さい(=しきい値未満となった)ならば、比較回路からはその資源の信号について1を出力させる。

比較回路の出力を算術回路に入力し、補充数量の-1倍する。例えば300個補充したい場合は、-300倍する。そして最後に、算術回路の出力をLTN Intputへと入力する。

なお、この例ではコピペを容易とするためにしきい値を定数回路で設定しているが、定数回路を省き比較回路の中に直接書いてもよい。

なお、LTN Stop Outputからは積み下ろし後の貨物数量が出力される。要求した貨物については全量積み下ろしが前提なのか、要求量より多く積んでいても0が出力される。一方、要求していない貨物についてはOutputからその貨物の信号および数量が出力されるので、これをフィルタインサータに接続し、フィルタをブラックリストとすれば要求していない貨物の積み下ろしを防ぐことができる。

f:id:donadonasan:20210505193303p:plain

LTN積み下ろし駅設定

車庫の設定

LTNで運用する列車の待機場所を以下では車庫と呼ぶ。LTNの駅を車庫とするには、LTN Combinatorの設定画面にてDepotを選択する。車庫はマップ内に1箇所以上必要である。車庫の数は1個でもよいが、工場の規模が大きくなると車庫からの発車頻度が高くなり詰まりやすくなる。このような場合は車庫の数を増やしたほうがよい。ただし、LTNは車庫と目的地の間の距離を考慮できない(Factorioの制約が原因?)ことに留意。

車庫には以下が必須である。

  • LTN Combinatorからの出力をLTN Inputに入力する

LTN Combinatorからは駅に関する設定値が出力されているので、これをそのままLTN Inputに入れればよい。

f:id:donadonasan:20210505192324p:plain

車庫の設定

 共通項目

LTN Outputからは、駅に停まっている列車の車両位置に関する情報も出力される。車両位置に関する情報は車庫・積み込み駅・積み下ろし駅いずれでも共通である。車両位置は、車両の種別および種類ごとに出力される。例えば、機関車と機関車の一種であるF.A.R.L.がそれぞれ先頭および2両目にいた場合は、赤い背景の機関車種別信号と, 黒い背景の機関車信号, 黒い背景のF.A.R.L.信号が出力される。種別信号はそれに属するものすべてを表す。この例では機関車とF.A.R.L.の両方を含む信号となる。それぞれの信号の数値は編成内における該当車輌の位置を表す。先頭は1, 2番目は2, 3番目は4, 4番目は8・・・となっている。そして例えば1番目と4番目に同じものがいた場合、信号は両者(1, 8)の和である9となる。先程の例だと、機関車が1、F.A.R.L.が2、そして機関車種別信号は1+2で3となる。下の画像の例では先頭が機関車、その後ろに貨車が1という編成なので貨車種別および貨車信号がともに2,機関車種別および機関車信号が1となっている。

なおFactorioではInt32までしか扱えないため、信号に表すことができるのは32両目の数値までとなる。

f:id:donadonasan:20210506014229p:plain

LTN Outputからの出力信号

f:id:donadonasan:20210506014406p:plain

信号種別

今日はここまで。

Factorio スペース・エクスプローラー日記 112 Holmiumの生産開始

f:id:donadonasan:20210116215342p:plain

 

Holminiteの採掘

ライン全体を試運転するため、Holminiteを採掘してみる。まずは工場北東の鉱床を狙ってみる。

f:id:donadonasan:20210430185927p:plain

まずは北東のHolminite鉱床へ(紫色)

f:id:donadonasan:20210430190155p:plain

これ

f:id:donadonasan:20210430190303p:plain

ビビビッと設置

f:id:donadonasan:20210430190416p:plain

惑星の端っこからも回収

f:id:donadonasan:20210430190456p:plain

ベルトは伸びるよどこまでも

Holmiumの試験生産開始

掘削機に電力が供給され、Holmiumの試験生産を開始した。なんか毒々しい色の煙が出てるw

f:id:donadonasan:20210430190652p:plain

Holmiumの試験生産開始

んで。見たところ・・・

・石が混じってる(フィルタし忘れ)

・粉が生産されていない(水の供給し忘れ)

が起きてるな。直さないと。

f:id:donadonasan:20210430190903p:plain

バグが出たぞー

f:id:donadonasan:20210430191033p:plain

上記のバグを直して無事紫の毒々しい煙が出始めた

そして、生産開始・・・したと思ったら、すぐに止まった。イオン交換樹脂の回転寿司部分が詰まってる。

f:id:donadonasan:20210430191140p:plain

回転寿司が詰まった

インサータは自分に近い方から取り込んでしまうため、この供給方式ではインサータから遠い内回りはいつまで経っても取り込まれない。一方、吐き出す方のインサータは内回りにおいてしまう。その結果、内回りが詰まってしまい生産が止まったようだ。

うーん、インサータが取り込む場所は変えられないから(変えられるMODを入れていない)、外回りに吐き出せるようにして内回りに補充するように作り変えるしかないかな。外回りに吐き出すにはminiloaderを使えばいいか。

f:id:donadonasan:20210430191642p:plain

改善後。無事に動き出した。

ラインが無事できたので、もう1組を反対側に線対称な形で設置する。

f:id:donadonasan:20210430191859p:plain

線対称、意外とむずかしい。混乱する。

ちなみにイオン交換樹脂を流す前はこんな感じ。右上が出力。 

f:id:donadonasan:20210502193639p:plain

Holmium Powderの生産ライン

材料を流してみたところ、無事に生産を開始。よし。

f:id:donadonasan:20210502194042p:plain

生産開始

今日はここまで。
 

Factorio スペース・エクスプローラー日記 111 Holmiumの生産準備 イオン交換樹脂の生産開始

f:id:donadonasan:20210116215342p:plain

Holmiumの生産準備

さて。Holminiteのレシピを改めて確認してみる。

f:id:donadonasan:20210430175334p:plain

Holminite ingotを毎秒10個生産する施設のレシピ

この粉の処理が大変面倒だなあ。材料と生産物に同じものが混じってる。ということは、これらを回収しながら生産物に戻さなきゃならないのか。

f:id:donadonasan:20210430175548p:plain

粉のレシピ

硫酸の材料である鉄と硫黄も、ここで作ることにしちゃおうかな。

f:id:donadonasan:20210430175726p:plain

鉄と硫黄もここで生産

生産ラインの設置

いつものように、コピペの単位モジュールをまず作って、それをコピペ設置することで生産ラインを構築してゆく。

f:id:donadonasan:20210430181554p:plain

インゴット生産の基本ユニット

最難関の粉について、試行錯誤を開始。

f:id:donadonasan:20210430181909p:plain

集めて分けて~

f:id:donadonasan:20210430181958p:plain

いやいっそ回転寿司方式か

回転寿司方式は有望そうなんだけど、流量は大丈夫なんだろうか。出したらすぐ取り込めばいいのか?

f:id:donadonasan:20210430182129p:plain

出してすぐに取り込む

とりあえず、これで組んでみよう。

f:id:donadonasan:20210430182259p:plain

出してすぐ取り込む方式でラインを組んでみる

ほかの生産物も考えると、こんな感じになるのかな。

f:id:donadonasan:20210430182548p:plain

だんだん複雑怪奇に

回転寿司部分への材料供給はこんな感じかなあ。

f:id:donadonasan:20210430182839p:plain

回転寿司部分への材料供給

あとは破砕したHolminiteの生産と、イオン交換樹脂の生産だ。破砕したHolminiteの生産はシンプルだ。Holminite鉱石から一気に作ってしまう。

f:id:donadonasan:20210430183058p:plain

破砕したHolminiteの生産ライン

イオン交換樹脂の生産ラインは・・・とりあえずこんな感じで作ってみるか。

f:id:donadonasan:20210430185240p:plain

イオン交換樹脂の生産ライン

試しにラインを動かしてみる。イオン交換樹脂は無事に生産開始したようだ。

f:id:donadonasan:20210430185522p:plain

イオン交換樹脂の生産開始

 今日はここまで。

Factorio スペース・エクスプローラー日記 110 Holminiteの採掘準備


f:id:donadonasan:20210116215342p:plain

Holminiteの採掘準備

ベリリウム生産も一段落ついたので、次はHominiteを生産することにする。採掘するのは・・・惑星Hypnosにしようか。

f:id:donadonasan:20210430172709p:plain

惑星Hypnosの様子

水はあるから原発が使える。原油や基本的な資源もあるので、自立した生産ができそうだ。

さっそく開拓に向かう。

f:id:donadonasan:20210430172920p:plain

いつもの

まずは原発ドーン。

f:id:donadonasan:20210430173042p:plain

ドーン

・・・むぅ。原発建設の間に惑星のマップを作っていたんだが、この惑星は資源の絶対量が少ないなあ。生産力モジュールを使って丁寧に掘削することにしよう。

f:id:donadonasan:20210430173233p:plain

海ばかり

無事に原子炉の設置がおわり、稼働開始。次は打ち上げ施設だ。

f:id:donadonasan:20210430173414p:plain

原子炉が稼働開始

 

かなり適当に打ち上げ施設をおいてみる。

f:id:donadonasan:20210430173511p:plain

ロケット打ち上げ施設の建設

防衛施設も設置。

f:id:donadonasan:20210430173621p:plain

防衛施設も稼働開始

よしよし、ここまで順調だ。無事にロケットも生えてきて、いつでもNauvisに戻れるようになった。

f:id:donadonasan:20210430173728p:plain

ロケットにょき

さてと。この惑星では、物資をどうやって輸送しようかな。小さな星だから、ベルトでいいか。原油はあそこから持ってくるか。

f:id:donadonasan:20210430174500p:plain

小さな星である

適当に油井を設置。

f:id:donadonasan:20210430174626p:plain

てきとーに油井を設置

湾を横断する道路を設置。パイプと電力はここを通す予定。

f:id:donadonasan:20210430174751p:plain

湾を横断する埋立地

f:id:donadonasan:20210430174901p:plain

無事本拠点に接続

f:id:donadonasan:20210430174941p:plain

ちゃんと原油が流れているな、ヨシ

今日はここまで。