作ったもの
バイクで山道を走る、3 コースの選手権です。1 コースは 460m ほどで 3 周。
前のレースの順位が、次のレースのスタート位置になります。
- 製品版: https://seta-rem.booth.pm/items/8790747
- 体験版: https://github.com/EitaroSeta/backroad-championship/releases/tag/v1.0.0-trial
作業期間は 10 日間、コミット数は 129 本でした。
なお、筆者は Unity を触ったことがありません。 この 10 日間も、Unity の画面を自分で操作したのはごくわずかです。
代わりに Unity MCP という仕組みを使って、AI に Unity を操作してもらいました。
このきっかけは、Unity MCP を使ってゲームを作っている動画をいくつか見たことでした。
AI が Unity を操作して、見ている間にゲームができあがっていきます。
面白そうと思いながらこうも思いました。
本当にできるのか
動画は編集されています。うまくいかなかったところは映りません。
それに、動くところまで行けたとして、配布可能なところまで行けるのかは分かりません。
確かめるには、自分でやってみるのが早い。しかも私は Unity を触ったことがないので、「AI がやってくれた」以外の説明がつかないという点で、実験としてはむしろ好都合です。
そう思って始めました。
この記事は、ゲームを作るのに必要な工程を一つずつどう片付けたかの記録です。
うまくいかなかった話も出てきますが、メインではありません。
メインは工程のほうです。
Unity MCP とは
ひとことで言うと、AI に Unity のリモコンを渡す仕組みです。
これがあると、AI は自分でシーンを開き、部品を置き、スクリプトを書き、ビルドし、画面を撮って結果を確かめられます。
私は「こう直して」と言うだけで、AI が Unity を操作して、直った画面を見せてくれます。
普通の AI との会話との違いは、AI がコードを書くだけで終わらないところです。
書いたコードを実際に動かし、画面を撮り、うまくいかなければ自分で直します。
私の仕事は「どうしたいか言うこと」と「出てきた画を見て指摘すること」でした。
全体の流れ
| 日 | コミット | その日にできたこと |
|---|---|---|
| 1 日目 | 0 | 環境を整えて触ってみる |
| 2 日目 | 5 | 走る状態から、レースの土台へ |
| 3 日目 | 18 | レースとして成立。AI ライダー、3 周、順位表 |
| 4 日目 | 24 | ゲームらしくなる。視点切替、ミラー、選手権、タイトル画面 |
| 5 日目 | 8 | 雨、車体を差し替えられる作りに、名前を決める |
| 6 日目 | 9 | 音(エンジン音・BGM・警告音) |
| 7 日目 | 28 | 性能、メニュー、路面の質感、車体の差し替え、ライト |
| 8 日目 | 26 | 2 台目に挑んで断念。ライトの調整。1.0.0 へ |
| 9 日目 | 7 | 公開の準備。体験版、配布手順 |
| 10 日目 | 4 | 公開 |
先に結論を言ってしまうと、「動くものを作る」のは驚くほど速く、時間を食ったのはその後でした。
レースとして成立したのは 3〜4 日目です。残りの 6 日は、見た目の詰めと、配れる形にする作業に費やしました。
工程ごとに、何をしたか
1. 何を作るか決める
最初は「オープンワールドでバイクを走らせたい」でした。そこからレースに絞りました。
広大な世界を作るより、同じ道を何周も走るほうが面白さを詰めやすいと考えに行きつきました。
AI はどちらでも作れてしまうので、決めないとどこまでも広がります。
ここは人間の仕事でした。
2. とりあえず走らせる
地面の上をバイクが走り、カメラが追いかける。ここまでは、ほとんど一度の指示で来ました。
私がしたのは、走らせてみて「ハンドルが重い」「曲がらない」と言うことだけです。
3. コースを作る
3 コース作りました。登り主体、8 の字(立体交差あり)、直線主体で、それぞれ性格が違います。
手動では作っていません。 「コーナーの半径と直線の長さを設計して、それを元にコースを自動生成する仕組み」を書いてもらいました。地形を削り、道路を張り、縁石と白線を引くところまで自動です。
これが後で効きました。路面の質感を足したくなったときも、作り直すだけで済みます。
コラム: 要望の言葉を、そのまま実装しない
「コースアウトすると縁石に引っかかって戻れない。縁石の高さを調整して」と入力しました。
AI が測ったところ、縁石は 3.5cm しかなく、本当の原因はその外側にある 21.6cm の段差でした。
前輪の半径が 26.7cm なので、低速では登れません。
縁石の外に幅 90cm の斜面を足して、約 13 度の坂に変えて解決しました。私は「高さを調整して」と原因を決めつけて頼んでいました。
「戻れない」とだけ言えばよかったのです。
4. ルールを入れる
周回の判定、順位、スタートのカウントダウン、ゴール、順位表。
そして 3 戦続けて走る選手権(前の順位が次のスタート位置になる)。
ここも速かったです。仕組みを作るのは、AI がいちばん得意な領域だと感じました。
私が決めたのは「何周にするか」「点数をどう配るか」くらいです。
5. 相手を作る
AI ライダーを 5 台。ただ速さを変えるのではなく、コースごとに得意不得意を持たせました(直線が速い / コーナーが速い / 登りが速い)。
難易度を変えても性格は変えません。
「誰が強いか」がコースによって変わるので、レースとして成立します。
強すぎるか弱すぎるかのゲームバランスは、走ってみないと分かりません。ここは何度も調整しました。
6. 見た目と素材 ── ここが一番、人間の仕事でした
この記事でいちばん伝えたいのがこの節です。
やったことは、路面の質感、縁石や白線の塗り分け、車体モデルの差し替え、走者ごとの色分け、前照灯と尾灯。
そして、ここで AI にはできないことがはっきりしました。
| AI | 私 | |
|---|---|---|
| 候補を挙げる・URL を教える | ○ | |
| 規約を読んで商用可か判断する | △ | ○ |
| 絵柄が他と合うか見る | × | ○ |
| ダウンロードして置く | × | ○ |
| 置いたあとの寸法合わせ、部品の対応付け | ○ | |
| 「これは違う」と没にする | × | ○ |
実際に起きたのは、こういうことです。
最初に使っていたバイクメーカの車体モデルが、商用不可だと分かりました。 公開するなら差し替えるしかありません。
代わりを探しましたが、「商用可」「絵柄が他と合う」「人が乗っている」「無料」を同時に満たすモデルは、そう簡単に見つかりませんでした。
探している時間は AI はずっと待ちでした。
さらに 2 台目の車体としてスクーターを入れてみたのですが、ライダーの腕の付き方が他のキャラと違って見えます。
理由を聞くと、AI は腕の骨を計算で曲げていて、他のキャラは最初から作られた姿勢を使っている、とのことでした。
やり方が違うのだから、出方も違います。
半日ほど粘って、没にしました。
この判断は人間でないとできませんでした。
コラム: 一度痛い目を見ると、次が安くなる
車体を差し替えたとき、ゲーム側がモデルの部品名を一切知らない作りに変えてもらいました。
「前輪はこれ」「鏡はこれ」とモデル側から教える受け皿を 1 つ置くだけの仕組みです。おかげで 2 台目を足すのも、断念して外すのも手数が少なく済みました。
差し替えで痛い目を見た直後だったから、こういう設計が出てきたのだと思います。
7. 音
コースごとの BGM、エンジン音、逆走の警告音。
BGM は素材サイトからダウンロードしてきました。ここも人間の仕事です。
置いたあとに「設定から曲を選べるように、『BGMなし』も含めて」と頼むと、それは数分で入りました。
コラム: 「曲が変わっていなかったです」
差し替えたはずの曲が変わりません。原因は、AI がビルドし忘れていたことでした。
AI の「できました」は、実物で確かめるまで仮の報告です。以後「人に見てもらう前に
必ずビルドし直す」を手順に入れてもらいました。
8. 画面まわり
速度計、順位、ラップタイム、コースの地図、タイトル画面、設定、ポーズ。
ここは時間がかからずできました。「設定に BGM の選択を足して」で数分。
私の仕事は、出てきた画を見て指摘することでした。
「BGMのクレジットの文字が、選択肢の下敷きになって読めない」といった類です。
9. 手ざわりの調整
カメラの高さ、難易度、ブレーキしたときの姿勢、ライトの明るさ、レンズの大きさ。
ここは何度も往復しました。でも、それが正しいのだと思います。
正解が人間でしかだせないものは、見て判断するしかありません。
「あと数センチ前に出さないとダメみたい」
「板を 1cm くらい大きくして」
「あともう 2cm 大きくして」
1 往復が数十秒で返ってくるので、自分で触るより速いくらいでした。
コツは **「もう少し」ではなく「あと 3cm」**と具体的に言うことです。
「手がハンドルから離れている」では話が進まず、「25cm 下、15cm 前」と数字で言って初めて直りました。
10. 性能を測る
エディタ上で見える fps は当てになりません。計測用のビルドを作って測る手順を用意してもらいました。
路面に質感を足すときも、「fps が下がりますか?」と聞いてから、実際に測って確認しました。
最終的に平均 109.2 → 118.7fps、重い瞬間(下位 1%)が 53.8 → 76.5 と、むしろ良くなっています。
数字で確かめてから進めるのは、AI と作るときに特に効きます。
11. 不具合を見つけて直す
ひとつだけ、5 往復かかったものを紹介します。
選手権で次のコースへ進むと、自分のバイクだけスタート位置がおかしい。
私は「位置がおかしい」と 5 回報告しました。AI は毎回きちんと測って、
**「左右のずれは 0.000m です」**と答えます。そして、その測定は正しかったのです。
行き詰まって、私は気づいたことをそのまま伝えました。
「前のコースの順位によって、右寄り左寄りになるようです。
1、3、5 位だと右寄り、2、4、6 位だと左寄りです。」
これで一気に解けました。原因は、R キーが 2 つの機能に割り当てられていたことでした。
-
R= 次のレースへ進む -
R= コースアウトからバイクを戻す
押した 1 回が両方に届きます。スタート位置に並べた直後に「コースへ戻す」が動いて、自分のバイクだけコースの中心線へ移動していました。
スタート位置は中心から左右 1.6m にあるので、順位が奇数か偶数かで「右に寄った」「左に寄った」ように見えていたわけです。
教訓は 1 つです。「おかしい」ではなく「A のときは X、B のときは Y」と言う。
規則性を伝えると、AI が探す範囲が一気に狭まります。
12. 配布可能な形にする
機能を作るのとは、まったく別の仕事でした。
-
ライセンス表記。
使った音楽・フォント・3D モデルの表記をまとめます。
フォントのライセンス本文が同梱されていないことに、公開の直前で気づきました -
体験版を切り出す。
コース 1 のタイムアタックだけ遊べる版 -
配布用の zip を作る手順。
配布してはいけないデバッグ用フォルダの削除、表記の差し込み、圧縮 ── これを毎回手動でやると必ずどれかを忘れるので、メニュー 1 つに畳んでもらいました -
コード署名をどうするか。
署名がないと初回起動で Windows の警告が出ます。
今回は署名せず、配布ページに手順を書く判断にしました
13. 公開する
BOOTH に出品し、体験版を GitHub Releases に置きました。
ソースコードは公開していません。
使っている 3D モデルなどが、素材そのままの再配布を認めていないためです。
ゲームに焼き込んで配るのは想定された使い方なので、ビルド済みのファイルだけを置いています。
このあたりは自分では判断しきれず、AI に整理してもらってから決めました。
14. 続けられるようにする
不具合の報告を受ける窓口(GitHub Issues)を用意しました。
それから、引き継ぎ書を書いてもらいました。別の日に、別の AI セッションで作業を再開するときに、続きから入れるようにするためです。
今の状態、触り方、踏んだ落とし穴、次にやることが書いてあります。
AI との作業は、会話が終わると記憶も終わります。
続けるつもりなら、これは作っておいたほうがいいです。
任せられたこと、任せられなかったこと
| 工程 | 主に AI | 主に人間 |
|---|---|---|
| 何を作るか決める | ○ | |
| プロトタイプ | ○ | |
| コース生成 | ○ | 設計の注文 |
| ルール・順位・選手権 | ○ | |
| 相手の AI | ○ | 強さの判断 |
| 素材の選定と収集 | ○ | |
| 素材を組み込む | ○ | |
| 画面まわり | ○ | 見ての指摘 |
| 手ざわりの調整 | 実装 | 判断 |
| 性能測定 | ○ | |
| 不具合の切り分け | ○ | 規則性の報告 |
| ライセンス表記 | 文面 | 何を使ったかの把握 |
| 配布物を作る | ○ | |
| 公開の操作・判断 | ○ |
一言でまとめると、こうなります。
「作る」はほぼ任せられた。「決める」と「選ぶ」と「見る」は任せられなかった。
Unity を触ったことがなくてもゲームは作れました。
ただし、作れないところがはっきりあるというのが、10 日間でいちばん実感したことです。
とくに素材の選定は、この先も人間の仕事だと思います。
また、規約を読んで責任の有無を確認するのも、絵柄が合うかを見るのも、「これは違う」と没にするのも、最後は人間でした。
付録: この記事に出てきた言葉
| 言葉 | 意味 |
|---|---|
| ビルド | 遊べる実行ファイルを書き出すこと |
| シーン | ゲームの舞台。物が置いてある空間 |
| モデル | 3D の立体データ(バイクや木) |
| マテリアル | 表面の見た目の設定(色、つや) |
| ボーン | 3D キャラクターの骨。これを動かすと体が動く |
| コミット | 変更の記録を 1 つ残すこと |
| fps | 1 秒間に何枚描けているか。高いほど滑らか |
おわりに
最初の問いである本当にできるのか。
答えは、できました。
動くだけでなく、配布するところまで行けました。
Unity を触ったことがない人間でも短期間でここまでできることに対して、驚きとともに今後の身の振り方も考えさせられる思いでいます。
ただ、動画を見ていたときの想像とは、少し違っていました。
動画で省かれているのは、たぶん後半です。レースとして成立したのは 3〜4 日目で、残りの 6 日は見た目の詰めと、配れる形にする作業でした。
ライトのレンズを 1cm 大きくし、ライセンスの表記を揃え、配布用の zip から余計なフォルダを消す。
派手ではないけれど、これをやらないと公開できません。
もうひとつ。素材を選ぶところは、最後まで人間の仕事でした。
商用可かを判断するのも、絵柄が合うかを見るのも、「これは違う」と没にするのも。
ここが AI に渡せる日は、もう少し先のように思います。