AIで生成したピクセルアートをゲームエンジンに読み込んでも、拡大するとぼやけた汚い画像になる——この壁に直面したゲーム開発者は多い。
この記事では、GPT Image 2でゲーム用スプライトを生成し、オープンソースの「Pixel Snapper by SpriteFusion」で本物のピクセルアートに仕上げるワークフローを解説します。
この記事でわかること:
- AI生成ピクセルアートが抱える3つの問題(ミクセル・フレームブリード・フレームドリフト)
- GPT Image 2でリファレンス画像を正しく生成する手順
- Pixel Snapperでピクセルをグリッドに揃える方法
- スプライトシートを組み上げてゲームに組み込む流れ
https://github.com/Hugo-Dz/spritefusion-pixel-snapper
なぜAI生成ピクセルアートはゲームで使えないのか
ミクセル(偽ピクセルアート)
AI画像生成モデルは「ピクセルアートらしい絵」は描けるが、グリッドに沿った正確なピクセル配置は苦手だ。GPT Image 2で生成した画像を拡大すると、本来1色で塗られるべき1ピクセルが複数の異なる色で構成されている。これを「ミクセル(mixed pixels)」と呼ぶ。
ミクセルがある画像は、ゲームエンジンで拡大表示したときにぼやけた印象になる。見た目だけの問題ではなく、アニメーション再生時にパーツのサイズや位置がフレームごとにズレる原因にもなる。
フレームブリード
スプライトシート全体を一度に生成しようとすると、フレーム間の境界が曖昧になる問題が起きる。フレームを切り出すツールは規則的なグリッドで分割するため、境界がにじんでいると隣のフレームのピクセルが混入する。OpenAI Community の報告でも、「フルシートを一度に生成すると不完全で反復したポーズになりやすい」という点が指摘されている(参考)。
フレームドリフト
アニメーションの各フレームでキャラクターの位置がわずかにズレることがある。ゲーム上で再生すると、キャラクターがふわふわと上下・左右に「漂う」不自然な動きになる。
使うツール
- GPT Image 2 — OpenAIの画像生成モデル。fal.ai を経由すると Nano Banana 2(Google)など複数モデルと一括アクセスできる
- Pixel Snapper by SpriteFusion — AI生成ピクセルアートのグリッドを自動修正する無料のオープンソースツール。GPT Image 2 と Nano Banana 2 の両方に正式対応している
- Codex — フレーム分割・位置揃えなど繰り返し処理の自動化に使う
- Phaser — ゲームエンジン。Unity・Godot・GDevelop でも同じスプライトシートが使える
ステップ1: リファレンス画像(アンカー)を生成する
まず、キャラクターの「アンカー」となる静止画を1枚だけ生成する。スプライトシートを最初から生成しようとしてはいけない。一度に多くのフレームを作ろうとするほど、ミクセルとフレームブリードのリスクが高まる。
GPT Image 2 でプロンプトを書く際のポイントは以下の通り。
- スタイルを具体的に指定する(例:「16×16 pixel art, top-down RPG style」)
- キャラクターを正面向き(South facing)で1体だけ描かせる
- 背景は単色か透明を指定する
- ポーズは「T字またはA字の立ち姿」にして、手足の左右を判定しやすくする
ステップ2: Pixel Snapperでグリッドに揃える
https://www.spritefusion.com/pixel-snapper
生成した画像を Pixel Snapper にアップロードする。ツールが自動でピクセルをグリッドに揃え、ミクセルを除去する。アカウント登録は不要で、ブラウザから即座に使える。
Pixel Snapper は SpriteFusion の Hugo Duprez 氏が開発したオープンソースツールで、Unity・Godot・Phaser・Bevy・Love2D など主要ゲームエンジン向けの出力に対応している。処理後もディザリングや細かい曲線はそのまま保持される。グリッドのズレだけが修正される仕組みだ。
ただし、Pixel Snapper はあくまで「ピクセルの整合」を自動化するツールだ。細部の手動修正が必要な場合は Aseprite などのピクセルアートエディタを別途使う。
ステップ3: West向きアンカーを追加生成する
South 向きのアンカーが完成したら、同じキャラクターの West 向き(横向き)を生成する。Pixel Snapper で整合済みの画像をリファレンスとして GPT Image 2 に渡し、ポーズだけを変更させる。
生成後、West 向きにも Pixel Snapper を再度かける。ミクセルは新しく生成するたびに再発するため、各ステップで必ずスナップ処理が必要になる。
ステップ4: アニメーション用ポーズボードを生成する
アイドル・攻撃・被ダメージ・ジャンプ・死亡などのポーズを生成するには、2048×1536 サイズの「ポーズボード」形式を使う。4×3 のグリッドで各セルが 512×512 ピクセルになる設計だ。
このサイズに設定する理由は、フレームを個別に生成するよりも、一定のグリッド構成でまとめて生成したほうがポーズ間のキャラクター一貫性を保ちやすいためだ。ポーズが定まらない・左右の手足が入れ替わるといった問題が発生した場合は、同じプロンプトで2〜3回再試行すると解決することが多い。
ステップ5: フレームを切り出して整合する
フレームの回収では、単純なグリッド分割は使わない。クロマキーでキャラクターの輪郭を検出し、バウンディングボックスで切り出す。キャラクターの位置がグリッドからわずかにずれていても正確に取得できる。
フレームごとの Pixel Snap も忘れずに行う。アニメーション生成のステップでミクセルが再発するためだ。
フレームのアンカリングでは、各フレームのキャラクターの基準点(足元など)を揃える。フレームドリフトを防ぐ最後の工程で、オニオンスキンで前後フレームを重ねながら手動で位置合わせするのが確実だ。Codex を使って GUI ツールを作ると効率的に進められる(参考チュートリアル)。
ステップ6: スプライトシートに結合する
整合済みの各フレームを1枚のスプライトシートにまとめる。例えば5フレームのアニメーションであれば、1280×256 サイズのシートに各フレームを横一列に並べる(各セル 256×256)。このサイズは Phaser などのゲームエンジンに直接読み込める形式だ。
ミクセルをなくすための考え方
GPT Image 2 によるピクセルアート生成でミクセル・フレームブリード・フレームドリフトが起きる根本原因は、「最初から完璧なスプライトシートを一度に作ろうとすること」にある。
解決策は段階的なアプローチだ。静止画のアンカーを1枚生成し、Pixel Snapper でグリッドを整合してから次のステップに進む。各生成ステップで毎回スナップ処理をかける習慣をつけることで、ゲームエンジンで実際に動かせるクオリティに到達できる。
Pixel Snapper はブラウザで使える無料ツールで、商用プロジェクトにも制限なく利用できる。オープンソース版のコードは GitHub で公開されており、Codex スキルとして組み込んで自動化することも可能だ。