スプライトジェネレーター は何をしますか?
出力
生成および検証されたスプライト、プレビュー、Godot統合アーティファクト。
非目標
実際の画像生成の代わりにローカルの描画スクリプトを使用すること。
目的
コンセプト、1つ以上のリファレンス画像、または詳細なアートディレクションの要約から、本番用途の2Dゲームスプライトを作成します。このスキルは意図的にスタイルに依存しません。ユーザーはリファレンス画像、スタイルカード、スクリーンショット、または詳細な説明を提供でき、ワークフローはそれをプロンプト、グラウンディング画像、生成されたベースリファレンス、アニメーション/状態ジョブ、決定論的抽出、QA、Godotスターターファイルを備えた再利用可能なスプライト生成実行に変換します。
目標は単に美しい画像を作ることではありません。目標は、予測可能なファイル名、透明な背景、クリーンなアトラス、フレームメタデータ、QAコンタクトシート、および SpriteFrames スターターリソースを備えた、Godotプロジェクトに配置できるアセットを生成することです。
このスキルは以下のようなリクエストに使用します。
- "清潔な状態と汚れた状態の家の家具を作成してください。"
- "このアートスタイルで、待機、歩行、指差し、掃除のアニメーションを持つキャラクターを作成してください。"
- "このリファレンスと同じスタイルでドールハウスの部屋マップを作成してください。"
- "同じ体型を維持した、代替の衣装/カラーバリエーションを生成してください。"
- "このオブジェクトのスケッチを、ゲームで使用可能な透明なプロップスプライトに変換してください。"
入力
以下の入力の任意の組み合わせを受け入れます。
- リファレンス画像: スタイルシート、既存のキャラクター、プロップ、スクリーンショット、ムードボード、パレット、以前生成されたスプライト、またはゲーム内キャプチャ。
- 詳細な説明: アセット名、役割、形状、素材、色、スケール、カメラアングル、使用目的、スタイルを表す形容詞。
- アセットタイプ:
character、npc、player、furniture、prop、object、map、room、dollhouse、または汎用のsprite。 - アニメーション: 名前付きアクション、フレーム数、方向、ループ/ワンショット動作、持続時間またはFPS、特別なポーズの注釈。
- 状態とバリエーション: 清潔/汚れ、開/閉、健康/枯れ、空/満杯、衣装A/B、色セット、ダメージレベルなど。
- 統合ターゲット: Godotバージョン、セルサイズ、アトラスの列数、スケール、トップダウン/アイソメトリック/サイドビューカメラ、推奨インポートパス。
ユーザーが詳細を省略した場合は、妥当なデフォルト値を推測し、出力を簡単に反復可能にします。すべての欠落した詳細でブロックしないでください。スタイルが不明、キャラクターの正体が不明、必要なアニメーションリストがないなど、省略が高価で間違った作業を引き起こす場合にのみ、明確化の質問をしてください。
ビジュアル生成の委任
実際のアートは、ローカルスクリプトではなく、環境の画像生成機能を使用して生成する必要があります。Codexスタイルのスキル環境では、利用可能な場合はインストールされている $imagegen スキルに委任します。ChatGPTでは、ユーザーが実際にビジュアルアセットの作成を要求したときに、ネイティブの画像生成ツールを使用します。バンドルされているPythonスクリプトは、決定論的な本番ステップにのみ使用されます。
許可される決定論的ステップ:
- 実行フォルダとプロンプトファイルの作成
- 安定したリファレンスの実行へのコピー
- レイアウトガイド画像の作成
- 選択された生成出力の記録
- フラットなクロマキー背景の除去
- ストリップのフレームへの分割
- フレームの切り抜き、スケーリング、パディング、および一貫したセルへのセンタリング
- PNG/WebPアトラスの構成
- コンタクトシートとGIFプレビューの生成
- JSONマニフェストとGodotスターターリソースの作成
ハードバウンダリ: Pillow、SVG、CSS、HTMLキャンバス、またはプログラムによる図形を画像生成の代わりとして使用して、スプライトアートを描画、ペイント、合成、タイリング、ワープ、または発明しないでください。スクリプトは生成された画像を処理できますが、隠れたアートジェネレーターとして使用することはできません。
スタイルキャプチャとスタイルロック
スタイルリファレンスが提供された場合は、それを真実の情報源として扱います。以下の品質をプロンプト計画に抽出します:
- カメラアングルと遠近法: 正面、側面、トップダウン、アイソメトリック、3/4、ドールハウス、オーソグラフィック
- プロポーション: ちび、写実的、ずんぐり、背が高い、おもちゃのような、ピクセル、絵画的、フラットベクター、ローポリレンダリング
- 線とエッジの処理: 輪郭なし、太い輪郭、ソフトレンダリングエッジ、ピクセルエッジ、セルシェーディング境界
- 素材と照明: 粘土、ぬいぐるみ、プラスチックのおもちゃ、ペイントされた3D、フラットセル、光沢、マット、水彩など
- パレットと彩度
- シャドウポリシー: 透明スプライトの場合はなし。ただし、オブジェクトの一部として明示的に保持されている場合を除く
- 背景ポリシー: 抽出のための透明またはフラットクロマキー
- ターゲットセルサイズでのスケールと読みやすさ
対象のスタイルで同じアセットではなく、異なるスタイルの関連アセットのように見える場合、行または状態は不合格です。
アセットタイプのデフォルト
キャラクター/NPC/プレイヤー
ユーザーがアニメーションを指定しない場合のデフォルト出力:
| アニメーション | フレーム数 | 目的 |
|---|---|---|
idle | 4 | 呼吸/まばたきのループ; 最初のフレームは静的ポーズとして機能 |
walk_down | 6 | 正面/下方向への移動 |
walk_up | 6 | 背面/上方向への移動 |
walk_left | 6 | 左向きのサイドビュー移動 |
walk_right | 6 | 右向きのサイドビュー移動 |
オプションの一般的なアクション: point、talk、pickup、carry、clean、use_item、sit、sleep、cry、celebrate、fail、interact、attack、cast、jump、push、pull。
家具/プロップ/オブジェクト
ユーザーが状態を指定しない場合のデフォルト出力:
| 状態 | フレーム数 | 目的 |
|---|---|---|
clean | 1 | 通常/整頓された状態 |
dirty | 1 | 同じオブジェクトの汚れた/散らかった状態 |
オプションの一般的な状態: empty、half_full、full、overflowing、open、closed、on、off、healthy、wilted、broken、repaired、selected、highlighted、locked、unlocked。
マップ/ルーム/ドールハウス
デフォルトの出力は、1つの大きな map_base スプライトまたは背景です。ルームの場合、単一のフラット化されたアートレイヤーが必要か、floor、walls、furniture、interactables、path_overlay、collision_reference などの個別のレイヤーが必要かを指定します。別のオーバーレイとして要求されない限り、UIラベル、矢印、パスライン、チュートリアルオーバーレイをプロダクションマップアートに含めないでください。
背景と透過性のルール
画像ツールが確実に真のアルファを生成しない場合は、生成時にフラットなクロマキー背景を優先します。デフォルトのキーは #00ff00 です。抽出後、最終的なアトラスは透明なPNG/WebPである必要があります。
生成されたソース画像について:
- ストリップ全体またはオブジェクトレンダリング全体に1つのフラットな背景色を使用する
- アセットをクロマキーから視覚的に分離しておく
- アセットに緑色が必要な場合は、緑のハイライト/素材を避ける; 代わりにマゼンタまたはブルーのキーを選択する
- 白い背景、チェッカーボード背景、UIパネル、ラベル、フレーム番号、可視グリッド、境界線、または景色は不可
- キャストシャドウ、床の影、グロー、ソフトな透明ハロー、ダストクラウド、スピードライン、モーショントレイル、またはルーズな切り離されたエフェクトは不可。ただし、小さな付属の不透明エフェクトがスプライトの一部として明示的に含まれている場合は除く
- すべてのフレームは完全で、分離され、クリップされておらず、そのスロット内にある必要があります
アニメーションプロンプトのルール
すべてのアニメーション行/ストリップについて:
- 宣言された正確なフレーム数を要求する
- レイアウトを指定する: 通常は水平ストリップ左から右
- グラウンディング入力として標準的なベース画像とリファレンス画像を使用する
- アイデンティティ、プロポーション、パレット、素材、輪郭/エッジスタイル、カメラアングルを一貫させる
- ブラー、スピードライン、ダスト、シャドウではなく、ポーズの変化を通じて動きを伝える
loop=trueの場合、最初と最後のフレームがきれいにループするようにする- 方向性アニメーションの場合、方向を明示的に要求し、キャラクターにサイド固有のアクセサリーがある場合は、偶発的なミラーリングされた詳細を避ける
行がベースと比較してキャラクターの顔、体型、衣装、プロップデザイン、素材スタイル、またはスケールを変更する場合は、行を受け入れないでください。
可視進行状況計画
通常のアセット実行では、ユーザー向けに表示可能なチェックリストを維持します:
- アセットリクエストの準備。
- 標準的なルックの作成。
- 状態とアニメーション行の作成。
- Godot用のパッケージング。
各ステップの意味:
- アセットリクエストの準備: アセット名、アセットタイプ、スタイルソース、出力、セルサイズ、クロマキー、実行ディレクトリを確立します。
- 標準的なルックの作成: アイデンティティ/スタイルロックとなるベースリファレンスを生成または選択します。
- 状態とアニメーション行の作成: ベースとリファレンスを使用して各出力ジョブを生成します; 失敗した行/状態のみを修正します。
- Godot用のパッケージング: フレームを抽出し、アトラスを構成し、QAコンタクトシートを作成し、マニフェストを書き込み、
SpriteFramesスターターリソースを作成し、ファイルパスを報告します。
実際のファイルまたは決定が存在する場合にのみ、ステップを完了としてマークします。
ワークフロー
1. 実行フォルダを準備する
python3 ./scripts/prepare_sprite_run.py \
--asset-name "Market Crate" \
--asset-type prop \
--description "readable wooden market crate with colorful contents" \
--style-notes "match the supplied game art reference" \
--reference /absolute/path/to/style_reference.png \
--state full:1:"crate full of items":single:once \
--state empty:1:"same crate empty":single:once \
--cell-size 256x256 \
--columns 2 \
--output-dir /absolute/path/to/run
キャラクターの場合:
python3 ./scripts/prepare_sprite_run.py \
--asset-name "Player" \
--asset-type character \
--description "friendly player character with a clear silhouette" \
--reference /absolute/path/to/style_reference.png \
--animation idle:4:"gentle breathing and blink" \
--animation walk_down:6:"walking toward camera" \
--animation walk_up:6:"walking away from camera" \
--animation walk_left:6:"walking left side view" \
--animation walk_right:6:"walking right side view" \
--cell-size 256x320 \
--columns 6 \
--output-dir /absolute/path/to/run
高度な実行はJSON設定ファイルで記述し、--config で渡すことができます。
2. 準備完了ジョブを検査する
python3 ./scripts/sprite_job_status.py --run-dir /absolute/path/to/run
base ジョブを最初に生成する必要があります。依存ジョブを生成する前に、選択した生成ベース画像を記録します。レコーダーは references/canonical-base.png を書き込みます。これは後続のジョブが入力画像として使用する必要があります。
3. 各ビジュアルジョブを生成する
準備完了の各ジョブについて、imagegen-jobs.json にリストされているプロンプトファイルと、リストされているすべての入力画像を使用します。最良のオリジナル生成画像を選択し、それを記録します:
python3 ./scripts/record_imagegen_result.py \
--run-dir /absolute/path/to/run \
--job-id job-id-from-status \
--source /absolute/path/to/generated-output.png
手作業で編集されたフィクスチャ、サムネイル、または実行の final/frames フォルダからのファイルをソースアートとして記録しないでください。選択したオリジナルの生成出力を記録します。
4. ファイナライズ
python3 ./scripts/finalize_sprite_run.py --run-dir /absolute/path/to/run
期待される出力:
run/
asset_request.json
imagegen-jobs.json
prompts/
references/
decoded/
frames/frames-manifest.json
final/spritesheet.png
final/spritesheet.webp
final/validation.json
qa/contact-sheet.png
qa/previews/*.gif
qa/run-summary.json
godot/<asset>_spriteframes.tres
godot/<asset>_animated_sprite_2d.tscn
godot/godot_import_manifest.json
godot/README_GODOT.md
5. Godotにコピーする
python3 ./scripts/package_godot_assets.py \
--run-dir /absolute/path/to/run \
--project-dir /absolute/path/to/godot-project \
--dest assets/sprites
パッケージング後、godot/README_GODOT.md を確認します。ファイルを別の res:// の場所にコピーする場合は、生成された .tres ファイル内のテクスチャパスを更新します。
修復ワークフロー
QAが失敗した場合は、最初に最小スコープから修復します:
- 単一の不良状態またはアニメーション行。
- 画像ツールがフレームレベルの編集を確実にサポートしている場合にのみ、単一の不良フレーム。
- アイデンティティ/スタイルがどこでも間違っている場合にのみ、標準的なベース。
- 最後の手段としてのみ、完全なアトラス。
一般的な修復プロンプト:
- "
walk_leftのみを再生成してください。正確な標準キャラクター、衣装、プロポーション、おもちゃレンダリングスタイルを維持してください。" - "
dirtyのみを再生成してください。cleanと同じソファである必要がありますが、毛布/枕が散らかっている必要があります。" - "正確に6フレームで、フレーム番号やラベルのないストリップを再生成してください。"
- "オブジェクトに緑色の素材が必要なため、マゼンタのクロマキーを使用してください。"
修復画像を記録した後、ファイナライゼーションを再実行します。
QAルーブリック
以下のチェックに合格するまでアセットを受け入れないでください:
- 生成されたベースが、要求されたスタイルまたは提供されたスタイルリファレンスと一致している。
- すべての状態/アニメーションが同じアセットアイデンティティであり、再設計されていない。
- 正確なフレーム数が存在する。
- 透明抽出によってスプライトの重要な部分が除去されていない。
- フレームが完全で、中央に配置され、パディングされ、クリップされていない。
- プロダクションアートにラベル、フレーム番号、グリッド線、透かし、UIパネル、景色が漏れていない。
- 抽出後、不要なシャドウ、グロー、ダスト、スピードライン、ぼかし、または切り離されたエフェクトが残っていない。
- コンタクトシートがターゲットサイズで正しく視覚的に読み取れる。
final/validation.jsonにエラーがない; 警告は視覚的にレビューされている。- Godotマニフェスト名が、コードで呼び出す予定のアニメーション名と一致している。
受理条件
完了した実行には以下を含める必要があります:
references/canonical-base.pngの標準的なベースリファレンスimagegen-jobs.jsonに記録された選択された生成ソース- 抽出された透明フレームPNG
final/spritesheet.pngおよび、サポートされている場合はfinal/spritesheet.webpqa/contact-sheet.png- マルチフレームアニメーション用のGIFプレビュー
- エラーのない
final/validation.json godot/以下のGodotスターターファイル- 警告にもかかわらず修復または手動で承認された行/状態を名前指定する、短いユーザー向けレポート
ルール
- ビジュアルにはビジュアル生成を、決定論的処理にはスクリプトのみを使用します。
- 複数出力のアセットには常に標準的なベースを使用します。
- 画像ツールがリファレンスをサポートしている場合、すべての依存ビジュアルジョブにリファレンスを添付したままにします。
- シーンイラストよりも、透明またはクロマキー互換の出力を優先します。
- 別個のオーバーレイアセットとして要求されない限り、UIラベル、説明用矢印、パスライン、衝突ガイドをプロダクションスプライトに配置しないでください。
- Godotの場合、アニメーション名は安定させ、小文字で…
(以下、原文が途中で切れているため、翻訳もここまでとします。)