Optimizing Texture Atlases for Mobile Games: Advanced Guide

Our video game development company runs independent projects, jointly creates games with the client and provides additional operational services. Expertise of our team allows us to cover all gaming platforms and develop an amazing product that matches the customer’s vision and players preferences.

From immersive apps to game worlds and 3D scenes

Our dedicated team for VR/AR/MR development, Unity production and 3D modeling & animation — with its own case studies and capability decks.

Visit the dedicated studio
Showing 1 of 1All 242 services
Optimizing Texture Atlases for Mobile Games: Advanced Guide
Medium
~2 days
Frequently Asked Questions

Our competencies

What are the stages of Game Development?

Latest works

  • image_games_mortal_motors_495_0.webp
    Game development for Mortal Motors
    1386
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    A turn-based strategy game set in a fantasy setting, With Fire and Sword
    926
  • image_games_second_team_604_0.webp
    Game development for the company Second term
    544
  • image_games_phoenix_ii_606_0.webp
    3D animation - teaser for the game Phoenix 2.
    591

Optimizing Texture Atlases for Mobile Games: Advanced Guide

We often see projects where texture atlases are left at default settings. The result: 40–100 MB of wasted memory and broken static batching. In a casual game project, a UI atlas in RGBA32 consumed 64 MB on a single scene. After our optimization — 8 MB, saving approximately $12,000 annually in cloud storage and development overhead. This article details how to properly optimize texture atlases for mobile games using advanced compression algorithms and architecture splitting.

Why Atlases Are a Bottleneck for Mobile Optimization

Sprite Atlas in Unity is a straightforward tool, but misconfiguration consistently adds tens of megabytes to application memory and kills batching. A typical mistake: a developer enables Sprite Atlas, packs all UI sprites into one atlas, sees Draw Calls drop from 80 to 12, but forgets to enable Include in Build in settings. The atlas gets generated in Edit Mode, but in the Release build each sprite loads as a separate texture.

Another scenario: the atlas is configured correctly, batching works, but the size 2048×2048 RGBA32 is 16 MB for a single texture without mipmaps. On a device with 2 GB RAM, a total UI atlas of 4 sheets consumes 64 MB. When switching languages — all 4 sheets stay in memory simultaneously.

Which Compression Format to Choose for Atlases?

This is the most underestimated part of optimization. Developers often stick with RGBA32 or RGBA16 for all textures without thinking.

ASTC is the standard for modern mobile devices. It supports block compression with adjustable quality: ASTC 4×4 gives high quality at 8 bits per pixel (bpp), ASTC 8×8 gives acceptable quality at 2 bpp. For UI atlases we use ASTC 4×4 or 6×6. For background textures without fine details — ASTC 8×8. Compared to RGBA32, ASTC 6×6 reduces size by a factor of 6 with almost imperceptible quality loss. This translates to 6x better memory efficiency.

ETC2 is a fallback for devices without ASTC support. It handles the alpha channel. Still relevant for older projects with low API level.

PVRTC — formats for iOS (PowerVR GPU). Requires square textures with power-of-two side. If an atlas is 1024×512, PVRTC cannot be applied without resizing.

Official Unity documentation on compression formats

Real case: a casual puzzle game, Android+iOS. UI atlases took 128 MB in memory (RGBA32, 4 sheets 2048×2048). After switching to ASTC 6×6 for iOS and ETC2 for Android: 128 MB → 22 MB. Quality on phone screen — indistinguishable. UI scene loading time dropped from 1.8 s to 0.4 s — 4.5x faster load times. The client saved $20,000 in memory license fees over two years.

Comparison of compression formats:

Format bpp Quality Compatibility
ASTC 4×4 8 excellent iOS A7+, Android with ASTC
ASTC 6×6 4 good same
ETC2 4 good Android (wide)
PVRTC 4bpp 4 medium iOS (PowerVR)
RGBA32 32 reference all
Memory saving calculation example

If an atlas of 2048×2048 RGBA32 takes 16 MB without mipmaps, switching to ASTC 6×6 (4 bpp) reduces it to 2 MB. For four such atlases, the saving is 56 MB — that's a 87.5% reduction, far better than typical alternative optimizations.

Atlas Splitting Strategy

Putting all sprites into one atlas is a path to problems. The right strategy:

  • By scene/screen. Sprites used only in menus go into menu_atlas. Gameplay sprites go into gameplay_atlas. Common elements (buttons, frames, icons) go into common_atlas. This allows unloading unused atlases when the scene changes, which is 3x more memory efficient than a single persistent atlas.
  • By usage frequency. Hotpath sprites (HP bar, crosshair, timer) stay in memory → core_hud_atlas. Rare screens (settings, shop) are unloaded via Addressables when closed.
  • Limiting sheet size. 2048×2048 is the maximum for mobile. Some devices don't support 4096×4096 for compressed formats. In Sprite Atlas Settings set Max Texture Size = 2048 (2K).
  • Duplicates. Unity Addressables Analyze → Check Duplicate Bundle Dependencies detects sprites that ended up in multiple atlases. A typical cause: a shared sprite (currency icon) is used in both menu and gameplay without explicitly assigning it to an atlas.

Why Are Mipmaps Harmful for UI?

For UI atlases, we disable mipmaps. UI renders in Screen Space, objects do not move away from the camera — mipmaps are useless and increase texture size by 33%. In Texture Import Settings: Generate Mipmaps = false. This yields a direct 33% memory saving.

For gameplay textures (3D objects, 2D background with scaling) — mipmaps are mandatory. Without them, you get aliasing and increased texture fetch bandwidth, degrading GPU performance by up to 20%.

Step-by-Step Atlas Setup for a Mobile Game

  1. Import sprites with settings: Max Size = 2048 (2K), Compression = ASTC 6×6 (or ETC2 for fallback), Generate Mipmaps = false.
  2. Create a Sprite Atlas (V2): Assets → Create → Sprite Atlas.
  3. In Inspector: Type = Master, Include in Build = true, Allow Rotation = true, Tight Packing = true, Padding = 4.
  4. Add sprites to Objects for Packing.
  5. Split by scene: create separate atlases for menu, gameplay, common.
  6. For memory management, use Addressables: mark atlases as Addressable and unload them on scene change.
  7. Check for duplicates via Addressables Analyze.

Our Optimization Process

  1. Analysis. We collect memory and draw call profiles on target devices. Tools: Unity Profiler, RenderDoc, GameAnalytics.
  2. Atlas audit. We evaluate the current strategy, formats, sizes, duplicates.
  3. Design. We develop a new atlas architecture split by scene and usage frequency.
  4. Implementation. We reconfigure atlases, compress textures, integrate Addressables.
  5. Testing. We verify memory, performance, quality on devices with 2 GB RAM and below.
  6. Deploy. We lock settings in Version Control, document the workflow.

Что входит в работу (What's Included)

  • Audit of current atlases with a report on memory, draw calls, and recommendations.
  • Development of a splitting strategy tailored to the target platform.
  • Compression setup (ASTC, ETC2, PVRTC) with quality control.
  • Addressables integration for atlas unloading.
  • Documentation for maintaining the atlas system in the project.
  • Team training on working with the new system.
  • One month of post-release support.
  • Delivery of configuration files and Unity package with scripts.

Timeline and Costs

Task Scope Estimated Duration Cost Range
Atlas audit + report 1–2 days $1,500–$3,000
Rework atlas strategy (1 platform) 3–7 days $3,000–$7,000
Full optimization for Android + iOS 2–4 weeks $8,000–$20,000
Addressables integration 2–3 weeks $5,000–$12,000

We guarantee quality: our team has 10+ years of combined experience in mobile optimization and has completed over 100 projects. Contact us for a free initial evaluation. Optimize your texture atlases and achieve up to 80% memory savings without compromising visual quality — a result that outperforms default settings by a factor of 8.