Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: Open Spriter  (Read 3950 times)

0 Members and 1 Guest are viewing this topic.

gsaurus

  • Sr. Member
  • ****
  • Posts: 262
    • View Profile
    • Evolution Engine
Open Spriter
« on: July 17, 2011, 01:47:39 pm »
Aims:
  • Provide developers with a standard cross-platform and cross-application format for 2D sprites (osf file format).
  • Provide artists with a GUI tool to create sprites
So basically the idea is that people make sprites on a GUI, mainly by importing images and defining animations, and developers just load and use the resulting files. People can share sprites to be used on games, etc.

Planned for first version
  • Static frames - each one is an image with an origin. Frames can be stored either as discrete images or as a tileset.
  • Layered frames - each one is composed by several static frames (layers), each layer can have geometric transformations (translation, rotation, scale)
  • Animations - each one is composed by either static and/or composed frames. Each animation frame has a delay in milliseconds (unsigned int)
  • Support for indexed color images and palette swaps.
  • Save/load to/from file, from memory etc
  • Compression and encryption
The last two features are from Codex.
The layered frames are optional, can be used for .

Sometime I'd like to support frames based on text, shapes/SVG, not just images, maybe one day..


Currently I'm working on a core abstract lib, and a binding for SFML. I should be releasing a first build soon so I can have your feedback and help.
Bindings for SDL etc should be easy to create but I don't plan to do it myself.

Currently using an existing sprite looks like this:
Code: [Select]
osf::SpriteResource resource;
resource.loadFromFile("MySprite.osf");
osf::Sprite sprite(resource); // inherits from sf::Sprite, so you can move, rotate, etc
...
// set sprite to static frame number 10
sprite.setFrame(10);
...
// set animation with the key 31.
sprite.setAnimation(31);
...
// update animation (time passed in milliseconds
sprite.update( window.GetFrameTime() );
...
// set animation progress to 30%
sprite.setProgress(0.3f);



The GUI will probably have to wait, or if someone want to volunteer for it it would be cool too. I did a prototype some months ago (it's not compatible with the new format)


Please let me know what you think of the idea and if you think people would use it  :wink:
Pluma - Plug-in Management Framework

Mikey

  • Newbie
  • *
  • Posts: 10
    • MSN Messenger - mrking2910@googlemail.com
    • View Profile
Open Spriter
« Reply #1 on: July 17, 2011, 06:40:04 pm »
This looks great, and definitely a useful little tool for those who will be using animated sprites.

 A few little queries;

 Will the OSF file format be processor architecture friendly? I.e. Will a file generated on a 32bit machine work on a 64bit machine?

 Can the programmer specify an animation range using it's name, or a short name defined within the GUI?
Regards,

 Mike

gsaurus

  • Sr. Member
  • ****
  • Posts: 262
    • View Profile
    • Evolution Engine
Open Spriter
« Reply #2 on: July 17, 2011, 08:00:46 pm »
Quote from: "Mikey"
Will the OSF file format be processor architecture friendly? I.e. Will a file generated on a 32bit machine work on a 64bit machine?
I don't have experience with 64bit yet but I hope so. Codex lib is responsible for streaming the information, but now with this I'll have to think more about it..


Quote from: "Mikey"
Can the programmer specify an animation range using it's name, or a short name defined within the GUI?
Hm, I'm not sure what you mean, but I guess it's about the integer keys on animations, and the problem of consistency between sprites using the same animation key for completely different things. For the gui I though on using files describing animations presets, only useful for the editor. Something like
Code: [Select]
1 standing
2 walking
3 running
etc
So all sprite files created based on the same preset would be compatible. But from a programmer side there's only integers anyway.
Pluma - Plug-in Management Framework