Asset pipeline optimization, compression, streaming, and resource management for efficient game development and delivery.
Optimizes game assets by compressing textures, generating LODs, and configuring streaming for target platforms. Use when you need to reduce build size, improve load times, or manage memory budgets across mobile, console, and PC platforms.
/plugin marketplace add pluginagentmarketplace/custom-plugin-game-developer/plugin install custom-plugin-game-developer@pluginagentmarketplace-game-developerThis skill inherits all available tools. When active, it can use any tool Claude has access to.
assets/asset_config.yamlreferences/ASSETS_GUIDE.mdscripts/asset_optimizer.py┌─────────────────────────────────────────────────────────────┐
│ ASSET PIPELINE FLOW │
├─────────────────────────────────────────────────────────────┤
│ SOURCE ASSETS (Large, Editable): │
│ .psd, .fbx, .blend, .wav, .tga │
│ ↓ │
│ IMPORT SETTINGS: │
│ Compression, Format, Quality, Platform overrides │
│ ↓ │
│ PROCESSING: │
│ Compression, Mipmaps, LOD generation, Format conversion │
│ ↓ │
│ RUNTIME ASSETS (Optimized): │
│ .dds, .ktx, .ogg, engine-specific formats │
│ ↓ │
│ PACKAGING: │
│ Asset bundles, streaming chunks, platform builds │
└─────────────────────────────────────────────────────────────┘
TEXTURE COMPRESSION FORMATS:
┌─────────────────────────────────────────────────────────────┐
│ PLATFORM │ FORMAT │ QUALITY │ SIZE/PIXEL │
├─────────────┼─────────────┼──────────┼────────────────────┤
│ PC/Console │ BC7 │ Best │ 1 byte │
│ PC/Console │ BC1 (DXT1) │ Good │ 0.5 byte │
│ iOS │ ASTC 6x6 │ Great │ 0.89 byte │
│ Android │ ETC2 │ Good │ 0.5-1 byte │
│ Mobile │ ASTC 8x8 │ Good │ 0.5 byte │
│ Uncompressed│ RGBA32 │ Perfect │ 4 bytes │
└─────────────┴─────────────┴──────────┴────────────────────┘
TEXTURE SIZE GUIDELINES:
┌─────────────────────────────────────────────────────────────┐
│ Character (main): 2048x2048 │
│ Character (NPC): 1024x1024 │
│ Props (large): 1024x1024 │
│ Props (small): 512x512 or 256x256 │
│ UI elements: Power of 2, vary by size │
│ Environment: 2048x2048 (tiling) │
│ Mobile maximum: 1024x1024 (prefer 512) │
└─────────────────────────────────────────────────────────────┘
POLYGON BUDGET GUIDELINES:
┌─────────────────────────────────────────────────────────────┐
│ PLATFORM │ HERO CHAR │ NPC │ PROP │ SCENE │
├─────────────┼───────────┼──────────┼──────────┼───────────┤
│ PC High │ 100K │ 30K │ 10K │ 10M │
│ PC Med │ 50K │ 15K │ 5K │ 5M │
│ Console │ 80K │ 25K │ 8K │ 8M │
│ Mobile │ 10K │ 3K │ 500 │ 500K │
│ VR │ 30K │ 10K │ 2K │ 2M │
└─────────────┴───────────┴──────────┴──────────┴───────────┘
LOD CONFIGURATION:
┌─────────────────────────────────────────────────────────────┐
│ LOD0: 100% triangles │ 0-10m │ Full detail │
│ LOD1: 50% triangles │ 10-30m │ Reduced │
│ LOD2: 25% triangles │ 30-60m │ Low detail │
│ LOD3: 10% triangles │ 60m+ │ Billboard/Impostor │
└─────────────────────────────────────────────────────────────┘
AUDIO COMPRESSION:
┌─────────────────────────────────────────────────────────────┐
│ TYPE │ FORMAT │ QUALITY │ STREAMING │
├─────────────┼─────────┼───────────┼──────────────────────┤
│ Music │ Vorbis │ 128-192 │ Always stream │
│ SFX (short) │ ADPCM │ High │ Decompress on load │
│ SFX (long) │ Vorbis │ 128 │ Stream if > 1MB │
│ Voice │ Vorbis │ 96-128 │ Stream │
│ Ambient │ Vorbis │ 96 │ Stream │
└─────────────┴─────────┴───────────┴──────────────────────┘
AUDIO MEMORY BUDGET:
• Mobile: 20-50 MB
• Console: 100-200 MB
• PC: 200-500 MB
# ✅ Production-Ready: Asset Batch Processor
import subprocess
from pathlib import Path
from concurrent.futures import ThreadPoolExecutor
def process_textures(input_dir: Path, output_dir: Path, platform: str):
"""Batch process textures for target platform."""
settings = {
'pc': {'format': 'bc7', 'max_size': 4096},
'mobile': {'format': 'astc', 'max_size': 1024},
'console': {'format': 'bc7', 'max_size': 2048},
}
config = settings.get(platform, settings['pc'])
textures = list(input_dir.glob('**/*.png')) + list(input_dir.glob('**/*.tga'))
def process_single(texture: Path):
output_path = output_dir / texture.relative_to(input_dir)
output_path = output_path.with_suffix('.dds')
output_path.parent.mkdir(parents=True, exist_ok=True)
subprocess.run([
'texconv',
'-f', config['format'],
'-w', str(config['max_size']),
'-h', str(config['max_size']),
'-m', '0', # Generate all mipmaps
'-o', str(output_path.parent),
str(texture)
])
with ThreadPoolExecutor(max_workers=8) as executor:
executor.map(process_single, textures)
┌─────────────────────────────────────────────────────────────┐
│ PROBLEM: Build size too large │
├─────────────────────────────────────────────────────────────┤
│ SOLUTIONS: │
│ → Audit unused assets │
│ → Increase texture compression │
│ → Enable mesh compression │
│ → Split into downloadable content │
│ → Use texture atlases │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ PROBLEM: Long import times │
├─────────────────────────────────────────────────────────────┤
│ SOLUTIONS: │
│ → Use asset database caching │
│ → Import in batches │
│ → Use faster SSD storage │
│ → Pre-process assets in CI/CD │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ PROBLEM: Assets look blurry │
├─────────────────────────────────────────────────────────────┤
│ SOLUTIONS: │
│ → Reduce compression for important assets │
│ → Increase texture resolution │
│ → Check mipmap settings │
│ → Use appropriate filtering mode │
└─────────────────────────────────────────────────────────────┘
| Platform | Textures | Meshes | Audio | Total |
|---|---|---|---|---|
| Mobile Low | 100 MB | 50 MB | 30 MB | 200 MB |
| Mobile High | 500 MB | 200 MB | 100 MB | 1 GB |
| Console | 2 GB | 1 GB | 200 MB | 4 GB |
| PC | 4 GB | 2 GB | 500 MB | 8 GB |
Use this skill: When optimizing assets, managing memory, or streamlining pipelines.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.