animated sprite

Monkey Forums/Monkey Beginners/animated sprite

sal(Posted 2014) [#1]
Just a query.

If I understand correctly: To display a animated sprite (several frames worth) the sprite sheet must be a horizontal strip that divides perfectly.. so if I had a sprite that is 50x50 pixels in size, with a total of 4 frames, then the file should be 50x200, is that correct? And within the "DrawImage" function, I set "frame:Int=3" to display the last frame? (or have I misunderstood?)


Wylaryzel(Posted 2014) [#2]
if you want the DrawImage-Function with the frames, you are correct

BR
Wyl


Gerry Quinn(Posted 2014) [#3]
Yes. But of course you're not obliged to use frames, you can use separate sprites if you prefer to organise the layout yourself.


Shinkiro1(Posted 2014) [#4]
You can also use GrabImage:Image(...) to grab a part of an image.


ElectricBoogaloo(Posted 2014) [#5]


Your sprites needn't be in one single row. You can do multiple rows, and the count simply increases horizontally, then vertically.

If you're aiming for multiple targets, it's good practice to keep within "power of two" sizes for your full image.
32x32, 64x64, 128x128, 256x256, 512x512, 1024x1024 or at a push, 2048x2048
(Although older systems will choke at 2048x2048 and beyond, so take care.)

Using none-standard sizes might randomly fail on certain targets without any rhyme or reason, so it's best to stick to what works, lest things break unexpectedly.
Within the grid, you can use any size you wish, but multiples tend to work better, since they fit better on the spritesheet.


Jesse(Posted 2014) [#6]
I have always been skeptical about the atlas having to be a square. I know that the image has to be a power of 2 but not a square. I recall a few years ago reading a thread on a forum with some quite knowledgable programmers stating that the image could be a rectangle as long as it was a power of 2 such us 128x64, 256x32 etc. I wish I could remember where I read it but I can't recall for the life of me. In Retrospect BlitzMax also does that to the images before sending them to the graphics card. Images get resized to a power of 2 but not necessarily a square. Its clearly visible by looking at the BlitzMax module source.

I am not saying that I have the answer but if somebody here knows I would appreciate any comments.


ElectricBoogaloo(Posted 2014) [#7]
Yeah, rectangles work just as well, but in my experience, if you're stuffing all your sprites into sheets, you may as well leave space for expansion. Squares usually end up with gaps that you can fill in later!


Jesse(Posted 2014) [#8]
It's reasonable and won't argue that point as I randomly do either or depending on how I feel that day.


Gerry Quinn(Posted 2014) [#9]
I don't recall anyone ever saying it had to be a square.


dawlane(Posted 2014) [#10]
The square power of two question was asked on http://gamedev.stackexchange.com/a/26189
Of course there still is a limit to the size of a texture.


Jesse(Posted 2014) [#11]

I don't recall anyone ever saying it had to be a square.



of course not!