Mobile game draw calls optimization

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Mobile game draw calls optimization
Medium
~2-3 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Draw Call Optimization in Mobile Games

A Draw Call is a CPU command to GPU: "render this mesh with this material". On mobile GPUs with tile architecture (Mali, Adreno, Apple), extra Draw Calls are more expensive than on desktop. On Adreno 618, moving from 300 to 150 Draw Calls per frame can boost 45 to 60 FPS without touching shaders.

Where Extra Calls Come From

Three main sources.

Different materials on similar objects. Each unique material = minimum one separate Draw Call. Often see projects where coins, enemies, and bonuses have different textures (PNGs different sizes), packed in different atlases, with different materials. Batching impossible for them.

Dynamic batching breaks silently. Unity batches meshes only if <900 vertices, use one material, and aren't marked static. Adding shadow (Shadow Casting = On) to dynamic object automatically removes it from batching—not obvious from docs.

Skinned mesh without GPU instancing. Animated characters with SkinnedMeshRenderer don't participate in static or dynamic batching. 20 enemies on screen with identical mesh but no GPU Instancing = 20 separate Draw Calls.

Diagnostic Tools

Unity Frame Debugger (Window → Analysis → Frame Debugger)—first step. Shows each Draw Call per frame with explanation why batching failed (Why This Draw Call Can't Be Batched).

Snapdragon Profiler (Android Adreno) and Xcode GPU Frame Capture (iOS) provide detailed real-device view, including time per draw call.

RenderDoc—for deep analysis when Frame Debugger doesn't answer.

What We Do

Sprite Atlas for 2D

For 2D games—SpriteAtlas (not deprecated Sprite Packer). All sprites of one game layer—in one atlas, one material, one Draw Call for entire layer. Important: atlas must be Include in Build, else individual textures load at runtime.

Max atlas size on mobile—2048×2048 for most, 4096×4096 allowed for Android API 26+ and iOS 12+. Use ASTC 6×6 for both: good compression, no visible artifacts on game sprites.

GPU Instancing for 3D

For repeated objects (enemies, trees, bullets)—Enable Instancing on material + verify shader supports #pragma multi_compile_instancing. With Unity 2022+ can use BatchRendererGroup for full control.

GPU Instancing doesn't work with CPU animation. For animated enemies—either GPU skinning via AnimationInstancing (asset), or vertex shaders with baked animation in texture (Texture-based animation).

Static Batching

Static objects (platforms, walls, decorations)—mark Static, enable Static Batching in Player Settings. Unity merges meshes at build time. Overhead: memory increase (meshes duplicated), so don't mark everything static.

Remove Unnecessary Shadow Casters

Shadows are expensive. On mobile, often disable real-time shadows entirely and replace with blob shadow (simple dark circle sprite under object). If shadows needed—limit distance and use one cascade map instead of four.

Target Metrics

Device Recommended Max Draw Calls
Low-end Android (Adreno 505) 80–120
Mid-range Android (Adreno 618) 150–200
iPhone 12 / A14 200–300
iPhone 15 / A17 300–400

These figures for 60 FPS. If target is 30 FPS, budget is twice looser.

Process

Audit current Frame Debugger → categorize Draw Calls by reason → prioritize by GPU time contribution → implement atlases/instancing/batching → validate on low-end device.

Timeline depends on game scope: simple 2D arcade—two-three days, 3D with animated characters—week and more.