houmain/spright

Error: packing sprite failed

paulocoutinhox opened this issue · 9 comments

Hi,

Im starting get this error:

spright -p out
packing sprite failed (65x) in line 13

Can you help me?

Appear be an error here:

warning("packing sprite failed", sprite.warning_line_number);

This happen when i add this new images, without these, it works with other mages:

image

But i don't understand what is wrong.

Hi, this message means that the sprites did not fit on the sheet.
Does your configuration still look like this?

max-width 1024
max-height 1024
output "tank-texture.png"

You could either increase the max-width or max-height or pack the sprites on multiple textures by providing a sequence instead of a single filename like: output "tank-texture{0-}.png".
Thanks for reporting, I will make the message more helpful.

Hi, what solve was output "tank-texture{0-}.png", perfect. Thanks again.

Hi,

Reopening this, because when i set for multiple textures, the plist don't load the textures and don't make the rect in correct PNG file, since now i have some:

image
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>metadata</key>
	<dict>
		<key>format</key>
		<integer>3</integer>
		<key>textureFileName</key>
		<string>effect-texture0.png</string>
		<key>size</key>
		<string>{ 1024, 1024 }</string>
	</dict>
	<key>frames</key>
	<dict>
		<key>bubble</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 1, 1 }</string>
            <key>spriteSize</key>
            <string>{ 126, 126 }</string>
            <key>spriteSourceSize</key>
            <string>{ 126, 126 }</string>
            <key>textureRect</key>
            <string>{ { 131, 890 }, { 126, 126 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_1_1</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 60, 60 }</string>
            <key>spriteSourceSize</key>
            <string>{ 60, 60 }</string>
            <key>textureRect</key>
            <string>{ { 758, 890 }, { 60, 60 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_1_2</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 57, 56 }</string>
            <key>spriteSourceSize</key>
            <string>{ 57, 56 }</string>
            <key>textureRect</key>
            <string>{ { 879, 890 }, { 57, 56 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_1_3</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 64, 63 }</string>
            <key>spriteSourceSize</key>
            <string>{ 64, 63 }</string>
            <key>textureRect</key>
            <string>{ { 565, 890 }, { 64, 63 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_1_4</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 46, 45 }</string>
            <key>spriteSourceSize</key>
            <string>{ 46, 45 }</string>
            <key>textureRect</key>
            <string>{ { 696, 952 }, { 46, 45 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_1_5</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 53, 52 }</string>
            <key>spriteSourceSize</key>
            <string>{ 53, 52 }</string>
            <key>textureRect</key>
            <string>{ { 938, 890 }, { 53, 52 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_2_1</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 41, 49 }</string>
            <key>spriteSourceSize</key>
            <string>{ 41, 49 }</string>
            <key>textureRect</key>
            <string>{ { 820, 948 }, { 41, 49 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_2_2</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 75, 77 }</string>
            <key>spriteSourceSize</key>
            <string>{ 75, 77 }</string>
            <key>textureRect</key>
            <string>{ { 488, 890 }, { 75, 77 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_2_3</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 127, 127 }</string>
            <key>spriteSourceSize</key>
            <string>{ 127, 127 }</string>
            <key>textureRect</key>
            <string>{ { 2, 890 }, { 127, 127 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_crash_1_18</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 16, 3 }</string>
            <key>spriteSize</key>
            <string>{ 494, 442 }</string>
            <key>spriteSourceSize</key>
            <string>{ 494, 442 }</string>
            <key>textureRect</key>
            <string>{ { 2, 2 }, { 494, 442 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_crash_1_19</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 16, 3 }</string>
            <key>spriteSize</key>
            <string>{ 494, 442 }</string>
            <key>spriteSourceSize</key>
            <string>{ 494, 442 }</string>
            <key>textureRect</key>
            <string>{ { 498, 446 }, { 494, 442 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_crash_1_20</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 16, 3 }</string>
            <key>spriteSize</key>
            <string>{ 494, 442 }</string>
            <key>spriteSourceSize</key>
            <string>{ 494, 442 }</string>
            <key>textureRect</key>
            <string>{ { 2, 446 }, { 494, 442 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_crash_1_20</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 16, 3 }</string>
            <key>spriteSize</key>
            <string>{ 494, 442 }</string>
            <key>spriteSourceSize</key>
            <string>{ 494, 442 }</string>
            <key>textureRect</key>
            <string>{ { 498, 2 }, { 494, 442 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_smoke_1_1</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 60, 60 }</string>
            <key>spriteSourceSize</key>
            <string>{ 60, 60 }</string>
            <key>textureRect</key>
            <string>{ { 696, 890 }, { 60, 60 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_smoke_1_2</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 57, 56 }</string>
            <key>spriteSourceSize</key>
            <string>{ 57, 56 }</string>
            <key>textureRect</key>
            <string>{ { 820, 890 }, { 57, 56 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_smoke_1_3</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 63, 63 }</string>
            <key>spriteSourceSize</key>
            <string>{ 63, 63 }</string>
            <key>textureRect</key>
            <string>{ { 631, 890 }, { 63, 63 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_smoke_1_4</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 46, 45 }</string>
            <key>spriteSourceSize</key>
            <string>{ 46, 45 }</string>
            <key>textureRect</key>
            <string>{ { 863, 948 }, { 46, 45 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>explosion_smoke_1_5</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 53, 52 }</string>
            <key>spriteSourceSize</key>
            <string>{ 53, 52 }</string>
            <key>textureRect</key>
            <string>{ { 938, 944 }, { 53, 52 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>smoke_puff_1_1</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 98, 90 }</string>
            <key>spriteSourceSize</key>
            <string>{ 98, 90 }</string>
            <key>textureRect</key>
            <string>{ { 388, 890 }, { 98, 90 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
		<key>smoke_puff_1_2</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ 0, 0 }</string>
            <key>spriteSize</key>
            <string>{ 127, 120 }</string>
            <key>spriteSourceSize</key>
            <string>{ 127, 120 }</string>
            <key>textureRect</key>
            <string>{ { 259, 890 }, { 127, 120 } }</string>
            <key>textureRotated</key>
            <false/>			
            <key>aliases</key>
            <array/>
		</dict>
	</dict>
    <key>aliases</key>
    <array/>
</dict>
</plist>

My template:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>{% set texture=first(textures) %}
	<key>metadata</key>
	<dict>
		<key>format</key>
		<integer>3</integer>
		<key>textureFileName</key>
		<string>{{ texture.filename }}</string>
		<key>size</key>
		<string>{ {{ texture.width }}, {{ texture.height }} }</string>
	</dict>
	<key>frames</key>
	<dict>
## for index in texture.spriteIndices
		{% set sprite=at(sprites, index) %}<key>{{ sprite.id }}</key>
		<dict>
            <key>spriteOffset</key>
            <string>{ {{sprite.trimmedSourceRect.x}}, {{sprite.trimmedSourceRect.y}} }</string>
            <key>spriteSize</key>
            <string>{ {{sprite.trimmedRect.w}}, {{sprite.trimmedRect.h}} }</string>
            <key>spriteSourceSize</key>
            <string>{ {{sprite.trimmedSourceRect.w}}, {{sprite.trimmedSourceRect.h}} }</string>
            <key>textureRect</key>
            <string>{ { {{sprite.trimmedRect.x}}, {{sprite.trimmedRect.y}} }, { {{sprite.trimmedRect.w}}, {{sprite.trimmedRect.h}} } }</string>
            <key>textureRotated</key>
            <{{ sprite.rotated }}/>			
            <key>aliases</key>
            <array/>
		</dict>
## endfor
	</dict>
    <key>aliases</key>
    <array/>
</dict>
</plist>

Do .plists support more than one texture?
I just tried to pack some sprites using https://free-tex-packer.com/app/ and reduced the width/height so it had to arrange them on multiple textures. When exporting it to cocos2d it created a .zip contianing one .plist file per texture.

Is that what you were expecting? This strategy is unfortunately not available yet in spright.

This is a good question, and it don't have support.

I think that the best option will be multiple .plist, as you sad and work from free-tex-packer.

Hi,
outputting multiple .plist files at once is available in version 3.5.1.
The only thing you have to do is to provide a sequence in description like:

description "out/tank-texture-{0-}.plist"

Then one .plist file is written per slice.

Thanks, it works.