Loading Large Number of Files

Started by
7 comments, last by SerialKicked 9 years, 11 months ago

Ok, im creating a street fighter type game right now, im using characters from other games as my fighters. I got the sprite rips and for just 1 character, its 1,333 .png files. Is there a way I should load them that can make it less CPU intensive? Im programming this in C++ and SFML.

Advertisement

You'd probably get better results by zipping (without compression) the whole package and then finding some Zip library for C++ to open the archive and extract files from it.

It should be faster because the archive will be loaded into ram once, then files will be extracted directly from the RAM to whatever system you put in place. Just note that it will need more RAM than loading files individually from the disk. Also, don't load all your characters when the game start, just the 2 you need when a round begins.

As a side note, you shouldn't use ripped sprites if you want to publish your game anywhere online. It's okay for a personal project, though.

EDIT: Alternatively you could put together all sprites belonging to the same animation into a single file that you'd use as a sprite sheet. That will make things much easier to load and to put into a structure you can use.

1,333 images for 1 character ?!? Seriously? As serial kicked said, i think it would be best to load them as a single file, all images in one file, then store texture UV for each sprite somewhere and use that so you don't need to reload/change textures continuously.

1,333 images for 1 character ?!? Seriously? As serial kicked said, i think it would be best to load them as a single file, all images in one file, then store texture UV for each sprite somewhere and use that so you don't need to reload/change textures continuously.

My thoughts too... 1333 @ 60 frames per second is > 22 seconds of animation. at 30fps that's >44 seconds. My street fighter matches never lasted that long in the first place, so it seems like an awful lot of sprites to me.

1,333 images for 1 character ?!? Seriously?

Certainly not for SF2 but take something like Skullgirls or Blazblue

If you take recent games, that's:

- each direction + standing multiplied by six or four normal attack types (depending on game)

- half a dozen (minimum) special attacks tnat can take a while and tend to be more detailed frame wised than normals

- At least 3 jumping animations, at least 2 dashes, 2 move animations, 2 or 3 guards animations and one idle

- Ultra attacks that can takes about 10 seconds to run (about 2 or 3 of them per character) and that are extremely detailed.

- projectiles and other character dependent special effects

- various grab animations

- Die / low hit / high hit / medium hit / jumping hit animations + the same with guard

And that's only the basics. About 80-90 different animation sets, 1300/80 = 16 frames average.

Sounds about right.


- each direction + standing multiplied by six or four normal attack types (depending on game)

Do they really do this, and not just mirror the standing animations?

@SeraphLance : I am not sure to get what you mean. What I meant is that in recent games [back] + [low kick] is a very different animation than [front] + [low kick]. The few starting frames may be the same, sure, but the whole move certainly won't be. Especially in combo focused games (skull girls being a good example) by opposition to more super move oriented games.

He meant, the same sprite can be used regardless of if your facing your opponent left or right, you just mirror it (use the same texture with UV reversed on the x axis)

Just for curiosity, can you show one of the sprite sheet?



He meant, the same sprite can be used regardless of if your facing your opponent left or right, you just mirror it (use the same texture with UV reversed on the x axis)

That's why i used [back] and [front] instead of

/

. SF2'like games always assume that you're in front of your adversary. So, yes, 9 different animations per normal attacks in recent games.

[back] + [low kick] = backflip kick

[low kick] = small kick to the feet

[front] + [low kick] = send spikes a meter away.

is common practice nowadays in fighting games.

This topic is closed to new replies.

Advertisement