Skip to content
cccskills
FreePublished on GitHub

blender-game-optimization

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.

The English summary is being prepared. Showing the original description.

Works withBlender

Run score Not tested

See how to install

Files included (4)

  • SKILL.md5.8 KB
  • scripts/_bpyx.py4.4 KB
  • scripts/make_lods.py3.9 KB
  • scripts/mesh_stats.py3.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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)

PlatformHero char trisProp trisMats/assetMax textureBones
Mobile5–15k0.3–3k1–21024≤75
Robloxbody ≤10,742 (head 4k, torso 1.75k, limb 1,248); accessory/clothing 4k≤20k per MeshPart1 (SurfaceAppearance)1024 (PBR), 4k maxR15 + optional
Web (three.js/Babylon)10–30k1–10k1–22048≤100
Standalone VR (Quest)10–40k1–10k1–32048≤100
Console / PC50–150k5–50k2–64096150–300
UE5 Nanite (static)—millions OKfew4096+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.

Decimate modes

ModeUseNotes
COLLAPSE (ratio)organic, scans, LODsuse_symmetry, vertex group factor to protect faces/hands; triangulates
UNSUBDIV (iterations)meshes made by subdividing quadsrestores the quad grid cleanly
DISSOLVE (planar, angle)hard-surface / CADdelimit {"SEAM","SHARP","MATERIAL","UV"}; keeps the silhouette, makes n-gons → triangulate on export
Protect UV seams and silhouette: decimate a copy, then compare. If UVs tear at LOD1, the ratio is too aggressive for that topology, so re-unwrap or use a manual LOD.

The hidden cost: vertex splits

GPU vertex count = unique (position, normal, UV, color) combinations. Every UV seam and hard edge duplicates vertices, so engine vertex counts are often 1.5–3× Blender's. Minimize seams where they aren't needed, keep hard edges = seams (so the split happens once), and don't add vertex colors or extra UV sets you don't use.

LOD rules

  • Halve the tris per level. Switch at screen size ~0.5 / 0.25 / 0.125 (UE "Screen Size", Unity LOD Group %, Godot lod_bias auto).
  • LODs keep the same materials (or fewer: merge them at LOD2+), same pivot, same bounds.
  • Skeletal LODs: remove finger/face bones at LOD2+ (the engine bone-reduction tools handle this). Keep the skinning on the same skeleton.
  • Far LOD / foliage: impostor/billboard. Unreal Nanite (static, opaque/masked) and Godot's auto mesh LOD can replace a hand-made chain.
  • Roblox: no manual LODs. RenderFidelity=Automatic does it. Keep each MeshPart ≤ 20k tris and use a simple CollisionFidelity (Box/Hull) for non-walkable parts.

Draw calls and batching

  • Merge static meshes that share a material and are always seen together (join objects). Don't merge across large areas, because that defeats frustum/occlusion culling.
  • Instancing: repeated objects as linked duplicates (Alt+D, shared mesh) or collection instances. They export as instances (glTF EXT_mesh_gpu_instancing with export_gpu_instances) or as one mesh + transforms in the engine.
  • Atlases/trim sheets: put many props on one texture set. Trim sheets let walls, panels and pipes share one 2k material.
  • Texture memory (upper bound, uncompressed RGBA8 + mips): 1k = 5.3 MB, 2k = 21 MB, 4k = 85 MB. Engines compress (BC7/ASTC ≈ 4–8×). Pack grayscale maps into ORM channels to cut it 3×.

Collision

Keep collision separate and simple: boxes/convex hulls of ≤ 32–255 verts. UE UCX_<Mesh>_##, Godot -colonly/-convcolonly suffix, Unity MeshCollider on a simplified mesh, Roblox CollisionFidelity. Never use the render mesh as a physics mesh for anything that moves.

Rig and animation cost

Limit to 4 influences per vertex (vertex_group_limit_total(limit=4) + normalize). Remove non-deforming bones from the export (use_armature_deform_only). Bake constraints and drivers to keys. Shape keys cost memory per vertex, so drop unused ones and keep only deltas (glTF sparse accessors handle this).

Gotchas

  • Decimate on meshes with unapplied modifiers: make_lods.py evaluates them first. Other paths need you to apply them.
  • Join (Ctrl+J) merges materials and UV maps by name. Rename the UV maps identically first, or the UVs get lost.
  • The Weld modifier is the non-destructive merge by distance. Use mode="CONNECTED" to avoid welding separate parts.
  • Triangulate before measuring if the engine will. Quads already count as 2 tris in the stats.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Write Blender 5.2 add-ons as extensions - blender_manifest.toml, operators/panels/menus/property groups/preferences, bpy.props rules after 5.0, undo/redo, modal and timer patterns, gpu drawing (no bgl), bundling Python wheels, CLI validate/build/install, testing headless, extensions platform publishing. Use when creating or fixing a Blender add-on, tool, or UI.

The English summary is being prepared. Showing the original description.

EL4CTEO/blender-skills456Updated Oct 20, 2026

Animation in Blender 5.2 - slotted/layered actions and the channelbag API, Python keyframing, F-curves, game loops, NLA clips, pose library, mocap/BVH retargeting via constraints, baking control rigs to export skeletons, root motion, per-clip export. Use for any keyframe, action, NLA, mocap, or animation-export task.

The English summary is being prepared. Showing the original description.

EL4CTEO/blender-skills456Updated Oct 20, 2026

Mandatory review gate for any mesh or asset created or edited in Blender. Detects z-fighting (coplanar overlaps), floating/detached parts, inverted or inconsistent normals, non-manifold/open geometry, degenerate faces, duplicate verts, n-gons, unapplied scale, UV problems, bad skin weights, and renders multi-angle review sheets. Use before calling any modeling, export or delivery task done.

The English summary is being prepared. Showing the original description.

EL4CTEO/blender-skills456Updated Oct 20, 2026

Character rigging in Blender 5.2 - Rigify metarig fit/generate, bone naming/roll/collections, DEF/MCH/control layers, IK/FK, robust skinning (heat + proxy fallback), weight-painting rules, correctives, engine game skeletons (Unity, Unreal, Roblox R15), rig validation and deformation stress tests. Use for armature, skinning or weights tasks.

The English summary is being prepared. Showing the original description.

EL4CTEO/blender-skills456Updated Oct 20, 2026

Foundation for any Blender 5.2+ task an agent drives - running bpy via MCP (live) or headless CLI, context overrides, locale-safe node lookup, enum discovery, 5.x API changes, verification. Use first for any Blender, bpy, .blend or 3D-asset request; routes to the specialized blender-* skills.

The English summary is being prepared. Showing the original description.

EL4CTEO/blender-skills456Updated Oct 20, 2026

Export from Blender 5.2 with verified presets - Roblox (FBX/glTF, cages, R15, SurfaceAppearance), Unity (FBX, Humanoid), Unreal (FBX skeletal, Nanite, UCX), Godot/web (GLB, meshopt/Draco, WebP), USD. Scale/axes, smoothing, tangents, leaf bones, clips, batch export, post-export verification. Use whenever an asset leaves Blender.

The English summary is being prepared. Showing the original description.

EL4CTEO/blender-skills456Updated Oct 20, 2026

See all skills by EL4CTEO

Report a problem with this skill