Low FPS in C2 games is more crippling than it should be?

Discussion and feedback on Construct 2

Post » Wed Oct 08, 2014 1:30 pm

What's the GPU hardware that is affected and not affected? Maybe it's specific to particular models/vendors.
Scirra Founder
B
395
S
232
G
88
Posts: 24,371
Reputation: 193,782

Post » Wed Oct 08, 2014 1:41 pm

Here's another demo that attempts to produce GPU-throttling:

http://www.scirra.com/labs/bugs/fpstest-gputhrottle.html

Since it's canvas2d based on powerful hardware it's likely to still end up CPU-throttled, since the GPU can outrun how fast the CPU can issue rects. A better example might need a WebGL throttler to ensure genuine GPU-based throttling.

On my laptop it reaches 22000 rects at 30 FPS and still has a narrow dt range, so I guess it's CPU-throttled.
Scirra Founder
B
395
S
232
G
88
Posts: 24,371
Reputation: 193,782

Post » Wed Oct 08, 2014 2:09 pm

Ashley wrote:What's the GPU hardware that is affected and not affected? Maybe it's specific to particular models/vendors.


Thant a lot for reading this and trying to understand the problem, much appreciated : )
I've now done the @sqiddster test on 4 different laptops, all are giving nearly the same results with different brands (ATI, NVidia or integrated graphic cards). Also, I'm working on the game for one year and a half now, with more than 200 playtesters, and i've seen the game running on many, many computers. If the game fails to run at 60fps, it never runs with a "smooth" frameskip like the one we can see with the CPU throttling. Again, most of the time, as soon as the game reaches 45fps, it's very choppy and no more enjoyable.

Both Airscape and Penelope use WebGL, aren't these two tests relevant to you? (no bad intentions behind this question, that's a real one)
I'm more than ok to run new tests on different computers, but I really think we'll get the same results: on non-gaming computers, if the game is heavy on the GPU, the frameskip process doesn't work that great.
Last edited by Aurel on Wed Oct 08, 2014 8:32 pm, edited 2 times in total.
Image | @AurelRegard on twitter
B
19
S
6
G
1
Posts: 307
Reputation: 2,500

Post » Wed Oct 08, 2014 8:23 pm

@Ashley the best way to produce GPU throttling is to render lots of low opacity fullscreen sprites. The window size will affect this test. In my lagIssue capx I do this and it throttles the GPU pretty effectively (interestingly though it doesn't create as much dt variance as a real game. Maybe shader use also has an impact?)

My observations also mirror @Aurels in that it seems to be pretty much hardware-independent.
B
92
S
31
G
24
Posts: 3,191
Reputation: 32,679

Post » Wed Oct 08, 2014 8:38 pm

sqiddster wrote:Maybe shader use also has an impact?


That, and all the other things only found in a real game like object creation + access to textures files, scrolling / camera zoom, Z ordering, blending modes, spritefonts updates, etc?
Image | @AurelRegard on twitter
B
19
S
6
G
1
Posts: 307
Reputation: 2,500

Post » Mon Oct 13, 2014 5:39 pm

For @sqiddster and for people making GPU demanding games: I'm trying something very simple to adress the missing collisions problems.
( I'm assuming your game has large collision bars/triggers)
- Saving the important elements position on a regular basis in a local variable
- If the important elements overlap a dummy outside the normal area, replace the element to the previous position.

Seems to work ok for now. Need more test to be sure everything is fine, but maybe that could help some of you?
Image | @AurelRegard on twitter
B
19
S
6
G
1
Posts: 307
Reputation: 2,500

Post » Mon Oct 13, 2014 9:49 pm

@Aurel collisions aren't the only thing hurt by this dt variance. It also makes the game feel like a nightmare to control, and be basically unplayable.
@Ashley are you still looking into this?
B
92
S
31
G
24
Posts: 3,191
Reputation: 32,679

Post » Tue Oct 14, 2014 8:48 am

Hi,

I'm encoutering big performance problem in my game project, and I guess this thread covers the reason why. As my game has much different needs than what is discussed here, I'll drop a few lines to explain it, as it may be useful.

My (mobile) game basically resumes itself to "touching a sprite makes this sprite spawn another object (which is animated) and modifies its instance variables". Pretty simple, but I'm using lots of sprites, which are pretty big, and uses a lot of opacity (full range from 0% to 100%, sqiddster said it was very GPU demanding). There are no moving sprites, no collision, no effects, and the fastest animation plays at 10 frames per second. So basically a FPS of 10 could be enough for me.

But when I touch an object multiple times quickly when performance is low (it is always low on rather slow devices), each animation is delayed. The result is that if I touch 10 times quickly, then I have to wait sometimes 3 seconds or more for every animations to be finished, and of course instance variables modification only happens when the corresponding animation starts playing, which ruins my gameplay.
On slow devices, FPS may drop below 20.

Is there anything I can do besides removing graphics (unthinkable)?
B
30
S
6
G
1
Posts: 349
Reputation: 2,754

Post » Tue Oct 14, 2014 6:39 pm

@sqiddster - I know a way of throttling Frame-rate

Go to graphics cards properties and change refresh rate to 40 hz. This may not be available for all machines but it is a great hack to force 40fps in construct 2 games. I had a lot of headache over a problem related to fps and this is how I managed my testing.
Image
B
33
S
11
G
2
Posts: 564
Reputation: 5,153

Post » Tue Oct 14, 2014 9:33 pm

@Rable to be honest I don't know a lot about mobile devices. If you can show that your dt is varying wildly it's likely the same problem, but if it isn't the problem probably lies somewhere else.
B
92
S
31
G
24
Posts: 3,191
Reputation: 32,679

PreviousNext

Return to Construct 2 General

Who is online

Users browsing this forum: ditocruz and 4 guests