【第17回】Unity工場パズルに投入機S/Mを実装|価格・供給能力・ブレ幅で設備選びを変える

機械設計×ゲーム

前回、第16回では、設備ごとの価格・能力・サイズなどを管理するために、
EquipmentData と EquipmentCatalog を作りました。

さらにSTEP4では、その設備データを実際の購入処理につなげ、

設備を配置するとお金が減る。
削除すると返金される。
資金不足なら配置できない。

というところまで実装。

ようやく、「設備を置くゲーム」から
「設備を買って置くゲーム」へ変わってきました。

ただし、まだ大きな問題があります。

設備に価格は付きましたが、同じ種類の設備なら性能はほぼ同じ。
つまり、「何を買うか」で悩む要素がまだありません。

そこでSTEP5では、いよいよ設備そのものに性能差を付けてみます。

最初に手を付けるのは、投入機です。


今まではStartから自動でワークが出ていた

これまでのMVPでは、スタート地点からワークが自動的に生成されていました。
プレイヤーが設備を買うわけでもなく、投入能力を考えるわけでもありません。

ゲームを開始すると、

Start
↓
ワーク生成
↓
コンベアへ供給

という流れです。

でも、お金を使って工場を育てるゲームへ変更した以上、ここも変えたい。
これからは、ワークを供給するためにも「投入機」を購入することにします。

つまり、これまで固定設備だったStartの役割を、プレイヤーが選ぶ設備へ変えていきます。


STEP5:投入機S/Mを作る

まず考えたのは、投入機をS・M・Lの3種類にすることです。

性能が低い代わりに安い S 。
価格と能力のバランスが取れた M 。
高価だけど高性能な L 。

最終的なイメージは、こんな感じです。

投入機価格基準能力供給ブレサイズ
S¥2000.45個/s±40%1マス
M¥5000.75個/s±30%2マス
L¥1,8001.05個/s±20%4マス(2×2)

ここで重要なのが、能力だけを変えないことです。

  • 価格
  • 供給能力
  • 供給の安定性
  • 設置サイズ

複数の違いを持たせることで、単純に
「一番能力が高いLを買えばいい」というゲームにしないようにします。


ただし、STEP5ではいきなりLまで作らない

ここでChatGPTから、

ChatGPT
ChatGPT

「いきなり2×2の投入機Lまで実装しない方がいい」

という提案がありました。

理由は単純です。

Lを2×2にすると、

いきなり

  • 4マス分の占有判定
  • 回転時のサイズ処理
  • 削除処理
  • 返金処理
  • 他設備との重複判定
  • グリッド外への配置判定

などが必要になります。

設備の性能差を試したいだけなのに、
複数マス設備の実装まで一気に混ざってしまう。

これは今の自分には少し危険です。
そこでSTEP5では、まず、投入機SとMだけを実装。

最初は配置システムを大きく壊さず、
「性能の違う投入機を選ぶと、本当にゲームとして面白くなるのか?」
を確認することにしました。

Lの2×2対応は、その後です。


WorkpieceSpawnerを「投入機依存」に変更

これまでワークを生成していたのは、WorkpieceSpawnerです。

ただし以前は、ゲーム側で決められた供給条件に従って、
自動的にワークを出していました。

STEP5では、これを変更。

投入機を置いたら、その投入機が持っているEquipmentDataを参照して、
供給能力に応じたペースでワークを生成するようにします。

イメージとしては、

投入機Sを配置
↓
Sの能力データを取得
↓
0.45個/sを基準に供給

という流れです。

投入機Mなら、0.75個/sを基準に供給します。

これで初めて、買った設備によって実際のラインの動きが変わるようになりました。


「0.45個/s」ってどういう意味?

例えば投入機Sの能力を、0.45個/sとします。

これは理想的には、1秒間に平均0.45個のワークを供給できる、という考え方です。
単純計算すると、約2.22秒に1個。

一方、投入機Mは、0.75個/sなので、約1.33秒に1個。

当然、Mの方が速い。ゲーム画面でも、SとMを比べれば、
ワークが流れてくる密度の違いが見えるようになります。

これはかなり重要です。

数字だけ違っても、プレイヤーが見て違いを感じられなければ、
設備を選ぶ意味が弱くなってしまいます。


能力だけでなく「ブレ幅」を付ける

ここで、後から追加した重要な仕様があります。

それが、供給のブレです。

例えば投入機Sが0.45個/sだからといって、完全に一定周期で、
毎回同じタイミングでワークが出てくるわけではありません。

Sは安い設備なので、少し不安定。
そこで、±40%程度のブレを持たせます。

Mは少し高性能なので、±30%
Lはさらに高性能で、±20%という考え方です。


安い投入機ほど「ガタつく」

例えばSの場合、平均的には0.45個/sでも、
実際のワーク供給は、

●   ● ●    ●

のように少しバラつく。

一方Mでは、

● ●  ●   ● 

くらいまで安定する。

さらにLなら、

● ●  ●  ●  ●

に近づいていく。

もちろん完全な一定間隔ではありません。
でも、高性能な投入機ほど流れが安定するようにします。

これなら、単純に「0.45個/sと0.75個/sの違い」だけではありません。


「速い設備」と「安定した設備」は価値が違う


ここが今回かなり気に入っている部分です。

例えば、投入機Sは¥200。

安い。1マス。置きやすい。
でも、能力は低くて、供給ブレは±40%。

一方Mは¥500。

少し高い。
サイズも大きくなる。

でも、供給能力は0.75個/s。
さらにブレも±30%まで小さくなる。

つまりMを買う理由は、単純に速いからだけではありません。
安定した供給ができるからという価値もあります。

この差があると、プレイヤーは、

「今はSで十分かな?」
「加工機を安定稼働させたいからMにする?」

と考えるようになります。

これが、第16回から目指している設備選びのトレードオフです。


サイズも設備性能の一部にする

さらに、投入機ごとに設置サイズも変えることにしました。

  • S:1マス
  • M:2マス
  • L:4マス(2×2)

というイメージです。

ここもかなり重要です。

Lは、1.05個/s。ブレ±20%。

かなり高性能です。

ただし、2×2で4マス使う。
しかも、¥1,800と高い。

つまり、「お金さえあればLでいい」とはなりません。

12×8という限られたグリッドの中で、
4マスを占有するのはかなり大きい。

ラインの通し方によっては、
MやSを使った方が収まりが良い場合もあります。


設備性能を4つの軸で考える

ここまで整理すると、投入機を選ぶときに見るのは、
単純な能力だけではありません。

今後は、

  • 価格
  • 供給能力
  • 供給の安定性
  • 設置サイズ

の4つを見ることになります。

  • 投入機 S
    • ¥200 / 0.45個/s / ±40% / 1マス
    • 安い。
    • 小さい。
    • でも遅くて不安定。
  • 投入機 M
    • ¥500 / 0.75個/s / ±30% / 2マス
    • 価格は上がる。
    • その代わり能力と安定性が良くなる。
  • 投入機 L
    • ¥1,800 / 1.05個/s / ±20% / 2×2
    • 高性能。
    • かなり安定。
    • でも高い。
    • そして大きい。

こうして見ると、どれにもメリット・デメリットがあります。
かなり狙っていた形に近づいてきました。


高性能だからといってLが正解ではない

例えば目標が、0.6個/s程度だったとします。
ここでLを買えば、能力的には余裕があります。

でも¥1,800も使う必要があるのか?
Mなら¥500で0.75個/s。

こちらで十分かもしれません。

逆に資金がほとんどない序盤なら、
Sを使ってまず製品を出荷し、
お金を貯める方がいいかもしれない。

つまり、要求能力によって正解が変わるようになります。

これはかなりゲームらしいです。


FEEDER JAMもゲームに残す

もう一つ確認したのが、FEEDER JAM(投入機詰まり)です。
投入機には能力がありますが、下流側が詰まっていてワークを送り出せない場合があります。

投入機の前は元気でも、

  • コンベア
  • 加工機
  • 合流部分

どこかがボトルネックになれば、ワークは流れません。
その状態で供給し続けようとすると、投入機出口側が詰まります。

これを、『投入機詰まり』として扱います。

つまり、高性能な投入機を買えば必ず生産量が上がるわけではありません。
下流が処理できなければ、逆に詰まりやすくなる。

ここも、設備能力を考えるゲームとしてかなり重要です。


高性能な投入機を買っても意味がないことがある

例えば、投入機Mが0.75個/s。
でも加工機が0.5個/sしか処理できない。

すると、投入側はどんどんワークを送ります。
加工側は処理できない。

結果、途中で渋滞。最終的にはFEEDER JAM。
つまり、投入能力だけ上げればいいわけではない。

ここでようやく、前から考えていたボトルネック
という考え方がゲームに入ってきます。


STEP5で確認するのは3つ

今回のSTEP5では、

特に次の3点を確認しました。

1.SとMで流れ方が違って見えるか

数字だけ違うのではなく、実際の画面を見て、
「Mの方がたくさん流れている」と感じられるか。


2.SとMを選ぶ意味があるか

安いS。高いけれど速くて安定したM。
どちらにも使い道があるか。

「絶対Mでいいじゃん」になっていないか。
ここはかなり重要です。


3.投入機詰まりが意図通り発生するか

投入能力だけ高くして、下流能力が不足した場合、
ちゃんと渋滞が起きるか。

これによって、設備単体ではなく、
ライン全体の能力を見る必要が生まれます。

この3つが確認できれば、STEP5はひとまず成功です。


初めて「どの設備を買う?」がゲームになった

ここまで来て、設備選択の意味がかなり出てきました。

これまでなら、投入機を置く。
それだけでした。

でも今後は、

  • Sにする?
  • Mにする?
  • お金を貯めてLを狙う?

と考えることになります。

さらに、

  • 設置スペースは足りる?
  • 下流の加工機は処理できる?
  • 供給ブレが大きくても大丈夫?

まで考える。

つまり、設備を買う前からパズルが始まっているわけです。
これはかなり良い変化だと思います。


価格・能力・安定性・サイズのトレードオフ

今後の設備設計では、できるだけ「この設備が絶対正解」を作らないようにしたいです。

  • 安いけど不安定。
  • 高いけど速い。
  • 小さいけど能力が低い。
  • 大きいけど安定している。

こうした特徴を組み合わせて、プレイヤーが、
今の資金・スペース・要求能力に合った設備を選ぶゲームにしたい。

実際の機械設計でも、高性能な部品を使えば何でも解決するわけではありません。

  • 必要な性能
  • コスト
  • スペース
  • 将来の拡張

いろいろ考えて選びます。

このゲームでも、そんな機械設計らしい悩みを再現できそうです。


次は「加工機」にもS・M・Lを作る

今回、投入機に性能差を付けたことで、ようやく
設備選択というゲーム性が見えてきました。

でも、投入機だけ性能が違っても、まだライン全体としては不十分です。
次に必要なのは、当然、加工機の性能差です。

投入機が0.75個/s供給できても、
加工機が0.5個/sしか処理できなければ、

そこで詰まります。

逆に高性能な加工機を買っても、
投入機が遅ければ性能を使い切れません。

つまり、投入能力 × 加工能力の組み合わせが重要になります。

次回は加工機にもS・M・Lを用意して、

「どこにお金をかければライン全体が速くなるのか?」

を考えるゲームへ、さらに進めていきます。

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

コメント

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