AIゲーム制作ラボ
Unity×AI10分で読めます

CodexでUnityシューティングを制作:リフレアの設計と改善記録

Claude Code作のムレウチを見せ、Codexに別のシューティングを依頼しました。敵弾の吸収反撃、コードで描いた機体と雲、自動プレイが24秒で負けた原因、ボスの配置と予告の修正まで。リフレアの制作を画面と実測で振り返ります。

Libra

公開 2026年9月20日

この記事の要点4 points

  1. 敵弾を吸収して返す仕組みを中心に、90秒で終わる縦シューティングを作った。
  2. 自動操縦は最初、標準の敵配置で23.93秒で敗北。 回避の判断を直し、ブラウザでボス撃破まで確かめた。
  3. テストが通っても、ボスが表示に隠れる問題や不要な攻撃予告は残っていた。 画面とルールを別々に検査した。
  4. ムレウチとは仕様も制作順も違う。 今回の成果物の差だけで、AI全体の優劣は決められない。
目次7
検証した環境最終確認 2026年9月20日
  • Windows / Unity 6.6(6000.6.0f1)
  • Codex(この制作のモデル詳細・思考レベルは記録未取得)
  • WebGL / Chrome / PC幅・タッチエミュレーション

書いてあるのは、この環境で実際に試した結果です。ツールの仕様や料金は変わるので、重要な判断の前には公式の情報も確認してください。

Claude Codeに4本のゲームを作ってもらったあと、5本目をCodexに頼みました。できたのが、敵弾を吸収して撃ち返す縦シューティング、リフレアです。

できたものを見て、私は「すごい、Claude Codeと別次元。なぜ」と聞きました。ただ、ここでAIの勝ち負けだけを言っても、次の制作に使えません。吸収反撃のルール、画面の作り方、途中で詰まった検証を記録します。公開後に見直して直した箇所もあります。

雲と施設の上を進むリフレアの迎撃機と敵編隊
通常戦。青緑の自機と弾、赤紫の敵、奥を流れる雲と施設。
ボスと耐久ゲージが表示されたリフレア
ボス戦。公開後の改善で、数値に加えて耐久ゲージを付けた。

最初に渡したのは「同じジャンルで、別ゲームを」という依頼

依頼の中心は、この一文でした。

別ゲームでいいからCodexが考えるシューティングゲームを作って欲しい

参考としてムレウチのページを渡し、成果物を比べたいと伝えました。吸収やボスを作るようには指定していません。そこはCodexが考えています。

一方、開発環境、テストの回し方、公開用スクリプト、制作ログを残す約束は、先にClaude Codeと整えていたものです。「白紙からCodexだけで全部用意した」わけではありません。

引き継いだもの

Unityの環境設定とCLIの使い方
テスト・公開・容量計測の道具
見た目と手応えの合格条件、制作記録の書式

今回Codexが作ったもの

敵弾を吸収して貫通弾で返すルール
90秒の進行と、二段階のボス戦
機体・背景・演出と、自動操縦による通し検証

同じ仕様書で作ったブロック崩しの比較とは条件が違います。今回は、題材を任せたときに何を作るかを見る試みです。後から作る側は、それまでの失敗と道具も利用できます。

敵弾を「避けるもの」と「取りに行くもの」にした

リフレアの通常射撃は自動です。プレイヤーが考えるのは移動と、吸収を使うタイミング。敵弾が来たら避けるだけでなく、近づいて取り込む選択があります。

  1. STEP 01

    吸収を押す

    Spaceか画面下のABSORB

  2. STEP 02

    0.65秒だけ取る

    リングに触れた敵弾を吸収

  3. STEP 03

    貫通弾で返す

    吸収終了時に最大12発

  4. STEP 04

    再使用を待つ

    発動から4秒後に使える

吸収を空振りすると反撃は出ない。敵本体への接触も防げない。

ここには小さな損得があります。早く押すと、弾が届く前に吸収が終わる。待ちすぎると被弾する。使った直後には次の弾を吸収できません。敵本体への接触は防げないので、吸収中ならどこへでも突っ込める、というルールにもしていません。

実装の数値は次のとおりです。記事を読んだ人が、遊びのどの部分を調整したのか追えるように残します。

項目実装した値遊びへの影響
吸収の有効時間0.65秒押すタイミングを選ぶ
再使用発動から4秒連打で守り続けることはできない
反撃吸収数+2発、上限12発多く取ると返す弾が増える
反撃1発のダメージ4(通常弾は1)ボスへの攻撃にも使える
ライフと被弾後の無敵3、1.2秒一度の重なりで全部失わない
ボス60秒に出現、90秒で時間切れ後半は倒し切る必要がある

反撃には、同じ敵へ当たり続けて毎フレーム4ダメージを入れないための管理もあります。貫通弾ごとに「すでに当たった敵の枠」を記録し、次の敵へ進ませる作りです。2体を貫通して倒せることをテストしています。今回は敵の配列が64枠なので、ヒット済みの印は64ビットで持たせています。

素材を増やす前に、輪郭と奥行きを作った

見た目は、画像素材を集めて組み合わせたものではありません。機体も雲もコードでテクスチャを生成しています。ただし、四角や丸をそのまま並べているわけでもありません。

自機には細い胴体、左右の翼、尾の部分があります。ピクセルを塗る際に上側を明るくし、輪郭にも明るい縁を付けています。その上に白い操縦席と青緑のエンジン光を重ねています。

輪郭

何なのかを伝える

機体の翼・尾・敵の違う形

反応を伝える

エンジン・弾・吸収・撃破

速度差

奥行きを伝える

遅い雲と速い施設

背景の雲はゆっくり、施設の影は速く流れます。背景そのものに明るさの差があり、その前を自機が進む。敵を倒したときは破片が広がり、被弾時には自機と画面が反応します。効果音もコードで生成しています。

「素材なし」は見た目を省く条件にはしませんでした。輪郭、陰影、光、背景の速度差を別々に用意したことが、今回の画面の具体的な構成です。どの要素が私の印象に何割効いたかまでは測っていません。

自動で遊ばせたら、最初は24秒で負けた

ゲームのルールはUnityの描画から分離し、1回の更新を1/60秒に固定しています。自動操縦もプレイヤーと同じ移動・吸収の入力を渡します。無敵にしたり、敵を消したりしてボスまで進めているわけではありません。

ところが、最初の自動操縦は途中で負けました。敵配置を決める乱数の種を3種類に変えても、全部ボス登場前に終了しています。

敵配置の種初版の生存時間結果
147.90秒敗北
19(標準)23.93秒敗北
98747.27秒敗北
01

少し先の一点だけ見ても、弾を避け切れなかった

症状
標準配置では23.93秒で敗北。ボスまで検証できない。
原因
初版の自動操縦は、0.25秒先の危険だけを評価し、移動も左右に限っていた。
対処
0.15・0.30・0.45・0.60秒先を評価し、上下移動も候補に追加。複数の時点で危険が少ない方向を選ぶようにした。

この変更後、標準配置では87.23秒でボス撃破まで進みました。ここで直したのは自動操縦の判断です。人が遊ぶゲームの難しさを下げて通した記録ではありません。

ただ、自動操縦は内部の座標を正確に読めます。ボスを倒せたからといって、初めて遊ぶ人が簡単にクリアできるとは言えません。使い道は、毎回同じ条件で最後まで進め、途中の破綻や変更による差を見つけることです。

数字が通っても、ボスが隠れていた

ブラウザの65秒時点の画面を確認すると、ボスが上部の情報表示、HUDに隠れていました。ルールのテストでは勝てる。けれど、肝心の敵が全部見えていない。

02

ボスの位置を下げたら、クリア時間まで変わった

症状
ボス上部がHUDに重なって見えない。
原因
ボスの中心をゲーム内のY座標5に置いていた。描画サイズとHUDの占有範囲を、通し画面で確認できていなかった。
対処
中心をY=3.2へ下げた。自動テストだけで済ませず、PC幅とスマホ幅で最後まで再検証した。
標準配置・同じ自動操縦修正前修正後
ボス撃破まで87.23秒79.73秒
残りライフ12
スコア22,525点23,550点
吸収した敵弾37発38発

位置を下げると、自機の弾も敵の弾も到達するまでの時間が変わります。見た目を直すつもりでも、戦闘の条件が変わっていました。このため、位置変更後にもう一度通しで遊ばせています。画面の修正でも、結果は測り直す必要がありました。

公開後に、予告の嘘と状態の読みにくさを直した

最初の公開ページには遊び方と数字を載せましたが、制作過程の説明が足りませんでした。私は「薄くね? 内容」と伝え、記事を書く前に改善点も見直すよう依頼しました。

この見直しで見つかったのが、ボスの照準線です。狙撃弾は2回1回なのに、予告は毎回出ていました。実際には来ない攻撃を避けさせる表示です。

修正前:予告を検査するテストの実際の出力ERROR
The first volley has only fan bullets
Expected: 0
But was:  0.650000036f

修正は、予告を出す条件に「次の攻撃に狙撃を含む」を足すこと。テストも、最初の扇弾のみの回には予告が出ず、次の狙撃回には予告が出て3本の弾が発射される、というところまで確認します。

v1.1で変えた箇所変更後
照準線狙撃する回だけ予告する
ボス耐久HPの数字に加えてゲージを表示。後半は色も変わる
吸収ボタン吸収中と充電中で色を変え、残り時間をゲージで示す

敵の数や吸収の性能は、この改善では変えていません。必要な情報を信頼できる表示にする修正です。

初版のボス戦。耐久は上部のHPの数字で表示
初版v1。耐久も再使用時間も文字で読む。
改善後のボス戦。HUDの耐久バーと吸収ボタン下のゲージ
v1.1。上部に耐久バー、下部に吸収の時間ゲージ。どちらも同じ自動操縦の65秒付近を撮影。

あわせて、最後の被弾とボスへの攻撃が同じ更新で重なる条件も検査しました。これは修正前から正しく敗北になっていました。「バグを直した件数」に混ぜず、今後その挙動を守るテストとして残しています。

どこまで確かめたか、何はまだ分からないか

初版の公開環境では、次の値を記録しました。ロード時間は3回測り、中央値を使っています。ダウンロード完了から起動までの時間と、ページを開いてからの総時間は分けました。

初版v1の実測(2026-09-19)結果
Buildの4ファイル合計6,988,252バイト
WebGLビルド時間163.715秒
受信完了から起動までの中央値439.6ms
ページ遷移から起動までの中央値1,269.8ms
10秒間のfps・3回の中央値60.07

測定環境はWindowsのChrome、画面960×720、描画領域383×682、DPR 1です。約60fpsはこの環境の値で、低性能なスマホでの余裕を示す数字ではありません。最新ビルドの容量と検証記録はゲーム紹介ページにも掲載しています。

v1.1の自動テストはEditMode 22件、PlayMode 2件が合格しました。予告の検査を追加した直後はEditModeが21/22件で、修正して22/22件になった、という順序です。既存のテストが全部通っていたことだけでは、この問題は見つかりませんでした。

スマホ幅の確認はChromeのタッチエミュレーションです。実機での指の隠れ方、発熱、長く遊んだときの疲れは未評価。難易度も、初見の人を複数集めたテストはしていません。自動操縦のクリア記録と、人が感じる遊びやすさは分けて扱います。

私は今回の出来を見て驚きました。でも、次に引き継ぐなら「Codexの方がすごい」という一行より、何を選ばせるゲームにするか、何を画面で伝えるか、最後までどう確かめるかを残したい。リフレアでは、吸収する瞬間、遠景と機体の描き分け、ボス撃破までの通し検証が、その具体例になりました。

FAQ

よくある質問

Codexには何を指示しましたか?

Claude Code作のムレウチを参考に、Codex自身が考える別のシューティングを作ってほしいと依頼しました。既存の制作手順と合格条件も引き継いでいます。吸収反撃やボスの具体的なルールはCodexが設計しました。

画像や音の素材はどう用意しましたか?

機体や雲のテクスチャをコードで生成し、光・破片・背景の速度差を組み合わせました。効果音も波形を計算して生成しています。外部の画像素材や画像生成APIは使っていません。

自動テストが通ればゲームは完成ですか?

今回の初版はテストが通っても、ブラウザではボスがHUDに隠れていました。さらに公開後の見直しで、狙撃しない回にも予告が出る問題を確認しました。ルールのテストと画面の検査は両方必要でした。

スマホでも確認しましたか?

Chromeのスマホ幅とタッチエミュレーションで、移動・吸収・一時停止・再挑戦を確認しました。スマホ実機での操作感、発熱、性能はまだ評価していません。

この記事は役に立ちましたか?

NEXT