Ebiten: internal/clock: Improve the stabilizing logic of the clock especially for the case when FPS and TPS don't match

Created on 19 Apr 2021  路  6Comments  路  Source: hajimehoshi/ebiten

This issue is forked from https://github.com/hajimehoshi/ebiten/issues/1595

From the latter log (vsync is on), Update is often called 2 times or 0 times followed by one Draw with a 240 Hz display. We expect we see more pairs "1 Update for 1 Draw".

upd8 ticks: 29
upd8 ticks: 30
draw ticks: 31
draw ticks: 31
draw ticks: 31
upd8 ticks: 31
upd8 ticks: 32
draw ticks: 33
draw ticks: 33
draw ticks: 33
upd8 ticks: 33
upd8 ticks: 34
draw ticks: 35
draw ticks: 35
draw ticks: 35
upd8 ticks: 35
upd8 ticks: 36
draw ticks: 37
draw ticks: 37
draw ticks: 37
draw ticks: 37
upd8 ticks: 37
upd8 ticks: 38
draw ticks: 39
draw ticks: 39
draw ticks: 39
draw ticks: 39
upd8 ticks: 39
upd8 ticks: 40
draw ticks: 41
draw ticks: 41
draw ticks: 41
draw ticks: 41
upd8 ticks: 41
upd8 ticks: 42
draw ticks: 43
draw ticks: 43
draw ticks: 43
draw ticks: 43
upd8 ticks: 43
upd8 ticks: 44
draw ticks: 45
draw ticks: 45
draw ticks: 45
draw ticks: 45

I guess the current implementation to stabilize the FPS is the culprit:
https://github.com/hajimehoshi/ebiten/blob/517cf29ddcc3b335d3c2d7599419485b41b85b42/internal/clock/clock.go#L120-L128

CC @Zyko0

bug

All 6 comments

As the fix is not trivial, let me defer this to v2.2. A branch cut for v2.1 will happen soon.

@Zyko0 Hi, does the latest commit 2534b78755d719ffef684ae4e156d7ed4f013946 work as expected? Thanks!

It does ! 馃槃

  • vsync on:
upd8 ticks: 1
draw ticks: 1
draw ticks: 1
upd8 ticks: 2
draw ticks: 2
upd8 ticks: 3
draw ticks: 3
draw ticks: 3
upd8 ticks: 4
draw ticks: 4
upd8 ticks: 5
draw ticks: 5
draw ticks: 5
upd8 ticks: 6
draw ticks: 6
upd8 ticks: 7
draw ticks: 7
draw ticks: 7
upd8 ticks: 8
draw ticks: 8
upd8 ticks: 9
draw ticks: 9
draw ticks: 9
upd8 ticks: 10
draw ticks: 10
upd8 ticks: 11
draw ticks: 11
draw ticks: 11
upd8 ticks: 12
draw ticks: 12
upd8 ticks: 13
draw ticks: 13
draw ticks: 13
upd8 ticks: 14
draw ticks: 14
upd8 ticks: 15
draw ticks: 15
draw ticks: 15
upd8 ticks: 16
draw ticks: 16
upd8 ticks: 17
draw ticks: 17
draw ticks: 17
upd8 ticks: 18
draw ticks: 18
upd8 ticks: 19
draw ticks: 19
draw ticks: 19
upd8 ticks: 20
draw ticks: 20
upd8 ticks: 21
draw ticks: 21
draw ticks: 21
upd8 ticks: 22
draw ticks: 22
upd8 ticks: 23
draw ticks: 23
draw ticks: 23
upd8 ticks: 24
draw ticks: 24
upd8 ticks: 25
draw ticks: 25
draw ticks: 25
upd8 ticks: 26
draw ticks: 26
upd8 ticks: 27
draw ticks: 27
draw ticks: 27
upd8 ticks: 28
draw ticks: 28
upd8 ticks: 29
draw ticks: 29
draw ticks: 29
upd8 ticks: 30
draw ticks: 30
upd8 ticks: 31
draw ticks: 31
draw ticks: 31
upd8 ticks: 32
draw ticks: 32
upd8 ticks: 33
draw ticks: 33
draw ticks: 33
upd8 ticks: 34
draw ticks: 34
upd8 ticks: 35
draw ticks: 35
draw ticks: 35
upd8 ticks: 36
draw ticks: 36
upd8 ticks: 37
draw ticks: 37
draw ticks: 37
upd8 ticks: 38
draw ticks: 38
upd8 ticks: 39
draw ticks: 39
draw ticks: 39
upd8 ticks: 40
draw ticks: 40
upd8 ticks: 41
draw ticks: 41
draw ticks: 41
upd8 ticks: 42
draw ticks: 42
upd8 ticks: 43
draw ticks: 43
draw ticks: 43
upd8 ticks: 44
draw ticks: 44
upd8 ticks: 45
draw ticks: 45
draw ticks: 45
upd8 ticks: 46
draw ticks: 46
upd8 ticks: 47
draw ticks: 47
draw ticks: 47
upd8 ticks: 48
draw ticks: 48
upd8 ticks: 49
draw ticks: 49
draw ticks: 49
upd8 ticks: 50

Tho, it seems I'm being capped at 180~ draws when vsync is on, this is something I already observed before your commit (sometimes 176, etc..)

Total duration: 1.0006748s - updates 121 - draws 180
  • As for vsync off, too many Draw to display logs, but crazy improvement, I'm seeing way more Draw calls than before, still respecting the amount of Updates:
Total duration: 1.0366807s - updates 121 - draws 2797

馃コ

Thanks! So the current issue is, FPS seems 180 even though you are using 240Hz display?

Exactly, and my Update/Draw are still empty, also I'm waiting 5 seconds from start to make sure I'm recording after everything is loaded/initialized

edit: It's either 240 or 180, no in-between ! So it appears that I still reach 240 sometimes

Sure, as this seems another issue, I'll open a new issue.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

hajimehoshi picture hajimehoshi  路  7Comments

hajimehoshi picture hajimehoshi  路  4Comments

silbinarywolf picture silbinarywolf  路  4Comments

hajimehoshi picture hajimehoshi  路  5Comments

hajimehoshi picture hajimehoshi  路  6Comments