mcpField
G
game-character-sprites

game-character-sprites

github.com/tachikomaredクリエイティブ・メディア36249 回インストール25 週間前に更新
リポジトリ

game-character-sprites について

game-character-spritesは、ゲーム用キャラクターの固定セル形式のピクセルアートアニメーションを制作するスキルです。指定されたサイズ、アクション、方向に沿って、画像生成から組み立て、検証、プレビューまでを進めます。

主な機能

  1. 01固定セル形式のピクセルアニメーション生成
  2. 0232、64、128ピクセルのセルに対応
  3. 03アクション、方向、フレーム数の指定
  4. 04スプライトシートの組み立て、補正、検証
  5. 05GIFまたはWebPのアニメーションプレビュー出力

活用シーン

  1. 01ゲーム用キャラクターの歩行アニメーション制作
  2. 02複数のセルサイズでネイティブシートを作成
  3. 03指定されたアクションや方向のみを生成
  4. 04補正済みプレビューでアニメーションを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tachikomared/character-animation-creator-skill --skill game-character-sprites

インストール後、Claude Code で/game-character-spritesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
agents/
openai.yaml
references/
sheet-spec.md
visual-review-template.json
scripts/
validate_64_sheet.py
audit_sprite_motion.py
import_imagegen_contact_sheet.py
export_animation_previews.py
assemble_action_sheet.py
pixel_snap.py
validate_resolution_hierarchy.py
validate_run_manifest.py
validate_sheet.py
validate_sheet_impl.py

詳細

ゲームキャラクターのスプライト

概要

このスキルを使って、ゲームですぐに使える固定セルサイズのピクセルアートキャラクターアニメーションを作成します。ユーザーがセルサイズを指定した場合、そのサイズが必須の出力範囲です。サイズが指定されていない場合は、64x64をデフォルトとします。

範囲を黙って拡大または縮小してはいけません。ユーザーが「攻撃と歩行のみ」と依頼した場合は、そのアクションのみを作成します。GIFを依頼された場合は、アトラスPNGだけでなく、GIF/WebPのプレビューを納品します。方向が指定されておらず、ゲームキャラクターのフル移動セットを依頼された場合は、デフォルトで8方向すべてを作成します。簡易サンプル、テスト、または1方向のみの依頼では、1方向のみを使用し、その旨を明記します。

ワークスペースに最低限必要な出力:

run/
  run-manifest.json
  source/<original-imagegen-output>.png
  <cell>/
    generated/<action>-<direction>.png
    frames/<action>-<direction>/<index>.png
    final/<action>-sheet-clean.png
    final/<action>-metadata.json
    qa/<action>-validation.json
    qa/<action>-contact-sheet.png
    qa/visual-review.json
    qa/previews/*-transparent-x4.webp
    qa/previews/*-transparent-x4.gif
    qa/previews/*-checker-x4.gif

対象範囲

対応するセルサイズ:32、64、128。

サイズに関する契約

依頼されたサイズは必須の納品物です。ユーザーが32x32 64x64 128x128を依頼した場合は、各サイズのネイティブ出力セットを作成します:

run/32/...
run/64/...
run/128/...

ユーザーが拡大縮小したバリエーションを許容すると明示していない限り、複数サイズの依頼を、単一の64x64マスターとその拡大縮小版だけにまとめてはいけません。代替案として拡大縮小版を提供する必要がある場合は、scaled-32またはupscaled-128と明記し、ネイティブアセットではないことを説明します。また、作成済みまたはネイティブのシートとして説明してはいけません。

通常のワークフローで、複数サイズをまとめた32/64/128のコンタクトシートをimagegenに依頼してはいけません。複数サイズをまとめたコンタクトシートでは、モデルがサイズを個別のピクセルアートの予算ではなく、1枚の画像内のレイアウト要素として扱うようになります。ネイティブアセットを作成する場合は、依頼された各サイズの予算に合わせて、それぞれ独立したimagegenの行ストリップを生成します。

複数サイズのスプライトは、厳密な解像度階層に従う必要があります:

  • 第1階層は32x32に固定します:シルエット、プロポーション、ポーズのタイミング、主要な色ブロック。
  • 第2階層は64x64から始めます:固定された第1階層の形状内に、内部の線、より大きな顔や衣服のディテール、判読可能な副次的な形を追加します。
  • 第3階層は128x128から始めます:固定された第1・第2階層の構造内に、微細なハイライト、小さなしわ、表面のピクセル、細かなアクセントを追加します。
  • 大きいサイズは概念上、32pxのデザインを最近傍拡大し、同じ形状内に情報を追加したものとして扱います。
  • 大きいサイズで主要なシルエット、手足の長さ、体のプロポーション、ポーズの順序、主要なパレットの色ブロックを変更してはいけません。

ネイティブの複数サイズの作業では、3つの無関係な絵を描くのではなく、階層としてワークフローを実行します:

generate the 32px strip directly as a 32px-budget pixel-art row
visually accept the 32px primary silhouette, pose timing, and main color blocks
generate the 64px strip directly as a 64px-budget row, using the accepted 32px strip as the primary-structure reference
generate the 128px strip directly as a 128px-budget row, using the accepted 32px and 64px strips as structure references
assemble each size with --cell <cell>
clean each size with --cell <cell>
validate each size with --cell <cell>
run hierarchy QA by making thumbnail comparisons only; do not create assets by downsampling
export previews for each size

セルサイズの指針:

  • 32x32:ディテールを簡略化し、シルエットを誇張して、色数を減らします。ぼやけるような小さな顔やアクセサリーのディテールは避けます。
  • 64x64:ゲームのプロトタイプや、読み取りやすいちびキャラクターに適したバランスのよいデフォルトサイズです。
  • 128x128:ネイティブに描き直し、ピクセルのディテールと滑らかな副次的モーションを増やします。64からの最近傍拡大にはしません。

受け入れ不可となる条件:ユーザーが複数サイズを依頼したにもかかわらず、最終回答に64pxで作成したシートと、拡大縮小した32/128のバリエーションしか含まれていない場合、ユーザーがその妥協を承認していない限り、作業は未完了です。

また、32/64/128が互いに一貫性のない3つの絵になっている場合も、受け入れ不可とします。ネイティブの大きいサイズにはディテールを追加できますが、縮小したときに同じ32pxの主要なシルエットと主要な色配置に戻る必要があります。

デフォルトの方向:

south, south-east, east, north-east, north, north-west, west, south-west

ユーザーが指定した方向のみを作成します。8方向すべてをエクスポートする場合は、上記の順序を使用します。

単一方向の作業

「one direction」、「single direction」、「just one direction」、「1 direction」、または「test one direction」を含む依頼は、次のことを意味します:

rows: 1
directions: <requested direction, or south/front if the reference is front-facing>

単一方向の作業を4方向または8方向のシートに拡張してはいけません。ユーザーが正面向きの参照画像を提示して方向を指定していない場合は、southを使用し、テストでは参照画像が向いている方向、つまり正面方向を使用すると伝えます。

1方向の複数サイズテストで期待される出力:

run/32/final/walk-sheet-clean.png   # 192x32 for 6 frames
run/64/final/walk-sheet-clean.png   # 384x64 for 6 frames
run/128/final/walk-sheet-clean.png  # 768x128 for 6 frames

デフォルトのフレーム:

idle:   4 frames, optionally padded to 6 cells
walk:   6 frames
attack: 6 frames

エージェントのワークフロー

  1. 要求された範囲を確認します。セルのサイズ、アクション、方向、フレーム数、武器/クラス、必ず維持する参照画像の詳細を確認してください。明示されたサイズは必須の出力として扱います。
  2. ユーザーの参照画像に基づいてキャラクターを設定します。画像ツールがファイルパスを読み込めない場合は、チャットのコンテキストに添付された画像を使用してください。視覚的な情報源がない場合は、文章だけから大まかなキャラクターを創作せず、作業を中止して参照画像を使用できなかったことを伝えてください。
  3. 生成前に run/run-manifest.json を作成します。参照元、キャラクターの識別情報、要求された範囲、予定している生成方法を記録してください。
  4. まず、要求された最小サイズ(通常は 32x32)で、基準となる強力なスプライトを1つ作成し、細部を追加する前に主要なデザインを確定します。
  5. アクション・方向・サイズごとに、ストリップを1つずつ生成します。例:32/walk-south、次に 64/walk-south、次に 128/walk-south。
  6. 複数サイズのジョブでは、要求された各サイズにそれぞれ専用のimagegen出力ファイルが必要です。1つのimagegenコンタクトシートを複数のネイティブサイズのソースとして使用しないでください。
  7. 生成した各ストリップについて、method: "imagegen"、セルサイズ、アクション、方向、imagegen出力パス、ソースパス、プロンプトパスを run/run-manifest.json に記録します。
  8. scripts/assemble_action_sheet.py でストリップを組み立てます。
  9. scripts/pixel_snap.py を使用し、クロマキーによるクリーンアップを行います。
  10. scripts/validate_sheet.py と scripts/audit_sprite_motion.py で、ジオメトリ、残留物、動きを検証します。
  11. 複数サイズのジョブでは、scripts/validate_resolution_hierarchy.py で解像度の階層を検証します。
  12. scripts/export_animation_previews.py でプレビューをエクスポートします。
  13. すべてのコンタクトシートと、方向グループごとに少なくとも1つのGIF/WebPを目視で確認し、その後 qa/visual-review.json を作成します。アートの品質を確認する際に、検証JSONだけに頼らないでください。
  14. scripts/validate_run_manifest.py で、出所と視覚的な受け入れ基準を検証します。
  15. 品質の低い方向やフレームのみを再生成します。質の高い行は作り直さないでください。

1つの画像プロンプトで、8方向すべてを含むシートを生成しないでください。一度にまとめて生成すると、ほとんど同じ歩行フレーム、方向のずれ、方向の欠落、キャラクターの不統一が起きやすくなります。

Web/ChatGPTエージェントでは、ワークフローをCLIとファイルベースに保ってください。成果物をワークスペースに書き込み、利用可能であればプラットフォームのファイルエクスポート/共有ツールを呼び出してから、最終アトラス、メタデータ、コンタクトシート、検証JSON、プレビューGIF/WebPファイルへのダウンロードリンクを返してください。UIでファイルのエクスポートが必要な場合、/workspace/... のテキストパスだけでは不十分です。

生成したクロマキーの生ストリップを最終結果として表示しないでください。生ストリップは中間QAにのみ使用します。最終的な視覚プレビューには、クリーンアップ済みの透過WebP/GIF、またはチェッカーボード背景のGIF/コンタクトシートを使用してください。

チャット添付ファイルを参照画像として使用する場合は、画像から正確に維持した詳細を列挙した識別メモを実行フォルダーに記録してください。画像を本当に利用できない場合を除き、「プロンプトにフォールバックする」と書かないでください。通常のファイルシステムパスからアクセスできない場合でも、チャットに表示されている画像は識別メモの根拠として有効です。

Imagegen ファイルの受け渡し

スキルを完了する前に、Imagegen の出力をローカルファイルにする必要があります。Codex Desktop では、生成された画像は次の場所に保存されます。

D:\CodexHome\generated_images\<thread-id>\<image-id>.png

選択した Imagegen の結果を run/source/ にコピーし、元のファイルはそのまま残してください。プラットフォームから生成画像をファイルとして取得できない場合は、処理を停止し、画像は生成されたもののスプライトファイルには処理できないと伝えてください。スプライトパックが完成したと主張してはいけません。

通常のネイティブワークフロー:

imagegen -> run/source/32-walk-south.png -> run/32/generated/walk-south.png
imagegen -> run/source/64-walk-south.png -> run/64/generated/walk-south.png
imagegen -> run/source/128-walk-south.png -> run/128/generated/walk-south.png

各ソース画像は、そのセル数に合わせて個別に生成する必要があります。たとえば、32 の Imagegen プロンプトでは、32x32 のフレームを6つ並べた1行だけを生成するよう指定します。64 のプロンプトでは、64x64 のフレームを6つ並べた1行だけを指定します。128 のプロンプトでは、128x128 のフレームを6つ並べた1行だけを指定します。

緊急時の代替手段のみ:Imagegen がすでに複数サイズのコンタクトシートを1枚出力している場合、診断用に救済する目的で scripts/import_imagegen_contact_sheet.py を使用できます。その出力はマニフェストで imported_contact_sheet: true としてマークし、ユーザーがその代替手段を明示的に承認しない限り、ネイティブの複数サイズ生成とは呼ばないでください。

python "<skill>/scripts/import_imagegen_contact_sheet.py" \
  --input path/to/imagegen-output.png \
  --run-dir path/to/run \
  --action walk \
  --direction south \
  --sizes 32,64,128 \
  --columns 6 \
  --key-color "#00ff00" \
  --copy-source

これにより、次のものが作成されます。

run/32/generated/walk-south.png
run/64/generated/walk-south.png
run/128/generated/walk-south.png
run/source/<imagegen-output>.png
run/imagegen-import-report.json

その後、組み立て、クリーンアップ、検証、プレビュー、マニフェストの検証、目視レビューを続けてください。

参照と出所の確認

ビジュアルソースのストリップが、ユーザーの参照画像を使って $imagegen から生成されていない場合、その実行は有効なアートテストではありません。テキストのみの特徴メモでは不十分です。

必須のマニフェスト:

{
  "reference": {
    "source_type": "chat_attachment",
    "source": "attached image #1 or path/to/reference.png",
    "used_for_generation": true,
    "identity_notes": [
      "green bird/penguin body",
      "red and white cap",
      "white unicorn float",
      "rainbow tail",
      "sandals"
    ]
  },
  "scope": {
    "sizes": [32, 64, 128],
    "actions": ["walk"],
    "directions": ["south"],
    "frames": 6
  },
  "generation": {
    "method": "imagegen",
    "imagegen_output_path": "run/source/32-walk-south.png",
    "procedural": false,
    "text_only": false,
    "imported_contact_sheet": false
  },
  "strips": [
    {
      "cell": 32,
      "action": "walk",
      "direction": "south",
      "method": "imagegen",
      "imagegen_output_path": "run/source/32-walk-south.png",
      "source_path": "run/32/generated/walk-south.png",
      "prompt_path": "run/32/prompts/walk-south.txt"
    }
  ],
  "visual_review": {
    "path": "run/32/qa/visual-review.json"
  }
}

受け入れ不可:

  • generation.method が procedural、python_draw、script、text_only、または imagegen 以外である
  • generation.imagegen_output_path がない、または実在するローカルファイルではない
  • フォールバックの明示的な承認なしに、1つの Imagegen 出力を複数の要求されたネイティブサイズのソースとして再利用している
  • generation.imported_contact_sheet が true で、最終回答が出力をネイティブと呼んでいる
  • reference.used_for_generation が true ではない
  • 生成されたストリップがローカルの描画コードで作成されている
  • 最終回答が、手続き型のスモークテストを実際の画像/参照テストと呼んでいる
  • 目視レビューで、スプライトが参照、向き、または要求された動作と一致しないと判断されている

ローカルコードで小さなフィクスチャを作成できるのは、スクリプトの単体テスト用のみです。これらの出力には pipeline-only とラベルを付け、アートとして納品したり、このスキルで要求されたキャラクターを生成できると主張するために使ったりしてはいけません。

サブエージェント

ユーザーがサブエージェントまたは並列エージェントを明示的に求めた場合は、動作または向きごとに作業を分割してください。

  • Worker A:ベーススプライトと特徴メモ
  • Workers B/C/D:出力パスが重複しない、方向別ストリップの個別作成
  • QA worker:検証/コンタクトシートのレビューと、品質の低い行の一覧作成

各ワーカーは割り当てられたファイルのみ編集し、ほかのワーカーの出力を上書きしてはいけません。メインエージェントは行を統合し、検証を実行して、品質の低い方向のみを再生成します。

向きの固定

次のルールに従って向きを指定し、誤りを判定してください。

  • south:正面向きで、顔と体がカメラの方を向いている
  • north:背面向きで、頭部と体の後ろ側が見えている
  • east:画面右向きの側面
  • west:画面左向きの側面
  • 斜め向きは、隣接する方向と明確に区別できる
  • すべてのフレームが画面右へ流れている行は却下する
  • 足だけが動き、胴体や頭の向きが変わらない行は却下する

向きが間違っている場合は、品質の低い方向のみを再生成し、「背面向きの north、正面は見せない」や「左向きの側面、west へ歩く」などの明確な表現を使ってください。

生成ルール

ビジュアルの生成には $imagegen を使用してください。欠けているアニメーションフレームをローカルコードで手描きしてはいけません。スクリプトで可能なのは、生成済みのアートの切り抜き、組み立て、減色、位置合わせ、検証、プレビューです。

ベーススプライトのプロンプト:

<cell>x<cell> pixel-art game sprite, single character, transparent or flat chroma-key background.
Readable silhouette, hard pixel edges, limited palette, no UI, no text, no frame border.
Preserve: <identity details>.

行ストリップのプロンプト:

<cell>x<cell> pixel-art game sprite animation strip.
One horizontal row of exactly <N> separated frames.
Action: <action>. Direction: <direction>.
Flat pure solid chroma-key background <key color>, no gradient, no rounded panel, no shadows, no floor, no UI, no text, no frame numbers.
Preserve the canonical character identity exactly.
Hard pixel-art edges, saturated readable colors, clear green/magenta space between frames.

クロマキーには #00ff00 を推奨します。キャラクターまたは VFX に緑が使われている場合は #ff00ff を使用してください。

グラデーション背景、角の丸い色付きカード、フレーム間の区切り不足、体や武器の切れ、テキストやラベルがあるストリップは却下して再生成してください。構造が大きく崩れているストリップを、均等に分割して救済しようとしてはいけません。

歩行の品質

歩行シート全体を一度に生成して、歩行アニメーションを作らないでください。方向ごとに、6フレームのストリップとして個別に生成してください。

次のポーズ構成を使用してください。

contact, down, passing, up, contact, passing

生成前に、次のアニメーションルールを固定してください。

  • 頭の上下動:1~2 px
  • 腰の移動:1 px
  • 腕と脚を逆方向に振る
  • マントや髪は胴体から1フレーム遅らせる
  • 武器を持つ手は安定させる
  • ちびキャラや小さなスプライトは、動きが伝わるように誇張する

歩行アニメーションが、ほとんど同じ立ちポーズの繰り返しに見える場合は、「シルエットがはっきりわかる大きな歩幅、左右で交互に足を出す、接地・沈み込み・通過・蹴り出しのポーズを明確にする」と指示を強めて、その方向だけを再生成してください。

ジャンプの品質

ジャンプには6フレームを使用してください。

crouch, launch, rise, apex, fall, land/recover

余白の内側に収めながら、セル内で体を垂直に動かしてください。しゃがみ込みや着地では、脚が目に見えて縮む必要があります。髪、マント、耳、しっぽ、衣服には少し遅れて動きをつけてください。足が固定されたまま腕のポーズだけが変わるジャンプの列は却下してください。

攻撃の品質

近接攻撃では、予備動作、振り・接触、回復動作を表現してください。武器の軌跡は武器に沿わせ、セル内に収めてください。

弓使いの攻撃では、弓を引く、構えて狙う、放つ、反動、回復の各動作をアニメーションにしてください。ユーザーからフレーム内に入れるよう指定がない限り、飛翔物は独立したVFXにしてください。弓を持つ手は安定させ、方向を正確に合わせてください。

攻撃の一部が切れているように見える場合は、端のピクセルとバウンディングボックスを確認してください。「すべてのフレームで全身と武器を収め、切り抜きなし、中央に配置し、余白を2~4 px確保する」と指定して、その行だけを再生成してください。

クロマキーとクリーンアップ

クロマキーの削除は、次の2段階で行ってください。

  1. 境界と連結した領域の塗りつぶし削除:画像の境界につながっているキー色のピクセルだけを削除します。
  2. 最終的な残留物のクリーンアップ:フレームを調整した後、ほぼ完全に一致するキー色のピクセルだけを削除します。

緑がかったピクセルを一括で削除しないでください。多くのスプライトでは、魔法、毒、サイバー系の発光、目、衣服に緑が使われています。

推奨するクリーンアップ:

python "<skill>/scripts/pixel_snap.py" \
  --input path/to/source.png \
  --output path/to/clean.png \
  --cell <cell> \
  --palette 96 \
  --alpha-threshold 12 \
  --chroma-key "#00ff00" \
  --edge-flood-threshold 105 \
  --residue-threshold 72

攻撃やVFXには 96-128、シンプルな待機や歩行には 32-64 のパレットを使用してください。生成されたアートが滑らかすぎる場合に限り、--pixelate-scale 2 を使用してください。

オプションの TachiSnap ステージ:TachiSnap が使用可能で、生成されたピクセルグリッドにばらつきがある場合は、クロマキーの削除後、最終プレビューの前に使用してください。TachiSnap は、k-means++ CIELAB パレット量子化、塗りつぶし/背景の一括削除、GIF/シートのアニメーション対応、フォルダーの一括処理、JSON レポート、ニアレストネイバー拡大に対応した、クライアント側の Rust/WASM ピクセルスナッパーです。アトラスのジオメトリは変更させないでください。ストリップまたはフレーム単位で実行してから、スキルスクリプトで再構成してください。

TachiSnap の、エージェントでも安全な使用例:

tachi-snap bulk ./input-ai-pixel-art ./output-clean \
  --recursive \
  --k 16 \
  --pixel-size 0 \
  --upscale 4 \
  --remove-bg \
  --bg-mode flood \
  --json

組み立て

個別のストリップを組み立てて、1つのアクションアトラスにします。

python "<skill>/scripts/assemble_action_sheet.py" \
  --input-dir path/to/generated \
  --output path/to/final/walk-sheet.png \
  --action walk \
  --cell <cell> \
  --columns 6 \
  --frames-dir path/to/frames \
  --key-color "#00ff00"

その後、組み立てたアトラスまたはフレームにクリーンアップを実行してください。

場当たり的なスライスコードを書く前に、同梱のアセンブラーを使用してください。生成されたストリップの各フレーム枠の幅が完全に均一で、残留物、端、動きの品質チェックにも合格する場合に限り、等幅での分割を認めます。カスタムのフォールバックスクリプトが必要な場合は、実行フォルダーに保存し、同梱スクリプトと同じ出力を維持してください。

検証

最終回答の前に検証します。

python "<skill>/scripts/validate_sheet.py" \
  --input path/to/final/walk-sheet-clean.png \
  --rows <rows> \
  --columns 6 \
  --cell <cell> \
  --row-names <comma-separated-requested-directions> \
  --chroma-key "#00ff00" \
  --fail-on-warnings \
  --json-out path/to/qa/walk-validation.json \
  --contact-sheet path/to/qa/walk-contact-sheet.png

すべての歩行、走行、ジャンプのシートに対して scripts/audit_sprite_motion.py を実行します。また、ユーザーから歩行の不具合、方向の欠落、動きの弱さ、クロマキーの残り、フレームの混在について指摘があった場合も実行します。警告は再生成する項目として扱い、すべてをやり直す理由にはしません。

実行元の来歴と手動での目視確認ゲートを検証します。

python "<skill>/scripts/validate_run_manifest.py" \
  --manifest path/to/run/run-manifest.json \
  --required-sizes 32,64,128 \
  --required-actions walk \
  --required-directions south \
  --require-visual-review

複数サイズの階層は、QA のみを目的として検証します。このコマンドは、構造のずれを検出するためにサムネイルを比較します。32px、64px、128px のアセットを作成するために使ってはいけません。

python "<skill>/scripts/validate_resolution_hierarchy.py" \
  --base32 path/to/run/32/final/walk-sheet-clean.png \
  --sheet64 path/to/run/64/final/walk-sheet-clean.png \
  --sheet128 path/to/run/128/final/walk-sheet-clean.png \
  --rows <rows> \
  --columns 6 \
  --json-out path/to/run/qa/resolution-hierarchy.json \
  --fail-on-warnings

目視確認ファイル:

{
  "accepted": false,
  "reviewer_notes": "Reject until this is manually inspected.",
  "checks": {
    "reference_identity": "fail",
    "direction": "fail",
    "animation_readable": "fail",
    "frame_separation": "fail",
    "not_procedural": "fail"
  }
}

コンタクトシートとプレビューアニメーションが実際にユーザーの参考画像に似ており、要求された動作や方向を満たす場合にのみ、accepted: true を設定します。

次の場合は承認しません。

  • アトラスの寸法が正しくない
  • 必須フレームが空である
  • スプライトが予期せずセルの端に触れている
  • クロマキーの残りがある
  • 透明 GIF のフレームが重なったり、にじんだりしている
  • 歩行フレームがほぼ同じである
  • 行の方向が誤っている
  • 攻撃エフェクトが分離している、大きすぎる、または切れている
  • 実行マニフェストで imagegen/参考画像の来歴を証明できない
  • 目視確認がない、または承認されていない
  • 複数サイズの出力が解像度階層の QA ゲートを通過していない

検証の通過で確認できるのは、ジオメトリとピクセルの品質のみです。アニメーションの出来が良いことは証明されません。「完成度が高い」「クリーン」「すぐ使える」と述べる前に、エージェントはコンタクトシートとプレビューを確認する必要があります。

プレビューの書き出し

透明なプレビューには、アニメーション WebP を優先します。GIF は互換性のための出力です。

python "<skill>/scripts/export_animation_previews.py" \
  --atlas path/to/final/walk-sheet-clean.png \
  --rows <rows> \
  --columns 6 \
  --cell <cell> \
  --row-names <comma-separated-requested-directions> \
  --prefix walk \
  --out-dir path/to/qa/previews \
  --scale 4

GIF のルール:

  • グローバルパレットを使う
  • パレットインデックス 0 を透明色用に予約する
  • disposal=2 を使う
  • ディザリングを使わない
  • disposal を 1 に変更するオプティマイザーを使わない

ユーザーが GIF を求めた場合は、必ずプレビューへのリンクを送ります。

128x128 の場合は、ネイティブで描き直したものとアップスケールしたものを区別します。ユーザーがネイティブ 128 を求めた場合は、ネイティブ 128 のストリップを生成します。64px のアートを最近傍補間で 2 倍にしたものは、アップスケールしたパックであり、ネイティブ 128 のアセットではありません。

32x32 の場合は、ネイティブで簡略化したものとダウンスケールしたものを区別します。ユーザーがネイティブ 32 を求めた場合は、簡略化した 32px のストリップを生成するか、描き直します。64px のアートを最近傍補間で半分のサイズにしたものは、ダウンスケール版であり、ネイティブ 32 のアセットではありません。

対象を絞った再生成

ユーザーが「良くなったが、一部の方向が欠けている」または「弱い方向を再生成して」と言った場合は、次の手順を実行します。

  1. コンタクトシートとプレビューアニメーションを確認します。
  2. 弱い行を動作と方向ごとにリストアップします。
  3. 正規のベースと失敗した行をコンテキストとして使い、そのストリップのみを再生成します。
  4. 再構成し、クリーンアップ、検証、プレビューを行います。

ユーザーから全体のやり直しを明示的に求められない限り、生成済みの良好なストリップを上書きしないでください。

コメント