現役機械設計者がAIでSteamゲーム制作に挑戦|Unity×Codexで工場パズル開発

「ゲームって、AIを使えば自分でも作れるのかな?」
そんな軽い疑問から始まったのが、この連載です。

私は普段、機械設計の仕事をしています。
ゲーム制作の経験はほぼありません。

Unityも分からない。
プログラミングもできない。

それでも、ChatGPTに相談しながらゲームの仕様を考え、
Codexにコードを書いてもらえば、Steamで販売できるゲームまで作れるのでは?

と思い、実際に挑戦してみることにしました。

作っているのは、工場の生産ラインを設計する2Dパズルゲームです。

  • コンベア
  • ストッパ
  • 投入機
  • 加工機
  • 出荷場

こうした設備を配置して、要求された生産能力を満たす工場を作ることを目指します。

このページでは、そんなゲーム開発の過程を第1回から順番にまとめていきます。

今後も新しい記事を公開するたびに、このページへ追加していく予定です。


この連載はこんな人におすすめ

この連載は、ゲーム制作の専門的な解説というより、

「ゲーム制作未経験の機械設計者がAIを使ったら、どこまで作れるのか?」

を記録した開発日記です。

特に、

  • AIを使ったゲーム制作に興味がある
  • Unityを触ったことがない
  • Codexでどこまで開発できるのか知りたい
  • Steamで自作ゲームを販売してみたい
  • 工場・生産ライン系のゲームが好き
  • 機械設計とゲーム制作の共通点に興味がある

という方には楽しんでもらえると思います。

自分自身が初心者なので、
「分からないところからどう進めたか」
もできるだけそのまま残しています。


【第1回】すべては「ゲームって作れる?」から始まった

最初はゲームを作る予定すらありませんでした。

ChatGPTに、

はじめ
はじめ

「ゲームって作れる?」

と聞いてみたことがきっかけです。

そこから、どんなゲームなら自分でも作れそうか?
機械設計者だからこそ作れるゲームは何か?を考え始めました。

そして出てきたのが、
工場の生産ラインをテーマにしたゲームというアイデアです。

この時点では、まだ具体的なルールもありません。

ただ、

  1. コンベアをつなぐ
  2. ワークを流す
  3. 工場を改善する

という大まかな方向だけが決まりました。

この連載のスタート地点です。


【第2回】自由設計型か?パズル型か?ゲームの方向性を決める


次に考えたのが、どんなゲーム性にするのか?です。

最初に候補になったのは、大きく2つ。

自由に工場を作れる、自由設計型。
もう一つは、限られた設備や条件の中で正解を探す、選択・最適化型。

最終的には、選択・最適化型の工場パズルを採用しました。

設備を好き放題置くだけではなく、限られた条件の中で、
どうすれば効率の良いラインになるのか?を考えるゲームです。

今振り返ると、現在のゲームにつながるかなり重要な決定でした。


【第3回】ChatGPTとCodexの役割を決めてUnity開発を始める


ゲームの方向性が決まったところで、実際にどうやって作るのかを考えます。
ここで採用したのが、Unity+Codexです。

正直なところ、Unityをいくつものゲームエンジンと細かく比較したわけではありません。
ChatGPTに聞いたらUnityが候補として出てきた。

そして、「無料でゲームを作れるの?」という驚きもあり、
そのまま試してみることにしました。

開発の役割も、

  • 自分:ゲームの方向を決める
  • ChatGPT:仕様・アイデアを相談する
  • Codex:実際にコードを書く

という形に整理しました。

この役割分担は、現在までほぼ変わっていません。


【第4回】Unity+Codexを導入|初めて四角形を動かしてみる

いよいよUnityをインストールします。

ゲーム制作未経験なので、画面を開いた時点で、
「難しそう……」という印象でした。

でも今回は、Unityを完璧に覚えることが目的ではありません。
できるだけAIに任せます。

そして最初にChatGPTから言われたのが、
「四角形を作って動かしてみましょう」でした。

正直、「工場ゲームを作りたいのに、なんで四角?」と思いました。

それでもCodexにコードを書いてもらい、
四角いWorkが画面上を右へ移動。

たったそれだけですが、初めて自分のゲームが動いた瞬間でした。


【第5回】ゲーム仕様書を作成|工場パズルの基本ルールを整理する


動くことが確認できたので、ここから本格的にゲーム仕様を考えていきます。
作成したのが、ゲーム仕様書 Ver.1.0です。

この段階で考えたゲームの基本ループは、

依頼を受ける
↓
設計する
↓
試運転する
↓
問題を発見する
↓
改善する
↓
納品する

というもの。

さらに、「最小コストで要求仕様を満たす」という
考え方もゲームの中心に置くことにしました。

高性能な設備を使えば簡単。
でも高い。安い設備だけでは能力が足りない。

この、コストと性能のトレードオフが、現在のゲームにもつながっています。


【第6回】MVPを作る|工場パズルゲームの盤面とマス選択を実装


仕様が決まったら、いよいよゲーム画面を作ります。
まず必要だったのが、工場のグリッドです。

検討した結果、最初のMVPでは、
12×8のグリッドを採用しました。

1マスにつき、1つの設備を置く。

  • コンベア
  • ストッパ
  • 加工機

といった設備を、マス単位で配置していきます。
ただし、ワークまでマス単位でカクカク移動すると見た目が悪い。

そこで、設備配置はグリッド式。
ワークは滑らかに移動する。という方式にしました。


【第7回】MVP仕様書を作成|CodexへSTEP形式で実装を依頼する

ここで初めて、MVP_Spec_v0.1.mdという仕様書を作りました。
ちなみに最初は、「mdって何?」という状態です。

でも、この仕様書をCodexに読ませ、

STEP1、STEP2……

と少しずつ実装させる方法がかなり使いやすいことが分かりました。

最初に作ったのは、12×8グリッド。

次に、セルをクリックすると黄色く選択される機能。

ここから、

仕様を決める
↓
Codexへ依頼
↓
Unityで確認
↓
問題があればChatGPTへ相談

という現在の開発スタイルが固まっていきました。


【第8回】コンベア配置システムを実装|BlockBaseで設備の土台を作る


次は、設備をグリッド上へ配置する仕組みです。

当初は、コンベアだけ置ければいいかな?と思っていました。

しかしChatGPTから、

ChatGPT
ChatGPT

「今後設備が増えるなら、共通のBlockBaseを作った方がいい」

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

そこで、BlockBaseという設備共通の基底クラスを作成。

設備ごとに、

  • 座標
  • 向き
  • 種類
  • 有効状態
  • 回転

などを持てるようにしました。

この段階で、

  • コンベアを選択
  • マスへ配置
  • Rキーで90°回転
  • 右クリックで削除

まで実装。

ようやく、工場を自分で組み立てている感じが出てきました。


【第9回】ワークをコンベア上で流す|ランダム供給と試運転を実装


設備を置けるようになったら、次はワークを流します。

最初は、青いワークを1個だけ生成。
コンベアの向きに沿って、滑らかに移動させました。

コンベアが途中で切れていれば停止。
曲がっていれば方向転換。

これが動いたことで、それまで静止していた工場が、
初めて生産ラインらしく動き始めました。

さらに、ワークを10個程度、不規則な間隔で投入。

試運転。
リセット。

といった機能も追加しました。

そして重要なのが、毎回同じ供給パターンを再現すること。
改善前と改善後を、同じ条件で比較できるようにしました。


【第10回】ストッパを実装|ワークの流れを「整える」ゲームへ


第10回では、ゲーム性を大きく変える設備、ストッパを追加しました。
それまでワークは、コンベアに乗ったらそのまま流れていくだけ。

でもストッパを置くと、一度ワークを止めて、
一定周期で1個ずつ送り出せるようになります。

イメージとしては、バラバラだったワークを、
一定の間隔へ整える設備です。

ここで初めて、設備を置くことで、ワークの流れそのものが変わる
というゲーム性が見えてきました。

単純にコンベアをつなぐだけではなく、
どう流すかを考える工場パズルへ変わり始めた回です。


【第11回】Goalを作って「何のために整流するのか?」を考える

ここで一つ大きな問題に気付きます。
ストッパを調整して、ワークを一定間隔にできる。

でも、「そもそも、なぜ一定間隔にする必要があるの?」ということです。

そこで第11回では、ゲームに明確な目的を持たせるため、
Goal(出荷地点)について考えました。

最初は、

  • 目標出荷間隔:2.0秒
  • 許容差:±0.2秒

のように、一定間隔でGoalへワークを送ることをクリア条件にする案を検討。

ここで初めて、配置 → 試運転 → 結果確認 → 改善
というゲームループが、かなりはっきりしてきました。


【第12回】「一定間隔で出荷」から加工機中心のゲームへ方向転換

Goalに目標間隔を持たせる案を考えていましたが、
ここでまた疑問が出てきました。

「なぜGoalが2秒間隔を要求するの?」

少しゲーム側の都合に見えてしまいます。
そこで考えたのが、加工機です。

例えば加工機が、2秒に1個しか処理できないとします。
そこへ1秒ごとにワークを送り込めば、当然、加工機前で詰まります。
これなら、ワーク間隔を整える理由がかなり自然です。

そこでゲームの目的を、

未加工ワークを加工機へ適切な間隔で供給し、
加工済みワークだけをGoalへ送り続ける

という形へ変更しました。

ワークの状態も、

  • 白:未加工
  • 青:加工済み

として視覚的に分かるようにします。

この変更で、ストッパは単に「間隔をきれいにする設備」ではなく、
加工機の能力に合わせて供給を調整する設備になりました。


【第13回】加工機を実装|BUSY中に次のワークが来たらNG

第13回では、加工機を実際にゲームへ実装しました。

ワークが加工機へ入るとBUSYになり、
加工が終わると白いワークが青色へ変化します。

そして、加工中に次のワークが到着したらINPUT TIMING NG。
さらに渋滞がStart付近まで伸びた場合もNGとしました。

NG後は設備配置を消さず、そのままEDITへ戻ります。

これによって、

失敗 → 原因確認 → 改善 → 再試運転

という工場パズルらしい流れが、かなり形になってきました。


【第14回】MVP ver.0.1完成|ここまでのゲームを一度整理する

加工機まで実装したところで、一度MVP ver.0.1としてゲームを整理しました。

ここまでで、

  • グリッド
  • コンベア
  • ワーク搬送
  • ストッパ
  • 加工機
  • Goal
  • NG判定
  • 試運転
  • リセットなど、

基本的な仕組みが一通り動くようになっています。

そして一番大きかったのは、
「プレイヤーに何を考えてほしいゲームなのか」が見えてきたこと。

最初はワークを運ぶだけでしたが、
設備能力を見ながら、配置や供給タイミングを考えるゲームへ変わってきました。


【第15回】お金を追加|工場を「育てるゲーム」へ大幅仕様変更

第15回では、ゲームにお金を追加しました。

これまでは無料で設備を置いていましたが、
今後は初期資金を使って設備を購入し、生産・出荷してお金を稼ぐ仕組みに変更します。

ゲームの流れも、
設備購入 → ライン設計 → 試運転 → 生産 → 利益 → 設備更新へ大きく変化。

ただし、今まで作ったグリッドやコンベア、加工機などはそのまま活用します。

そのため旧仕様をPrototype v0.1として残し、
新しい経済要素を加えたVer.0.2として開発を続けることにしました。


初めて読むなら第1回からがおすすめ

この連載は途中から読んでも内容は分かります。

ただ、ゲームの仕様がどう変わっていったのかまで楽しみたい方は、
第1回から順番に読むのがおすすめです。

特に、「最初はこんな単純なゲームだったのか」
という状態から、少しずつ工場ゲームらしくなっていく過程は、
この連載ならではだと思います。

ゲーム制作初心者。
プログラミングもほぼ分からない。

そんな状態から、ChatGPTとCodexを使ってSteamゲームを作る。
果たして本当に販売までたどり着けるのか。

まだ自分にも分かりません。
引き続き、実際の開発過程をそのまま記録していきます。

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