Creating Efficient 3D Characters for Mobile Games
You're developing a mobile RPG. The main character looks great in Blender, but on a Samsung Galaxy A32 you get 20 FPS. Balancing visuals and performance is the key challenge in mobile 3D graphics. A low-poly model is not about poor quality—it is about smart resource distribution. Our experience includes over 50 characters for 15 games across different genres. We know how to avoid such issues.
Why Polygon Budget Matters
Every extra triangle increases vertex processing load and memory bandwidth usage. On mobile devices with limited thermal headroom, exceeding the budget causes throttling and FPS drops. We ensure the model fits within given limits without losing visual quality. Target budgets for different genres:
| Type of Game | Main Character | NPC / Enemies | Background |
|---|---|---|---|
| Hyper-casual 3D | 500–1500 tri | 200–800 tri | 100–400 tri |
| Casual 3D | 1500–4000 tri | 800–2000 tri | 300–1000 tri |
| Midcore | 3000–8000 tri | 1000–4000 tri | 500–2000 tri |
These are triangles (tris), not polygons. In Unity and Godot, counters show tris. Blender by default shows faces—multiply by ~2 for triangulated meshes.
LOD (Level of Detail) is mandatory for characters that can be far from the camera. LOD0 (full), LOD1 (50–60% polycount), LOD2 (25%). Unity's LODGroup component switches automatically based on distance. The draw call savings are significant in scenes with 10+ characters.
How We Create 3D Characters for Mobile Games
The process starts with analyzing project requirements. We determine the style, genre, and target devices. Then we develop a technical specification that fixes the polygon budget, texture format, and rig settings. This is critical for subsequent optimization. For example, for hyper-casual titles, the main character can have only 500–1500 triangles, while for midcore RPGs, up to 8000. Choosing incorrectly at the start leads to rework and extra costs. Our engineers set the right parameters upfront, saving your project budget.
Rig and Skinning
Humanoid rig. We use Unity Animator with Avatar for humanoid characters. This allows using motion capture and Mecanim transitions. The number of bones is 20–40 for a mobile character. More means higher CPU load for skinning.
Generic rig. For creatures, vehicles, non-standard shapes. Fewer constraints on bone hierarchy. BlendTree in Animator ensures smooth transitions.
Skinning quality. In Unity's Quality Settings > Skin Weights for mobile, we use 2 Bones instead of 4 Bones. The deformation difference is minimal, and the CPU savings are noticeable with 20+ characters on screen.
Blend shapes (morph targets) for facial expressions. Each blend shape is an extra vertex pass. On mobile, we limit to 5–10 key expressions for the main character.
How to Choose Between Humanoid and Generic Rig
If the character is humanoid and you need ready-made animations, choose humanoid. For unique creatures (dragons, robots), generic gives more control over the skeleton. In most mobile projects, humanoid is more efficient due to animation reuse and lower development cost.
Textures and Materials
Texel density—pixel density per unit surface area—must be consistent across all characters in the scene. A character with a 4K texture next to an NPC at 256px looks unprofessional.
Standard PBR textures: Albedo (Base Color), Metallic/Roughness (or Specular), Normal Map, Emission (optional). On mobile, Normal Map is often left only for the main hero.
Texture atlasing. Multiple characters on one atlas = one Material = one Draw Call. Especially important for battle scenes with identical enemies. In Unity, GPU Instancing + shared Material allows drawing 100 identical enemies in one draw call.
Compression: ASTC 6x6 for iOS, ETC2 for Android. For Albedo — ASTC 6x6 (lossy but acceptable). Normal Map — ASTC 4x4 (needs precision for lighting).
From practice: a midcore RPG on Unity URP. A scene with 15 enemies gave 200+ draw calls, 25 FPS on iPhone 11. After implementing GPU Instancing + shared Material + LOD1 for enemies beyond 10 meters — draw calls dropped to 45, stable 60 FPS. Only pipeline settings changed, models untouched. This shows how proper texture and material optimization saves resources and budget.
Technical Optimization Details
- We use Unity URP with Forward rendering path. - GPU Instancing for repeated models. - Texture atlasing to reduce draw calls. - Shader optimization via Shader Graph.Comparison of URP and Built-in
| Criterion | URP | Built-in |
|---|---|---|
| Performance on Mobile | Higher (Lit shader faster) | Lower (Standard shader heavier) |
| Shader Graph | Yes (no HLSL) | No |
| Renderer Features | Yes (outline, post-processing) | No |
| Forward/Deferred Support | Forward only | Forward and Deferred |
| Custom Shaders | Via Shader Graph or HLSL | HLSL |
URP is the standard for new mobile projects. It is up to 2x faster than Built-in on mobile devices due to optimized rendering. Stylized shaders (cel shading, toon) are popular in mobile games and are implemented via Shader Graph without coding: Ramp Texture for lighting + Fresnel for rim light = cartoon look.
Character Creation Process
- Blocking — base shapes from primitives.
- Detailing — anatomy refinement.
- Retopology — clean topology for animation. Manual for deformable areas (joints, face).
- UV unwrapping — optimal use of texture space.
- Normal baking — transferring details from high-poly to low-poly.
- Texturing in Substance Painter (Albedo, Normal, Metallic/Roughness).
- Rig and skinning — humanoid or generic rig, weight painting.
- Test in engine — check animation and shader on target device.
- Optimization — profiling, LOD and draw call tuning.
What's Included in the Work
- 3D modeling with polygon budget compliance
- UV unwrapping with optimal texture space usage
- Baking high-poly details → low-poly
- Texturing (Albedo, Normal, Metallic/Roughness)
- Rig and skinning for humanoid or generic rig
- LOD0 + LOD1 + LOD2
- Export to FBX/glTF with settings for Unity / Godot
- In-engine test with animation and shader verification
Timelines and Budget
Creating one casual-level character (1500–4000 tri, basic texture set, humanoid rig) takes 2–4 weeks. A midcore hero with full texture map, blend shapes, and LOD takes 4–8 weeks. Serial production of similar NPCs is faster due to base mesh reuse. The cost typically ranges from $500 for a hyper-casual character to $3000 for a midcore hero. Proper optimization can reduce overall production expenses by up to 40%. For a hyper-casual game, outsourcing a main character costs around $500, while a midcore hero may cost $3000. Contact us to discuss your project. We'll evaluate the task and propose the optimal solution that fits your budget and timeline. Your game will get a hero that won't let you down under load. Request a consultation on character optimization.







