mcpField
G
godot-asset-generator

godot-asset-generator

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

godot-asset-generator について

Godot Asset Generatorは、画像生成APIで2Dゲーム素材を作成し、Godot 4.xプロジェクト向けに整えるスキルです。バッチ生成、画像処理、スプライトシートの作成、インポートファイル生成に対応します。

主な機能

  1. 01対応APIでの画像生成
  2. 02関連素材の一括生成
  3. 03スプライトの加工とリサイズ
  4. 04画像からスプライトシートを作成
  5. 05Godotインポートファイルの生成

活用シーン

  1. 01Godotゲーム用スプライトの作成
  2. 02アニメーションフレームの一括生成
  3. 03タイルセットやUIアイコンの作成
  4. 04生成画像のGodotインポート準備

インストール

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

$npx skills add https://github.com/jwynia/agent-skills --skill godot-asset-generator

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

同梱ファイル

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

assets/prompts/
pixel-art-templates.json
assets/style-guides/
style-guide-template.json
references/api-guides/
openai-dalle.md
references/godot-integration/
import-settings.md
references/prompting/
pixel-art.md
scripts/
batch-generate.ts
generate-image.ts
generate-import-files.ts
pack-spritesheet.ts
process-sprite.ts

詳細

Godot アセットジェネレーター

AI 画像生成 API を使用してゲームアセットを生成し、Godot 4.x で使えるように準備します。このスキルでは、コンセプトから Godot で使用できるスプライトまで、アート制作の全工程を扱います。

このスキルを使う場合

次の場合にこのスキルを使います:

  • AI を使用してゲームのスプライト、キャラクター、オブジェクトを生成する
  • プラットフォーマーやトップダウンゲーム向けのタイルセットを作成する
  • UI 要素、アイコン、メニュー用アセットを生成する
  • アニメーションフレームを一括生成する
  • AI 生成アセットを Godot にインポートできるよう準備する
  • スタイルガイドに沿って統一感のあるアセットセットを作成する

次の場合はこのスキルを使わないでください:

  • 3D モデルやテクスチャを作成する(2D アセットのみが対象です)
  • 手作業でピクセルアートやイラストを作成する(アートソフトウェアを使用してください)
  • 複雑なコマ送りアニメーションを作成する(アニメーションツールを使用してください)
  • 既存のアセットを扱う(Godot を直接使用してください)

前提条件

必須:

  • Deno ランタイムがインストールされていること
  • 少なくとも 1 つの API キー:
    • DALL-E 3 用の OPENAI_API_KEY
    • Replicate(SDXL、Flux)用の REPLICATE_API_TOKEN
    • fal.ai 用の FAL_KEY

任意:

  • 高度な画像処理用の ImageMagick
  • インポートファイル生成用の Godot 4.x プロジェクト

クイックスタート

画像を 1 枚生成する
deno run --allow-env --allow-net --allow-write scripts/generate-image.ts \
  --provider dalle \
  --prompt "pixel art knight character, front view, 16-bit style, transparent background" \
  --output ./assets/knight.png
アニメーションフレームを一括生成する
deno run --allow-env --allow-net --allow-read --allow-write scripts/batch-generate.ts \
  --spec ./batch-spec.json \
  --output ./generated/
スプライトシートを作成する
deno run --allow-read --allow-write scripts/pack-spritesheet.ts \
  --input ./generated/*.png \
  --output ./sprites/player-sheet.png \
  --columns 4

基本的なワークフロー

フェーズ 1:スタイルの定義

アセットを生成する前に、アートスタイルを定義します:

  1. アートスタイルを選ぶ:ピクセルアート、手描き、水彩画風、またはベクター
  2. スタイルガイドを作成する:色、修飾語、制約を記録する
  3. プロンプトをテストする:サンプルを生成して、スタイルの一貫性を確認する
{
  "style": "pixel-art",
  "resolution": 64,
  "palette": "limited-16-colors",
  "modifiers": "16-bit, no anti-aliasing, clean pixels"
}
フェーズ 2:アセットの生成

適切なプロバイダーを使用してアセットを生成します:

  1. 個別アセット:画像 1 枚ごとに generate-image.ts を使用します
  2. 一括アセット:関連する複数のアセットには batch-generate.ts を使用します
  3. 反復調整:結果に基づいてプロンプトを改善します
フェーズ 3:後処理

AI の生の出力をゲームで使えるように準備します:

  1. 背景の除去:背景からスプライトを切り出します
  2. 色補正:必要に応じてパレットを統一します
  3. サイズ変更:ゲーム内の正確な解像度に合わせます
  4. トリミング/余白の追加:余白を取り除き、スプライトの余白を追加します
deno run --allow-read --allow-write scripts/process-sprite.ts \
  --input ./raw/knight.png \
  --output ./processed/knight.png \
  --remove-bg \
  --resize 64x64 \
  --filter nearest
フェーズ 4:Godot への統合

Godot にインポートできるようアセットを準備します:

  1. スプライトシートをまとめる:フレームを最適化されたシートに結合します
  2. インポートファイルを生成する:最適な設定で .import を作成します
  3. アニメーションを設定する:SpriteFrames リソースをセットアップします

API プロバイダーの選択

プロバイダー最適な用途品質コスト速度
DALL-E 3一貫性、高精細非常に優れている$$$中
Replicateスタイル制御、バリエーションとても良い$$中
fal.ai高速な反復、テスト良い$高速
DALL-E 3(OpenAI)

高品質で一貫性のある結果に最適です。プロンプトへの追従性に優れています。

--provider dalle --model dall-e-3
  • サイズ:1024x1024、1792x1024、1024x1792
  • 品質:standard、hd
  • スタイル:vivid、natural
Replicate(SDXL/Flux)

スタイル制御や、低コストでの一括生成に最適です。

--provider replicate --model stability-ai/sdxl
  • モデルの選択肢が豊富です(SDXL、Flux、特化型モデル)
  • ネガティブプロンプトに対応しています
  • ControlNet と img2img を利用できます
fal.ai

プロンプトの素早い反復とテストに最適です。

--provider fal --model fal-ai/flux/schnell
  • 推論が最速です
  • プロトタイピングに適しています
  • 画像 1 枚あたりのコストが低めです

アートスタイル別のプロンプト

ピクセルアート
"pixel art [subject], 16-bit style, clean pixels, no anti-aliasing,
limited color palette, retro game sprite, transparent background"

主な修飾語:16-bit、8-bit、pixel art、retro、clean pixels、no anti-aliasing

避ける語句:realistic、detailed、smooth、gradient

手描き/イラスト
"hand-drawn illustration of [subject], ink lines, watercolor texture,
sketch style, game art, white background"

主な修飾語:hand-drawn、illustration、ink lines、sketch、watercolor

水彩画風/コンセプトアート
"digital painting of [subject], concept art style, painterly brush strokes,
dramatic lighting, game asset"

主な修飾語:digital painting、concept art、painterly、brush strokes

ベクター/フラットデザイン
"flat design [subject], vector art style, clean edges, solid colors,
minimal shading, game icon, transparent background"

主な修飾語:flat design、vector、clean edges、solid colors、minimal

スクリプトリファレンス

generate-image.ts

対応している任意のプロバイダーから画像を 1 枚生成します。

deno run --allow-env --allow-net --allow-write scripts/generate-image.ts [options]

Options:
  --provider <name>   Provider: dalle, replicate, fal (required)
  --prompt <text>     Generation prompt (required)
  --output <path>     Output file path (required)
  --model <name>      Specific model (optional, provider-dependent)
  --size <WxH>        Image size, e.g., 1024x1024 (default: 1024x1024)
  --style <name>      Style preset: pixel-art, hand-drawn, painterly, vector
  --negative <text>   Negative prompt (Replicate/fal only)
  --quality <level>   Quality: standard, hd (DALL-E only)
  --json              Output metadata as JSON
  -h, --help          Show help
batch-generate.ts

仕様ファイルから複数の画像を生成します。

deno run --allow-env --allow-net --allow-read --allow-write scripts/batch-generate.ts [options]

Options:
  --spec <path>       Path to batch specification JSON (required)
  --output <dir>      Output directory (required)
  --concurrency <n>   Parallel requests (default: 2)
  --delay <ms>        Delay between requests (default: 1000)
  --resume            Resume from last successful
  --json              Output results as JSON
  -h, --help          Show help

バッチ仕様の形式:

{
  "provider": "replicate",
  "model": "stability-ai/sdxl",
  "style": "pixel-art",
  "basePrompt": "16-bit pixel art, game sprite, transparent background",
  "assets": [
    { "name": "player-idle", "prompt": "knight standing idle, front view" },
    { "name": "player-walk-1", "prompt": "knight walking, frame 1 of 4" },
    { "name": "player-walk-2", "prompt": "knight walking, frame 2 of 4" }
  ]
}
process-sprite.ts

生成した画像をゲーム用に後処理します。

deno run --allow-read --allow-write scripts/process-sprite.ts [options]

Options:
  --input <path>      Input image path (required)
  --output <path>     Output image path (required)
  --remove-bg         Remove background (make transparent)
  --resize <WxH>      Resize to dimensions
  --filter <type>     Resize filter: nearest, linear (default: nearest)
  --trim              Trim transparent whitespace
  --padding <n>       Add padding pixels
  --color-key <hex>   Color to make transparent (e.g., ff00ff)
  -h, --help          Show help
pack-spritesheet.ts

複数のスプライトをスプライトシートにまとめます。

deno run --allow-read --allow-write scripts/pack-spritesheet.ts [options]

Options:
  --input <pattern>   Input files (glob pattern, required)
  --output <path>     Output sprite sheet path (required)
  --columns <n>       Number of columns (default: auto)
  --padding <n>       Padding between sprites (default: 0)
  --power-of-two      Force power-of-two dimensions
  --metadata <path>   Output JSON metadata path
  -h, --help          Show help

出力メタデータ:

{
  "image": "player-sheet.png",
  "size": { "width": 256, "height": 128 },
  "frames": [
    { "name": "idle", "x": 0, "y": 0, "width": 64, "height": 64 },
    { "name": "walk-1", "x": 64, "y": 0, "width": 64, "height": 64 }
  ]
}
generate-import-files.ts

最適な設定で Godot の .import ファイルを生成します。

deno run --allow-read --allow-write scripts/generate-import-files.ts [options]

Options:
  --input <path>      Input image or directory (required)
  --preset <name>     Preset: pixel-art, hd-sprite, ui (default: pixel-art)
  --frames <n>        Animation frame count (for sprite sheets)
  --columns <n>       Sprite sheet columns
  --fps <n>           Animation FPS (default: 12)
  -h, --help          Show help

Godot のインポート設定

ピクセルアートのスプライト
Filter Mode: Nearest
Compression: Lossless
Mipmaps: Off
Fix Alpha Border: On
HD スプライト
Filter Mode: Linear
Compression: VRAM Compressed
Mipmaps: On
UI 要素
Filter Mode: Linear (or Nearest for pixel UI)
Compression: Lossless
Mipmaps: Off

例

例 1:歩行アニメーション付きのピクセルアートキャラクター
# 1. Create batch spec
cat > character-batch.json << 'EOF'
{
  "provider": "replicate",
  "style": "pixel-art",
  "basePrompt": "16-bit pixel art knight, game sprite, transparent background",
  "assets": [
    { "name": "knight-idle", "prompt": "standing idle, front view" },
    { "name": "knight-walk-1", "prompt": "walking, left foot forward" },
    { "name": "knight-walk-2", "prompt": "walking, standing straight" },
    { "name": "knight-walk-3", "prompt": "walking, right foot forward" },
    { "name": "knight-walk-4", "prompt": "walking, standing straight" }
  ]
}
EOF

# 2. Generate images
deno run --allow-env --allow-net --allow-read --allow-write \
  scripts/batch-generate.ts --spec character-batch.json --output ./raw/

# 3. Process sprites
for f in ./raw/knight-*.png; do
  deno run --allow-read --allow-write scripts/process-sprite.ts \
    --input "$f" --output "./processed/$(basename $f)" \
    --remove-bg --resize 64x64 --filter nearest
done

# 4. Pack sprite sheet
deno run --allow-read --allow-write scripts/pack-spritesheet.ts \
  --input "./processed/knight-*.png" \
  --output ./sprites/knight-sheet.png \
  --columns 5 --metadata ./sprites/knight-sheet.json

# 5. Generate Godot import
deno run --allow-read --allow-write scripts/generate-import-files.ts \
  --input ./sprites/knight-sheet.png --preset pixel-art \
  --frames 5 --columns 5 --fps 8
例 2:タイルセットの生成
# Generate individual tiles
deno run --allow-env --allow-net --allow-write scripts/generate-image.ts \
  --provider dalle \
  --prompt "seamless pixel art grass tile, top-down view, 32x32, game tileset" \
  --output ./tiles/grass.png \
  --style pixel-art

# Process and resize
deno run --allow-read --allow-write scripts/process-sprite.ts \
  --input ./tiles/grass.png --output ./tiles/grass-processed.png \
  --resize 32x32 --filter nearest
例 3:UI アイコン
# Batch generate UI icons
cat > ui-batch.json << 'EOF'
{
  "provider": "fal",
  "style": "vector",
  "basePrompt": "flat design game icon, clean edges, solid colors, transparent background",
  "assets": [
    { "name": "icon-sword", "prompt": "sword weapon icon" },
    { "name": "icon-shield", "prompt": "shield defense icon" },
    { "name": "icon-potion", "prompt": "health potion bottle icon" },
    { "name": "icon-coin", "prompt": "gold coin currency icon" }
  ]
}
EOF

deno run --allow-env --allow-net --allow-read --allow-write \
  scripts/batch-generate.ts --spec ui-batch.json --output ./icons/

よくある問題

API キーが見つからない
Error: OPENAI_API_KEY environment variable is not set

解決策:実行前に API キーをエクスポートします。

export OPENAI_API_KEY="sk-..."
バッチ内でスタイルに一貫性がない

問題:同じプロンプトを使っても、生成画像のスタイルが異なります。

解決策:

  • より具体的なスタイル指定を使用します
  • 再現性を確保するため、シードパラメーターを指定して Replicate を使用します
  • 画像を多めに生成し、最も一致するものを選びます
  • 参照画像を使って img2img を使用します(Replicate)
背景の削除に失敗する

問題:--remove-bg でスプライトをきれいに切り抜けません。

解決策:

  • プロンプトに「透明な背景」または「白い背景」を追加します
  • 特定の背景色を指定して --color-key を使用します
  • 「透明な背景に単独で配置」のように、より明確なプロンプトを使用します
  • 複雑な画像では手動での修正が必要になる場合があります
ピクセルアートにアンチエイリアスがかかる

問題:生成されたピクセルアートのエッジが滑らかになっています。

解決策:

  • プロンプトに「アンチエイリアスなし」「くっきりしたピクセル」を追加します
  • 大きいサイズで生成してから、ニアレストネイバー法で縮小します
  • process-sprite.ts で --filter nearest を使用します
  • パレットの色数を減らして後処理します
レート制限

問題:API が 429 レート制限エラーを返します。

解決策:

  • batch-generate.ts の --delay を大きくします
  • --concurrency を小さくします
  • 時間をおいて再試行します
  • 大規模なバッチでは別のプロバイダーを使用します

追加リソース

プロンプトガイド
  • references/prompting/pixel-art.md - ピクセルアートの詳細な手法
  • references/prompting/hand-drawn.md - イラスト風のスタイルガイド
  • references/prompting/consistent-characters.md - キャラクターの一貫性
API ガイド
  • references/api-guides/openai-dalle.md - DALL-E 3 API リファレンス
  • references/api-guides/replicate-sdxl.md - Replicate の連携方法
  • references/api-guides/fal-ai.md - fal.ai ガイド
Godot 連携
  • references/godot-integration/import-settings.md - インポート設定
  • references/godot-integration/animation-setup.md - AnimatedSprite2D の設定
テンプレート
  • assets/prompts/pixel-art-templates.json - ピクセルアートのプロンプトテンプレート
  • assets/prompts/character-templates.json - キャラクター用プロンプト
  • assets/style-guides/style-guide-template.json - スタイルガイドのスキーマ

制限事項

  • API のみ:インターネット接続と API キーが必要です(ローカルモデルには対応していません)
  • スタイルの一貫性:同じプロンプトでも、AI が異なるバリエーションを生成する場合があります
  • 解像度の制約:各プロバイダーにはサイズ制限があります
  • 2D アセットのみ:3D モデル、テクスチャ、複雑なアニメーションには対応していません
  • 背景の削除:複雑な画像では手動での修正が必要になる場合があります
  • コスト:API 呼び出しには料金が発生し、特に大規模なバッチでは高額になります

コメント