# Blender Game Optimization

Optimize Blender assets for real-time engines - triangle/material/texture/bone budgets...

- Repository: https://github.com/EL4CTEO/blender-skills (651 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-30
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add EL4CTEO/blender-skills --skill blender-game-optimization -g -a claude-code -y`
Codex: `npx skills add EL4CTEO/blender-skills --skill blender-game-optimization -g -a codex -y`
Cursor: `npx skills add EL4CTEO/blender-skills --skill blender-game-optimization -g -a cursor -y`
Gemini CLI: `npx skills add EL4CTEO/blender-skills --skill blender-game-optimization -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add EL4CTEO/blender-skills`

## Description

Optimize Blender assets for real-time engines - triangle/material/texture/bone budgets per platform (mobile, Roblox, web, VR, console, PC), LOD chains, decimation modes, mesh cleanup, draw-call reduction (material merging, atlases, trim sheets), instancing, vertex-split costs, collision proxies, texture memory. Use when an asset is too heavy, before export, or when targeting a platform budget.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Game Optimization

The execution model is in `blender-core`. Always re-run `blender-asset-qa` after optimizing.

## Procedure
1. **Measure**: `scripts/mesh_stats.py -- --objects ... --budget mobile|roblox|web|vr|console|pc`. It returns tris, estimated draw calls, materials, texture VRAM, bones, and the over-budget items.
2. **Clean**: `make_lods.py --cleanup` (merge by distance 0.1 mm, dissolve degenerate, delete loose). Remove hidden faces: back-to-back faces and faces under other parts (`qa_check` → `back_to_back`, plus manual xray).
3. **Reduce in this order** (cheapest visual loss first): hidden/interior geometry → unnecessary edge loops on flat areas (Limited Dissolve 1, 5°) → over-segmented cylinders → Decimate → bake detail to normals (`blender-texture-baking`).
4. **Materials**: merge to 1, 2 per asset (atlas / trim sheet / shared tiling material). Each material slot per mesh is roughly one draw call.
5. **LODs**: `scripts/make_lods.py -- --objects SM_X --rename` creates `_LOD1.._LOD3` at 50/25/12.5%. Check every LOD silhouette with `look`/`review_shots`.
6. **Re-measure**, then QA, then export (`blender-export-pipelines`).

## Budgets (guidance per asset, 2026)
| Platform | Hero char tris | Prop tris | Mats/asset | Max texture | Bones |
|---|---|---|---|---|---|
| Mobile | 5, 15k | 0.3, 3k | 1, 2 | 1024 | ≤75 |
| Roblox | body ≤10,742 (head 4k, torso 1.75k, limb 1,248); accessory/clothing 4k | ≤20k per MeshPart | 1 (SurfaceAppearance) | 1024 (PBR), 4k max | R15 + optional |
| Web (three.js/Babylon) | 10, 30k | 1, 10k | 1, 2 | 2048 | ≤100 |
| Standalone VR (Quest) | 10, 40k | 1, 10k | 1, 3 | 2048 | ≤100 |
| Console / PC | 50, 150k | 5, 50k | 2, 6 | 4096 | 150, 300 |
| UE5 Nanite (static) |, | millions OK | few | 4096+ | n/a |
Whole-scene limits matter more than single assets: mobile ≈ 100, 300k tris visible and < 100, 200 draw calls; PC ≈ millions of tris and < 2, 5k draw calls.

The rest: https://github.com/EL4CTEO/blender-skills/blob/HEAD/skills/blender-game-optimization/SKILL.md
