Skip to main content

User login

What is OpenID?
  • Log in using OpenID
  • Cancel OpenID login
  • Create new account
  • Request new password
Register
  • Home
  • Browse
    • 2D Art
    • 3D Art
    • Concept Art
    • Textures
    • Music
    • Sound Effects
    • Documents
    • Featured Tutorials
  • Submit Art
  • Collect
    • My Collections
    • Art Collections
  • Forums
  • FAQ
  • Leaderboards
    • All Time
      • Total Points
      • Comments
      • Favorites (All)
      • Favorites (2D)
      • Favorites (3D)
      • Favorites (Concept Art)
      • Favorites (Music)
      • Favorites (Sound)
      • Favorites (Textures)
    • Weekly
      • Total Points
      • Comments
      • Favorites (All)
      • Favorites (2D)
      • Favorites (3D)
      • Favorites (Concept Art)
      • Favorites (Music)
      • Favorites (Sound)
      • Favorites (Textures)
  • ❤ Donate
Tutorials

Starling Sprite Sheet XML to libGDX Texture Atlas Converter Script (Python)

BenMcLean
Tuesday, March 3, 2015 - 13:11

I'm trying to start making games in libGDX (well, technically I'm using Flixel-GDX) and I needed some quick art, so I jumped onto OpenGameArt.org and found "Puzzle Stones" by 1001.com. "Ah, this looks fun" I think to myself. But then I realize that libGDX requires a texture atlas and it is very, very fussy about the format it accepts. It doesn't like the XML that 1001.com's sprite sheet comes with. Kenny's art uses that same XML format in his sprite sheets apparently. All this great art, but not easy to import into libGDX! Oh noes!!

(later edit) Apparently, this XML format is used in sprite sheets for Starling.

Well, there are probably better ways to do this, but I wrote this Python 3 script to let you use their sprite sheet in libGDX by generating an atlas in libGDX's format from the XML provided without needing to repack the sprite sheet with TexturePacker. The first command line argument for this script is the XML file, and the second command line argument is the atlas file you want to create, so in the "Puzzle Stones" case, the arguments were, "sprites.xml sprites.atlas"

import sys

import xml.etree.ElementTree as ET

tree = ET.parse(sys.argv[1])

root = tree.getroot()

f = open(sys.argv[2], 'w')

f.write('\n' + root.get('imagePath'))

f.write('\nformat: RGBA8888\nfilter: Nearest,Nearest\nrepeat: none\n')

for texture in root:

    f.write(texture.get('name') + '\n  rotate: false\n')

    f.write('  xy: ' + texture.get('x') + ', ' + texture.get('y') + '\n')

    f.write('  size: ' + texture.get('width') + ', ' + texture.get('height') + '\n')

    f.write('  orig: ' + texture.get('width') + ', ' + texture.get('height') + '\n')

    f.write('  offset: 0, 0\n  index: -1\n')

f.close

 

It should work for all of 1001.com and Kenny's art and any other art which uses that XML format. By the way, I tested it in Flixel-GDX using this tutorial. Remember that all assets (this includes art and atlas files) in libGDX-based projects need to go in your Android project's assets folder even if you don't plan to deploy on Android!

  • Log in or register to post comments
BenMcLean
joined 11 years 10 months ago
Tuesday, March 3, 2015 - 14:36

Apparently, libGDX comes with an XML parser. http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/util...

I've been discussing the possibility of libGDX supporting Starling/Sparrow XML format sprite sheets out-of-the-box by adding a routine to parse the XML at runtime directly into libGDX with developers on the libGDX IRC channel. mobidevelop especially was very helpful with this. Don't know if/when it'll make it into libGDX (or trickle down to Flixel-GDX) but that'll be handy when it does.

Interestingly, I found another newbie having the same problem as me, but in reverse. he wanted to import libGDX texture atlas into Starling. http://esotericsoftware.com/forum/viewtopic.php?f=7&t=1262

Another person with this same problem: http://gamedev.stackexchange.com/questions/55241/creating-metadata-pack-...

  • Log in or register to post comments
BenMcLean
joined 11 years 10 months ago
Thursday, March 5, 2015 - 03:15

Kenny said on Reddit that this XML format is produced by ShowBox.

  • Log in or register to post comments