前回は、ゲームに効果音をつけた。今回は、単色の四角を絵に置き換える。絵を描くのは画像生成AIで、そのプロンプトを書くのは Claude Code だ。2つのAIの間に立って、絵をゲームに入れるところまで進めてみよう。

今回のゴール

  • Claude Code に、画像生成AI向けのプロンプトを書かせる頼み方
  • AIの得意・不得意に合わせて、注文を変える判断
  • 生成された絵を、人間が確かめて直す判断

使ったもの

項目 値
Godot 4.7.2
コード生成AI Claude Code(Claude Opus 5.5)
画像生成AI Gemini(3.6 Thinking、Nano Banana 2)
検証日 2026-09-28

やり取り

同じプロンプトを投げても、同じ返答が返ってくるとは限らない。画像生成AIでは、同じプロンプトでも毎回違う絵が出る。参考にしてほしいのは文面そのものより、どんな制約をどの順で与えたかのほうだ。

これまでと同じく、私の入力はコード枠で、AIの返答は引用で示す。今回は、Claude Code とのやり取りと、Gemini とのやり取りの2つがある。どちらの全文も、末尾の「制作の記録」にある。

何を絵にするか

効果音のときと同じ聞き方で始めた。

画面上のオブジェクトを絵に差し替えたい。
差し替えるべきオブジェクトをリストアップして。

AIは、画面に出ているものを9つ、優先度の高・中・低に分けて返してきた。高はプレイヤー・コイン・トゲ・壁の4つ、中は背景と頂上の2つ、低は張り付きの残り時間バー・文字・アプリのアイコンの3つだ。そのうえで、4つのことを聞いてきた。

  1. プレイヤーの絵を状態ごとに変えますか? 状態は「張り付き」「ジャンプ中」「滑り落ち」の3つです。
    • 1枚だけ:いちばん簡単。左右の壁に合わせて、向きだけ反転させます。
    • 状態ごとに1枚ずつ(3枚):何をしているかが見て分かりやすくなります。
    • アニメーション:数枚の絵を切り替えて動かします。手間は増えます。
  2. どれを差し替えますか? おすすめは、まず 1〜4。5・6 は、そのあと雰囲気を見て決めるのでよいと思います。
  3. 絵はどう用意しますか?
    • A. 画像生成 AI で作る:効果音のときと同じく、コピペで使えるプロンプトを作ります。
    • B. コードで作る:図形を組み合わせた、シンプルな絵になります。
    • C. ご自身で用意する:ファイル名とサイズだけ決めておきます。
  4. 絵柄の方向性はありますか? 例:ドット絵、手描き風、フラットなイラスト、など。
AIが返した9つの一覧
# 対象 いまの見た目 サイズ
1 プレイヤー 水色の四角 48x48
2 コイン 黄色の丸 直径44
3 トゲ 赤い下向きの三角 48x44
4 壁 灰色2色の縞 幅60、縦はつなげて並べる
5 背景 紺一色 720x1280
6 頂上 金色の帯 600x400
7 張り付きの残り時間バー 白い細い棒 48x6
8 文字 標準のフォント ─
9 アプリのアイコン Godot の初期アイコン 512x512 程度

(元の返答は優先度ごとに3つの表に分かれ、それぞれに「絵にするときの注意」が添えてある)

私はこう答えた。

1:アニメーション
2:1~6
3:A
4:ドット絵

ドット絵を頼んだところ

AIは、ドット絵の決めごと(1ドットを画面上の2pxにする、プレイヤーは8コマのアニメーションにする、など)を先に固めてきた。そのうえで、画像生成AIについてこう断ってきた。

Gemini や Firefly は「ドット絵風」の絵は描けますが、ドットの大きさがぴったりそろった絵や、背景が透明な画像は出せません。そこで、次のように分担します。

  • 生成するとき:背景はマゼンタ一色(#FF00FF)にしてもらいます。コマは1枚の画像にまとめて生成してもらいます。1コマずつ別々に作ると、キャラの見た目がコマごとに変わってしまうためです。
  • 生成したあと(私の作業):ドット数ぴったりに縮小し、マゼンタを透明にして、コマを切り出します。

最後に、プロンプトを書くのに必要だとして、主人公と舞台を4案から選ぶよう求めてきた。

  • A. 忍者 × 夜の城の石垣(おすすめ):壁を跳ぶ動きに合います。石垣は上下につなげやすいです。
  • B. 猫 × 大きな木の幹:かわいい雰囲気。頂上は木のてっぺんになります。
  • C. 登山家 × 氷の崖:寒色でまとまります。頂上は山頂の旗です。
  • D. 小さなロボット × 高層ビルの壁:近未来の雰囲気。頂上は屋上です。

判断した1:AIの苦手に合わせて、注文を変えた

画像生成AIではドットの大きさをそろえられない、という断りを読んで、主人公を選ぶ前にこう返した。

画像生成AIに適した画風に変えて良い。

もともとドット絵にこだわる理由は特になかったので、画風のほうをAIの得意なものに合わせることにした。AIは太い輪郭線のイラストを提案し、アニメーションの作り方も組み直してきた。

ドット絵でもイラストでも、AI は同じキャラを8コマ分そろえて描くのが苦手です。コマごとに顔や服が少しずつ変わり、動かすとチラついて見えます。そこで次のようにします。

  • 絵は3ポーズだけ生成する:張り付き・ジャンプ・滑り落ちの3つを、1枚の画像に並べて描いてもらいます。1枚にまとめると、3つのポーズで見た目がそろいやすくなります。

伸び縮みや傾きといった動きは、ゲームのコードでつけるという。主人公と舞台は、AIがおすすめした「A. 忍者 × 夜の城の石垣」を選んだ。

プロンプトを書いてもらう

AIは6枚分のプロンプトを英語で書き、1つずつそのままコピーして使える形にしてきた。プレイヤーのものは次のとおりだ。

Game character sprite sheet: the same small cute chibi ninja drawn three times side by side, evenly spaced, same size, same design in every pose. The ninja wears a dark navy outfit, a red headband and a long red scarf, with big friendly eyes. All three poses face left. Pose 1 (left): clinging sideways to an invisible wall on the left, hands and feet gripping, calm focused face. Pose 2 (middle): leaping upward to the right, body stretched diagonally, scarf flowing behind. Pose 3 (right): sliding down an invisible wall on the left, one hand dragging, surprised face. Do not draw the wall. Each pose fully visible and not overlapping. Flat 2D cartoon game art, bold clean black outlines, simple cel shading, vibrant colors, clean shapes. Solid flat pure magenta (#FF00FF) background, no shadows on the background, no gradient. Do not use magenta, pink or purple on the character. No text, no watermark.

プロンプトのあとには、保存場所と、画像を置いたあとにAIがやることが書いてあった。

art/raw/ に、上に書いたファイル名で保存してください。すべてそろっていなくても、置いた分から作業できます。

  • 画面に出す大きさの2倍に縮小し、マゼンタを透明にする
  • 壁の上下のつなぎ目を直す
  • 当たり判定と見た目のずれを確認する

つまり、分担はこうなる。絵を描くのは Gemini、描かせた中から選んで保存するのは私、背景を抜いて大きさをそろえ、ゲームに組み込むのは Claude Code だ。

残り5枚(コイン・トゲ・壁・背景・頂上)のプロンプト
Game item sprite: a single round old Japanese gold coin with a square hole in the center, shiny, facing the viewer straight on, centered and filling most of the image. Flat 2D cartoon game art, bold clean black outline, simple cel shading with one bright highlight, vibrant gold color. Solid flat pure magenta (#FF00FF) background, no shadows on the background, no gradient. Do not use magenta, pink or purple on the coin. No text, no watermark.
Game hazard sprite: a single dangerous black iron ninja caltrop (makibishi) with sharp spikes, one large spike pointing straight down, centered and filling most of the image, with a small red glint to show danger. Flat 2D cartoon game art, bold clean black outline, simple cel shading, strong contrast. Solid flat pure magenta (#FF00FF) background, no shadows on the background, no gradient. Do not use magenta, pink or purple on the object. No text, no watermark.

壁(石垣)・背景・頂上(天守の屋根)の3枚は「制作の記録」にある。

判断した2:Gemini に投げる前後で、プロンプトを直した

ブラウザで Gemini を開き、画像の作成を選んで、プロンプトを貼り付けた。背景は、Claude Code が書いたプロンプトをそのまま使い、1回で決まった。ほかは、Gemini の上で私がプロンプトを直している。

プレイヤーは、英語のプロンプトで1回描かせたあと、日本語に訳して中身を変えた。赤い鉢巻きを「鉄製の鉢金」に、滑り落ちるポーズを「両手を壁につけて、苦しそうな表情」にしている。さらにもう1回、張り付くポーズを「右手と両足で壁を掴んでいる。顔は右側を見ており」と具体的にした。2回目と3回目には、Gemini が指示どおりにできなかったところを自分から報告してきた。3回目の報告はこうだ。

しかしながら、左側のポーズに関しましては「右を見て右手と両足で壁を掴む」という指定に対し、左を向いて左手でぶら下がる姿勢になってしまい、正確に反映できておりません。また、「壁を描かない」という指示に反して、左端に垂直な線が残ってしまった点も課題として残ります。

そこで、こう足した。

左の画像の垂直な線を描かない。
キャラクターの瞳の形状は同じトーンにする

コインは、「中央に四角い穴のある丸い古銭」という英語のプロンプトで1回描かせたあと、日本語で書き直した。

ゲーム用アイテムのスプライト:日本の慶長小判。光沢があり、正面を向いて中央に配置され、画像の大部分を占めている。フラットな2Dカートゥーン調のゲームアートで、太くくっきりとした黒い輪郭線、明るいハイライトを1つ入れたシンプルなセルシェーディング、鮮やかな金色が特徴。背景は単色(フラット)の純マゼンタ(#FF00FF)で、影やグラデーションはなし。コインにはマゼンタ、ピンク、紫を使用しないこと。文字や透かし(ウォーターマーク)も入れないこと。

壁の石垣には、描かせたあとで1つ注文をつけた。

石垣の色を灰色に変更。
実際の日本の石垣の資料も参考にして。

トゲ(撒菱)は、英語のプロンプトのまま描かせた。

Gemini とのやり取りの共有リンク

絵がゲームに入るまで

選んだ画像を art/raw/ に保存してから Claude Code に戻り、「OK」と返した。AIが「生成した画像を置いてもらえれば」と言うので、「sudeni」と打った。「すでに」のつもりの打ち間違いだが、AIは「『すでに(置いてある)』という意味ですね」と読み取って、中身を確かめ始めた。

AIは6枚を確かめ、プロンプトと違うところを3つ挙げてきた。

画像 状態 使い方
プレイヤー 3ポーズとも顔や服がそろっていて良好。ただし、3つとも右向き(プロンプトは左向き) 「左の壁を背にして、右を向いている」と考えれば自然です。このまま使い、右の壁では左右を反転します。ジャンプのポーズは右上へ跳ぶ形なので、ちょうど合っています
コイン 縦長の小判になった(丸に四角い穴のお金ではない) 雰囲気に合うので、このまま使います。当たり判定も縦長に変えます
トゲ 6本の角がある星形になった(下向きのトゲが目立つ形ではない) 見た目はトゲとして十分伝わります。当たり判定は、星の中心部分だけの小さな円にします。角の先をかすっても当たらないので、遊ぶ側に優しくなります

AIは、自分が書いた英語のプロンプトと見比べていた。小判は私が Gemini で頼んだものだが、AIはそれを知らない。それでも、絵に合わせて当たり判定を変えるという使い方の案を添えていた。「OK」と返すと、AIは画像を加工するスクリプトを作り、6枚の絵をゲームに組み込んだ。

報告は英語で表示されたので、日本語にするよう頼んだ。AIが書き直した報告の最後には、こうあった。

  1. プレイヤーが小さく見える:60x60 でも、幅 720 の画面では小さく、目で追いにくいです。72x72 くらいにすると見やすくなります。当たり判定は 44x44 のまま変えません。
  2. 頂上の下にある白い帯:屋根の下の白い城壁が細い横棒に見えて、画面の部品のようで少し不自然です。切り落とせば、屋根の軒の線がゴールの線になります。
  3. トゲが少し小さい:48x48 ですが、6本の角がある形なので実際より小さく見えます。赤い光で見えてはいますが、もう少し大きくしてもよさそうです。

(原文は英語)

遊んでみて、こう答えた。

1:大きくして
2:再生成する。天守閣ではなく渡り廊下とする。
3:対応不要
落下した時の忍者の絵が逆向きになっている。これは生成した画像が間違っている。

滑り落ちるポーズの向きは、AIが加工するときに左右を反転して直した。

判断した3:城のつくりとしてありえないものを外した

AIが最初に書いた頂上の絵のプロンプトは、天守閣の屋根を描かせる内容だった。しかし、左右の石垣に挟まれた場所に天守閣のてっぺんが見える、という構図は、実際の城のつくりではありえない。そこで、石垣の間をつなぐ渡り廊下に変えて作り直すことにした。

AIが書いた作り直しのプロンプトには、軒下の提灯と、屋根の上の赤い旗が足されていた。

Game goal sprite: a Japanese castle covered wooden corridor (watari-rouka) seen straight from the front, spanning the full width of the image like a bridge. It has a dark tiled roof on top, white plaster walls with dark wooden lattice windows, warm glowing paper lanterns hanging under the eaves, and a small red victory flag on the roof center. The bottom of the corridor is a thick dark wooden beam whose lower edge is a perfectly straight horizontal line along the bottom of the image. Flat 2D cartoon game art, bold clean black outlines, simple cel shading, vibrant colors with warm lantern light. Solid flat pure magenta (#FF00FF) background above and around the corridor, no shadows on the background, no gradient. Do not use magenta, pink or purple on the corridor. No text, no watermark.

夜の城らしい雰囲気を狙ったのだろう。Gemini では、まずこのプロンプトのまま英語で1回、日本語に訳してもう1回描かせてみた。ただ、城の渡り廊下に提灯を吊るした例を、私は見たことがない。日本の城のつくりにはそぐわないと考えた。描かれた旗も、デザインが西洋風だった。そこで、提灯と旗を外したプロンプトで描き直した。

画像を置いて「置いた」と返すと、AIは保存場所が違うことに気づいた。私が art/raw/ ではなく、1つ上の art/ に保存していたのだ。AIはファイルを探して正しい場所に移し、組み込んだあとでこう書いてきた。

生成された絵には、プロンプトで頼んだ提灯と赤い旗が入っていませんでした。

ここでもAIは、私がプロンプトを直したことを知らない。そこで、こう返した。

文化的にありえないので提灯は入れない。

別の問題として、ゲージはスタミナを表すので最初はグリーン、最後は赤になるように色が変化するようにしたい。

ゲージは、残りのスタミナに合わせて緑・黄色・赤と色が変わるようになった。緑と赤をそのまま混ぜると途中が濁った茶色になるので、黄色を通るようにした、とAIは説明していた。

動かしてみる

忍者が左の石垣に張り付いている場面。上から小判と手裏剣が降ってくる

単色の四角だった画面が、夜の城の石垣を登る忍者のゲームになった。頭の上のゲージはスタミナで、緑から赤に色が変わる。

今回のハマりどころ

生成された絵は、プロンプトどおりにはならない。 撒菱を頼んだトゲは、手裏剣のような星形になった。プレイヤーも、張り付くポーズの向きや手の位置が指示どおりにならず、何度か描き直させた。Gemini は、指示どおりにできなかったところを自分から報告してくる。ただ、滑り落ちるポーズが逆を向いていることには、Gemini も Claude Code も気づかなかった。私が遊んでいて見つけた。

画像生成AIでプロンプトを直したら、Claude Code にも伝える。 Claude Code は、自分が書いたプロンプトと見比べて画像を確かめていた。私が Gemini で頼んだ小判も、外した提灯と旗も、Claude Code から見れば「プロンプトと違う絵」になる。今回は実害がなかったが、変えたことを先に伝えておけば、確認の手間も食い違いも減らせた。

長い作業のあと、AIの報告が英語に戻ることがある。 第3回の終わりに「日本語で表示して下さい。これはルールです」と頼み、AIは記録したと答えていた。それでもこの回で、長い作業のあとの報告が3回英語で表示された。そのたびに「日本語で出して」と頼むと、AIは謝って日本語で書き直した。言い直せば直るので、気づいたら頼み直せばいい。

保存する場所を間違えると、AIが探しにいく。 渡り廊下の絵を、指定された art/raw/ ではなく art/ に保存してしまった。AIはファイルの日時が変わっていないことに気づき、別の場所を探して見つけてくれた。

今回のコード

ai-game-dev-art(GitHub のタグ)。このタグは、第6回まで作り終えた完成版と同じ状態を指している。効果音・絵・Web 向けの書き出しを1回の作業でまとめて加えたので、この回の時点だけのコードは残っていない。この回で増えたのは、art/ の絵と、Gemini が描いたままの元画像 art/raw/、それを加工するスクリプト tools/process_art.py だ。

この回のやり取りの全文は、制作の記録(第5回)にある。Gemini とのやり取りも、末尾に載せている。

次回やること

第6回は「ブラウザで遊べるようにする」。絵と音のついたゲームを Web 向けに書き出し、ブラウザで遊べるように公開する。連載の最終回になる。