A
asset-optimization
About asset-optimization
A skill covering asset optimization for game pipelines, including texture, mesh, and audio settings, memory budgets, and batch processing. It is intended for teams preparing assets and builds for different target platforms.
Key features
- 01Texture compression guidance
- 02Mesh polygon budgets
- 03Audio compression settings
- 04Platform memory budgets
- 05Batch texture processing
Use cases
- 01Reducing game build size
- 02Preparing assets for mobile targets
- 03Setting memory budgets by platform
- 04Batch-processing textures for a target platform
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ pluginagentmarketplace/ custom-plugin-game-developer --skill asset-optimizationAfter installing, type/asset-optimizationin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
assets/asset_config.yamlreferences/ASSETS_GUIDE.mdscripts/asset_optimizer.pyDetails
From the project READMEAsset Optimization
Asset Pipeline Overview
┌─────────────────────────────────────────────────────────────┐
│ 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 Optimization
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) │
└─────────────────────────────────────────────────────────────┘
Mesh Optimization
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 Optimization
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
Batch Processing Script
# ✅ 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)
🔧 Troubleshooting
┌─────────────────────────────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────────────────────────────┘
Memory Budgets
| 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.
Comments
Markdown supported