Members - Reputation: 108
Posted 18 February 2014 - 02:36 PM
My current prototype just uses a small handful of Image objects sourced from BitmapImage objects referencing separate PNGs (tiny, nothing's bigger than 32x32px), but I'm at the point where I want to start expanding the number of images that are being used (multiple ship classes, etc) and I'm debating whether I should stick with just a bunch of images (which I'm slightly worried about because I've read about performance issues with large numbers of images in WPF), or if I should refactor everything to use a spritesheet and build out all the transform logic for that.
The other factor that has me researching spritesheets is trying to keep the engine data-driven, so that my friends and I can mod it up later with whatever universe we want to use. From this point of view, my concern is in keeping all of the images organized and corralled properly which a spritesheet does easily since they're all in one place. I'm having trouble trying to come up with a way to organize a bunch of separate images so that they're easily re-usable (e.g. similar naming convention for all ships of size C) but still data-driven (e.g. I can have an unlimited number of possible image sets, each with their own "ShipSizeC.png" file).
If I can avoid having to refactor everything I'd actually prefer not to use spritesheets so long as I can put my fears about performance and simple organization to sleep. Can anyone help with either of these?
Members - Reputation: 1998
Posted 18 February 2014 - 03:04 PM
If I can avoid having to refactor everything I'd actually prefer not to use spritesheets so long as I can put my fears about performance and simple organization to sleep.
If you really don't want to make sprite sheets, you can try to minimize the number of images, and use more real time rendered graphics instead....but I don't think a bunch of 32x32 pixel images will take much of a performance hit anyways (How many files are we talking about?). Just keep going like you are, and if you do see a performance issue, implementing sprite sheets isn't really very difficult.
Edited by minibutmany, 18 February 2014 - 03:05 PM.
Members - Reputation: 566
Posted 18 February 2014 - 04:32 PM
Its usually best to use a sprite sheet along with an alias (to tell you where certain images are). This is especially important when working with OpenGL or any hardware graphics api, as switching textures can be VERY slow. So if your just using software rendering, keeping separate images should be OK, but with hardware you should always make sure to use sprite sheets if you can. Here's a really nice sprite sheet packer that you may find useful http://spritesheetpacker.codeplex.com/ in case you find working with separate images easier (its windows only though!)
Edited by xDarkShadowKnightx, 18 February 2014 - 04:33 PM.