Ayyy,
The main question I have, is, is it POSSIBLE for C3 to have a "max FPS" option for those who want to disable vsync, or is this impossible to add in? Whether or not Scirra feel it is right to implement, I'm mostly curious if it is an absolute "no this is impossible due to how C3 is designed" or not.
I'm a year into a Rhythm game, desktop only, which I plan to release, but there's two thing at the back of my mind that could be a deal breaker when release day comes: lack of control over vsync, and no way to set max FPS.
I haven't isolated the issue yet on a blank project, but my project is a bit jittery when vsync is on, as well as slight input lag (as always with vsync). This happens even on a 240hz monitor with vsync on. Obviously it is unacceptable to release a rhythm game where the notes aren't smoothly moving and there is noticeable input delay.
With vsync off, there is no more jitter at all, input feels perfect. But as we know, the downside is the fps shoots up to like 600, which is bad for laptop battery, and makes the fans of your computer go wild.
Like many other desktop games, I'd love to be able to add an options menu to allow the player to choose to have vsync and whether to cap their framerate.
Gdevelop has an option for max FPS, as well as any Source engine game (altho hidden as a console command, but it's set to 300fps by default), spyro reignited has a FPS option, etc.
There are other uses for a max FPS feature, such as someone on a lower-end device might want to cap their FPS at 30fps, so that they don't have a variable framerate if their device floats around 40 to 50fps.
Anyway, yeah, I really hope I can pinpoint the jittery issue with vsync being on, I tend to forget it exists because I almost always run my game with vsync off, but I know this won't be acceptable on release. Unless I made 2 builds, one with vsync on, one with vsync off, which sounds like a very sloppy workaround, and still has the issue with players on laptops as we can't limit the max FPS. I'm worried and hope I can find a solution.
Thanks for reading!