はじめに
ChatGPTに頼らず、ローカルだけで桃太郎の「本物のドット絵」を量産できるか——kibi-kingdomのスプライト制作でこの検証が動いた。
答えは出た。Qwen-Image-2512 に、ChatGPTで使っていた正典プロンプトをそのまま渡し、既存のプロジェクトツールでドット化する——これでChatGPT版とほぼ同じ数値(色数2336対2450、アンチエイリアス率0.134対0.137)まで再現できた。だが、この「できた」には見落としがあった。
1コマの画質は同等になった
正典プロンプトは既存台帳の全文をそのまま使い、言い換えはしない。Qwen-Image-2512で生成したシートを、既存の slice_sheet.py と preprocess_sprite.py で64×96に切り出して縮小する。これが元々ChatGPT版のスプライトを作っていたのと同じツールだった。
数値を比較すると、色数もアンチエイリアス率もChatGPT版とほぼ一致した。PixelOEのような追加の減色処理を挟むと、逆に絞りすぎになることも分かった。目標はFF6純正パレットへの厳格な圧縮ではなく、ChatGPTと同等のクオリティで十分だった。
「スプライトとして成り立っていない」という指摘
ここで指摘を受けた。1コマの画質がChatGPT同等でも、それだけではスプライトにならない。
Qwenの3×3グリッド一発生成は、各セルを独立に描く。だから、コマ間で顔つき・表情(1コマだけ怒り顔が混ざる)・頭身・向き・サイズがばらばらになる。1枚ずつは正しくても、連番で再生するとキャラがガタガタと化けて、歩行には見えない。孤立した1コマの品質パリティは、スプライトの要件を満たしていなかった。
正しい手順:ベース1枚+ポーズ編集で同一性を固定する
作り直した手順はこうなる。まずベースとなる正面idleを1枚作る。そこからQwen-Image-Edit-2511でポーズだけを差し替える——生成し直すのではなく編集するので、同一性が構造的に固定される。denoiseは0.75だと同一性は保たれるが足の踏み出しが弱く、0.9まで上げると同一性を保ったまま脚がちゃんと動いた。
この手順で、歩行の3コマ(踏み出し・中間・踏み出し)が同一キャラのまま揃った歩行サイクルとして生成できた。
コストの現実
Edit-2511はfp32で1コマ約10分かかる。1キャラにつき3方向×3歩行+バトル数コマが要るので、数時間仕事になる。「作れるか」はYES、「速く量産できるか」はまだ未達というのが、この時点での正直な到達点だった。
教訓
品質の判定基準を「1枚が良いか」に置いたままだと、複数枚が揃って動くという本来の要件を見落とす。単体の指標が満点でも、それが最終成果物の要件をカバーしているとは限らない。
1枚ずつは正しかった。並べたら崩れた。
評価の単位を間違えると、正しい答えを積み重ねても、望んだものにはならない。