VSync Jittery In Specific Cases

0 favourites
  • 1 posts
  • Ayy,

    So I'm currently making a rhythm game, and I'm noticing an issue with smoothness of my game when VSync is turned on.

    Imagine DDR or StepMania with the arrows moving towards the top of the screen - I set the Y position of the arrows according to the "Audio.PlaybackTime" so that they line up perfectly every time at the top of the screen for the player to hit the key successfully. Syncing to Audio.Playbacktime also allows you to adjust the "Playback Rate" of the Audio and the arrows sync up perfectly, which is great for replayability and added challenge!

    I also have 1 Video object as the background. It's literally just playing a video, not synced up to the music or anything, no other events occuring to this.

    When I play with "VSync On", I get 60FPS, 7% CPU usage, nothing bad, but visually, the arrows movement, and video playback, are both very jittery.

    When I play with "Unlimited (Ticks Only)", I get 1000+FPS, and the smoothness of the arrows and video is PERFECT, like exactly what you would expect - The video is not jittery, the arrows are buttery smooth. The only problem is, as "Ticks Only" is for benchmarking and there is no "Max FPS" cap, it is shooting my CPU usage to 99% and my laptop fans start screaming.

    I have tested both "VSync On" and "Ticks Only" on several monitors (60hz, 144hz, 240hz) and the jittery issue is always there with VSync, and it is non-existant with "Ticks Only".

    I have some questions:

    1) Is the jitteryness likely a bug, or is this just the nature of VSync in HTML5?

    2) Could we possibly have a "Max FPS" variable for projects, that can be changed during runtime? This could be an easy workaround for this case, and I understand other engines have this type of setting (e.g. Valve's Source Engine has "cl_maxfps" which is usually defaulted to 300. Also, I understand that GDevelop has a "Max FPS" value in the project settings).

    3) Could VSync be toggleable during Runtime via events - so that anyone making desktop games with C3 can add the standard "VSync" option in the options of their game, much like most games have? I worry that once I release my game, that people may feel input lag with a 60hz monitor if VSync is forced to be on. Most people using a 60hz monitor playing a shooter, precision platformer, rhythm game, etc., would tend to turn off VSync.

    As of now, I can't seem to reproduce the jitteryness easily for a bug report, I don't quite know why, maybe it's the nature of a rhythm game creating new objects (arrows) quite frequently or something, but I'm still trying to figure out a way to demonstrate this in a minimal project without needing to share my project (as I wish to keep the files private). I will try to capture footage of my project with a phone camera or something in the mean time, although I understand this still isn't 100% helpful compared to a bug report.

    Much appreciated for your time!!

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)