【第19回】Unity工場パズルのストッパ能力を「個/s」に統一|ボトルネックと余裕率を考える

機械設計×ゲーム

前回、第18回では加工機にもS・Mを追加し、
投入機と加工機の能力を同じ「 個/s 」で比較できるようにしました。

例えばSサイズなら、

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

という形です。

これによって、「投入機はたくさん流せるけど、加工機が遅い」
といったボトルネックがかなり分かりやすくなってきましたの

ただ、ここでひとつ気になる設備があります。

『 ストッパ 』 です。

これまでストッパは、「何秒ごとに開くか」という時間で設定していました。
投入機と加工機が「個/s」なのに、ストッパだけ「秒」。

これだと、ライン全体を見たときに少し分かりにくい。
そこで今回はSTEP7として、ストッパも、
「何個/s流せるか」という能力表記へ変更してみます。


今まではストッパだけ「秒」で考えていた

これまでストッパには、

Open Period

というパラメータを持たせていました。

例えば、Open Period:2.0秒なら、
2秒ごとに1回ストッパが開くという意味です。

これは制御として考えるなら分かりやすいです。

ただ、ゲーム画面では、

  • 投入機:0.45個/s
  • 加工機:0.45個/s
  • ストッパ:2.22秒

となります。

比較しづらい。

一瞬、「2.22秒って0.45個/sより速いの?遅いの?」と考えなければいけません。
工場パズルとしては、できるだけ数字を見ただけで判断できるようにしたい。

そこでストッパにも、排出能力という考え方を追加します。


ストッパ能力も「個/s」で表示する

ストッパの能力は、Release Capacity(排出能力)として表示することにしました。

単位は、『 個/s 』です。

計算方法はシンプルで、排出能力 = 1 ÷ Open Periodとします。

例えば、

Open Period排出能力
2.0秒0.50個/s
1.0秒1.00個/s
0.5秒2.00個/s

という関係です。

逆に、ストッパを0.45個/sに設定するなら、
1 ÷ 0.45 ≒ 2.22秒ごとに1個排出することになります。

内部ではこれまで通り時間を使って動かしても、
プレイヤーから見える数字は、個/sに統一する。

これならかなり分かりやすいです。


ライン全体を同じ単位で見られるようになった

今回の変更で、

例えばSサイズのラインなら、

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

と表示できます。

設備の種類は違いますが、数字はすべて同じ単位。

これなら、どこがライン能力を制限しているのかをかなり直感的に判断できます。

例えば、

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

なら、一番能力が低いのはストッパ。

つまり、ストッパがボトルネックです。

逆に、

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

なら、加工機がボトルネック。

設備能力を全部「個/s」で表示することで、ラインを数字で読めるようになってきました。


でも、全部0.45個/sなら安定する?

ここで少し面白い問題が出てきました。

例えば、

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

にしたとします。

数字だけ見れば、全部同じ能力。
理論上はきれいに流れそうです。

ところが実際に試運転すると、NGになることがあります。

最初は、

はじめ
はじめ

「全部0.45個/sなのになぜ?」

と思いました。

でも考えてみると、平均能力が同じことと、
実際のワーク到着タイミングが完全に一致することは別です。


理由① ストッパは「一定時間ごとに1個」流す

加工機Sが0.45個/sなら、加工時間は、約2.22秒/個です。
ストッパ0.45個/sも、約2.22秒ごとに1個排出します。

数字は同じです。

でも実際には、加工機が加工終了する瞬間と、
次のワークが加工機入口へ来る瞬間が、完全に一致するとは限りません。

例えば、加工完了が、2.220秒だったとして、
次のワークが、2.219秒で到着したら、ほんの少し早い。

ゲームの判定次第では、
INPUT TIMING NG(加工機投入間隔エラー)
になる可能性があります。

つまり、平均能力が同じでも、タイミングには余裕がないということです。


理由② ストッパから加工機までにも移動時間がある

ストッパを通過したワークは、その瞬間に加工機へ入るわけではありません。

実際には、

ストッパ
↓
コンベア上を移動
↓
加工機入口

という流れがあります。

例えば移動に0.3秒かかるなら、ストッパが開いてから、0.3秒後に加工機へ到着します。

この移動時間そのものが能力を下げるとは限りませんが、
ストッパの開放周期と加工機の処理周期の「位相」には影響します。

つまり、ストッパ側の数字だけを合わせても、
加工機へ到着するタイミングまで完全には揃いません。



理由③ Unityは理論値ぴったりには動かない

さらにゲームならではの問題もあります。

Unityでは、時間処理がフレーム単位で進みます。

理論上、2.222222……秒ごとに処理したくても、
毎回まったく同じタイミングで更新されるとは限りません。

例えば、

2.216秒。
2.233秒。
2.218秒。

のように、わずかな差が出ることがあるようです。

この程度なら普通のゲームではほとんど気になりません。
でも今回のゲームでは、設備能力ギリギリを狙うという遊び方を考えています。

そのため、ほんの小さなタイミング差でも、ライン挙動へ影響する可能性があります。


つまり「0.45個/s」は平均能力

ここで、第18回でも考えた、表示能力と実ライン能力は別という考え方がまた出てきます。

例えば、ストッパに、0.45個/sと表示されている。
これは、理想条件での基準能力です。

でも実際には、

  • ワーク供給のばらつき
  • 搬送時間
  • 加工機の状態
  • ワークの待ち
  • フレーム処理
  • ストッパ前の滞留

などがあります。

そのため、0.45個/sと書いてある設備を並べれば必ず0.45個/s出るわけではありません。
これは今回のゲームとして、かなり面白い部分になりそうです。


じゃあストッパは加工機より少し遅くした方がいい?

ここで次に考えたのが、少し余裕を持たせるという方法です。

例えば加工機が、0.45個/sなら、
ストッパを、0.40個/sくらいにする。

加工機が、0.75個/sなら、
ストッパを、0.70個/sくらいにする。

イメージとしては、

加工能力ストッパ設定例
0.45個/s0.40個/s
0.75個/s0.70個/s
1.00個/s0.95個/s

という感じです。

これなら、加工機が次のワークを受け入れるまでに、少し余裕ができます。
ラインは安定しやすい。ただし当然、ストッパの能力を落としすぎると、
今度はストッパがボトルネックになります。


安全に振りすぎても生産能力が落ちる

例えば加工機が、0.45個/sなのに、
ストッパを、0.30個/sにしたらどうなるか。

かなり安定するかもしれません。
でもライン能力は、最大でも0.30個/s付近。

加工機の性能を使い切れていません。
つまり、安定性を優先しすぎると生産能力が落ちるということです。

逆に、0.45個/sギリギリを狙うと、高い生産能力を出せます。
でも、NGリスクも増える。

ここに、かなり設計者っぽいトレードオフが出てきました。


「余裕率」という考え方も面白そう

ここから思いついたのが、『 余裕率 』という考え方です。

例えば加工機が、0.45個/sだった場合、

ストッパ設定を、

  • 余裕率0%
  • 余裕率5%
  • 余裕率10%

のように選べる。

内部では例えば、

ストッパ排出能力
= 加工機能力 ×(1 − 余裕率)

とします。

加工機0.45個/sなら、

余裕率0%:0.450個/s

余裕率5%:約0.428個/s

余裕率10%:0.405個/sです。

すると、

  • 余裕率0%
    • 加工機能力をほぼフルに使える。
    • でもNGリスクが高い。
  • 余裕率5%
    • 少し生産能力を落とす代わりに安定しやすい。
  • 余裕率10%
    • かなり安全。
    • でも生産能力を使い切れない。

となります。

これは、「どこまで余裕を持たせるか」
そのものをパズルにできます。


ただし余裕率は、まだ正式採用しない

この考え方はかなり面白いと思っています。
ただ、現段階ですぐ正式仕様にはしません。

まだ、

  • 投入機のブレ
  • 加工機能力
  • コンベア速度
  • ストッパ能力
  • 設備価格

これらのバランスが固まっていないからです。
余裕率まで一気に入れると、調整項目がさらに増えてしまいます。

なので今は、ストッパ能力を「個/s」で扱えるようにするところまで。

そこから実際にゲームを遊びながら、

「0.45では難しすぎる?」
「0.42なら簡単すぎる?」
「プレイヤーに余裕率を触らせると面白い?」

を確認していきます。


ストッパが単なるON/OFF設備ではなくなってきた

最初にストッパを作った頃は、かなり単純でした。

ワークを止める。
一定時間で開く。
それだけです。

でも今では、ストッパの設定次第で、
ライン全体の実能力が変わるようになってきました。

速く設定する。
↓
生産能力は上がる。
↓
でもNGリスクが増える。

逆に、

遅くする。
↓
安定する。
↓
でもスループットが落ちる。

つまりストッパそのものが、ライン能力を調整する設備になってきました。
これは今回の工場パズルとかなり相性が良さそうです。


全設備を「個/s」で比較できるゲームへ

今回までで、ライン上の主要設備を、ほぼ同じ単位で考えられるようになってきました。

例えば、

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

なら、一番能力が低いのはストッパ。
つまり、ストッパがライン能力を制限しています。

一方、

投入機M:0.75個/s
↓
ストッパ:0.70個/s
↓
加工機S:0.45個/s

なら、加工機Sがボトルネック。
数字を見るだけでも、かなり判断しやすい。

これは今後、ゲームUIを作る上でも大きなメリットになりそうです。


「最大能力」と「安定稼働」の間を狙うゲームにしたい

ここまで作ってきて、ゲームの方向性が少しずつ見えてきました。
単純に、設備能力が高ければ正解ではありません。

能力ギリギリまで使えば、高い生産能力を出せる。
でも、不安定になる。

逆に、余裕を持たせれば安定する。
でも、能力を使い切れない。

つまりプレイヤーは、最大能力と安定稼働の間を探すことになります。
これは、機械設計や生産設備らしい考え方でもあります。

そして、今回作っているゲームならではの特徴にもできそうです。


次は「最大出荷能力」を持つ出荷場へ

投入機。
ストッパ。
加工機。

ここまで、『 個/s 』
で能力を比較できるようになりました。

次に残っているのが、出荷場です。

現在のGoalは、加工済みワークを受け取るだけ。

でも、新仕様では、出荷場にも、
最大出荷能力を持たせたいと考えています。

例えば、最大出荷能力:0.60個/sという出荷先がある。

そこへ、

  • 0.45個/sで生産するのか。
  • 0.55個/sまで上げるのか。
  • 0.60個/sギリギリを狙うのか。

これが、収益や設備投資にもつながっていきます。

次回は、投入能力 → ストッパ能力 → 加工能力 → 出荷能力までをつなげて、
いよいよ「ライン全体の能力を考える工場パズル」の核を作っていきます。

【第18回】Unity工場パズルに加工機S/Mを実装|投入機と加工機の設備能力をそろえてみた
前回、第17回では、これまで固定されていたStartをやめて、プレイヤーが投入機を購入・配置する仕組みを作りました。投入機にはS・Mという性能差を持たせ、価格供給能力供給ブレ設置サイズを見ながら、「どの投入機を買うか?」を考えるゲームになってきました。例えば投入機Sは安くて小さいけれど、供給能力が低く、ブレも大きい。投入機Mは少し高いけれど、供給能力が高く、より安定してワークを流せる。ここまで来ると、次に性能差を付けたくなる設備は決まっています。『 加工機 』です。今回はSTEP6として、これまで固定設備だった加工機にもS・Mを追加。さらに、投入機と加工機の能力を同じ基準でそろえるというルールにしてみます。今までは加工機も固定設備だったこれまでのゲームでは、加工機はステージ側に最初から配置されていました。プレイヤーが考えるのは、どうやって加工機までワークを運ぶか?という部分が中心です。加工機そのものを買う必要はありません。性能を選ぶこともありません。つまり、加工能力はゲーム側から与えられた条件でした。ところが、投入機をプレイヤーが選べるようになったことで、少し違和感が出てきました。投入側では、Sにする?Mにする?と考えるのに、加工側は常に同じ設備。

コメント

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