【第53回】Unityで切断機を実装!ワークを2分割・3分割する工場シミュレーションゲーム開発【AIゲーム制作】

機械設計×ゲーム
0

前回、第52回では、PUZFLOに新しい設備として「組立機」を追加しました。
組立機は、複数のワークを組み合わせて、1つの製品を作る設備です。

これによって、必要な部品を揃えることや、供給量のバランスを考えるという、
新しいライン設計の楽しさが生まれました。

そして今回は、その組立機とは反対の役割を持つ設備を追加します。

それが、「切断機」です。

これまでのPUZFLOでは、基本的に1個のワークは、加工しても1個のままでした。

しかし、切断機では、

1個のワークを2個に分割する。
1個のワークを3個に分割する。

という処理を行います。

一見すると、ワークを増やすだけのシンプルな設備です。
ところが、実際にゲームへ組み込もうとすると、意外と考えることが多そうです。

  • 切断後のワークをどうやって排出するのか?
  • 後ろの設備が処理しきれなかったらどうするのか?
  • 切断したワークを、もう一度切断できるようにするのか?

今回もChatGPTとCodexを使って、こうした仕様を整理しながら実装していきます。


なぜ切断機を追加するのか?

PUZFLOでは、これまでにさまざまな設備を追加してきました。

投入機、加工機、コンベア、ストッパ、分岐・合流、ロボットアーム、組立機など。
それぞれ役割は違いますが、ゲーム内のワーク数を考えると、大きく分けて次のようになります。

設備ワーク数の変化
コンベア・ストッパ変わらない
加工機1個 → 1個
組立機複数個 → 1個
切断機1個 → 2個・3個

組立機を追加したことで、複数のワークを1つにまとめることができるようになりました。

そこで今度は、**1つのワークを複数に増やす設備があっても面白いのでは?**と考えました。

例えば、今までは毎秒1個のワークを流していたラインでも、途中に切断機を入れることで、切断後のワーク数を増やせます。

ただし、ワークが増えるということは、それだけ搬送や加工にも負担がかかります。

つまり、切断機を追加することで、

「どこでワークを増やすべきか?」

という新しい設計の考え方が生まれます。


2分割切断機と3分割切断機を追加する

今回追加するのは、次の2種類です。

2分割切断機

1個のワークを受け取り、2個の切断後ワークを作る設備です。

入力:1個 → 出力:2個

例えば、1秒間に1.5個のワークを処理できれば、
理想条件では毎秒3個の切断後ワークを作れます。

ただし、切断後のワークを排出する時間や、
出口の混雑によって、実際の生産能力は変化します。

3分割切断機

こちらは、1個のワークを3個に分割する設備です。

入力:1個 → 出力:3個

例えば、1秒間に0.85個のワークを処理できれば、
理想条件では毎秒2.55個の切断後ワークになります。

2分割切断機と比べると、1回の切断で増えるワーク数は多くなります。

一方で、入力処理能力が低ければ、
必ずしも3分割切断機の方が大量生産に向いているとは限りません。

ここでも、分割数と設備能力のバランスが重要になります。


2分割と3分割、どちらが有利なのか?

例えば、次のような条件を考えます。

項目2分割切断機3分割切断機
1回の切断でできるワーク2個3個
入力処理能力の例1.5個/s0.85個/s
理想的な切断後ワーク数3.0個/s2.55個/s

※ここでは能力差を説明するための例として整理しています。
実際の処理能力はゲーム内の設備設定に従います。

この例では、1回の切断で作れる数は3分割の方が多いものの、
毎秒の生産量は2分割の方が多くなります。

つまり、3分割だから必ず高性能というわけではありません。

こうした設備ごとの違いがあれば、プレイヤーは
ステージの条件に合わせて切断機を選ぶ必要があります。

単純に新しい設備を増やすだけでなく、
設備を使い分ける楽しさを作りたいところです。


切断機で難しくなるのは「ワークが増えること」

今回の切断機で、特に重要だと思ったのが、ワーク数の増加です。
例えば、切断機へ1個のワークが入ります。

そのワークを3分割すると、3個のワークが出てきます。
当然、切断前よりもワーク数が増えています。

ここで気になるのが、後工程の処理能力です。

例えば、

  • 切断後のワーク:毎秒3個
  • 次の加工機の能力:毎秒2個

だった場合、加工機はすべてのワークをすぐに処理できません。

その結果、加工機の前でワークが溜まっていきます。

つまり、切断機自体が正常に動いていても、
その先の設備がボトルネックになる可能性があります。

ここが、今回追加する切断機の面白いところです。


ワークが増えればコンベアも混雑する

切断機の影響は、加工機だけではありません。
コンベアにも関係してきます。

例えば、切断前には一定の間隔で流れていたワークも、切断後は2個・3個に増えます。

そうなると、コンベア上に存在するワークが増え、渋滞が発生しやすくなります。

ここで重要なのが、以前から実装している
Minimum Spacing(ワーク同士の最小間隔を守る処理)です。

PUZFLOでは、ワーク同士が重ならないように搬送しています。

そのため、切断機から大量のワークが排出されても、
後ろのワークが前のワークを追い越したり、
重なったりしないようにする必要があります。

切断機の追加は、単純にワークを増やすだけではなく、
ライン全体の流れを考える要素にもつながります。


切断機の仕様をChatGPTと整理する

切断機の基本的な役割が決まったところで、次は細かい仕様を考えていきます。
今回も、自分がやりたい動きをChatGPTへ伝え、Codexに実装してもらう流れです。

特に確認したいのは、次のような項目です。

  • 切断条件:どのワークを切断できるのか
  • 分割数:2分割・3分割をどう扱うのか
  • 切断時間:切断完了までどれくらいかかるのか
  • 設備能力:1秒間に何個の元ワークを処理できるのか
  • 切断後のワーク:種類や加工状態をどう管理するのか
  • 排出条件:出口が詰まった場合にどうするのか
  • アニメーション:切断している動きをどう見せるのか

組立機と同じように、切断機でも単体で動けば完成というわけではありません。
特に、切断後に増えたワークを正常に排出できるかが重要になります。


切断できるワークには制限を設ける

切断機を追加する際に考えたのが、対象となるワークの種類です。
PUZFLOには、標準品・未加工品・精密品・短納期品など、複数種類のワークがあります。

すべてのワークを自由に切断できるようにすると、
ルールがかなり複雑になります。

そこで今回は、標準品のみ切断可能という条件を設けます。
これによって、切断機を使う場面を分かりやすくできます。

また、切断後のワークを何度も切断できてしまうと、
ワーク数が際限なく増える可能性があります。

そのため、一度切断したワークは再切断できないというルールも設けます。
こうした制限があることで、切断機を使うタイミングや配置場所にも意味が生まれます。


切断後のワークをどう排出するか?

切断機の実装で、特に注意したいのが排出処理です。

例えば、3分割切断機で1個のワークを切断すると、
3個の切断後ワークができます。

しかし、出口が1つしかない場合、3個を同時に排出することはできません。
そのため、出口の空き状況を確認しながら、順番に排出する必要があります。

ここで無理に排出すると、ワーク同士が重なったり、
設備の出口で詰まったりする可能性があります。

また、切断後のワークを排出しきる前に、
次のワークを受け取ってよいのかも考える必要があります。

こうした部分は、見た目以上に実装が難しそうです。

特にPUZFLOでは、以前から設備同士の受け渡し部分で
不具合が発生しやすいことが分かっています。

そこで今回は、切断機の内部動作だけでなく、
その前後のコンベアや加工機との接続も確認していきます。


Codexには段階的に実装を依頼する

今回の切断機も、一度にすべての機能を実装するのではなく、段階的に進める方針にします。

まず、1個のワークを受け取る。

次に、2個・3個のワークへ分割する。

その後、切断後のワークを正常に排出する。

最後に、設備能力・価格・アニメーションなどを確認する。

また、PUZFLOでは第49回・第50回でTick処理を導入しました。

そのため、今回追加する切断機も、
60Hzの共通Tick処理に対応させる必要があります。

FPSが低下した場合でも、切断のタイミングや
排出順序が変わらないようにしたいところです。

さらに、第51回ではMinimum Spacingの最適化を行ったばかりです。

切断機によってワーク数が増えても、
再びゲームが重くならないかを確認する必要があります。

「新しい設備を追加しても、これまで改善した仕組みを壊さない」

ここは今回も大切にしたい部分です。


切断機の動作確認で気になるポイント

実装ができたら、Unityで実際に切断機を動かして確認します。
今回は、特に次のような場面をチェックしたいと思っています。

テスト内容確認するポイント
2分割切断1個から2個のワークができるか
3分割切断1個から3個のワークができるか
切断対象標準品以外を切断しないか
再切断切断済みワークを再切断しないか
出口の渋滞ワークが重ならず正常に待機できるか
連続投入切断と排出の順序が正常か
FPS低下切断結果が変わらないか
大規模な工場ワーク増加で処理が重くならないか

特に重要なのは、切断機を追加したことで、生産結果の再現性やFPSが悪化しないことです。
切断機そのものが正常に動いていても、ゲーム全体に悪影響が出るなら完成とはいえません。

今回も、実際に生産ラインを作って、問題がないか確認していきます。


組立機と切断機を組み合わせると面白そう

今回の切断機を追加すると、前回の組立機との組み合わせも考えられるようになります。

例えば、

  • 1個のワークを切断する。
  • 切断後のワークを別々のラインへ送る。
  • 必要な加工を行う。
  • 組立機で再び1個の製品にまとめる。

という生産ラインです。

これまでのPUZFLOでは、
ワークを加工して出荷することが中心でした。

しかし、組立機と切断機が加わることで、

「ワークを増やす → 加工する → 集める → 組み立てる」

という新しい流れが考えられます。

これなら、ただ加工機を増やすだけではなく、
ライン全体の構成を工夫する必要があります。

特に、

  • 「どこで切断するか?」
  • 「切断後のワークをどう分配するか?」
  • 「どこで組み立てるか?」

といった部分が、新しいパズル要素になりそうです。


実際の機械設計にも似ている部分がある

切断機を考えていると、実際の生産設備の設計にも似ている部分があります。

例えば、1本の材料を複数の部品に切断する工程では、
切断機の能力だけを考えればよいわけではありません。

切断した部品をどう搬送するか。
次の加工機へどう供給するか。
部品が溜まりすぎないか。

こうした前後工程とのバランスも重要です。

PUZFLOでも、切断機の能力が高いだけでは、
必ずしも効率のよいラインにはなりません。

切断機の後ろにある設備が、増えたワークを処理できるか?

という点まで考える必要があります。

ここは、機械設計や生産設備の考え方をゲームとして表現できる部分だと思っています。


まとめ|切断機で「ワークを増やす」という新しい選択肢が加わった

今回、第53回では、PUZFLOに新しい設備として
2分割・3分割切断機を追加するための仕様と実装方針を整理しました。

これまでの設備と大きく違うのは、1個のワークが2個・3個に増えることです。

ワーク数が増えることで、

  • 後工程の処理能力
  • コンベアの搬送能力
  • ワーク同士の間隔
  • 切断後の排出
  • ライン全体の生産バランス

など、新しく考えることが増えました。

また、前回追加した組立機と組み合わせれば、
ワークを分割してから加工し、再び組み立てるようなラインも考えられます。

これは、PUZFLOのゲーム性を広げる大きな要素になりそうです。
第52回では、複数のワークを1つにまとめる組立機。

そして今回、第53回では、1つのワークを複数に増やす切断機。

「まとめる設備」と「分ける設備」が揃ったことで、
ライン設計の選択肢がさらに広がりました。

ただし、設備が増えれば増えるほど、
ゲーム全体のバランスを考える必要もあります。

高性能な設備をたくさん使えば簡単にクリアできるゲームではなく、
「限られたコストとスペースの中で、どの設備をどう使うか?」を考えるゲームにしたいところです。

Steamでの発売に向けて、これからもPUZFLOらしい工場パズルを目指して開発を続けていきます。

次回は「多言語対応」で海外プレイヤーにも遊んでもらえるゲームへ

今回の切断機の追加によって、PUZFLOのライン設計の選択肢がさらに広がりました。
設備の種類も増え、ゲームとしてできることがかなり充実してきたと思います。

そこで次回は、少し方向を変えて、
海外プレイヤーにも遊んでもらうための準備を進めます。

取り組むのは、ゲームの多言語対応です。

以前、第44回では、Steam用の英語トレーラーを制作するために、
日本語と英語を切り替えられる仕組みを追加しました。

しかし、Steamには英語圏以外にも多くのプレイヤーがいます。

せっかくSteamで販売するなら、
できるだけ多くの国の人にPUZFLOを遊んでもらいたいところです。

そこで今回は、日本語・英語に加えて、

  • 簡体字中国語
  • 繁体字中国語
  • 韓国語
  • ドイツ語

の4言語を追加し、合計6言語への対応を目指します。

ただし、文章を翻訳するだけでは終わりません。

言語によって文字の長さや表示に必要なフォントが異なるため、
ボタンから文字がはみ出したり、一部の文字が正しく表示されなかったりする可能性があります。

さらに、設備名や説明文、エラーメッセージなど、ゲーム内には想像以上に多くの文章があります。

果たして、プログラミングも外国語も得意ではない自分が、
AIを使って6言語対応のゲームを作れるのでしょうか?

次回、第54回では、ChatGPTとCodexを使って、PUZFLOの多言語対応に挑戦します。
「日本語で作ったゲーム」から「世界中のプレイヤーに遊んでもらえるゲーム」へ。

Steamでの発売に向けて、今度は言語の壁を越える準備を進めていきます。

コメント

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