現役機械設計者が、AIを使ってSteamゲーム制作に挑戦してみた【第7回】

機械設計×ゲーム

Unity上に12×8のグリッドを作ってみた
ついにゲームの盤面ができた

前回の記事では、工場パズルの土台として「12×8の正方形グリッド」を使うという方針を決めました。

プレイヤーはマス目の上に設備を配置する。
1マスに1つのブロックを置く。
コンベアの向きを変えながら、スタートからゴールまでワークを運ぶ。
ここまで考えたことで、ようやくゲームの盤面が見えてきました。

ただし、まだこの時点では、
頭の中に12×8のグリッドがあるだけ。
Unityの画面には何もありません。

そこで今回は、この12×8グリッドを実際にUnity上へ作っていきます。

ここから少しずつ、「ゲームの企画」だったものが、
実際に操作できるゲームへ変わり始めます。


Codexに渡すための仕様書ファイルを作る

まず最初にやったのが、前回までに整理したMVPの仕様を、
Codexが読めるファイルとして保存することでした。

そのとき出てきたのが、MVP_Spec_v0.1.mdというファイルです。
正直、「.mdって何?」というところからスタートしています。

調べてみると、
.mdはMarkdownという形式のテキストファイル。

難しいものではなく、普通の文章に、
#-などを付けて、見出しや箇条書きを表現できる形式です。

たとえば、

# MVP仕様

## グリッド

- サイズ:12×8
- 1マスに1ブロック配置

## ワーク

- 丸形
- コンベア上を移動

こんな感じです。

Wordのように、文字色を変えたり、
レイアウトを整えたりする必要はありません。

Codexに読ませるための、シンプルな設計メモという感覚です。


「メモ帳で作っていいの?」というレベルからスタート

ここでも当然、よく分かっていません。

そこでChatGPTに、

はじめ
はじめ

MVP_Spec_v0.1.mdはどうやって作成する?

と聞きました。

すると、

VS Codeで作る方法を教えてもらいました。

しかし、さらに私は、

はじめ
はじめ

メモ帳でいい?

と質問。

答えは、メモ帳で問題なし。

ということでした。

これは個人的にかなり助かりました。

ゲーム開発を始めたばかりで、

  • Unity。
  • Codex。
  • C#。
  • Markdown。
  • VS Code。

次から次へと知らない言葉が出てきます。

正直、全部を理解してから進んでいたら、
いつまで経ってもゲーム制作が始まりません。

なので今回は、分からなくても、とりあえず必要なところだけ使う。
というスタイルで進めます。

メモ帳を開いて、前回ChatGPTに作ってもらった仕様を貼る。

ファイル名を、MVP_Spec_v0.1.mdにする。
UTF-8で保存。
これで仕様書ファイルの完成です。


Codexに「仕様書を読んで」と頼めるようになった

このファイルをUnityプロジェクト内の、

Assets/Docs/MVP_Spec_v0.1.md

に置きました。

するとCodexに、

このプロジェクト内の
Assets/Docs/MVP_Spec_v0.1.md
を読んでください。

STEP1だけ実装してください。

と伝えるだけで、ゲーム全体の仕様を読んだ上で、
必要な部分だけ作ってもらえるようになります。

ここはかなり便利だと感じました。

毎回、

  • 「12×8で……」
  • 「こういうゲームで……」
  • 「ワークはこう動いて……」

と最初から説明する必要がありません。

仕様書を更新しておけば、Codex側もその内容を前提に作業できます。

機械設計でいうと、毎回口頭で仕様を説明するのではなく、
図面や仕様書を渡して製作してもらう感覚に近いです。

ここでも少し、「AIゲーム開発って意外と設計業務っぽいな」と思いました。


STEP1:まずは12×8のグリッドを表示する

仕様書が用意できたところで、いよいよ最初の実装です。

STEP1の目的は、ものすごくシンプル。

12×8のグリッドを画面に表示する

これだけです。

12×8なので、必要なセルの数は、

96マス。

ゲームとしてはまだ何もできません。
クリックもできない。
設備も置けない。
ワークも流れない。

ただ、96個の正方形が並ぶだけです。

でも今回は、いきなり全部作らない
というルールがあります。

まずは、グリッドだけ。


STEP1の合格条件をGPTが決めてくれる

Codexに実装してもらったら、Unityを起動してPlayボタンを押します。
確認することは、非常にシンプルです。

画面上に、12列×8行のマス目が表示されること。
そして、エラーが出ていないこと。
さらに、セルが96個生成されていること。

この3つができれば、STEP1合格。

こうして、1つずつ合格条件を決めてもらい進めていくことにしました。

この方法は、かなり分かりやすかったです。


ついにUnity上に「ゲームの盤面」が出てきた

そして、Codexに実装してもらい、UnityでPlay。

すると、画面にマス目が並びました。

12×8。

全部で96マス。

ただの白いマス目ですが、個人的にはかなり嬉しかったです。
第4回では、四角形が1つ右へ動いただけでした。

そこから、仕様書を作って、ゲームルールを考えて、
ようやく、工場パズルの盤面らしきものが画面に現れました。

まだ設備はありません。

でも、

「ここにコンベアを置いていくのか」
「この中でラインを考えるのか」

と想像できるようになります。

ここで初めて、ゲーム画面のイメージが、かなり現実的になってきました。


でも、マス目が出ただけではゲームにならない

当然ながら、グリッドが表示されたところで、まだ何もできません。
そこで次は、マウスでセルを選択できるようにする。

STEP2です。

Codexには、こんな内容をお願いしました。

STEP1は正常に動作しました。

STEP2を実装してください。

目的:
マウスでセルをクリックできるようにする。

・マウスカーソル下のGridCell取得
・左クリックでセル選択
・選択セルをハイライト
・別セルを選択すると前のハイライト解除
・Consoleへ座標表示

まだブロック配置は実装しないでください。

ここでも、欲張りません。
クリックするだけ。まだコンベアは置きません。


STEP2:クリックしたマスが黄色になる

STEP2をCodexに実装してもらったら、Unityを再生。
グリッドの中から、適当なマスをクリックします。

すると、選択したマスが黄色に変わりました。
これだけでも、一気に「操作している感」が出ます。

さらに別のセルをクリックすると、前の黄色が消えて、
新しく選んだマスだけ黄色になる。

つまり、常に1マスだけ選択される状態です。


Consoleに座標が出る

さらに、セルをクリックするとUnityのConsoleに、

Selected GridCell: (3,5)

のように表示されます。

別のマスをクリックすると、

(0,0)
(5,2)
(11,7)

のように座標が変わる。

これを見たとき、
「ちゃんとゲーム側がマスの位置を認識している」
ということが分かりました。

私はコードをまったく理解していません。
でも、クリックした場所が黄色になって、座標まで表示される。

それだけで、Codexが裏側で何かちゃんとやってくれていることは分かります。


STEP2の合格条件も明確にする

STEP2では、

次の4つを確認しました。

  • グリッドが表示される
  • クリックしたセルが黄色になる
  • 別のセルを選ぶと前の選択が解除される
  • Consoleに正しい座標が表示される

全部OK。

STEP2も合格です。

ここまでくると、ただのグリッドではありません。
プレイヤーが「どのマスを使うか選べる盤面」になっています。

かなり地味ですが、この機能がないと、後からコンベアも、
加工機も、ストッパも、置けません。


いよいよ次は「ブロックを置く」

ここまで来ると、次にやりたくなることは決まっています。
コンベアを置きたい。そこでSTEP3に進みます。
当初は、「コンベアを配置する」だけの機能を作ろうとしていました。

しかし、ChatGPTから、

ChatGPT
ChatGPT

コンベア専用の配置機能を作るより、
先に「ブロック配置システム」を作った方が後が楽

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

これは確かにその通りです。

今後は、コンベアだけではありません。

  • ストッパ
  • 加工機
  • センサ
  • 合流設備

いろいろな設備を追加する予定です。

なら最初から、いろいろなブロックを置ける
共通の仕組みを作った方がよさそうです。


STEP3で作ること

Codexにお願いする内容も、少しゲームらしくなってきました。

  • コンベアボタンを作る。
  • コンベアを選択する。
  • セルをクリックすると配置される。
  • 配置済みセルには置けない。
  • 右クリックで削除。
  • Rキーで90°回転。

コンベアには、進行方向が分かる矢印を表示する。

ただし、まだワークは動かさない。

ここも重要です。

「コンベアを置けるようになったんだから、ワークも流そう」と一気に進みたくなります。
でも、まずは、配置・回転・削除が正しくできることを確認する。

そのあとワークを動かす。

かなり慎重な進め方ですが、
ゲーム開発未経験の自分には、
この方が分かりやすかったです。


この頃から「STEP○」方式が定着していった

ここまで進めて、

今回のゲーム開発のやり方がかなり固まってきました。

  1. 仕様を決める。
  2. ChatGPTにCodex用の指示文を作ってもらう。
  3. Codexに実装してもらう。
  4. Unityで動かす。
  5. 合格条件をChatGPTでチェック。
  6. 問題がなければ、次のSTEPへ。
  7. 問題があれば、その症状をChatGPTに相談する。

つまり、設計 → 実装 → 試運転 → 確認 → 次工程です。
またしても、やっていることが機械設計っぽくなってきました。


「ゲームを作る」ではなく「小さい機能を積み上げる」

ゲーム開発を始めた当初は、

Codexに、

工場ゲームを作って

とお願いすれば、かなり一気に作れるのでは?
と思っていました。

でも実際に進めてみると、自分のような初心者ほど、
小さい機能に分解した方が圧倒的に分かりやすいと感じます。

  • STEP1
    • グリッドを出す。
  • STEP2
    • クリックできるようにする。
  • STEP3
    • ブロックを置く。

こうして一つずつ積み上げていく。

各STEP単体では、「これがゲームなの?」というくらい地味です。

でも、積み上げると、少しずつゲームになります。


第7回で、ようやく「触れるゲーム」になった

今回までで、ゲームには、12×8のグリッドができました。
そして、セルをクリックすると、選択できるようになりました。

まだワークは流れません。
コンベアも配置できません。
加工機もありません。

でも、画面をクリックして、ゲーム側がその入力を認識する。
これは、第4回で四角形が勝手に動いていたときとは、かなり違います。
初めて、プレイヤーがゲームへ入力できるようになったからです。

ここから、「見るだけの画面」から、「操作するゲーム」へ変わっていきます。


次回は、ついにコンベアを配置する

次のSTEP3では、いよいよ、グリッドの上にコンベアを置きます。

  • セルを選ぶ。
  • コンベアを配置する。
  • 向きを変える。
  • 不要なら削除する。

ここまでできると、プレイヤーが、自分で工場ラインを組み立てる
という今回のゲームの中心的な操作が始まります。

そしてその次には、いよいよ、
ワークをコンベアの上で流す。

ここまで来れば、
かなり「工場ゲーム」らしくなってきそうです。

次回は、

【第8回】グリッドの上にコンベアを配置できるようにしてみた

というところから、ゲーム制作を進めていきます。


コメント

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