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

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

Libra

公開 2026年9月18日 ・ 更新 2026年10月24日

この記事の要点4項目

画像ファイルも音声ファイルも0個でゲームを実装した。 画像・音声の外部ファイルの管理を減らせた。フォントなどの扱いは別に残る。

残り3つの要点を読む
  • 音は波形を計算して AudioClip にする。 跳ぶ・取る・死ぬ・自己ベストの4種で、演出と合わせてビルドは +111KB(+1.5%)だった。
  • 音は耳で確かめるものだが、壊れ方(無音・音割れ・出だしのプツッ・長さ違い)は自動で検出できる。
  • この試作も日本語フォントは別に同梱した。 図形と波形で作る方法が、キャラクター画やすべての表現を置き換えるわけではない。
目次7章
検証した環境最終確認 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件

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

耳を使わない検査

減らせたのは画像・音声ファイルの管理

この試作で確かめたのは、画像・音声ファイルを読み込まずに描画と音を作る実装と、その容量です。

使った図形と波形はコード内に残るため、外部の画像・音声ファイルを集めて管理する作業を減らせました。一方で、日本語フォントや使用するコードなどは配布物に残っています。

「素材の確認がまるごとゼロになる」という以前の説明は広すぎました。今回の実装で、配布物すべての利用条件の確認を不要にできたと検証したわけではありません。

図形と波形で作れた範囲と、別に用意した素材を分けて残す。

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

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種類でできています。

ゲームの画面。壁・三角のトゲ・丸いプレイヤー・丸いコインだけで構成されている
画像ファイルは1枚も使っていない。四角・丸・三角と色だけの画面

図形だけで描いたもの

壁(四角を区間ごとに置く)
トゲ(三角を並べて「歯」にする)
プレイヤー(丸を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 ビルドを開いたら、画面の日本語が全部消えていました。当時使っていた標準フォントには、必要な日本語の文字が入っていなかったためです。初版ではゲーム内を英数字にし、日本語の説明を紹介ページへ置きました。

2026年9月21日追記:英数字優先の方針を変更

日本語フォントを入れると必ず数MB増える、という以前の説明は不正確でした。その後、Codex制作の3作品で必要文字だけに絞ったTTFを同梱し、圧縮前で39,056〜74,144バイトになりました。これはフォント自体の容量で、配信ビルドの増分とは別です。

紹介ページだけ日本語でも、ゲーム内の操作が読みにくければ足りません。現在の制作ルールは初版から日本語UIを作り、公開Web版で表示を確かめる方針です。抽出スクリプトと3方式のUI設定はUnity WebGLの日本語フォント設定と軽量化にまとめました。この記事のウォールフリップ初版の制作記録と、後から行った3作品の日本語化は区別しています。

まとめ

  • 画像・音声ファイル0個で、図形と波形を使ったゲームを実装できた。減らせたのは外部ファイルの管理で、すべての確認がなくなるわけではない
  • 絵は四角・丸・三角。丸は縁を1pxぼかすだけで見た目が変わる
  • 音は波形を計算して AudioClip.Create に渡すだけ。高さを動かすと跳ねる音・落ちる音になる
  • 音の壊れ方(無音・音割れ・プツッ・長さ)はテストにできる。良し悪しだけ耳で決める
  • 文字にはフォントを同梱する。固定文言なら必要文字だけに絞り、容量と表示を確かめる

よくある質問

よくある質問

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

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

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

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

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

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

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

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

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

関連記事