前回、第51回では、ゲーム終盤で発生していたFPS低下の問題を改善しました。
ワーク同士の間隔を確認する処理を見直した結果、
大規模な工場でも常時60FPSを維持できるようになりました。
これで、PUZFLOの動作はかなり快適になりました。
そこで今回は、久しぶりにゲーム本体へ新しい設備を追加していきます。
追加するのは、「組立機」です。
これまでのPUZFLOでは、
投入機から供給されたワークを加工機で加工し、
出荷場へ運ぶという流れが中心でした。
しかし、実際の工場では、1つの部品を加工するだけでなく、
複数の部品を組み合わせて製品を作る工程もあります。
そこで今回から、
「複数のワークを組み合わせて、1つの製品を作る」
という仕組みを追加していきます。
ただ、これまでの加工機と違い、
組立機では複数のワークを扱う必要があります。
単純に設備を追加すれば完成、というわけにはいきそうにありません。
今回もChatGPTとCodexを使って、仕様を整理しながら実装に挑戦します。
なぜ今、組立機を追加するのか?

PUZFLOでは、これまでに多くの設備を追加してきました。
投入機、コンベア、加工機、ストッパ、分岐・合流、ロボットアームなど。
設備の種類が増えたことで、かなり複雑な生産ラインも作れるようになりました。
ただ、ゲームの基本的な流れは変わっていません。
ワークを供給する → 加工する → 搬送する → 出荷する
そこで考えたのが、
「加工するだけでなく、複数のワークを組み合わせたら面白いのでは?」
ということでした。
例えば、2つの部品を組み合わせて1つの製品を作る場合、
加工機とは違ったライン設計が必要になります。
必要な部品をそれぞれ準備する。
組立機へ運ぶ。
部品が揃ったら組み立てる。
完成した製品を出荷する。
これだけでも、今までとは違う問題が生まれそうです。
設備を増やすだけではなく、プレイヤーが考えることを増やしたい。
そんな理由から、組立機を追加することにしました。
組立機とは?複数のワークを1つにまとめる設備
今回追加する組立機は、複数のワークを受け取り、1つの組立品を作る設備です。
例えば、2点組立機なら、
ワークA + ワークB → 2点組立品というイメージです。
3点組立機なら3個、4点組立機なら4個のワークを使用します。
通常の加工機が、1個のワークに加工を加える設備なのに対して、
組立機は、複数のワークを1個にまとめる設備という違いがあります。
| 設備 | 入力 | 出力 | 主な役割 |
|---|---|---|---|
| 通常の加工機 | 1個 | 1個 | ワークに加工を加える |
| 2点組立機 | 2個 | 組立品1個 | 2個のワークを組み合わせる |
| 3点組立機 | 3個 | 組立品1個 | 3個のワークを組み合わせる |
| 4点組立機 | 4個 | 組立品1個 | 4個のワークを組み合わせる |
これによって、PUZFLOに新しい生産工程が加わります。
組立機で難しくなるのは「部品を揃えること」

組立機を追加するうえで、特に重要だと思ったのが、
必要な数のワークを揃えなければならないことです。
例えば、3点組立機の場合を考えます。
ワークが1個だけ届いても、組立品は完成しません。
2個届いても、まだ足りません。
3個揃って、初めて組立ができます。
つまり、これまでの加工機とは違い、
複数のワークが揃うまで待つという動きが必要になります。
ここで気になるのが、供給のバランスです。
例えば、あるラインからは毎秒1個のワークが流れてくる。
一方、別のラインからは毎秒0.5個しか流れてこない。
こうした状況では、部品が揃うまで待つ時間が生まれます。
組立機自体の能力が高くても、必要な部品が届かなければ能力を発揮できません。
これは、PUZFLOらしい新しい問題になりそうです。
組立機にも「能力」と「コスト」の違いを作りたい
組立機を追加するときに意識したいのが、これまでと同じく、
設備能力とコストのバランスです。
例えば、高性能な組立機を使えば、組立時間を短くできるかもしれません。
しかし、その分だけ価格が高ければ、必ずしも最適な選択とは限りません。
反対に、安い組立機でも、必要な生産量を満たせるなら十分です。
大切なのは、「高性能な設備を置けば簡単にクリアできる」というゲームにしないことです。
例えば、目標生産量が少ないステージなら、能力の低い設備でも成立する。
一方、目標生産量が多ければ、供給方法や設備の配置を工夫する必要がある。
そうした違いを作りたいと考えました。
設備を選ぶ理由があるゲーム。
ここは、PUZFLOを開発するうえで大切にしている部分です。
組立品には出荷価格の違いも持たせる
組立機を追加すると、出荷する製品にも新しい種類が増えます。
そこで、組立品には通常品とは異なる出荷価格を設定しています。
現在のPUZFLOでは、組立品の価格倍率を次のように設定しています。
| 製品 | 出荷価格倍率 |
|---|---|
| 標準品 | ×1.0 |
| 2点組立品 | ×2.0 |
| 3点組立品 | ×3.2 |
| 4点組立品 | ×4.5 |
組立に使用するワーク数が増えるほど、出荷価格も高くなる考え方です。
ただし、出荷価格が高いからといって、必ず利益が増えるわけではありません。
組立するには、複数のワークを用意する必要があります。
さらに、組立機の購入費用や、そこへワークを運ぶためのコンベアも必要です。
つまり、「高い製品を作るために、どこまで設備へ投資するか?」という新しい判断が生まれます。
ここも、PUZFLOらしいコストと性能のトレードオフにつながります。
ChatGPTと組立機の仕様を整理する

組立機の仕組みが見えてきたところで、次は実装方法を考えます。
自分はプログラムの知識がほとんどないため、
今回もChatGPTに相談しながら仕様を整理していきます。
特に考える必要があるのが、次のような部分です。
単純な加工機なら、1個のワークを受け取って加工すればよかったのですが、
組立機では確認する条件が増えます。
しかもPUZFLOには、すでにさまざまな種類のワークがあります。
組立品の状態をどう管理するかも考える必要があります。
そこで、まずは基本的な組立動作を成立させて、少しずつ条件を追加する方針にしました。
組立機で特に注意したいのは「待機」と「排出」
今回、個人的に気になったのが、ワークの待機処理です。
例えば、3個のワークが必要な組立機に、2個だけ到着している場合です。
この状態で、組立機はどう動くべきでしょうか。
当然、部品が足りないので組立は開始できません。
では、残りの1個が到着したら?
今度は組立処理を開始する必要があります。
さらに、完成品を排出しようとしたとき、
出口が詰まっていたらどうなるでしょうか。
ここで無理に排出すると、ワークが重なってしまう可能性があります。
そのため、組立機では、
「必要な部品が揃うまで待つ」
「組立が終わっても、出口が空くまで待つ」
という処理が重要になります。
以前、第36回では、設備同士の受け渡し部分で不具合が発生することがありました。
今回も同じように、組立機単体だけでなく、
前後の設備と正常につながるかを確認する必要があります。
Codexには段階的に実装を依頼する

仕様を整理できたら、次はCodexへ実装を依頼します。
ただ、これまでの経験から、
「組立機を全部作って」
と一度に任せるのは避けたいところです。
特に今回の組立機は、これまでの加工機とはワークの扱い方が違います。
そこで、まずは基本的な受け取りと組立処理を実装。
次に、組立品の排出。
その後、設備能力や価格、表示などを確認する。
というように、段階的に進める方針にします。
また、第49回・第50回で導入したTick処理にも対応させる必要があります。
せっかく生産結果の再現性を高めたので、
新設備の追加によって以前の問題が戻ってしまっては困ります。
「新しい設備を追加しても、既存の仕組みを壊さない」
ここは今回も大切にしたいところです。
実際に動かして確認したいこと
組立機の実装後は、Unityで実際に生産ラインを作って確認します。
特に確認したいのは、次のような場面です。
| テスト内容 | 確認するポイント |
|---|---|
| 必要数のワークが到着 | 正しく組立を開始するか |
| ワークが不足 | 不自然に組立が進まないか |
| ワークが連続して到着 | 正常に受け取り・待機できるか |
| 出口が塞がっている | 完成品を無理に排出しないか |
| 大量のワークが流れる | 処理が重くならないか |
| FPSが低下する | 生産結果が変わらないか |
| 出荷場へ搬送 | 組立品として正しく判定されるか |
今回は、ただ動けば完成とは考えていません。
組立機を使ったことで、ライン設計が本当に面白くなったか?
という部分も確認したいと思っています。
組立機を追加するとライン設計はどう変わる?

今回の組立機で期待しているのが、ライン設計の選択肢が増えることです。
例えば、これまでは加工機を通過したワークを、
そのまま出荷場へ運べばよいステージが中心でした。
しかし、組立機を使う場合は、加工したワークを一度集める必要があります。
さらに、必要な数のワークを揃えてから組立を行います。
そうなると、
「どの順番でワークを供給するか?」
「どこに組立機を配置するか?」
「組立機の前で渋滞しないか?」
「組立能力に対して投入量は適切か?」
など、考えることが増えます。
これは、PUZFLOが大切にしている、
設計 → 生産 → 問題発見 → 改善
という流れとも相性が良いと思います。
単純に高性能な設備を増やすのではなく、
プレイヤーが新しい問題に挑戦できる設備にしたいところです。
実際の機械設計にも少し似ている
組立機を考えていると、実際の生産設備の設計にも似ている部分があると感じます。
例えば、組立装置の能力が毎秒1個だったとしても、
必要な部品が揃わなければ製品は完成しません。
逆に、前工程から部品が大量に流れてきても、
組立装置の能力が不足していれば、今度は組立機の前で渋滞が発生します。
つまり、設備単体の能力だけではなく、
前後の工程とのバランスが重要になるわけです。
PUZFLOでも、ただ組立機を置けば終わりではなく、
「投入量は足りている?」
「どこがボトルネックになっている?」
「もっとシンプルなラインにできない?」
と考えてもらえる仕組みにしたいと思っています。
このあたりは、機械設計者としての経験をゲームに活かせる部分かもしれません。
まとめ|組立機で「加工するゲーム」から「製品を作るゲーム」へ

今回、第52回では、PUZFLOに新しい設備として
組立機を追加するための仕様と実装方針を考えました。
これまでの加工機が、1個のワークを加工する設備だったのに対して、
組立機は複数のワークを1個の製品にまとめる設備です。
そのため、
- 必要なワーク数
- 部品が揃うまでの待機
- 組立時間と設備能力
- 完成品の排出
- 前後の設備との連携
など、新しく考えることが増えました。
ただし、こうした複雑さは、PUZFLOにとって悪いことばかりではありません。
「どうすれば必要な部品を揃えて、効率よく製品を作れるか?」
という、新しいライン設計の楽しさにつながります。
第49回・第50回ではTick処理を導入し、
第51回ではFPSを大幅に改善しました。
そして今回からは、その安定した生産シミュレーションを活かして、
ゲームそのものの面白さをさらに広げる開発へ戻ります。
「ワークを加工して流すゲーム」から
「複数の部品を組み合わせて製品を作るゲーム」へ。
今回の組立機によって、PUZFLOの工場パズルとしての可能性が、また一段広がりそうです。
Steamでの発売に向けて、引き続き開発を進めていきます。
次回は「切断機」を追加してワークを分割する
今回の組立機によって、複数のワークを組み合わせて
1つの製品を作るという、新しい生産工程が加わりました。
そして次回は、その反対ともいえる設備を追加します。
それが、「切断機」です。
これまでのPUZFLOでは、基本的に1個の
ワークは1個のまま加工・搬送されていました。
しかし、切断機では、
1個のワークを2個に分割する「2分割切断機」
1個のワークを3個に分割する「3分割切断機」
という新しい仕組みを追加します。
一見すると、ワークを分割するだけのシンプルな設備です。
しかし、ワークの数が増えるということは、
コンベアの搬送量や後工程の処理能力にも影響します。
例えば、切断機の前では問題なく流れていたのに、
切断後にワークが増えたことで、後工程が処理しきれずに渋滞することも考えられます。
つまり、切断機を追加すると、これまで以上に
ライン全体の生産能力のバランスが重要になってきます。
次回、第53回では、ChatGPTとCodexを使って、
2分割・3分割切断機の実装に挑戦します。
「複数のワークを1個にまとめる組立機」から、
「1個のワークを複数に増やす切断機」へ。
PUZFLOの生産ラインに、また新しい設計の楽しさを加えていきます。


コメント