ちょこちょこ!?

【AE2 解説】SSDとかそれを利用した並列化のお話し

2018/03/31 08:52 投稿

  • タグ:
  • ゲーム
  • Minecraft
  • AppliedEnergistics2
  • AE2
  • 工業化MOD
  • Applied_Energistics_2

概要

【AE2 VOICEROID 解説】 ゆかりさんはAE2がないと生きていけないようです。
の補足的な内容を含むちょっと難しめの解説です。
不明な点があればコメントかTwitter@choko3115503にお願いします。



解説内容

解説内容は主に以下の2点です。
  • SSDの概要
  • 動画内で登場したエミッタを使う並列化の完全解説

SSD

SSDについての説明です。とはいっても動画の補足的な部分が強いのでちょっと難しめです。

SSDは一言でまとめるとプライマリネットワークからセカンダリネットワーク以下を参照するシステム及び配線を指します。使用例としてはメインのネットワークからサブのストレージネットワークを覗くということや、8チャンネルを超えて配線したいというような時に延長ケーブルのようにして使うなどがあります。というかその用途がほぼすべてな気がします。たぶん。
SSDがないと...?
AE2がアイテム輸送系としてはテレポート系に属するのは言うまでもないですが、テレポート系の特徴として搬出先がないアイテムは取り込みを行わないというものがあります。搬出先にDrawerのようなアイテム種別固定のストレージしかなかった場合取り込みを行わないというのがいい例です。これによりフィルターなどを設定することができ非常に重宝します。

ここでSSDというシステムがない場合を想定してみます。その場合でもStorage BusからInterfaceへの搬入自体は可能なため一見問題ないように見えます。ですがStorage Busの搬出先はあくまでもInterfaceの内部スロット扱いとなるため、セカンダリネットワークに搬入先がなくても取り込みを行ってしまうということになります。そのためInterface内でアイテムが詰まってしまうという事態になりかねません。SSD、便利。

エミッタを使う並列化の話

  • 概要
まず始めに一応概要だけ説明します。
仕組みを一言で説明すれば、機器に搬入されたアイテムを検知してネットワークから隔離することで次の搬入を阻害し別ルートへの搬入を行うというものです。

以下流れを説明します。
  1. まずメインネットワーク上のInterfaceからバッファネットワークへ素材が送られます。この際InterfaceはBlockingModeが有効となっているため1オーダー単位で区切って転送となります。
  2. バッファネットワークからつにっとネットワーク1へと素材が送られます。機器に取り付けられているStorage Busのほうがプライオリティが高いためそちらへ搬入されます。
  3. Storage BusはReport Inaccessible Itemsが有効になっているためMEネットワーク側から取り出しがきかない機器の内部インベントリも参照します。
  4. Level Emitterはアイテム1個以上の検知で消灯する設定となっているので消灯し、Toggle Busがディアクティベートします。
  5. 機器の加工が終わると映っていませんがItem Conduitにより搬出され、Level Emitterは再度点灯・復帰し、待機状態になります。

画像1 システム概要

  • 仕様
仕様です。この配線に必要な項目の中で分かりにくいものは以下5つです。

  1. Level EmitterとStorage Busを同一ネットワーク上に配置
  2. 各ユニットをSSDで区切り別ネットワークとする
  3. BlockingModeを有効化
  4. Report Inaccessible Itemsを有効化
  5. 隔離されるネットワークの維持のための別途電源供給
  6. 画像1での紫色のネットワークの長さは各ユニットにつき総長3m以下に収める(要検証)

次項で1と2の理由を説明します。

  • 経緯と理由
経緯と理由です。長いです。ごめんなさい。

まず始めにシステム上可能そうだったので画像2のような配線を作りました。
画像2 初期型

この配線は確かにある程度振り分けることは可能でしたが、画像3のように一か所にアイテムが固まって搬入されてしまったりするためボツとなりました。SSDをコントローラーに変えてみましたが結果は同じでした。

画像3 振り分け状況

ですのでアイテムが振り分けられずかたまってしまう原因を探りました。するとどうやらLevel Emitterの検知にタイムラグがありそれが一定ではないため振り分けにむらが起きているようでした。

その後検証の結果アイテム搬入用のStorage Busと同一ネットワーク上にLevel Emitterを配置した場合、別のネットワーク上に用意した場合に比べ反応が早いという言ことが分かりました。恐らくですがネットワーク上のストレージにアイテムが搬入された場合、割り込み的にLevel Emitterの検知に更新がかかるのではないかと思われます。

画像4はその実験の一例で、右は同一ネットワーク上にStorage BusとLevel Emitterを配置した場合、左は別々に配置した場合です。InterfaceとToggle Busを用いて同時に搬入を行いました。

画像4 Level Emitterの位置による実験

次です。
そしてそれを組み込もうとしたところ右3つがDevice Missing Channelとなり反応が一切なくなってしまいました。画像5に示すようにSSDで完全に他ユニットと切り離された左端のみ目論見通りに動くという状況でした。

画像5 改良型

そこで画像6のようにSSDにより各ユニットを分離し配線したところ、画像7のような目標の動作を得ることができました。

画像6 完動版

画像7 完動版動作

あとがき。
正直な話この解説記事は書かない気でした(笑)ただ思った以上にエミッタ並列化を使う人が多かったということと仕様を理解しようとする人がちらほらと出始めたので書きました。『なんで動画で説明しなかったの!!!』と思われるかと思いますが、それはこの配線がAE2の内部的仕様に準拠するもので公式にサポートされたものではないためです。(名前が不確定なのもそのせいです)ですので説明しようとするとそこからになり余りにも細かすぎるため、動画ではあくまでも『同じ配線にしてね』という形にとどめていました。ごめんなさい。


  • 一覧へ

コメント

コメントはまだありません
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事