AIゲーム制作ラボ
入門6分で読めます

効果音と画像を素材ファイルなしで作る(Unityでコードから生成)

AI にゲームを作らせると、コードは書けても素材が出てきません。画像も音もファイルを1つも置かず、四角・丸・三角と、計算した波形だけで1本作りました。実装と、増えたビルドサイズ(+111KB)と、この方法でできないことを残します。

Libra

公開 2026年9月18日

この記事の要点4 points

  1. 画像ファイルも音声ファイルも0個で、ブラウザで遊べるゲームが1本できた。 素材の権利を確認する作業がまるごと消える。
  2. 音は波形を計算して AudioClip にする。 跳ぶ・取る・死ぬ・自己ベストの4種で、演出と合わせてビルドは +111KB(+1.5%)だった。
  3. 音は耳で確かめるものだが、壊れ方(無音・音割れ・出だしのプツッ・長さ違い)は自動で検出できる
  4. この方法で唯一どうにもならないのが文字。 日本語を出すにはフォントという素材が要る。
目次6
検証した環境最終確認 2026年9月18日
  • Windows 11
  • Unity 6.6(6000.6.0f1)・WebGL ビルド
  • Claude Code(Opus 5 / 思考レベル 高)

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

AI にゲームを作らせるとき、コードは何時間でも書いてくれます。止まるのは素材のほうでした。画像も音も、AI は「用意してください」と言ってくる。

そこで、素材ファイルを1つも置かずに1本作りました。絵は図形、音は計算した波形です。

0個

画像・音声ファイル

プロジェクトに1つも無い

4種

コードで作った効果音

跳ぶ・取る・死ぬ・自己ベスト

+111KB

音と演出を足した増分

7.38MB → 7.49MB

5件

音の壊れ方を見張るテスト

耳を使わない検査

素材が無いと、権利の確認がまるごと残る

素材を使わない理由は容量ではありません。配ったときに責任が残らないことです。

画像や音を1つでも入れると、それがどこから来たもので、商用利用できて、クレジット表記が要るのか要らないのか、あとから全部たどれる状態にしておく必要があります。作ったのが自分でも、生成 AI に出させたものでも、確認は残ります。

図形と波形にはそれがありません。コードの中に数字しか無いからです。

素材ゼロなら、素材の権利を確認する工程もゼロになる。

絵:四角・丸・三角をその場で作る

Unity は実行時に Texture2D を作れるので、そこから Sprite を作れば画像ファイルは要りません。四角は 8×8 の白いテクスチャ1枚で足ります。あとは色と大きさで描き分けます。

丸だけは少し手を入れました。ドットのまま丸を描くと、縁がギザギザに見えます。

float dx = x - r, dy = y - r;
float d = Mathf.Sqrt(dx * dx + dy * dy);
// 縁を1px だけぼかす(そのままだとギザギザに見える)
float a = Mathf.Clamp01(r - d);
px[y * size + x] = new Color32(255, 255, 255, (byte)(a * 255));

このゲームに出てくるものは、全部この3種類でできています。

図形だけで描いたもの

壁(四角を区間ごとに置く)
トゲ(三角を並べて「歯」にする)
プレイヤー(丸を2枚重ねて輪にする)
コイン(丸・色で価値を変える)
下から迫る帯(四角+上辺のギザギザ)

色で意味を固定する

赤=当たると死ぬもの
黄・紫=取ると得するもの
青緑=自分
背景は高度が上がるほど赤黒くなる
同じ色を別の意味に使わない

図形で作ると決めると、色に意味を持たせるしかなくなります。結果として、初めて遊ぶ人にも「赤は危ない」が伝わりやすくなりました。ここは素材が無いことの副産物です。

音:波形を計算して AudioClip にする

効果音は、サンプル値の配列を自分で埋めて AudioClip.Create に渡すだけです。音の高さを始点から終点へ動かせば、跳ねる音にも落ちる音にもなります。

for (int i = 0; i < count; i++)
{
    float t = (float)i / count;                 // 0→1
    float hz = startHz + (endHz - startHz) * t; // 高さを滑らかに変える
    phase += 2.0 * Math.PI * hz / SampleRate;

    float v = shape switch
    {
        Shape.Sine => (float)Math.Sin(phase),
        Shape.Square => Math.Sin(phase) >= 0 ? 1f : -1f,
        _ => (float)(2.0 / Math.PI * Math.Asin(Math.Sin(phase))),
    };

    float attackGain = attack <= 0f ? 1f : Math.Min(1f, (i / (float)SampleRate) / attack);
    float decay = 1f - t;
    data[i] = v * volume * attackGain * decay * decay;
}

4つの音は、この関数の引数だけで決まります。

  1. 1

    跳ぶ

    0.09秒・520Hz → 880Hz の矩形波。上がる音にすると「跳んだ」感じになる
  2. 2

    コインを取る

    988Hz と 1319Hz を続けて鳴らす。2音つなげるだけで「ピロン」になる
  3. 3

    死ぬ

    0.45秒・420Hz → 70Hz の三角波。下がる音+長めで「終わった」感じ
  4. 4

    自己ベスト

    784 → 988 → 1319Hz。上がる3音にすると、それだけで祝いの音になる

⚠️ 立ち上がりを 0 にするとプツッと鳴る

波形をいきなり最大音量から始めると、スピーカーが「プツッ」と鳴ります。最初の 0.004秒 だけ音量を 0 から上げる(アタック)と消えます。終わりも同じで、減衰させずに切ると同じ音が出ます。

音は耳で確かめるものだが、壊れ方は自動で検出できる

「いい音かどうか」は聞かないと分かりません。ただ、壊れているかどうかは数字で判定できます。生成した配列を見るだけなので、エンジンも音の再生も要りません。

音のテスト5件(EditMode・耳を使わない)

指定した長さぶんのサンプル数が作られる
-1〜1 の範囲を超えない(音が割れない)
ほとんど無音になっていない(音量か計算が壊れていない)
出だしと終わりが静かになっている(プツッと鳴らない)
2つつなげると、長さが足し算になっている

数字をいじったときに、この5件が壊れたことをすぐ教えてくれます。音を1つずつ聞き直す作業が消えました。

できないこと:文字だけは素材が要る

この方法で1つだけどうにもならなかったのが文字です。

WebGL ビルドを開いたら、画面の日本語が全部消えていました。Unity に標準で入っているフォントに、日本語の字が入っていないからです。日本語フォントを積めば出せますが、そこだけ数MBの素材ファイルが増えることになります。

日本語をそのまま出す

  • 日本語フォントをプロジェクトに入れる
  • ビルドが数MB増える(本体が 7.5MB なので無視できない)
  • フォントのライセンス確認が戻ってくる

この版で選んだ方

  • ゲーム内の文字は英数字だけにする
  • 説明は、ゲームを埋め込むページ側(日本語)に書く
  • 素材ゼロを維持する

遊び方の説明をページ側に置けるのは、自分のサイトで配っているからです。外部のサイトに出すときは、ここは考え直すことになります。

まとめ

  • 画像・音声ファイル0個でも、ブラウザで遊べるゲームは作れる。消えるのは容量よりも、権利を確認する工程
  • 絵は四角・丸・三角。丸は縁を1pxぼかすだけで見た目が変わる
  • 音は波形を計算して AudioClip.Create に渡すだけ。高さを動かすと跳ねる音・落ちる音になる
  • 音の壊れ方(無音・音割れ・プツッ・長さ)はテストにできる。良し悪しだけ耳で決める
  • 文字だけは素材が要る。日本語を出すならフォントを積むか、ゲーム内は英数字にするかを選ぶ

FAQ

よくある質問

画像を使わずにゲームの見た目を作れますか?

図形だけで成立する内容なら作れます。四角・丸・三角を実行時に作り、色と大きさで描き分けます。このゲームは壁・トゲ・プレイヤー・コイン・帯の全部がこの3種類です。写実的な絵やキャラクターが要るなら、素材を用意してください。

効果音をコードで作ると、どれくらい容量が増えますか?

音4種と画面の演出をまとめて足して 111KB(+1.5%)でした。音声ファイルを積むより小さく収まりますが、増えるのは音の長さではなく、生成するコードの分です。

AI に素材を作らせることはできますか?

生成 AI で画像や音を作る方法もありますが、商用利用の条件を素材ごとに確認する必要があります。図形と波形なら、その確認自体が不要です。まず遊べる形にしたい段階では、こちらのほうが速いです。

ブラウザで効果音が鳴りません。

ブラウザは、利用者が1回操作するまで音を鳴らしません。タイトル画面のタップでゲームを始める作りにしておけば、その操作で解禁されます。起動と同時に鳴らそうとすると無音になります。

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

NEXT