【第21回】2×2のLサイズ設備を実装|加工機の不具合修正と工場ラインの能力調整

機械設計×ゲーム

前回、第20回では、Goalを最大出荷能力を持つ「出荷場」へ変更しました。

これによって、投入機 → ストッパ → 加工機 → 出荷場
までをすべて「個/s」で考えられるようになり、
どこがライン全体の能力を制限しているのか?
を数字で確認できるようになってきました。

かなりゲームの形が見えてきたのですが、
実際にラインを動かしていると、また気になる部分が出てきました。

それが、ストッパを含めた設備能力のバランスです。

さらに今回は、これまで後回しにしていた、

  • 投入機L
  • 加工機L
  • 低速・中速・高速コンベア

も追加します。

S・Mだけだった工場にLサイズが加わり、コンベアにも性能差が付くことで、
設備選びの幅が一気に広がってきました。


ストッパを考えると「全部同じ能力」では少し厳しい

第18回では、分かりやすさを優先して、

投入機S:0.45個/s
加工機S:0.45個/s

のように、同じサイズなら同じ能力にしました。
数字としては非常に分かりやすいです。

ただ、第19回でストッパまで「個/s」で
考えるようになったことで、一つ問題が見えてきました。

例えば、

投入機:0.45個/s
↓
ストッパ:0.42個/s
↓
加工機:0.45個/s

ストッパを少し遅くすれば、加工機へワークが早く到着しすぎるリスクを減らせます。

ところが今度は、投入機0.45個/s > ストッパ0.42個/sなので、
長時間運転するとストッパ前にワークが溜まっていきます。

最終的には投入機まで渋滞が伸びて、

FEEDER JAM (投入機詰まりエラー)

になる可能性があります。


ストッパをボトルネックにはしたくない

ストッパは、今回のゲームでは、ワークの流れを整える設備として使いたいと考えています。

ストッパそのものがライン全体の最大能力を決める設備には、あまりしたくありません。

だからといって、投入機・ストッパ・加工機を全部0.45個/sにすると、
前回確認したように、Unity上のタイミング差や移動時間などによってNGが発生する可能性があります。

そこで今回は、設備能力の関係を少し変更することにしました。

投入機より、加工機の能力を少し高くする。という考え方です。


「投入能力 < 加工能力」に設定する

今回の基準はこんな感じにします。

サイズ投入機加工機能力差
S0.45個/s0.55個/s+0.10個/s
M0.75個/s0.85個/s+0.10個/s
L1.20個/s1.30個/s+0.10個/s

同じサイズでも、加工機側に0.10個/sの余裕を持たせます。

例えばSなら、

投入機S:0.45個/s
↓
ストッパ:流れを調整
↓
加工機S:0.55個/s

これなら、ストッパを投入機より極端に遅くする必要がありません。
加工機側に少し処理能力の余裕があるため、投入機のばらつきも吸収しやすくなります。


ストッパは「能力を落とす設備」ではなく「流れを整える設備」へ

ここは今回かなり重要な変更です。
例えば、投入機が0.45個/sだから、ストッパを0.40個/sにする。

これでは確かに加工機へゆっくり供給できますが、
長時間では上流にワークが溜まります。

そこで、投入機の平均供給量は処理できる範囲にしつつ、
ストッパでワーク間隔を整える

という使い方へ寄せます。

イメージとしては、

投入機
0.45個/s
↓
ストッパ
タイミングを整える
↓
加工機
0.55個/s

加工機側に余裕があるので、ストッパは単純に生産能力を落とすのではなく、
投入ブレを整流するための設備として機能させやすくなります。


もちろん、この数値もまだ仮

とはいえ、「+0.10個/sが絶対に正しい」とはまだ思っていません。

  • 投入ブレ
  • ストッパ周期
  • コンベア速度
  • 加工時間
  • ステージサイズ
  • 出荷能力

これらが全部関係します。

今のところ、同サイズならまず成立しやすい。
でも設備配置やストッパ調整には意味が残る。

というところを狙って、+0.10個/s
をひとまず落としどころにしました。

ここは今後かなり遊びながら調整していく部分になりそうです。


そして、ついにLサイズ設備を追加する

設備能力のバランスを見直したところで、
次は以前から後回しにしていた、Lサイズ設備を追加します。

これまで使っていたのは、SとM。

今回は、

  • 投入機L:1.20個/s
  • 加工機L:1.30個/s

を追加します。

さらにLは、これまでの設備より大型です。
2×2=4マスを使う設備にします。


Lは「高性能だけど大きい」

Lサイズの特徴は、単純に能力が高いだけではありません。

例えば投入機なら、

  • S:小型・低能力
  • M:中型・中能力
  • L:大型・高能力

という違いになります。

Lなら1台で大量にワークを流せます。

ただし、2×2の4マスを占有する。
12×8のグリッドでは、この4マスはかなり大きいです。

  • コンベアを通したい場所。
  • ストッパを置きたい場所。
  • 加工機との接続。
  • 将来の増設スペース。

こうしたことまで考えて配置する必要があります。
つまりLは、高性能だけど、レイアウトの自由度を削る設備でもあります。


Lサイズでは「設備の中をどう通るか」も決めたい

投入機S・Mでは、基本的に1方向へワークを送り出せれば十分でした。

しかし、Lサイズは2×2の4マス設備です。

設備が大きくなったことで、

  • 「どのマスからワークを出すのか?」
  • 「加工機のどこから入って、どこから出るのか?」

まで考える必要が出てきました。

そこで、Lサイズ設備では入出口もプレイヤーが選べる仕様にします。


投入機Lサイズは8か所から出口を選べる

投入機Lサイズは2×2なので、外周には複数の出口候補があります。

対応するのは、

  • 右上・右下
  • 左上・左下
  • 上辺左・上辺右
  • 下辺左・下辺右

の8ポートです。

操作は、

R:設備を90°時計回りに回転
F:同じ辺にある2つの出口を切り替え

とします。

例えば、RightUpper → R → BottomRight のように、
設備を回転すると出口位置も一緒に回転します。

これなら同じ2×2設備でも、
レイアウトに合わせてワークの出口を変えられるようになります。


加工機Lサイズは「入口 → 中央 → 出口」で通す

加工機Lサイズでは、さらに経路を自由にしたいと考えました。

現状の実装では、ワークが加工機へ入ると、
入口になった1マスの中央付近で停止して加工していました。

ただ、2×2の加工機なのに端のマスで加工していると、見た目として少し不自然です。

そこでLサイズ加工機では、

選択した入口
↓
2×2設備全体の中心
↓
選択した出口

という経路に変更します。

加工処理を行う場所も、4マス全体の中心です。
これなら大きな加工機の中央へワークが入り、
加工されたあと別の出口から出ていくため、かなり自然に見えます。


加工機Lサイズは入口と出口を別々に選ぶ

操作も投入機とは少し変えます。

加工機Lサイズでは、

R:入口ポートを選択
F:出口ポートを選択

とします。

入口・出口ともに、2×2設備外周の8ポートから選択できるようにします。

例えば、

左上から入る
↓
加工機中央で停止・加工
↓
右下から出る

という経路も作れます。

通常のコンベア搬送はこれまで通り上下左右のみですが、
Lサイズ加工機の内部だけは専用経路として中央を通るイメージです。

これでLサイズは、単純に「大きくて高性能な設備」ではなく、
工場レイアウトに合わせて経路まで設計できる設備になりました。


そしてLサイズならではの不具合も発生した

こうしてLサイズ加工機を動かしていると、さっそく不具合も出ました。

時々、ワークが1個だけ加工機の左下マスへ移動し、
そのままずっと取り残されるという現象です。

見た目としては、

他のワークは普通に流れているのに、
1個だけ加工機の隅で停止している。

という状態。

なぜこうなるのか、当然自分では分かりません。

そこで今回も、自分 → ChatGPT → Codex
の流れで原因を追っていきました。


① 自分:まず「何が起きたか」だけ伝える

自分からChatGPTへ伝えたのは、

はじめ
はじめ

「加工機Lで、時々ワークが1個だけ左下のブロックに落ちて放置されます。原因わかる?」

という症状です。

コードのどこが悪いかは分かりません。
なのでまず、見えている現象だけを伝えます。
場合によっては画像も一緒に送ります。


② ChatGPT:怪しい原因を絞る

ChatGPTから返ってきたのは、

ChatGPT
ChatGPT

「見た目の位置と、ワークが内部的に所属しているGridCellがズレている可能性が高い」

という仮説でした。

Lサイズ加工機は4マスあります。
ワークを設備中央まで動かしても、内部では、

  • 見た目:設備中央
  • CurrentCell:左下セル

のような状態になっている可能性があります。

そのまま通常搬送へ戻ると、「自分は左下セルにいる」
と処理されて、左下マスへ戻されてしまう。

症状としてはかなり一致します。


③ Codex:ログで確認してから修正

ただし、ChatGPTの予想だけでコードを直すのは少し怖い。

そこでCodexには、決め打ちで修正せず、
ログで原因を確認してから直すよう依頼しました。

その結果、実際に、

Codex
Codex

加工機から所有権を解除した後も、ワークの論理セルが設備内部に残っていた

その状態で通常停止処理へ入ると、内部セル中央へ位置補正される

Release失敗時でも、加工機側が成功確認せずActiveWorkpieceを解除できる

という不整合が見つかりました。

そこを修正。

4方向・計24回の連続運転テストでは、孤立ワークは発生しなくなりました。


AI開発でも「症状 → 仮説 → 検証 → 修正」

この流れは、今回かなり面白かったです。

自分は、不具合を見つける。
ChatGPTは、原因候補を整理する。
Codexは、コードとログを確認して修正する。

という役割になっています。

しかも、「たぶんここだから直して」ではなく、
「本当にそこが原因なのか確認してから直す」という流れです。

ゲームが複雑になってくるほど、このやり方は重要になりそうです。

Lサイズ設備を追加したことで、性能やレイアウトだけでなく、
複数マス設備特有の経路・セル管理まで考える必要が出てきました。

ゲーム制作初心者としては難しくなっていますが、その分、
少しずつ本物の設備っぽい動きになってきた感じもします。

さらにコンベアにも性能差を付ける

そして今回もう一つ追加するのが、コンベアの速度差です。

これまでコンベアは1種類しかありませんでした。
どのコンベアを置いても、同じ速度でワークが流れます。

そこで今回から、

  • Low (低速コンベア)
  • Medium (中速コンベア)
  • High (高速コンベア)

の3種類にします。


コンベアは低速・中速・高速の3種類

現在のコンベア速度を基準にして、

コンベア速度基準との比較
Low低速0.5倍
Medium中速1.0倍
High高速1.5倍

Mediumが今まで使っていた速度です。

Lowは、その半分。
Highは、1.5倍。

これでコンベアにも、「どれを使うか」という選択肢が生まれます。


全部Highにすればいい、にはしたくない

当然、Highが一番速い。
だったら、全部Highを置けばいい。となりそうです。

でも、ここには今後、価格差を付けます。

例えば、

Lowは安い。
Mediumは標準。
Highは高い。

となれば、「この区間、本当にHighが必要?」
と考えるようになります。

長い直線だけHighにする。
設備直前はMedium。
ほとんど影響しない場所はLow。

そんな使い分けができれば、
コンベアそのものも設備選択の一部になります。


コンベア速度と「個/s」は少し違う

ここで注意したいのが、コンベアの速度は、
投入機や加工機の「個/s」と完全に同じものではありません。

投入機の0.45個/sは、1秒あたり何個供給できるか。
加工機の0.55個/sは、1秒あたり何個処理できるか。

一方コンベアは、ワークがどれくらい速く移動するかです。

なので、Highコンベアにしたから、
単純にライン能力が1.5倍になるわけではありません。

投入機が0.45個/sなら、どれだけ高速コンベアを使っても、
ワークそのものは平均0.45個/sしか供給されません。

ただし、

  • 搬送時間
  • 滞留
  • 加工機までの到達時間
  • ライン長

こうした部分には影響します。

ここもゲームバランスとして面白くなりそうです。


「どこだけ速くする?」という新しい悩み

コンベアが3種類になると、レイアウトを考えるときに新しい悩みが生まれます。
これまでは、コンベアをどこに置くかだけでした。

これからは、どのコンベアを置くかも考えます。

例えば、

  • 加工機まで遠いから、ここだけHighにする?
  • この短い区間ならLowで十分?
  • 全部Highにすると高すぎない?

という判断です。

つまり、

設備本体だけではなく、設備同士をつなぐ部分にも
コストと性能のトレードオフが入ってきます。


今回は一気に「設備選び」が広がった


今回追加・変更したものを整理すると、かなり大きいです。

  • 投入機と加工機の能力バランスを再調整。
    • 同サイズでも、加工機側へ0.10個/sの余裕を持たせます。
  • Lサイズ設備の追加
    • 投入機L:1.20個/s
    • 加工機L:1.30個/s
  • コンベア種類追加
    • Low / Medium / Highの3種類へ。

ここまで来ると、プレイヤーが考えることは、かなり増えてきました。


能力だけでなく「サイズ」と「搬送速度」まで考える

初期のゲームでは、

  1. 設備を置く。
  2. 向きを変える。
  3. ワークを流す。

という比較的シンプルなパズルでした。

今は、

  • 設備価格
  • 投入能力
  • 加工能力
  • 供給ブレ
  • ストッパ調整
  • 最大出荷能力
  • 設備サイズ
  • コンベア速度

まで考えるようになっています。

ただ、個人的にはまだ、
機械設計者ならなんとなく直感的に理解できる範囲
に収まっている気がします。

「全部覚えなければ遊べない」ではなく、
数字を見比べれば、なんとなく問題点が分かる。

ここは今後も大事にしたいです。


L設備だけでは、いつか能力が足りなくなる

Lサイズまで追加すると、1ラインの生産能力はかなり上がります。

投入機L:1.20個/s

加工機L:1.30個/s

でも、出荷場の能力をさらに上げていけば、
いつか、L設備1台でも足りない状況になります。

例えば、

出荷側が3個/sを要求するようになれば、
1.2個/sの投入機Lだけでは当然届きません。

そこで初めて、「ラインをもう1本作ろう」という理由が生まれます。


複数ライン化の前に、設備を選びやすくしたい

ここまでS・M・Lサイズの投入機・加工機に加えて、
低速・中速・高速コンベアまで増え、設備の選択肢がかなり広がってきました。

自分としては、このまま次に複数ライン化へ進むつもりでした。

投入機や加工機を複数台置けるようにして、
いよいよ工場全体を広げていこうと思っていたのですが、
ここでChatGPTからこんな提案がありました。

ChatGPT
ChatGPT

複数ライン化の前に、設備情報を見て
選びやすくするUIを入れるのがおすすめです。

価格・能力・サイズ・特徴などを、その場で比較できるようにすると
設備選びの意味が伝わりやすくなります。

確かに、設備が増えた今の状態では、「どの設備を選べばいいのか?」が少し分かりにくくなってきています。

複数ライン化してさらに設備が増える前に、一度ここで設備の選びやすさを整えておく方が良さそうです。

そこで次回、第22回では、設備を選択したときに
価格・能力・サイズなどを確認できる設備情報UIを追加していきます。

まずは、「何を買うか考えやすいゲーム」にしてから、
工場をさらに広げていきます。

コメント

タイトルとURLをコピーしました