is it normal that a game lags for every framerate below stable 60 FPS?
When I play normal PC games, everything above 30FPS is fluent, but with my created game, it starts to stutter with 58 FPS and 45FPS feels like 15FPS.
Am I doing something wrong? I want to create a mobile game and Ashley posted an updated new manual today with performance tips: https://www.scirra.com/manual/134/performance-tips
and I quote: "You should aim to design simpler games to match the lower power of mobile devices, and have lower expectations of framerate (30 FPS is a good target for mobile)."
So can someone please help me and advise, how I make a mobile game run on 30-60FPS without the stuttering below stable 60FPS?
Thank you =)
Short answer: you won't get rid of the stutter completely, if you drop below 60fps. Currently there's no way (to my knowledge) to make a construct2 game feel smooth as soon as you drop below the magic mark.
What people usually do is adjust their expectations and make games for mobile where the stutter is less disturbing (for example, smooth, slow, horizontal scrolls are super critical).
Develop games in your browser. Powerful, performant & highly capable.
are you using pixel rounding to "on" and sampling to point?
try "off" and sampling to linear.
maybe this can help a bit.
This is definitely something I've noticed - Currently IMO a C2 game is pretty much unplayable at <60fps. I don't know what this is, but I suspect it's a combination of stuttering and maybe even some input lag?
Trust me, 45 FPS does not feel like 15 FPS - 45 FPS should be playable but 15 FPS is awful quit-the-game bad. 45 FPS is obviously not as bad as 15 FPS but probably looks bad because the frames are irregularly updating. Since the screen updates at 60 Hz, a game drawing at 45 FPS will be drawing a frame every 1.5 screen refreshes, causing an ugly pattern like: draw, skip, draw, draw, skip, draw, skip, draw, draw, skip. On the other hand 15 FPS would be draw, skip, skip, skip, draw, skip, skip skip, draw...
Irregular frames don't look great but provides a less laggy gameplay since you are getting more frames and can respond more quickly to gameplay events. We previously had an experimental feature to drop the framerate to a regular 30 FPS, but it didn't seem possible to implement reliably (it still had ugly irregular framerates and worked differently on different browsers) so we gave up on it.
Ashley : I think the actual problem is that the variation of framerate over time is more painful that a small amount of fps (it breaks consistency of how the controls should feel)
I think it is still a big problem (not only for that particular reason, but mostly), as for a solution, I do not know if it is possible to take in account the time to refresh the screen rather than basing ourselves on the vertical sync (this would be off by default of course, only to be enabled in cases the device just cannot be playable the normal way anyway)
Once again I don't know everything related to how browsers and C2 works so I cannot tell if I am looking in the right direction or not.
Frame latency. PC games suffer from it too.
Some users are more sensitive to it, often referred to as "micro-stutter" because thats exactly what it is, when frames come at irregular intervals and not 16ms.
Where possible I've started cramming all my controllable logic into an Every 0.033 tick. I generally create a "kernal" where the 0.033 tick will then just call functions that refer to the wanted code.
This has helped a lot for more intensive math on mobile devices. Also Lunaray made a modified LiteTween which uses an update function. I often noticed intensive trig go from 15fps to 60fps. However I don't have control over any behaviors like platformed. If we can't good control on FPS what about LPS?
rexrainbow created a neat plugin that i think went largely unnoticed, https://www.scirra.com/forum/viewtopic.php?f=153&t=80616 "event balancer" which can split logic up so its not all run at the same time to speed up fps. Haven't tried it yet myself but may help you?