Texture packing
I improved the workflow for animation loading a lot thanks to the libGDX TexturePacker tool! I really wish I knew it existed earlier, especially since it’s free and has lots of features.
seen from Italy
seen from Bangladesh

seen from France
seen from France
seen from China

seen from Germany
seen from Germany
seen from United States

seen from Vietnam
seen from United States
seen from United States
seen from United Kingdom
seen from Japan

seen from Malaysia
seen from Russia
seen from Singapore

seen from Italy
seen from France

seen from Poland

seen from France
Texture packing
I improved the workflow for animation loading a lot thanks to the libGDX TexturePacker tool! I really wish I knew it existed earlier, especially since it’s free and has lots of features.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
2nd Mission Level Design Update / Asset Export The basic level design for the 2nd mission is finished. I haven’t included many decorations yet, since distances and the general layout might change after game testing. For those who are interested in viewing the entire level - you can have a closer look here. Finally all necessary sprite assets are improved and exported, ready for GM:S integration. It took me hours to split the layers and export the animation frames for later use. I’m really happy that this task is done now. Just for fun I created a sprite sheet with the useful TexturePacker (sprites are trimmed and therefore showed at chaotic order). Next steps: - create all objects and behaviors in GM:S - create more enemy types and decorations by accident Used tools, besides Photoshop: http://www.mapeditor.org/ https://www.codeandweb.com/texturepacker
can someone experienced with texturepacker help me? I want all my sprites into a straight horizontal line. But what I have looks like this
Async and Multipack Support for CCSpriteFrameCache
I've put together a few Cocos2d extensions (categories) while crafting our more recent titles, including our latest project, Poker Puzzle Tour. By far, one of the extensions I've used the most is this category on CCSpriteFrameCache that I'll be sharing in this post.
Multipack Support
The first extension allows for importing the multipack sprite sheets that TexturePacker generates in a single line. It also allows special handling between device types, which is important because of texture size limits. For instance, many times assets for the iPhone might all fit onto a single 2048px x 2048px sprite sheet, while the same assets might need to be split across multiple sprite sheets on an iPad due to the images' bigger sizes (iPad images are typically twice the size of their iPhone counterparts).
- (void)addMultipackSpriteFramesWithFormat:(NSString *)format ipadhd:(NSUInteger)ipadhdCount hd:(NSUInteger)hdCount standard:(NSUInteger)standardCount { NSUInteger count = [self countFromIpadhd:ipadhdCount hd:hdCount standard:standardCount]; for (NSUInteger i = 0; i < count; i++) { [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:format, i]]; } } - (void)addMultipackSpriteFramesWithFormat:(NSString *)format textureFormat:(NSString *)textureFormat ipadhd:(NSUInteger)ipadhdCount hd:(NSUInteger)hdCount standard:(NSUInteger)standardCount { NSUInteger count = [self countFromIpadhd:ipadhdCount hd:hdCount standard:standardCount]; for (NSUInteger i = 0; i < count; i++) { [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:format, i] textureFilename:[NSString stringWithFormat:textureFormat, i]]; } } #pragma mark - Helpers - (NSUInteger)countFromIpadhd:(NSUInteger)ipadhdCount hd:(NSUInteger)hdCount standard:(NSUInteger)standardCount { NSUInteger count = 0; if ([EFDeviceUtilities isIPad] && [EFDeviceUtilities isRetina]) { count = ipadhdCount; } else if ([EFDeviceUtilities isRetina]) { count = hdCount; } else { count = standardCount; } return count; }
#import "CCSpriteFrameCache+EF.h" // Your sprite sheets should be named to accept a [0..n) suffix // Pass in a format string with a single %d to be replaced [[CCSpriteFrameCache sharedSpriteFrameCache] addMultipackSpriteFramesWithFormat:@"MY_LARGE_SPRITE_SHEET_BASENAME%d.plist" ipadhd:2 hd:1 standard:1];
Async Support
The second extension builds on the first and loads your sprite sheets asynchronously instead of blocking the main thread. This has been really handy for the dynamic and predictive loading of textures on our very large maps. When the user scrolls, the framework will load the next few textures into memory. If the textures are loaded synchronously there's a visible jitter in the scrolling of the game. With this extension, that issue is solved.
One thing to note is that every subsequent call to addAsyncMultipack... before the first texture is loaded will yield a separate attempt to load the texture. This is because the internal state of CCSpriteFrameCache isn't modified till after the first texture is loaded in memory. You'll want to incorporate some mechanism for locking if you forsee this becoming an issue. Once the first texture is fully loaded into memory, CCSpriteFrameCache is updated and behaves normally - subsequent calls won't attempt to load the same texture into memory again since it will be detected as a hit in the cache.
- (void)addAsyncMultipackSpriteFramesWithFormat:(NSString *)format ipadhd:(NSUInteger)ipadhdCount hd:(NSUInteger)hdCount standard:(NSUInteger)standardCount withCompletion:(void (^)())completeCallback { NSString *imageFormat = [format stringByReplacingOccurrencesOfString:@".plist" withString:@".pvr.ccz"]; NSUInteger count = [self countFromIpadhd:ipadhdCount hd:hdCount standard:standardCount]; __block NSUInteger loaded = 0; for (NSUInteger i = 0; i < count; i++) { [[CCTextureCache sharedTextureCache] addImageAsync:[NSString stringWithFormat:imageFormat, i] withBlock:^(CCTexture *tex) { [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:format, i]]; if (++loaded == count && completeCallback != NULL) { completeCallback(); } }]; } } - (void)addAsyncMultipackSpriteFramesWithFormat:(NSString *)format textureFormat:(NSString *)textureFormat ipadhd:(NSUInteger)ipadhdCount hd:(NSUInteger)hdCount standard:(NSUInteger)standardCount withCompletion:(void (^)())completeCallback { NSUInteger count = [self countFromIpadhd:ipadhdCount hd:hdCount standard:standardCount]; __block NSUInteger loaded = 0; for (NSUInteger i = 0; i < count; i++) { [[CCTextureCache sharedTextureCache] addImageAsync:[NSString stringWithFormat:textureFormat, i] withBlock:^(CCTexture *tex) { [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:format, i] textureFilename:[NSString stringWithFormat:textureFormat, i]]; if (++loaded == count && completeCallback != NULL) { completeCallback(); } }]; } }
Alexander Wong http://alexanderwong.me
Manual import of existing atlas spritesheet to NGUI: Since NGUI supports TexturePacker's output txt file which is simply a JSON file, I ended up hand-writing my own in order to revive an ex-coworker's cute spritesheets that are all simply packed in grids.

Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
Free to watch • No registration required • HD streaming
Andreas Löw of TexturePacker made this video about SpriteSheets and what every Game Developer should know.
http://www.codeandweb.com/what-is-a-sprite-sheet
According to Andreas Löw:
This is a really big fat update for TexturePacker. I packed 25 new features inside it!
What do you get in detail?
Flash importer
Simply drag your flash files (.swf) onto TexturePacker and it extracts the images and builds a sprite sheet from them! Requires installed Flash Player Plugin. This feature works on Windows & MacOS – Linux is currently not working well.
.pvr and .pvr.ccz QuickLook plugin on MacOS
No need to open TexturePacker to view your .pvr and .pvr.ccz files anymore. TexturePacker now contains a QuickView plugin so you can view the files right from finder!
Save defaults
Many people requested a way to save the default settings so that they don’t have to set exporter and other stuff on restarting. – Here it is! (Pro only)
Ubuntu support
Since many users build for Android I also added support for Linux – currently Ubuntu 10.x. It might still have some quirks (e.g. Flash does not yet work) but is a good start. I decided to build on Ubuntu since it seem to be the most used platform.
New Exporters
I also added a ton of new exporters such as
Moai
AppGameKit
Slick2D
Unity3D / UIToolKit
User interface improvements
I also added a lot of interface improvements to make work with TexturePacker easier.
New layout of the left side panel allowing easier change of exporter
Auto update sprite sheet when re-entering TexturePacker
Sprite highlighting
Reveal in Finder / Explorer
Preferences to change checkerboard color and hightlight color
New icons
Hotkeys
Backspace / delete to remove sprites
Dialog to select the Flash Player plugin to use
Drag your sprites here – to give new users a faster start
Allowing free choice of texture data file name
Fit button for zoom
Folders inside a smart folder are now blue
Auto populate file names from other names e.g. save blah.tps also sets blah.png and blah.plist
Image features
Here are some new image export features. Main function is support for flipped PVRs and RGB888 as output format.
Option to use flipped PVR files
Support for RGB888
Unflip flipped pvrs in viewer
Allow free size for PVR textures (might not work on all targets)
Other stuff
Rotation support for AndEngine
Default padding is now 2 – This effects the command line client!
Corona exporter uses better module concept (http://blog.anscamobile.com/ 2011/09/a-better-approach-to-external-modules/)