shapez.io Guide

フリープレイ全自動化工場作成の手引 for shapez.io

フリープレイ全自動化工場作成の手引

Overview

フリープレイでの形状作成を自動化し、放置するだけである程度の形状を作成できる工場の作成方法について解説します。

全自動化とは何か

すでに工場は自動じゃないか!と思われるかも知れません。
ですが、そうではありません。

先日の「ワイヤアップデート」により、「ハブが要求する形を工場が理解し、作成する」という「真の全自動化工場」が作成可能になったのです。

なぜ全自動化が必要なのか

フリープレイの形を作る工場を1つ1つ作りたいですか?

私は作りたくないです。

前提知識

このガイドは「キーとは何か」を知っている人向けのものです。

わからない人は、こちらのガイドを読んでください。
[link]

どうやって全自動化を行うのか

ハブが要求する形をどうやって理解するのか

ハブからは、要求されている形が信号として常に発信されています。

この信号を「レイヤ」ごとに分けてあげて、「レイヤを作成する工場」を4つ作成すればよいということになります(少なくともフリープレイの形では)。


(画像に写っている素子は「仮想分離機」です)

工場出力の合流地点

そうしてレイヤを作成した( 各工場の詳細については後述 )後は、「レイヤを重ねる」部分を作成することになります。

ここで行うことは単純です。
(例) 工場1と工場2の合流地点

  • もし形状に2層目が存在しない場合は、工場1の出力をそのままハブに送る
  • もし形状に2層目が存在する場合は、工場2の出力の上に工場1の出力を重ね、ハブに送る

(例) 工場2と工場3の合流地点

  • もし形状に3層目が存在しない場合は、工場2の出力をそのまま工場1と工場2の合流地点に送る
  • もし形状に3層目が存在する場合は、工場3の出力の上に工場2の出力を重ね、工場1と工場2の合流地点に送る

これにはフィルタを使用します。

例えば、このようにして……

上から2層目の情報を「OR素子」により「真偽値(0/1)」に変換し、フィルタに入力してあげます。

そうすると、

  • 上から2層目がない場合はフィルタへの入力が「0」になるので「工場1の出力」がそのまま運ばれる
  • 上から2層目がある場合はフィルタへの入力が「1」になるので右側にある積層エリアにより合成される

ということになります。

「レイヤ」を作る工場

レイヤを作る

今回の全自動工場で「レイヤ」を作成するには、そのレイヤに要求される「ピース」を4つ集め積層し、四色着色機にて着色しレイヤを作成します。

ピースの形状を解析する

ここで重要なのが「形状解析機」です。
「受け取った信号の右上」のピースの情報を出力します。
そのため、

  • そのままの信号を解析し、もとの信号の「右上のピース」の情報を得る
  • 1回右回転した信号を解析し、もとの信号の「左上のピース」の情報を得る
  • 2回右回転した信号を解析し、もとの信号の「左下のピース」の情報を得る
  • 3回右回転した信号を解析し、もとの信号の「右下のピース」の情報を得る

という形にすれば、レイヤの全てのピースの情報が得られることになります。

なので、以下のようにして、各ピースの「形状」情報を取り出します。

(例が回転対称の形状のためわかりにくいですが、各箇所の形状が得られることが分かると思います)

ピースを作成する

とはいえ、「要求されたピースの形状を作成する」というような機能を持つ抽出機は通常プレイには存在しません。

そこで、発想を逆転させ、
「あらかじめ4つ全ての形のピースを作成しておき、必要なピース以外は捨てる」
という方法を取ります。

このように、全てのピースを生成し、

図のように配線して、「要求に合致する形のピースだけを通過」させます。

これを4つのピース全てについて作ってあげます。
苦行ですが、全自動化のために致し方ないものです。

ピースを合成する

今回の全自動化工場では、レイヤごとに

  • 各ピースを( 前述の方法により )作成する
  • 右上と右下のピースを積層する(成果物1)
  • 左下と左上のピースを積層する(成果物2)
  • 成果物1と成果物2を積層し、着色前レイヤの完成

という工程を行います。

単一のピース同士を積層する

これは簡単……とはいえ、気をつけなければいけないことがあります。
要求される形状の中には、「一部が欠けている形状」が含まれることがあります。

そのため、以下のようにして、「どちらかが欠けていた場合は欠けていない方をそのまま出力」することにより、欠けている形状が指定された場合の積層ステップを飛ばします。

成果物同士を積層する

これも簡単……に見えて、若干難しいかもしれません。
1レイヤのうち一箇所だけ欠けている部分があれば成果物をそのまま合成すればよいですが、
二箇所欠けていて、なおかつそれが片方の成果物に両方含まれている場合は
成果物同士の積層をスキップしなければいけません。

着色する
必要な色を抽出する

まずは、ピースのときと同じようにして各ピースの色を抽出します。

そして、各ピースに必要な色だけを通過させ、残りは捨てます。

(追記)
色を分析して、フィルタを使用することで7色全てを用意しなくても必要な色を用意できる「要求対応型色混合機」を作るのも一つの手です。

着色する

四色着色機で着色を行うのですが、四色着色機にはある困った特性があります。

  • 着色したいスロットの入力に「真らしい信号」を入れると着色対象になる
  • 4色とも「偽らしい信号」を入力すると「エラー」になる

1番目は理解している人が多いと思いますが、2番目は全自動化工場を作りでもしない限り見る機会はないでしょう。

でもその回避方法は簡単で、要するに「少なくとも1箇所色が必要な部分があれば着色し、そうでなければそれをそのままレイヤーの成果物とする」ということです。

ここで一つ注意が必要になることがあります。
それは、「各ピースの色の信号をそのまま着色機の入力につなげてはいけない」ということです。

なぜかというと、「無色」も一つの色として扱われており、「真らしい信号」に分類されるからです。


図のように、「無色である場合は0にしてあげる回路」を挟むことで、無色の場合は着色しない信号を送ることが可能です。

完成

「各レイヤを作成する工場」を作成することができましたし、「各レイヤの合流地点」についても解説がすでに終わっています。

というわけで、全自動化工場の作成方法は終わりです。
ありがとうございました。

SteamSolo.com