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
- Audit current assets: list all sprites, sizes, formats.
- Group sprites by draw call rule (same canvas, same animation, same biome).
- Pack with TexturePacker using MaxRects, 2px padding, power-of-two.
- Configure compression per platform (ASTC for iOS, ETC2 for Android, DXT for PC).
- 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.





