Creating 2D Sprite Atlases for Game Performance

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
Creating 2D Sprite Atlases for Game Performance
Simple
~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
    1388
  • 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

Creating 2D Sprite Atlases for Game Performance

We create sprite atlases for 2D games, delivering a 3–10× reduction in draw calls on mobile devices. Ten individual sprites in a folder mean ten texture bindings during rendering. The same ten sprites in one atlas mean a single binding. The performance difference on mobile is enormous. Our extensive experience in gamedev with over 50 optimized titles confirms that a properly built atlas reduces loading times by 40% and saves up to 70% of draw calls.

But an atlas is not just "put textures into one big one." An incorrectly composed atlas introduces artifacts, memory waste, and doesn't reduce draw calls as intended. We guarantee quality packing and platform-specific tuning.

Technical Foundation: TexturePacker

TexturePacker is the standard tool for creating sprite atlases in gamedev (source: wikipedia.org/wiki/Sprite_atlas). It supports all major engines: Unity, Godot, Cocos2d, Phaser. Key settings determine atlas quality:

Algorithm. MaxRects BestShortSideFit gives the best packing for most projects (maximum texture space utilization). Basic is faster but packs poorly. For production atlases, use MaxRects.

Padding. The gap between sprites in the atlas. Without padding, bleeding artifacts occur: when rendering, neighboring sprite pixels are captured. Standard: 2px padding. With mipmaps, use 4–8px (mipmaps blend neighboring pixels at lower levels).

Rotation. Allow TexturePacker to rotate sprites 90° for better packing. The engine must support this (Unity Sprite Atlas does; some older engines do not).

Power of Two. The final atlas dimensions must be powers of two: 512×512, 1024×1024, 2048×2048. GPUs cache power-of-two textures more efficiently. Non-standard sizes (e.g., 1000×800) on some GPUs cause automatic upscaling to the nearest power of two, wasting memory.

How to Group Sprites Correctly into Atlases

The most important decision: which sprites to combine into one atlas.

Rule of one draw call. Combine sprites that render simultaneously. UI elements of the main menu go into one atlas. Animation frames of one character go into one atlas. Tiles of one biome go into one atlas. Mixing UI, characters, and tiles into a single "general" atlas is an antipattern: it increases texture size without reducing draw calls.

Atlas size limit. 2048×2048 is safe for mobile. 4096×4096 works on most modern Android/iOS devices but has exceptions (older budget Android). Exceeding the device's maximum texture size causes a crash or degraded fallback.

Animation atlases. A sprite sheet (all animation frames in one atlas) is standard for frame-by-frame animations. TexturePacker's Sprite Sheet Export creates an atlas plus a JSON/XML file with coordinates for each frame. Unity's Sprite Editor reads this JSON via Custom Physics Shape or automatic slicing.

Why Compression Format Matters for Mobile Games

The texture storage format in the atlas is critical for performance:

Platform Format Notes
iOS ASTC (4×4 or 6×6) Best quality/size for iOS A8+
Android (modern) ETC2 (RGB) / ETC2 RGBA GLES 3.0+, supported by 95%+ devices
Android (legacy) ETC1 + separate alpha channel For very old devices
PC/WebGL DXT1 / DXT5 Standard for desktop
Universal RGBA32 Uncompressed, max quality, max size

Using RGBA32 for final production builds is a mistake. A 2048×2048 RGBA32 texture uses 16 MB of video memory. The same texture in ASTC 4×4 uses 2 MB — that is 8 times better memory efficiency. Multiply that by the number of atlases in your game, and you have a memory problem on mobile.

In Unity, platform-specific overrides in the Texture Importer allow setting different formats for iOS and Android without duplicating assets.

Sprite Atlas in Unity

Unity's Sprite Atlas (introduced with the Sprite Atlas feature) is a native tool requiring no external plugins. Create a SpriteAtlas asset in Project → Create → 2D → Sprite Atlas. Add folders or individual sprites to Objects for Packing. Unity automatically packs the atlas during build.

Important nuance: Sprites must either have a Packing Tag set or be directly added to the Sprite Atlas—otherwise they remain separate textures. Mixing atlas and non-atlas sprites in the same UI Canvas breaks the draw call.

Late Binding (modern Unity versions): The atlas is loaded only when a sprite it contains is first used, not at scene start. This is critical for large games with many atlases—it reduces initial scene load time.

Typical Artifacts and Their Causes

  • Bleeding (edge pixelation): padding = 0, or mipmaps without increased padding.
  • Empty space in atlas (>20%): suboptimal packing algorithm or incompatible sprite sizes.
  • Draw calls not reduced: sprites from different atlases in the same Canvas or render batch.
  • Rotation artifacts: the engine doesn't support rotation, but TexturePacker enabled it.

Deliverables

  • Documentation: Detailed atlas setup guide, including TexturePacker configuration files and Unity/Godot import notes.
  • Access: Source atlas projects (JSON, .psd, .tps) for future modifications.
  • Training: Up to 2 hours of remote walkthrough on atlas maintenance and optimization.
  • Support: One month of email support for integration issues.

Our services have helped clients save development time and budget. For example, one client saved over $2,000 in development costs after implementing our atlas optimization. Typical engagement costs range from $1,200 to $5,000 depending on project scope and asset volume.

Steps for Creating an Atlas

  1. Audit current assets: list all sprites, sizes, formats.
  2. Group sprites by draw call rule (same canvas, same animation, same biome).
  3. Pack with TexturePacker using MaxRects, 2px padding, power-of-two.
  4. Configure compression per platform (ASTC for iOS, ETC2 for Android, DXT for PC).
  5. Test with Unity Frame Debugger to verify draw call reduction.

Pro tip: When using mipmaps, set padding to 4–8 pixels to avoid bleeding at lower mip levels.

Company Expertise

With over a decade of experience in game development and 50+ optimized titles shipped, we deliver proven results. Our team has contributed to projects on Steam, App Store, and Google Play, achieving up to 90% reduction in draw calls compared to individual textures and cutting load times by 40%.

Timelines

Scope Duration
Audit and restructuring of existing project atlases 2–5 days
Creating a full set of atlases for a new project (up to 500 sprites) 1–2 weeks
Optimization + platform format setup + documentation 2–4 weeks

Pricing is calculated individually based on asset volume and number of platforms. We offer free project evaluation. Contact us for a consultation.