Factory Town 計算ブロックで在庫数に応じた発送制御

生産物流箱庭ゲーム「Factory Town」における計算ブロックの使い方を整理しておきます。前回はごく基礎的な操作方法のまとめでしたが、今回は実用のイメージが湧くかと思います。

なお、Factory Town Ver 0.108m 時点(Windows 版)での情報です。画像はクリックすると拡大します。

やりたいこと

牧場が肥料を生産してベルトコンベアで流してそれを農場が受け取っている場合、農場であまり肥料が消費されないと、肥料が余ってしまってベルトコンベアが渋滞してしまいます。

ベルトコンベアが渋滞しないようにする方法はいくつかありますが、そのうちの 1 つが、「農場の入力用ストレージにある程度肥料が溜まってきたら、牧場側は肥料を送らないようにする」です。これは計算ブロックで実現できます。

kansei今回は例として牧場と農場の代わりに、「井戸が生産した水をサイロで受け取る」場合を考えてみます。

サイロに溜まっている水が 10 個未満の場合のみ、井戸はベルトコンベアに水を放出します。サイロに溜まっている水が 10 個以上になったら、井戸は放出をやめます。

余談ですが、今回もマインカートの時も井戸とサイロを例にしているのは、単に供給が楽というだけで、深い意味はありません。

施設の配置

shisetsu右の写真のように施設を配置します。時間を止めた方がやりやすいです。

井戸とサイロをベルトコンベアで結んでいます。井戸からはグラバーで水を引き出し、サイロへはプッシャーで水を押し込みます。サイロの向きはベルトコンベアに向かないようにして下さい。

計算ブロックの配置

isまず、サイロに溜まっている水の数を計測するセンサーの役割を果たす計算ブロックを配置します。

建設メニューの計算ブロックの中に、その名も「インベントリセンサー」というセンサーブロックがありますので、それを配置します。

math次に、水の数が「10 個未満かどうか」を判定する役割を果たす計算ブロックを配置します。

建設メニューの計算ブロックの中に「数学ブロック」という名前のブロックがあるので、それを配置します。ちなみに、数学というほど仰々しいものではありません。ごく簡単に数字を扱うだけのブロックです。

haichi前回も触れたように計算ブロックの位置はどこでも構いません(問題なく動きます)が、個人的には、インベントリセンサーを左、数学ブロックを右に配置すると、条件が読みやすくて好きです。

これで役者が出そろいました。

インベントリセンサーで読み取った「サイロにある水の数」という状況を入力として、数学ブロックで「10 個未満かどうか」という判断をしたうえで、井戸のグラバーのオンオフを切り替えるという出力を行います。

計算ブロックの設定

is2インベントリセンサーをクリックし、右上に出てくる小窓のオフセットの所をクリックすると、黄色い線が出てきます。

これは、インベントリセンサーが「どこの」在庫の数を調べるかを指定するものです。

is3今回はサイロにある水の数を調べたいので、サイロで「右」クリックします(左クリックではないので注意)。

is4正しく設定できると、再度インベントリセンサーをクリックして選択した際、黄色い線がサイロに向かって伸び、また、オフセットに値が入っています。

アイテムフィルタも設定して明示的に測定対象を指定することも可能ですが、今回は設定しなくても構いません。

link4次に、センサーの結果を数学ブロックに伝達したいので、センサーと数学ブロックをリンクします。センサーが送信元、数学ブロックが受け取り先なので、インベントリセンサーで左クリックし、数学ブロックで右クリックです(詳しいリンクのやり方は前回を参照して下さい)。

link5正しく設定できると、再度インベントリセンサーをクリックして選択した際、数学ブロックへの白い線が増えています(根本が太いほうがインベントリセンサー)。

math3続いて数学ブロックの設定です。数学ブロックをクリックし、右上の小窓から数学関数のところをクリックします。

数学関数ウィンドウが開き、数学ブロックで行う処理の種類を選べます。今回は「10 個未満かどうか」を判定したいので、「未満」を選びます。

math5続いて、右上の小窓から設定値のところをクリックします。

数ウィンドウが開くので、10 を入力します。

math6設定を終えると、数学ブロックの表示が「<10」というようになっています。

今回の設定が表す意味は、「送信元の数値が 10 未満かどうか」ということになります。先ほどのリンクによりサイロの水の数が送信元になっていますので、「サイロの水の数が 10 未満かどうか」を判定できることになります。

条件を満たせば数学ブロックの出力はオン、満たさなければオフになりますので、「サイロの水の数が 10 未満の場合だけオン」が出力されます。

link6その結果を井戸のグラバーに伝える必要があるので、数学ブロックとグラバーをリンクします。数学ブロックが送信元(左クリック)、グラバーが受け取り先(右クリック)です。

以上により、センサーブロックで測定した「サイロにある水の数」を、数学ブロックで「10 個未満かどうか」判定し、結果を井戸のグラバーに送る、という一連の流れが完成しました。

動作結果

res1ゲーム時間を再開すると、井戸から水が流れていきます。

最初はサイロにある水の数はゼロ、つまり 10 個みまんなので、判定結果はオンであり、グラバーが有効な状態になっています。

res2やがて、井戸から流れてきた水がサイロに入っていきます。

水が入る度に数学ブロックで 10 個未満かを判定し、結果をグラバーに送るので、伝達を示す青い線が一定間隔で表示されます。

10 個未満の場合は結果は「オン」のままなので、引き続き水は流れていきます。

res3サイロの水が 10 個溜まったところで、判定結果が「オフ」に変わります。それがグラバーに伝わると、グラバーがオフになって赤く表示が変わります。

以降、水が止まります。

res4なお、サイロにある在庫を手動でゼロに戻すと、再び水が流れるようになります。

以上により、サイロの在庫数に応じた、井戸からの発送調整が実現できました。発送をやめてもベルトコンベアに流れている分があるため、多少のタイムラグがあるので、実際にはこのあたりを工夫する必要が出てくる場合もあるかもしれません。


Factory Town 計算ブロックの一番簡単な使い方

生産物流箱庭ゲーム「Factory Town」における計算ブロックの使い方を整理しておきます。

なお、Factory Town Ver 0.108m 時点(Windows 版)での情報です。画像はクリックすると拡大します。

計算ブロックとは

計算ブロック(Computation blocks)は、物流の状況に応じた調整(アクション)を自動的に行うためのブロックです。「農場で使う肥料は十分にあるから、牧場からの肥料発送をやめよう」とか、「普通は直進しかしないマインカートを状況に応じて分岐させよう」などということができるようになります。

現在の状況という「入力」を元に、必要に応じて「判断」を行い、アクションという「出力」を行う。これを実現するのが計算ブロックです。入力も出力も原則として「オン/オフ」で表現されるので、一般的に論理回路と呼ばれます。Minecraft では Redstone 回路と呼ばれて人気ですが、Factory Town の計算ブロックは
  • 基本的な機能が 1 ブロックにまとめられている
  • 配線が簡単(配線のためのブロックスペースが不要)
という特徴があり、Minecraft よりも回路を組む敷居は低いのではないかと思います。

シンプルな入出力を行う

switch1一番シンプルに計算ブロックを使ってみます。

スイッチ(右の写真の左側のブロック)とランプ(右側のブロック)が 1 つずつで、スイッチを押すと、ランプが光ったり消えたりする、という簡単なものです。

toggleスイッチは「トグル」という名前のブロックになります。建設メニューの計算ブロックでトグルを選択して配置します。

lampランプは「論理ランプ」という名前のブロックです。同じく建設メニューの計算ブロックから選択して配置します。

スイッチとランプの位置関係は適当で構いません。

さて、2 つのブロックを配置しただけでは連動しないので、連動するようにリンクを張ります(配線します)。

linkトグルを左クリックして選択状態にしてから、マウスカーソルを論理ランプの上に持って行くと、「論理リンクを追加」という表示が出ます。この状態で「右」クリックすると、リンクが張られます。

必ず、トグル(入力元)で左クリック→論理ランプ(出力先)で右クリック、の順番です。

link2リンクが張られると、改めてトグルを選択した際に、トグルと論理ランプが白いカーブで結ばれている表示になります。入力元であるトグルの方が太い線になっています。

補足ですが、リンクを張ってあればきちんと動作するので、ブロック同士の位置関係はどんなものでも構いません。逆に、隣同士に配置したとしても自動でリンクが張られるということはありません。

さて、トグルをマウスで選択しマウスカーソルがトグル上にある状態で、Enter キーを押すと、トグルのマークが赤い禁止マークから緑のチェックマークに変化します。

link3同時に、カチッと音をたてながら青いビームが論理ランプに飛び、変化が論理ランプに伝わり、論理ランプが青く光ります。

Enter キーを押す度にトグルの表示が変わり、併せて論理ランプの表示も変わります。

なお、Enter キーを押すまでにマウスカーソルがずれてしまうと、トグルのオンオフは切り替わるのに論理ランプの表示は変わらなくなってしまうので注意して下さい。また、Enter キーはテンキーの Enter キーではなく大きい方の Enter キーを使って下さい。

migishitaさらに言うと、トグルを選択すると画面右下にトグルのオンオフを切り替える小窓が表示されますが、この小窓でマウスを使ってオンオフを切り替えると論理ランプの表示は変わらないので注意して下さい。

バージョンアップするに従ってこの辺りは改善されるとは思いますが、現状ではトグルの扱いに注意が必要です。

とはいえ、実際には手動でトグルをいじることはないので、実用上はあまり問題にはならないかと思います。

以上が、1 入力 1 出力という一番シンプルな計算ブロックの使い方となります。「入力のオン/オフに応じて出力がオン/オフ」されました。これを発展させていくと、実用的な使い方ができるようになります。

Factory Town マインカートの基本的な使い方

run生産物流箱庭ゲーム「Factory Town」において、高速輸送ツールであるマインカート(Minecart:鉄道のイメージ)の使い方が最初分からなくて困ったので整理しておきます。

なお、Factory Town Ver 0.108m 時点(Windows 版)での情報です。画像はクリックすると拡大します。

環状線が基本


マインカート(電車というかトロッコ?)はひたすら前に進むのみで、折り返しという機能はありません。手動で進行方向の反転は可能ですが、自動運転が基本ですので、前進のみを前提に線路(レール)を敷設する必要があります。

これにより、レールの形態としては環状線が基本となります。

レールの敷設


reru建設メニューの通路からレールを選びます。

環状にレールを敷設します。

reru2また、今回は例として「井戸からサイロに水を運ぶ」こととしますので、レールに隣接するように井戸とサイロを配置しました。

サイロを配置すると、向きによっては矢印が表示されますが、これは「レールストップ」です。次で説明します。

レールストップの設置

駅に相当するのがレールストップです。

stop建設メニューの物流ブロックからレールストップを選びます。

stop2井戸から出る方向になるようにレールストップを設置します。

stop3設置したレールストップをクリックすると、右上の小窓にアクセスタイプが表示されるのでクリックすると、アクセスタイプを設定するウィンドウが表示されます。

井戸の水をトロッコに積み込みたい(井戸からトロッコへ出力)ので、井戸のレールストップのアクセスタイプを出力に設定します。

stop4一方、サイロのレールストップでは、トロッコに積んである水を格納したい(トロッコからサイロへの入力)ので、サイロのレールストップのアクセスタイプは入力に設定します。矢印の向きがサイロを向くようにします。

マインカートの配置

kato1建設メニューのワーカーからマインカートを選びます。

kato2レールの上にマインカートを配置します。配置したマインカートを選択して R キーを押すと、マインカートの進行方向を指定できます。

kato3マインカートを走らせると、井戸の前を通る際に自動的に水を積み込みます。

井戸の生産が最大で 10 のため、マインカートにも 10 個しか積まれませんが、マインカートの積載量は最大 20 個です。

サイロの前を通ると、自動的に水を降ろします。

環状線なのでひたすらマインカートがぐるぐる周り、井戸からサイロに水を移します。

単線運用

tansen1輸送効率の面からも環状線が有用ですが、そうは言っても単線で運用したい場合(序盤でレール資源が少ない場合や、景観上の好みなど)は、線路の終端を右の写真のようにすることで折り返し運転が可能となります。マインカートは矢印のように進みます。

tansen2レールの敷設手順としては、まず、交差部分以外の線路を先に敷設しておきます。

tansen3次に、右の写真の①から②に向かってレールを敷設します。右の写真は、②までレールを敷設した段階のものです。

最後に、③から①に向かってレールを敷設すれば完成です。本節の最初の写真のような敷設になるはずです。

ng2参考までに、ダメな例を右に。

①と③を最初に結んでしまうと、交差点部分があたかも十字路のようであるかのようになり、②から進んできたマインカートが直進しようとして詰まってしまいます。

tansen4なお、コンパクトにレールを敷設すると、4 マスで折り返し運転が可能となります。

PetitKara インストールメモ

  • balenaEtcher は管理者権限で起動した方がいいかも
  • 初回起動時、自動的にパーティションサイズを MicroSD サイズに変更してから再起動される
  • 再起動後に OS の設定画面となる。アカウントパスワードは無しにする。Wi-Fi は接続する。
  • Wi-Fi の接続は、OS の設定画面を閉じてしまった場合は、デスクトップ右上の Wi-Fi アイコンで設定できる。
  • Terminal でスクリプト実行。実行後は自動的に再起動され、PetitKara が起動する。

ラズパイ用ケース「JBM-009」の開け方・閉め方

ラズパイとその追加音源ボードを収めるためのケース「JBM-009」を購入したのだが、組み立て方のマニュアルが無かったので、ここに整理しておく。

パーツ

  • Raspberry Pi 3 Model B Plusラズパイ本体:Raspberry Pi 3 Model B+(element14 版)
  • DAC HAT JBM-001追加音源ボード:JustBoom DAC HAT JBM-001

  • DAC HAT Case JBM-009ケース:JustBoom DAC HAT Case JBM-009

ケースの開け方

  1. 開け方1右の写真の青丸部分をケースの内側方面に向かって押すと内部のかみ合わせが緩くなるので、押しながら上に向かってスライドさせるようにする。
  2. 開け方2右の写真のような感じで開く。
  3. 開け方3横から見ると右のような感じ。
  4. Openフタを外した後、側面の 2 枚のパネルを上にスライドさせて外す。

ケースの閉め方

  1. Onラズパイ本体の上に追加音源ボードを載せる(メインのコネクタで接続する)。
  2. gomケース底面に 4 つのゴム足を取り付ける。……べきなのだが、うまくゴム足がハマらない(貫通しない)ので諦めた。ちなみに、ゴム足の広い方がケースの内側だと思う。
  3. sideケースの側面パネル 2 枚を、ボード群に取り付ける。
  4. side2片側の側面パネルは上下が分かりづらいので注意する。小さな 4 つの穴が横に並んでいるほうが下。側面パネル内側にある横方向の溝と、ボード群が合うようにする。
  5. syunoケースの上方向から、ボード群+側面パネル群を、下方向にスライドさせるようにして、ケースに入れる。入れている途中はラズパイ本体のコネクタ類がケースに干渉するので、ケースを内側から外側へ押すようにして歪めて広げながら入れるしかないと思う。ケースにもコネクタにも負荷がかかるので、正直あまりケースへの出し入れはしたくない。
  6. Close1ケースのフタを閉める。当然ながら、この状態ではコネクタとケースの干渉は無い。
  7. Close2LAN 側は右の写真のような感じ。

補足

microsdケースを閉めた状態でもラズパイ本体から MicroSD カードの抜き差しができる。

microsd2ケースを裏返した状態(ケースのロゴが下の状態)で、MicroSD の表面が見える向きで挿す。

※より良いケース開け閉めの方法をご存じの方は教えてください。




カウンター


カンパのお願い
Amazon でお買い物の際は、下記で検索して頂けたら幸いです。
記事検索
最新コメント
  • ライブドアブログ