Sign in to follow this  
SoulRyder

Flash(Punk) Low FPS issues

Recommended Posts

Hello,

 

I am working on a game in Flash, and I started the project a while ago and just picked it up recently.

But back then I chose to use the flash engine Flashpunk to create the game, because someone told me it was very helpful for making a flash game. In the end I dont see much reason why I would use it ever again, because I could have done the same thing in Flash, next to that Flashpunk doesnt exist anymore so I cant find much specific information about developing for flashpunk anymore..

 

Now I almost finished the project before, but there where still some things left to do. I thought I already fixed the low fps issues, but I guess I did not because they are still there.

 

Now when i run the game the amount of entities always stays around 130 -300 entities (Including all particles) and the Memory seems to start at around 70mb and then increase to somewhere around 150mb, and then it suddenly goes back to 70 and starts increasing again. The FPS is 60 when nothing is happening, but when i start moving or when alot of enemies appear it can sometimes drop to 30-20FPS.

 

Its a simple game, apart from some enemies appearing and shooting them down nothing much is happening, also no difficult calculations or anything. I might be doing something wrong but I do not think my code is too heavy or something like that.

 

The game is playable, but I have a PC that runs most new AAA games on high settings, and a simple 2d flash game is slow when more then 10 enemies (which consist of 1 image and some sounds) appear... Does anyone have any tips or ideas what the problem could be?

 

Thanks in advance

 

Alexander

Share this post


Link to post
Share on other sites

Hard to say what it is without looking at code. Are the images statically loaded in memory, are you moving the sprites with a vector/momentum list, are you resizing/transforming the images every game cycle, etc...

Share this post


Link to post
Share on other sites

Hard to say what it is without looking at code. Are the images statically loaded in memory, are you moving the sprites with a vector/momentum list, are you resizing/transforming the images every game cycle, etc...

 

Thanks for your reply, I dont know exactly how the images are loaded because i dont know exactly how this is done by flashpunk. And I just use the way Flashpunk says I should load images etc. Moving the sprites is done by changing its x and/or y values bij elapsed frame time and some of the sprites are also turned by angle. And no I am not anywhere changing the size of an image during gameplay, I only use spritemap (Flashpunk class) for animation.

 

I think the answers to your questions can be found in the flashpunk engine (I guess) because the way i am loading images etc are all done the way the tutorials of flashpunk said I should do it.

 

https://github.com/ChevyRay/FlashPunk/tree/master/net/flashpunk

 

Adding enemys is done by FP.world.add(new Enemy());

 

moving the enemys for example in my code is done every frame like this:
 

//variable speed declaration in the class constructor
private const YSPEED:Number = 85;

//update code:
y += YSPEED * FP.elapsed;

Share this post


Link to post
Share on other sites

Regarding memory, that behavior pretty much describes the flash GC operating normally, in the case where objects are being continuously created and destroyed. I'd be suspicious of this flashpunk, maybe look to get rid of it -- if you are creating and destroying visible objects, say with particle effects, then you will want to check the image caching behavior. I've always used object pooling with flash to avoid GC and image caching issues. But I'm no flash expert, there could be better advice out there.

Share this post


Link to post
Share on other sites

60 fps is not usually what flash games operate at. You're better off going with 30. I've never used Flashpunk but I've used Flixel, and one is based on the other(I forget which). but one mistake I made with Flixel was not doing collision through groups. you can add all your assets to the same object, but things like coins should have a group that they are all in, even if that group is not displayed. groups are quad trees and handle collision lightning fast. Again, this is Flixel I'm talking about, so it may not apply

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this