MCMの設計
クレイジーシナリオの結晶関連のマイルストーン&タスクで要求される全図形に対応するには、MAM#1では製造できない以下の様な構造を持つ図形を作れなければならない。
単一層内に2色以上の結晶
欠けのある結晶層
結晶の下に隙間
結晶の下にピン
また、これらに対応するためにスワップ機を使って図形を加工をする必要が出てくるが、切断時に落下する部位が出ないように配慮する必要がある。
具体的に製造ラインをどう実装するかは後回しにして、まずはそれぞれどう対応するか考える。
1. 単一層内に2色以上の結晶
下図のような図形の作り方について
https://scrapbox.io/files/66f3666e69407100228c49d8.png
1. 図形を縦横に4分割した部位を含むパーツ図形を製造
https://scrapbox.io/files/66f36849155360001d9575e4.png https://scrapbox.io/files/66f36857fd50c6001d24f135.png
https://scrapbox.io/files/66f3686ff618ea001ce133ae.png https://scrapbox.io/files/66f3687b6e1c72001e1f4535.png
右上のみ欠けている適当な図形をサポート材として用意し、欠けている部分に必要な図形を埋め込む形で製造する
2. 角度の調整後、スワップ機で右上と右下パーツ、左上と左下パーツを合成
https://scrapbox.io/files/66f368a8302b64001c5e1610.png https://scrapbox.io/files/66f368b55bfe4f001d2888ba.png
3. 最後にまたスワップ機で左右のパーツを合成して完成
https://scrapbox.io/files/66f369597650b1001da101aa.png
cr--cr--のような欠けている結晶層もこの方法で製造できる。
ここまではMAM#1と同等の機能を持つ製造ラインを4セット用意し、スワップ機による合成ラインに繋げれば良い。
これを基本動作として、結晶の下に隙間やピンのある図形に対応する方法を考えて行く。
2. 結晶の下に隙間
ゲーム内のナレッジパネルで解説されている通り、隙間を空けたい部位に結晶を埋め込んでおいてスワップ機による切断時に結晶を壊すという方法で製造する。
(例) 最下層に隙間のある図形
https://scrapbox.io/files/66f36d855bfe4f001d28f290.png
右下の隙間の上部には黄色結晶が、左上の隙間の上部には赤結晶がある。
隙間にしたい部位の左右どうちらかの隣を切断しておくとスワップ工程で破壊されるように結晶を仕込む事ができる。
https://scrapbox.io/files/66f36e590a2c7b001de362ff.png https://scrapbox.io/files/66f36e6f7650b1001da17e78.png
https://scrapbox.io/files/66f36e7d865f7b001d9014f2.png https://scrapbox.io/files/66f36e8d0a1368001c09ced0.png
スワップの第1工程(右上と右下、左上と左下を合成)で結晶が破壊されるように結晶を仕込まなければならない事に注意。
上図のように右パーツなら右半分を切断、左パーツなら左半分を切断する。
もしスワップ第2工程まで破壊用結晶を残すようにしてしまうと、たとえば下図のような図形を作る際、完成品に必要な部位である最下層右上・右下のシアン色結晶がスワップ第1工程で破壊用結晶と結合してしまい、第2工程で破壊用結晶もろとも消滅してしまう。
https://scrapbox.io/files/66f37088f618ea001ce1fc4a.png
ついでに言うと結晶は上下にも結合するので、シアン色結晶の上の白結晶、さらには最上層の結晶まで結合している事になり、全て同時に破壊されてしまう。
3. 結晶の下にピン
結晶の上にあるピンについてはMAM#0と同様に原料として持ち込んだピン単層図形を切り刻んで置いていくだけでOK。
しかしピンが結晶の下にある場合、同じ事をすると上層の結晶を製造する所でピン部分が結晶になってしまう。
https://scrapbox.io/files/66f398cc083b28001c8d5e4b.png
上図の場合、4分割の各部位を作る際に最初に最下層のピンを置いてしまうと右上・左下のピンはシアン結晶になり、右下と左上は2層目の隙間を作るための破壊用結晶の一部となって最終的に消滅する。
なので基本に立ち返ってピン押し機を使うしかない。ピンより上の部分を作っておいてから最後にピン押し機に通す。
結晶の下にピンがあってさらにその下に基本図形や結晶があるような図形はゲームシステム上作る事ができない不可能図形。
4. スワップ時の切断方向の調整
2色以上の結晶層の作り方の説明では4分割パーツの右2つと左2つをまず合成するとしていたが、タスク#33-5はその通りに進めるとスワップ第2工程で落下事故が発生する。
https://scrapbox.io/files/66f3d1e3a70085001c778b52.png https://scrapbox.io/files/66f3d1eef04588001c281a10.png
タスク#33-5の要求図形を上から見た図と横(南)から見た図
右パーツがサポート材部分から切り離さると上2層が落下してしまう。
なのでタスク#33-5はスワップ第1工程で左上&右上、左下&右下を合成しておいて第2工程で上パーツと下パーツを合成しなければならない。
逆に、タスク#36-3は上2つと下2つを先に合成してしまうと上下合成時に上パーツで落下事故が発生する。
https://scrapbox.io/files/66f3d1f90900c6001ce511a5.png https://scrapbox.io/files/66f3d203a2118f001d569f1d.png
タスク#36-3の要求図形を上から見た図と横(東)から見た図
基本的には最初に説明した通り右2つと左2つを先に合成するようにし、それではダメなタスク#33-5のような図形は製造ラインに"要求図形を90°回転した図形"を発注するようにして対応したい。
そして完成後、逆回転させて元の要求図形の向きに戻す。
(マイルストーンとタスクの要求図形は納品時に角度が合ってなくてもOKなので逆回転工程は省略可。ランダム図形#1は角度も合ってないとダメ。(これは今後のアプデで角度合ってなくてもOKになるかも?))
なおcr------:CuCu----:--CuCu--のような左右分割パーツを用意しようとしても上下分割パーツを用意しようとしてもダメで積層機を使わないと作れないという図形もあるが、クレイジーシナリオでは要求されないのでここでは考慮しない。
https://scrapbox.io/files/66f6413445ba62001d715745.png https://scrapbox.io/files/66f64141e42e19001dc548c6.png
問題は落下が起きる切断方向をどう調べるかだが、各部位の重なり具合や支持状況を調べて計算して…というのを回路で実装するのは非常に困難。
仮想切断機や仮想スワップ機で試し割りして調べられれば良いのだが、切断時に結晶部分が壊れてしまって落下の有無が分からなくなるパターンが多い。
そこで、要求図形に含まれる結晶部分を適当な基本図形に置き換えた図形信号を用意し(これも面倒ではあるけど支持状況を調べるよりは遥かに簡単)、それを仮想スワップ機に通して落下が起きるかどうかを調査する。
スワップ結果が元の結晶置換図形信号と完全一致すれば落下は起きていないので元の図形信号を製造ラインに発注する。
一致しないとしたらどこかで落下が起きているので、次に結晶置換図形信号を90°回転してから仮想スワップ機に通してみる。
それで落下が起きなければ90°回転形を製造ラインに発注する事にし、ダメなら対応不可としてラインを止める。
以上の対応を全て実装できればクレイジーシナリオの全要求図形に対応できる事になる。
図形の流れと必要な工程をざっくり書き出す。
全体図
code:MCM-shapeflow.mmd
flowchart LR
mat("原料")
subgraph partslines"1/4パーツ製造ライン"
partsline1("パーツ製造ユニットx5")
partsline2("パーツ製造ユニットx5")
partsline3("パーツ製造ユニットx5")
partsline4("パーツ製造ユニットx5")
pin1"ピン押しユニット"
pin2"ピン押しユニット"
pin3"ピン押しユニット"
pin4"ピン押しユニット"
end
mat --> partsline1 & partsline2 & partsline3 & partsline4
subgraph central"統合ユニット"
swap1"スワップ機1"
swap2"スワップ機2"
swap3"スワップ機3"
rot"角度調整"
end
partsline1 --> pin1 -->|右上パーツ| swap1
partsline2 --> pin2 -->|右下パーツ| swap1
partsline3 --> pin3 -->|左下パーツ| swap2
partsline4 --> pin4 -->|左上パーツ| swap2
swap1 -- 右パーツ --> swap3
swap2 -- 左パーツ --> swap3
swap3 --> rot --> export("納品")
1/4パーツ製造ユニット内の図形の流れ
code:MCM-shapeflow-partsunit.mmd
flowchart LR
subgraph leftunit"上流ユニット"
lsp("下層工程")
end
subgraph rightunit"下流ユニット"
rsp("上層工程 or ピン押し")
end
subgraph materials"原料"
mat_bas("基本図形")
mat_pin("ピン")
mat_sup("サポート材")
fluids("液剤")
end
subgraph partsmaker"1/4パーツ製造ユニット"
direction LR
lsp ------>|下層図形| stacker2
painter"ペインター"
stacker1"積層機1"
cutter1"切断機1"
cutter2"切断機2"
rotater"回転機"
stacker2"積層機2"
mixer"混色機"
crystalizer"結晶製造機"
fluids --> mixer --> painter & crystalizer
mat_bas --> painter --> cutter1 --> stacker1
mat_pin --> cutter1
mat_sup --> stacker1
mat_sup -->|結晶or隙間用| stacker2
mat_sup --> cutter2 --> rotater -->|隙間形成用| stacker2
stacker1 -->|担当層図形| stacker2
stacker2 --> crystalizer
crystalizer --> rsp
end
要求図形信号の流れ
code:MCM-signalflow.mmd
flowchart LR
subgraph partslines"1/4パーツ製造ライン"
partsline1("右上製造ライン")
partsline2("右下製造ライン")
partsline3("左下製造ライン")
partsline4("左上製造ライン")
end
subgraph central"統合ユニット"
receiver"要求図形受信"
dirdetector"スワップ方向解析"
rotsim1"角度調整"
targetshape"製造図形信号"
receiver --> dirdetector --> rotsim1 --> targetshape
receiver --> rotsim1
rotsim2"270°回転"
rotsim3"180°回転"
rotsim4"90°回転"
end
targetshape --> partsline1
targetshape --> rotsim2 --> partsline2
targetshape --> rotsim3 --> partsline3
targetshape --> rotsim4 --> partsline4
実装するにあたり難しいのは1/4パーツ製造ラインの信号制御とスワップ方向解析回路。
それぞれ個別ページで解説する。
MCMパーツ製造ユニット
スワップ方向解析回路