Funkin icon indicating copy to clipboard operation
Funkin copied to clipboard

improved conductor time updating in playstate

Open Snirozu opened this issue 9 months ago • 5 comments

this pr should make note movement smoother on screens that have a higher refreshing rate than 60FPS

Snirozu avatar May 09 '24 14:05 Snirozu

this pr should make note movement smoother on screens that have a higher refreshing rate than 60FPS

is this why things feel slightly delayed but the input feels fine? if so this should be merged fast

biomseed avatar May 10 '24 01:05 biomseed

this pr should make note movement smoother on screens that have a higher refreshing rate than 60FPS

is this why things feel slightly delayed but the input feels fine? if so this should be merged fast

i don't think if there are any issues with delayed visuals, but if so then they are on your end, there is an option in the game to set the offsets for visuals so maybe you have set them to a wrong value

but about this pr, it uses the elapsed time between game frames instead of the sound time which is very inconsistent (i don't know how sound time from lime/flixel gets updated so don't take my words lol)

Snirozu avatar May 10 '24 14:05 Snirozu

would you be able to make a short before/after demo video of differences?

ninjamuffin99 avatar May 15 '24 01:05 ninjamuffin99

it's probably not noticeable here because obs may have done something with the framerate and i don't want to configure it twice but here are the recorded clips

https://github.com/FunkinCrew/Funkin/assets/72814880/b42aebe0-7dc6-4d60-81d5-d2e8c80bfee4

https://github.com/FunkinCrew/Funkin/assets/72814880/33c3ed52-8cbd-4630-883c-489edddc1f99

Snirozu avatar May 15 '24 02:05 Snirozu

my obs records at my actual monitor refresh rate, and I'm playing a song with a higher scroll speed so it should be more noticeable here

https://github.com/FunkinCrew/Funkin/assets/73810550/a2180cae-f433-4128-b124-d130bc8b3638

https://github.com/FunkinCrew/Funkin/assets/73810550/0275367d-5a47-4337-bc27-7e3a30138550

I've got no other changes to my build besides this pr (in fact it's still 0.3.2)

KutikiPlayz avatar May 15 '24 04:05 KutikiPlayz

in resyncVocals function, you dont need a time for argument in FlxG.sound.music.play, FlxG.sound.music.play(Conductor.instance.songPosition); can be FlxG.sound.music.play(Conductor.instance.songPosition); because if the sound is paused, this argument is ignored

	public function play(ForceRestart:Bool = false, StartTime:Float = 0.0, ?EndTime:Float):FlxSound
	{
		if (!exists)
			return this;
			
		if (ForceRestart)
			cleanup(false, true);
		else if (playing) // Already playing sound
			return this;
			
		if (_paused) // here, it just uses StartTime when the sound is not paused
			resume();
		else
			startSound(StartTime);
			
		endTime = EndTime;
		return this;
	}

(+ please we need this to get merged, its awesome)

gamerbross avatar May 26 '24 17:05 gamerbross

We looked at this and can't really see the difference here, and the way this changes the Conductor to be no longer based on the FlxSound object makes me concerned about desyncing the song.

Rejected.

EliteMasterEric avatar May 30 '24 07:05 EliteMasterEric

The problem of using music time is visible in higher refresh rates, in 165hz or even 144hz I can clearly notice a difference, it's so much smoother. Probably this wasn't the best implementation but should get changed so elapsed is used instead

gamerbross avatar May 30 '24 12:05 gamerbross